土曜日, 8月 23, 2025
土曜日, 8月 23, 2025
- Advertisment -
ホームニューステックニュースrails consoleのようにgolangを扱えるCLIを作った

rails consoleのようにgolangを扱えるCLIを作った


「よーし、なんか複雑なロジックの関数ができたぞ….ってこれちゃんと動くか?」

と開発しながら思うことがよくあります。
golangはコンパイル言語であり、この場合さっと確かめる方法は

  • その関数を呼び出すテストを書く
  • 適当なmain関数で直接呼び出す(go run hoge/main.go的な)

くらいな気がします。

そこで、

「golangでも rails console的なのあったらサクッと試せるのになぁ」

と思う節がたまにあったので、作ってみました。

今も足りない機能、改善したい点がたくさんあるので絶賛継続開発中です。

今回はそれについて、デモベースで簡単に紹介します。

https://github.com/kakkky/gonsole

gonsoleは、rails conosoleにinspireされて作ったものです。
プロジェクトルートでgonsoleコマンドを実行することで以下のようなことができます。

  • プロジェクト内&標準パッケージの変数/定数参照
  • プロジェクト内&標準パッケージの関数/メソッド呼び出し

また、プロジェクト内の変数や関数にアクセスする際には補完が出て、Tabキーで選択するだけで呼び出すことができます。

デモ的に、以下のサンプルプロジェクトで動かしてみます。

https://github.com/kakkky/gonsole-example

プロジェクトルートでgonsoleと打って起動します。

まずは、animalパッケージのDog型のメソッドDescribe()を呼び出してみましょう。

dog変数にNewDog()コンストラクタを格納するところから始めましょう。
まずは、呼び出す要素のパッケージを指定し、関数を指定します。以下のように補完が出力され、Tabで選択することができます。自力で書いても問題はありません。

引数を入れて定義します。

入力が不正であればエラーが出ます。
以下の場合だと、同じdogを再宣言していることと引数の型が違うことの2つで怒られています。

メソッドを呼び出してみましょう。
変数dogの型を記憶しているので、それに沿ったメソッドの補完を出してくれます。また、変数の格納している型がinterfaceだった場合は、そのinterfaceに定義されているメソッドの補完が返されます。

また、メソッドチェーンも可能です。
もちろん、コンストラクタの返り値が1つ出会った場合に限定されます。

他にも、詳しくはREADMEをご覧ください(日本語版もあります)。

https://github.com/kakkky/gonsole/blob/main/README-ja.md

自分の方で確認できているBug、対応できていないケース、機能はIssuesに挙げています。

https://github.com/kakkky/gonsole/issues

その中でも自分が第一に取り組みたいのは以下です。

https://github.com/kakkky/gonsole/issues/1

現状のgonsoleでは、publicな要素(大文字から始まる)にしかアクセスできません。どちらかといえば、シュッと実行したいのはprivateな関数だったりします。

また、これをMCP Serverとして提供するのも面白そうだなと考えていたりもします。

さらに良いgolangによる開発体験を目指して、継続開発していけたらなと思います。
Bug等あれば、Issuesにお願いします。



Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -