GoでCLIツール作成の練習がてら四則演算をするためのCLIツールを作った
四則演算をするためのGO製のCLIツールを作った
GoでCLIツール作成の練習がしたくて作った。
機能的には四則演算をするだけで完全に勉強のために作成した形である。
そのためこのツール自体に利用価値はないが、CLIツールを作る上での設計などを学ぶことができた。
と言っても設計自体は下記のQiitaの記事を大いに参考にさせていただいている。
実際の実行はxxxCommandが、 処理内容はxxxActionが 担保するようにします。 これによって、テストを書きたいときにxxxActionが、きちんとテストできていれば問題ないようにします。 またxxxActionの内容をxxxCommandで書いてしまうと、xxxCommandはエラー時にos.Exitを返さないければいけないので、テスト時に複雑性が上がります。
上で引用させてもらったこの文章が、まったくもって分かりやすくて良いなと思ったので、自分も xxxCommand
と xxxAction
で分けるようにして、実際の処理内容を xxxAction
として切り出すことにした。
上の引用文にもある通り、テストも書きやすくなるし、もう少し規模の大きめなツールを書く際でもこのルールに従ってやっていくことで可読性を壊さずに開発ができるのではないかと感じた。
他に書いておくことといえば、
このリポジトリ内でクロスコンパイルコマンド( make build
)を用意して各環境に対応できるようにしたり(Windows, Linux, macOS)、環境を汚したくない環境ならば(そしてDockerが使える環境ならば)Dockerでの実行も可能なようにしてある。
Travis CIを用いたCI環境も(全然単純な内容でしかないが)設定したので、これからCLIツールを自作するときのテンプレートとしてこのリポジトリを機能させていけたらなどと考えている。
(が、実際に他のを作り始めたら、見直す可能性はもちろんあるが)
そんなこんなでGoでCLIツールを作ってみた。
ここから余談。
今このブログを子供の面倒を見ながら書いていたが、ちょっと目を離してPCで文章を打ち始めようとすると大声を出して中断される。
子供の機嫌が決して悪いわけではなく、むしろ良いのだが、ご機嫌ゆえの大声コンテスト的なものが始まり(あとは、たぶんこちらの注意も引きたいのだと思う)、子供からPCに意識を移すと直ぐに大声で呼ばれる事態が発生していた。
ゆえにこの文書も大した長さはないはずだが、ここまで書くのになかなか時間を要した。むしろ一度に書ききれず下書きフォルダに突っ込みを繰り返しながら、ようやくここまできたという感じだ。
ちなみに子供の大声コンテストだが、これは子供が楽しむ目的と親の注意を引きたい(たぶんこれもある)意図から、定期的に大声を出すという動作な訳で、最初の頃は大きな声でるねー!と言った感じで微笑ましいものだったが、最近は成長に伴い、声量も非常にアップして、まさに叫び、絶叫、シャウトといった感じになってきた。
今日みたいな休日なら、まあまだ良いが、例えば仕事でリモートミーティング中だったりすると、なかなか気が抜けない状況となる。
自分が発言していない時ならマイクをミュートにしていれば良いのだが、発言している時に大声コンテストが開催されると、もう会話がそこで途切れる。
(私の仕事スペースが家族スペースと共用になっているということもあるのだが、、、)
基本的に会社の方々は気にしないでー!元気だねー!と言って笑ってくれるのだが、大声コンテストが開催される気配がある時だと、自分としては会話の最中にも子供の様子を窺うことになる。おかげで以前よりも子供の状況を、というか大声コンテスト開催タイミングを察知して、危険な兆候が見られる場合は即座にミュートしておける技術が向上した気がする。
(といっても、未だにまだまだ子供の絶叫はミーティング中にちょいちょい響き渡ったりしているが)
思う存分元気に成長してほしいと、毎日父は願ってます。