github.com/codegangsta/cli
OSSで楽に作るGo言語クライアントツール
makoto tano - @makotano
著作権表記 / Go言語のキャラクターGopherの原著作者はRenée Frenchさんです。
Makoto Tano
Golang Engineer @
@makotano
「はじめの一歩」が好きでボクシングやってます
Go言語楽しいです!
• Syntaxがシンプル、だから気軽に書ける
• コンパイルするから動作速い
• 型があるから安心して書ける
簡単に試して、

「ちょっとだけなら書けますよ! 」

に最適な言語。(と思ってマス)
Hello World以上に勉強するには!
アプリをがっちり書く必要なんてない!

コマンドラインツールを作りましょう!
コマンドラインツールで気にすること
1. {command} = コマンド本体
• • • • • •
2. {command} -R = コマンドオプション
• • • • • • • • •
3. {command} args.. = パラメータ
• • • • •
4. {command} help = コマンドヘルプ
• • • • • • •
・・・いっぱいやることアルネ。
OSSで解決できます!
github.com/codegangsta/cli
 先ほどの4要素を標準パッケージで書くのは大変。

しかし、このOSSを使えば整理して書けます。
しかも、コマンドラインツールを作る時のテンプレートも作りました!
https://gist.github.com/MakoTano/624fe3fdea914b262e2c
テンプレートの解説

1. コマンド本体
app.Commands = []cli.Command{
{
Name: "hello",
Aliases: []string{"h"},
Usage: "show Hello World",
Action: func(c *cli.Context) {
},
},
}
コマンド名
ショートカット
コマンドヘルプ
ここにコマンド内容を書く

(勉強のしどころです!)
テンプレートの解説

2. コマンドオプション
app.Flags = []cli.Flag{
cli.BoolFlag{
Name: "dryrun, d",
},
}
オプションはFlagと呼びます
ロング/ショートネーム
“Value”を足すとデフォルト値が指定可能
テンプレートの解説

3. パラメータ
var paramFirst = ""
if len(c.Args()) > 0 {
paramFirst = c.Args()[0]
}
c.Args() で配列が[]stringで返る
.First(), .Tail() などでも取得可能
テンプレートの解説

4. コマンドヘルプ
mako ~/dev/gopath1.5.2/src/sample $ go run main.go
NAME:
sample_client - github.com/codegangsta/cli のテンプレートです
USAGE:
main [global options] command [command options] [arguments...]
VERSION:
0.0.1
COMMANDS:
hello, h hello world を表示します
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--dryrun, -d
--help, -h show help
--version, -v print the version
なんと既にできちゃってます!
イヤッフー!
用意したgistテンプレートの時点でここまで動きます
# Setup
mako ~/dev/gopath1.5.2/src/sample $ go get github.com/codegangsta/cli
# Execute

mako ~/dev/gopath1.5.2/src/sample $ vi main.go # テンプレをコピペ
mako ~/dev/gopath1.5.2/src/sample $ go run main.go —dryrun hello Tom
開始
this is dry-run

Hello world! Tom

終了
おわり
• GoのSyntax勉強は「シュッと golang に入門する話」
が個人的には好きです。

http://sixeight.hatenablog.com/entry/2015/03/16/032222
• 数時間とるだけで、Gopherになれるチャンス! 逃す
• •
わけにはいかないですね!

• • • • • • • •
(そこまでのことかって話もありますが)
• Go言語イベントやってるから遊びにきてね!

http://eure.connpass.com/

OSSで楽に作るGo言語クライアントツール