golang勉強会でGo製ツールの配布方法について話してきた
“Ship your CLI tool built by golang to your user #golangstudy”
“Golang勉強会”で発表してきた.Go言語で作成したツールをクロスコンパイルして,複数プラットフォームに配布する方法について話してきた.自分がGoをはじめた理由の一つがクロスコンパイルによる配布のしやすさであり,いろいろ実践したりそれ用のツールを作ったりしてきたのでそれをまとめた.
以下の視点で話したつもり,
- 自動化により開発者の負担を減らす
- ユーザがツールを使うまでの負担を減らす
“わかりやすいREADME.mdを書く”にも似たようなことを書いたけど,自分のような無名なエンジニアの作ったツールであってもユーザに使ってもらうには,2点目のような視点を大切にしないといけないと思う.
発表は以下の記事をもとにしている.
- “HerokuとGithubを使った統一的なツール配布”
- “高速に自作パッケージをGithubにリリースするghrというツールをつくった”
- “Go言語のツールをクロスコンパイルしてGithubにリリースする”
- “HomeBrewで自作ツールを配布する”
感想
特に以下の2つの発表が面白かった.
- “GOとライセンス”
- “How To Think Go”
まず,ライセンスの話.自分でバイナリ配布のことをいろいろやっておきながら,このことを全く考慮してなかった.ソースコードとバイナリではライセンス異なることを知らなかった.めんどくせえけど大事だと思います.参考文献読みます.
あと@lestrratさんの”How to Think Go”.最高でした. rebuild.fmの“Rebuild: 42: When in Golang, Do as the Gophers Do (lestrrat)”で話していたことを発表としてさらにパワーアップさせたという印象(これ5回以上聴いたので). 特に自分のためになったのが「Goで構造体設計」の話.今まで見たGoでのモデリングの説明で一番しっくりきた. 「オブジェクトの階層を作ろうという考え方をしない(’動物’を作ろうとしない)」,「’草食動物’ではなく’草を食べる’というinterfaceを考えてメソッドをそろえる」 などなど,いかにオブジェクト思考的な考え方からGo的な思考に変えていくかという説明の仕方がとてもわかりやすかった. 今までの書いたコードは完全に失敗してるのでちゃんと書き直していきたい.
最後に
発表する機会を与えて下さった@btoさん,ありがとうございました. さらなるモチベーションに繋がるとても良い勉強会でした.質疑の質もとても高かった.次に機会があれば是非参加したいです.