2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WACULAdvent Calendar 2017

Day 11

Goの俺的scaffoldはこれだ!2017年版

Last updated at Posted at 2017-12-10

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ライフを。

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?