Goで作り直すgitignore生成コマンド #go #golang / Reinvent gitignore command using golang

Goで作り直すgitignore生成コマンド #go #golang / Reinvent gitignore command using golang

C000f292a92b894afabbb352e8709667?s=128

Toshinori Sugita

May 16, 2018
Tweet

Transcript

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

  2. 自己紹介 • 杉田 寿憲 ◦ Toshinori Sugita ◦ toshi0607 ◦

    toshi0607 ◦ toshi0607 • Software Engineer@freee ◦ 好評の Windows 版に続いて急遽リリースを決めた Mac 版アプリの開発に、Xamarin.Mac を採用し て大幅な開発効率のアップと機能の標準化を実現。 • 最近の様子 ◦ Ruby > JavaScript >>> Go >>>>>> C# • 『Extensive Xamarin』(共著)発売中! ◦ 技術書典から商業出版へ
  3. 今日のお話 • gigというコマンドをGoで作った • 作ったきっかけ • 課題と解決策 • 残タスク

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

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

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

  7. 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
  8. gigコマンドとは? ※https://github.com/toshi0607/gig

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

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

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

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

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

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

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

  16. giboの解決策 • github/gitignoreをgit clone • language_file=$(find "$local_repo" -maxdepth 1 -iname

    "$1.gitignore" | head -n 1) ※https://github.com/simonwhitaker/gibo
  17. 解決策①  • 入力をパスカルケースに変換 • pinzolo/casee go Go cakephp CakePhp

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

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

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

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

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

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

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

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