「よーし、なんか複雑なロジックの関数ができたぞ….ってこれちゃんと動くか?」
と開発しながら思うことがよくあります。
golangはコンパイル言語であり、この場合さっと確かめる方法は
- その関数を呼び出すテストを書く
- 適当なmain関数で直接呼び出す(
go run hoge/main.go
的な)
くらいな気がします。
そこで、
「golangでも rails console的なのあったらサクッと試せるのになぁ」
と思う節がたまにあったので、作ってみました。
今も足りない機能、改善したい点がたくさんあるので絶賛継続開発中です。
今回はそれについて、デモベースで簡単に紹介します。
gonsoleは、rails conosoleにinspireされて作ったものです。
プロジェクトルートでgonsole
コマンドを実行することで以下のようなことができます。
- プロジェクト内&標準パッケージの変数/定数参照
- プロジェクト内&標準パッケージの関数/メソッド呼び出し
また、プロジェクト内の変数や関数にアクセスする際には補完が出て、Tabキーで選択するだけで呼び出すことができます。
デモ的に、以下のサンプルプロジェクトで動かしてみます。
プロジェクトルートでgonsole
と打って起動します。
まずは、animal
パッケージのDog
型のメソッドDescribe()
を呼び出してみましょう。
dog
変数にNewDog()
コンストラクタを格納するところから始めましょう。
まずは、呼び出す要素のパッケージを指定し、関数を指定します。以下のように補完が出力され、Tabで選択することができます。自力で書いても問題はありません。
引数を入れて定義します。
入力が不正であればエラーが出ます。
以下の場合だと、同じdog
を再宣言していることと引数の型が違うことの2つで怒られています。
メソッドを呼び出してみましょう。
変数dog
の型を記憶しているので、それに沿ったメソッドの補完を出してくれます。また、変数の格納している型がinterfaceだった場合は、そのinterfaceに定義されているメソッドの補完が返されます。
また、メソッドチェーンも可能です。
もちろん、コンストラクタの返り値が1つ出会った場合に限定されます。
他にも、詳しくはREADMEをご覧ください(日本語版もあります)。
自分の方で確認できているBug、対応できていないケース、機能はIssuesに挙げています。
その中でも自分が第一に取り組みたいのは以下です。
現状のgonsoleでは、publicな要素(大文字から始まる)にしかアクセスできません。どちらかといえば、シュッと実行したいのはprivateな関数だったりします。
また、これをMCP Serverとして提供するのも面白そうだなと考えていたりもします。
さらに良いgolangによる開発体験を目指して、継続開発していけたらなと思います。
Bug等あれば、Issuesにお願いします。
Views: 0