Boom Boom Hello, gophers! Go書いてるかい!
tl;dr
今年も色々、汚物に似た何かをGitHub上に吐き散らかしてきましたが、
来年はもうちょっとキレイな汚物にしようと考え、自分なりに Goで何か作り始めるならここがスタート という物をまとめてみようと思います。
実物
go-initというのを作って運用してます。
中には init.sh
が入ってるので、 init.sh ${OWNER} ${NAME}
とかすると、 github.com/${OWNER}/${NAME}
で運用する前提のディレクトリが出来上がるので、 git init
とかして遊ぶといいと思います。
本当はこいつをscaffoldingツールとして仕上げてこの記事を書きたかったんですが、時間切れです。
yeomanでいいじゃん
動機づけ
2017年私的プロジェクト振り返り
この2017年、なんやかんや自分なりに色々開発してきて、あれがねえな、これもねえなと思うたびにshell書く代わりぐらいのテンションでgolang書いてきました。
今年メンテしていた自分のリポジトリを雑に振り返ってみると…
-
ask
- CLIでダイアログだすやーつ。Y/NとかStringとか取れちゃう。嬉しい!
何番煎じだよ
- CLIでダイアログだすやーつ。Y/NとかStringとか取れちゃう。嬉しい!
-
deject
- ローカルリポジトリ管理する君。dog fooding しちゃいるものの、将来性が見えない。
何番煎じd
- ローカルリポジトリ管理する君。dog fooding しちゃいるものの、将来性が見えない。
-
git-branches
-
git-branch --list
見にくいよ、fzfとかと繋げた時に見やすいの作ろ、と思ったやつgit-for-each-ref
でいいじゃん
-
-
git-prompt
- tmuxとか、zshのプロンプトにさ、gitの情報出したいじゃん
- zshのvcs_infoはさ、スゲーはえーけど、情報足んないじゃん
- shellでやってもいいけどさ、重いじゃん
そうだ、goでやろう。 結構速いよ!(当社比)
-
git-vertag
- segverタグ管理したいけど、
npm
。俺のローカルにnode
がいくつ入ってると思ってるんだ。何番線
- segverタグ管理したいけど、
-
go-spdx
-
SPDX Licenses(
MIT+APSL-1.0
とか)パースしてやんよ!なんならLICENSE本文も出したるぜ!誰得
-
SPDX Licenses(
-
richgo
- go test 見にくいんじゃ!!FAIL を赤文字にしたらんかい!! スター結構もらったよ! (^O^)
-
xdg
- XDG Base Directory Specification で示されるディレクトリの一覧を色々取得するやつ。
- 仕様以上でも以下でもないのがなくて、しょうがなく作った。なんで無いの?
誰もいらないかr
-
zshist
- zshのhistってなんでvimでいじると文字化けるの。馬鹿なの。と思ってdecode&encodeするやつ。shellでおk
まぁ誰得だったり、n番煎じだったり酷いですね。
それもこれも、僕が変に凝り性で、そうだアレ作ろ!と思ってから1週間経った頃にもまだ .circle/config.yml
コネコネしてたりするからです。
scaffoldingの目的
- 作りたいと思った瞬間、目的に集中できる状態を作りたい
- あわよくば、するっと go-awesome とか載りたい
- Coverageなんてとってねえよ!CI?ハハッ!みたいな状態だとモチベ下がる。
- go-awesome自体、雑多な寄せ集めみたいになってるけど、それでもやっぱり載ってるとさ!嬉しいじゃん!!
選択した物と動機(という名の感想)
- コマンドライン引数の処理はkingpin最強
- 若干やれることが多すぎるけど、取り回しがいい
- CIはなんだかんだCircleCIがバランスいい
- Werckerシャレオツ最強かと思ったけど、漢気が足りない。
- CoverageはCodecovが良さそう。Coverallsでもいいんだけど、ちょと見づらい
- LICENSEは何も考えずにMITでいい
-
goreleaserで、マルチプラットフォーム対応のバイナリリリースも簡単に
- homebrewに載せるのすら簡単。すばら
- Makefileはやっぱりあったほうがいい
- dep だ go-bindata だと、golang周りのツール類が群雄割拠している
- contributionのためのentrypointとして、タスクランナーはあったほうが優しみ
- golang開発のタスクランナーにgulpとか持ち出すのナンセンス。Makefileでいい
おわりに
これが永遠のベストだとは思わないですが、ひとまず今のところはこれでいいんじゃないかな、というところに落ち着きました。
これからgolangで何か作ろう、でも環境ちゃんと定めたいな、引っかかっちゃって先に進めないな、というgophersのお役に立てれば幸いです。
良きgophersライフを。