urfave / cliを使ってGoでCLIアプリを作ってみた
環境
作ったもの
何だこれは
苺ましまろという作品に登場するキャラクターの台詞を出力するだけのアプリ。 台詞は3パターンしか登録していない。アナちゃんと茉莉ちゃんは未対応。
モチベーション
- 久しぶりにGo言語書きたかった
- cliアプリ用のライブラリを使ってみたかった
- これ試してみたかった:Go で書いた CLI ツールのリリースは GoReleaser と GitHub Actions で個人的には決まり
感想
- Go言語のcliアプリ作成支援系のライブラリとしてはspf13/cobraもあり、あまり大きな違いはなさそうなので名前でcliの方を選んだ(コブラは何か怖い)
- そもそもGoでcliアプリ作るなら、ライブラリ使わなくても十分実装できるだろうなという思いもあったが、とりあえず最初はライブラリ使ってみた
- Github Actionsを初めて使った。tagをpushするだけで各環境向けのビルドが完了してrelesesページで公開されるの凄い
- Go言語で書いているとGithubからgo getでインストール完了するので楽。皆、
ichigo-cli
をgo getしましょう。
ハマりどころ
Github Actionsとローカルでgo.sumに差異が発生してビルドに失敗した。原因はローカルがGo 1.12なのに対しActionsは1.13だったから。 ローカルのバージョン上げないと...と思いつつ一旦は1.12に合わせて、
$ go mod tidy
して解決した。台詞をランダムに表示するために、
math.rand
を使用して乱数を取得しようとしたら乱数にならなくて困った。 原因はseedの初期化をしていないかららしく、そういうものなのか...と思った。現在時刻をseedに使うようにしたら確かに乱数になった。2ヶ月ぐらいGo書いていなかったので色々忘れていたけど、「たしかこういう構文があった」とか「名前は忘れたがこんな関数が標準パッケージにあったはずだ」みたいな感じで気づくことは出来ているので、ある時期に集中的に書いていればしばらく書いていなくても何とかはなるなあとも思った。あと、やっぱり言語の色々がシンプルなのは人の記憶に優しいのかもなあとも思ったり。
Go言語、沢山書いていきたいですね。