Slide 1

Slide 1 text

Goで作り直す.gitignore生成コマンド 2018/5/14 Gopher道場最終回

Slide 2

Slide 2 text

自己紹介 ● 杉田 寿憲 ○ Toshinori Sugita ○ toshi0607 ○ toshi0607 ○ toshi0607 ● Software Engineer@freee ○ 好評の Windows 版に続いて急遽リリースを決めた Mac 版アプリの開発に、Xamarin.Mac を採用し て大幅な開発効率のアップと機能の標準化を実現。 ● 最近の様子 ○ Ruby > JavaScript >>> Go >>>>>> C# ● 『Extensive Xamarin』(共著)発売中! ○ 技術書典から商業出版へ

Slide 3

Slide 3 text

今日のお話 ● gigというコマンドをGoで作った ● 作ったきっかけ ● 課題と解決策 ● 残タスク

Slide 4

Slide 4 text

今日のお話 ● gigというコマンドをGoで作った ● 作ったきっかけ ● 課題と解決策 ● 残タスク

Slide 5

Slide 5 text

gigコマンドとは? ※https://github.com/toshi0607/gig

Slide 6

Slide 6 text

gigコマンドとは? ※https://github.com/github/gitignore

Slide 7

Slide 7 text

gigコマンドとは? ● Usage ○ gig [OPTIONS] [Language] ● Application Options: ○ -l, --list Show list of available language ○ -f, --File Output .gitignore file ○ -q, --quiet Hide stdout ○ -v, --version Show version ● Help Options: ○ -h, --help Show this help message ※https://github.com/toshi0607/gig

Slide 8

Slide 8 text

gigコマンドとは? ※https://github.com/toshi0607/gig

Slide 9

Slide 9 text

giboでええやん? ※https://github.com/toshi0607/gig

Slide 10

Slide 10 text

gigコマンドとは? ※https://github.com/toshi0607/gig

Slide 11

Slide 11 text

今日のお話 ● gigというコマンドをGoで作った ● 作ったきっかけ ● 課題と解決策 ● 残タスク

Slide 12

Slide 12 text

作ったきっかけ ● simonwhitaker/giboとは別コンセプトで同じことしたい ● io.Writer interfaceの気持ちよさを形にしたい ● クロスプラットフォームでシュッと配布してみたい

Slide 13

Slide 13 text

今日のお話 ● gigというコマンドをGoで作った ● 作ったきっかけ ● 課題と解決策 ● 残タスク

Slide 14

Slide 14 text

課題 こんなURLにアクセスしたいけど… https://github.com/github/gitignore/raw/master/Go.gitignore

Slide 15

Slide 15 text

課題 引数で指定した言語からよしなにURLを組み立てたい https://github.com/github/gitignore/raw/master/Go.gitignore

Slide 16

Slide 16 text

giboの解決策 ● github/gitignoreをgit clone ● language_file=$(find "$local_repo" -maxdepth 1 -iname "$1.gitignore" | head -n 1) ※https://github.com/simonwhitaker/gibo

Slide 17

Slide 17 text

解決策①  ● 入力をパスカルケースに変換 ● pinzolo/casee go Go cakephp CakePhp

Slide 18

Slide 18 text

解決策①  ● 入力をパスカルケースに変換 ● pinzolo/casee go Go cakephp CakePhp なんとかできるかもしれないが、がんばっても沼っぽい

Slide 19

Slide 19 text

解決策② ● 対応言語リストを毎回取得

Slide 20

Slide 20 text

解決策② ● 対応言語リストを毎回取得 v 単に言語指定するユースケースで2回もアクセスしたくない

Slide 21

Slide 21 text

解決策③ ● リストをフィルタリングできるコマンドと組み合わせる ● Go言語によるCLIツール開発とUNIX哲学について ○ http://blog.yuuk.io/entry/go-cli-unix ● peco/peco ○ https://github.com/peco/peco

Slide 22

Slide 22 text

解決策③ ※https://github.com/toshi0607/gig

Slide 23

Slide 23 text

今日のお話 ● gigというコマンドをGoで作った ● 作ったきっかけ ● 課題と解決策 ● 残タスク

Slide 24

Slide 24 text

残タスク ● .gitignore開発環境シリーズ(Global系)対応 ● ネットワークに依存しないテスト ● ゴルーチンのエラー処理 ● アップデート機構

Slide 25

Slide 25 text

ご清聴ありがとうございました! Goで作り直す.gitignore生成コマンド