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とか取れちゃう。嬉しい! 何番煎じだよ
  • deject
    • ローカルリポジトリ管理する君。dog fooding しちゃいるものの、将来性が見えない。 何番煎じd
  • 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 がいくつ入ってると思ってるんだ。 何番線
  • go-spdx
    • SPDX LicensesMIT+APSL-1.0とか)パースしてやんよ!なんならLICENSE本文も出したるぜ! 誰得
  • 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はやっぱりあったほうがいい
    • depgo-bindata だと、golang周りのツール類が群雄割拠している
    • contributionのためのentrypointとして、タスクランナーはあったほうが優しみ
    • golang開発のタスクランナーにgulpとか持ち出すのナンセンス。Makefileでいい

おわりに

これが永遠のベストだとは思わないですが、ひとまず今のところはこれでいいんじゃないかな、というところに落ち着きました。
これからgolangで何か作ろう、でも環境ちゃんと定めたいな、引っかかっちゃって先に進めないな、というgophersのお役に立てれば幸いです。

良きgophersライフを。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.