狠狠撸

狠狠撸Share a Scribd company logo
初心者がGoで
CLIツール作ってみて
学んだこと
Go(Un)Conference(Goあんこ)LT大会 1kg
2018/04/17
Yuta Ohashi
2
blue_goheimochi
blue-goheimochi
はじめて1ヶ月
3
もくじ
? モチベーション
? 何をつくったか?
? どうつくったか?
? やれていないこと?やりたいこと
? まとめ
4
モチベーション
5
モチベーション
Gitのユーザーを複数運用していませんか??
? GitHubのアカウントが複数ある
? 個人のアカウントと会社のアカウント
? GitHubとGitlabとgitoliteを併用している
? 違うPCで作業する場合
? グローバルのユーザー設定し忘れてるとホスト名
とかがになっちゃう
6
7
モチベーション
ローカルで気が付けばいいんですがね???
? リモートにいっちゃうと push –f 案件
? コミットが複数あるとさかのぼってauthor変更し
ないといけない
$ git commit --amend ?
? --author="blue-goheimochi <blue_goheimochi@gmail.com>“
$ git config --local user.name blue-goheimochi
$ git config --local user.email blue_goheimochi@gmail.com
8
Gitのユーザー
間違えないようにしたいよぉ
9
何をつくったか?
10
11
mgu
https://github.com/blue-goheimochi/mgu
12
何をつくったか?
使い方はREADME.mdをご参照ください
? 現在のGitユーザーの確認(mgu or mgu show)
? Gitユーザーの追加(mgu add)
? Gitユーザーの設定(mgu set)
? Gitユーザーの一覧(mgu list)
? Gitユーザーの削除(mgu remove)
デモ
14
どうつくったか?
15
どうつくったか?
? 他の人のツールを参考にする
? パッケージはありがたく使う
? README駆動開発
? その他こまごま
16
どうつくったか?
他の人のツールを参考にする
? 手を動かすのはあとだ!
? syossan27/kirimori、syossan27/torisetsu
? mattnさんのリポジトリを漁る
? 作るのに必要そうなパッケージをなんとなく知る
? マネすれば(パクれば)書けそうってなる!
http://h.hatena.ne.jp/mattn/9236556841769549270
17
どうつくったか?
パッケージはありがたく使う
? github.com/urfave/cli
? CLI作成パッケージ
? gopkg.in/AlecAivazis/survey.v1/core
? 対話形式を簡単に実装できるパッケージ
? github.com/mitchellh/go-homedir
? ユーザーのホームディレクトリがhomedir.Dir()で出力できるパッケージ
? github.com/mattn/go-pipeline
? パイプラインありのコマンドを実行できるパッケージ
18
どうつくったか?
README駆動開発
https://qiita.com/syossan27/items/38e2f4b7f0dc74207dc9
19
どうつくったか?
README駆動開発
? まだ手を動かしてはだめだ!!
? Readme Driven Development
? 2014年8月2日のRebuild.fmで紹介された(第52回)
? READMEをまず書く。最初に書く
? 先ほど紹介したgopkg.in/AlecAivazis/survey.v1/coreをみながらだとと
てもイメージが沸きやすい
? とくにCLIツールをつくる場合には有効なのでは?
https://rebuild.fm/52/
初心者が骋辞で颁尝滨ツール作ってみて学んだこと
21
どうつくったか?
README駆動開発
? ということでまずREADMEを書いた
? 書くと使いやすそうかな?とかイメージがつく
? コードを書きたいという気持ちを抑えて、ここま
でやったのはよかった気がする
https://github.com/blue-goheimochi/mgu/blob/master/README.md
22
どうつくったか?
README駆動開発
? 1日1コマンド終わらせよう!みたいな感じ
? README.mdを先に書いたおかげで実装中もイ
メージが付きやすいし、区切りが良くなる
? 標準パッケージの使い方は公式を見たりググる
? トータルで1日かからないくらいでできた
23
やれていないこと
24
やれていないこと
? テスト
? Goのお作法にしたがう(?)
? goroutineを使った並列処理など
? パッケージ管理(dep、vgo)
? APIとかをつくってみる
? など。(これもやってみるといいよ!とかあれば教えてください!)
25
まとめ
26
まとめ
? モチベーション大事
? まずは手を動かさない
? 先人の知恵を拝借する
? READMEをまず書く
? そして実装する
? はじめてのCLIツール完成!
27
みなさんも
CLIツール作りから
Goをはじめてみては
いかがでしょうか??
28
おわり

More Related Content

初心者が骋辞で颁尝滨ツール作ってみて学んだこと