SlideShare a Scribd company logo
1 of 16
Download to read offline
CLI.GO と CLI-INIT で高速にコマ 
ンドラインツールを開発す
る 
THE COMMAND-LINE TOOL DEVELOPED AT HIGH SPEED CLI.GO 
AND CLI-INIT 
2014/12/12 @taketin
WHAT'S CLI.GO ? 
https://github.com/codegangsta/cli
A SMALL PACKAGE FOR BUILDING COMMAND 
LINE APPS IN GO 
star - over 1900 
GitHub code search hit - over 2800 
CLIツール実装に必要なインタフェースを提供 
コアロジックに集中できる
WHAT'S CLI-INIT ? 
https://github.com/tcnksm/cli-init
THE EASY WAY TO START BUILDING GOLANG 
COMMAND-LINE APPLICATION 
ref. 
高速にGo言語のCLIツールをつくるcli-initというツール 
をつくった 
cli.go のテンプレートを生成 
高速に開発開始!
HANDS ON
#0 ENVIRONMENT 
$ brew install go 
$ vi .bashrc 
export GOPATH=$HOME/go 
export GOROOT=/usr/local/opt/go/libexec 
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin
#1 INSTALLATION 
$ go get -d github.com/tcnksm/cli-init 
$ cd $GOPATH/src/github.com/tcnksm/cli-init 
$ make install
#2 SPECIFICATION 
仕様を決める 
TODOアプリ 
コマンドは todo とする 
追加、削除、一覧 ができる 
インターフェースは add, delete, list とする
#3 CLI-INIT 
$ cli-init -s add,delete,list todo
#4 DEVELOPMENT 
commands.go にガリガリ書く
#5 FLAGS 
コマンドにフラグオプションを追加する場合 
ex) todo delete -a 
commands.go にフラグの記述を追記 
var deleteFlags = []cli.Flag{ 
cli.BoolFlag{Name: "all, a", Usage: "all delete"}, 
} 
var commandDelete = cli.Command{ 
Name: "delete", 
Usage: "", 
Description: ` 
`, 
Action: doDelete, 
Flags: deleteFlags, // add 
} 
func doDelete(c *cli.Context) { 
isDeleteAll := c.Bool("all") 
if isDeleteAll { 
// snip.. 
} 
}
#6 BUILD 
$ go install 
$ todo -h
#7 ENJOY 
Golang 学習コストそれほど高くない(気がする) 
書き易いし読み易い(気がする) 
package の仕組み 
便利ツール作るのに最適ぽい 
標準ライブラリ充実 
クロスコンパイル環境 
速度が早い 
goroutine
TALKER 
https://github.com/taketin/talker 
重複無しで総当たりのくじ引き 
Dropbox をストレージで使う 
社内勉強会などにご利用ください
SEE ALSO 
Go言語によるCLIツール開発とUNIX哲学について 
[まとめ] Go Conference 2014 autumn

More Related Content

Viewers also liked

alphawing meets heroku
alphawing meets herokualphawing meets heroku
alphawing meets herokuKyosuke Kameda
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12matsuo kenji
 
Go言語と過ごした一週間
Go言語と過ごした一週間Go言語と過ごした一週間
Go言語と過ごした一週間Shintaro Kitayama
 
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるMasakazu Muraoka
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)deris0126
 
ISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたKen Gotoh
 
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すためにAkihiko Horiuchi
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてsz yudppp
 
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会Satoshi Noda
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlInnami Satoshi
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Ato ARAKI
 
エンジニアと椅子
エンジニアと椅子エンジニアと椅子
エンジニアと椅子m1sogi
 
ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語Satoshi Noda
 
インタフェースの実装パターン
インタフェースの実装パターンインタフェースの実装パターン
インタフェースの実装パターンTakuya Ueda
 
綺麗なスライドを作るための11の原則
綺麗なスライドを作るための11の原則綺麗なスライドを作るための11の原則
綺麗なスライドを作るための11の原則Kazuki Susa
 
2150117 infrastructure.nagoya
2150117 infrastructure.nagoya2150117 infrastructure.nagoya
2150117 infrastructure.nagoyaHiroki Ito
 
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartupGo Sueyoshi (a.k.a sue445)
 

Viewers also liked (20)

alphawing meets heroku
alphawing meets herokualphawing meets heroku
alphawing meets heroku
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
 
Go言語と過ごした一週間
Go言語と過ごした一週間Go言語と過ごした一週間
Go言語と過ごした一週間
 
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみる
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
 
ISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみた
 
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語について
 
Dockerぐらし!
Dockerぐらし!Dockerぐらし!
Dockerぐらし!
 
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http url
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28
 
エンジニアと椅子
エンジニアと椅子エンジニアと椅子
エンジニアと椅子
 
ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語
 
Go言語の紹介
Go言語の紹介Go言語の紹介
Go言語の紹介
 
インタフェースの実装パターン
インタフェースの実装パターンインタフェースの実装パターン
インタフェースの実装パターン
 
AWS IoTでGo!
AWS IoTでGo!AWS IoTでGo!
AWS IoTでGo!
 
綺麗なスライドを作るための11の原則
綺麗なスライドを作るための11の原則綺麗なスライドを作るための11の原則
綺麗なスライドを作るための11の原則
 
2150117 infrastructure.nagoya
2150117 infrastructure.nagoya2150117 infrastructure.nagoya
2150117 infrastructure.nagoya
 
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
 

Similar to cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at high speed cli.go and cli-init

Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門Takeshi Morikawa
 
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golanggcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang啓介 大橋
 
Prometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slidePrometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slidecosmo0920
 
FlashAir x Bluemix アイデアソン
FlashAir x Bluemix アイデアソンFlashAir x Bluemix アイデアソン
FlashAir x Bluemix アイデアソンK Kimura
 
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そうgulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そうToshimichi Suekane
 
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth LINE Corporation
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービスcch-robo
 
Android App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioAndroid App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioSoichiro Kashima
 
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法Tokyo University of Science
 
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性Junji Nishihara
 
インフラエンジニアのためのKrypton For DevOps入門
インフラエンジニアのためのKrypton For DevOps入門インフラエンジニアのためのKrypton For DevOps入門
インフラエンジニアのためのKrypton For DevOps入門AkiraMidouchi
 
Google+APIをさわってみる。
Google+APIをさわってみる。Google+APIをさわってみる。
Google+APIをさわってみる。Hiroyuki Nozaki
 
cndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcapsmalt
 
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!Masaya Fujita
 
Dart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dartDart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dart啓介 大橋
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 

Similar to cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at high speed cli.go and cli-init (20)

Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門
 
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golanggcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
 
Prometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slidePrometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slide
 
FlashAir x Bluemix アイデアソン
FlashAir x Bluemix アイデアソンFlashAir x Bluemix アイデアソン
FlashAir x Bluemix アイデアソン
 
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そうgulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
 
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービス
 
Android App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioAndroid App Development with Gradle & Android Studio
Android App Development with Gradle & Android Studio
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
Openshift 20191128
Openshift 20191128Openshift 20191128
Openshift 20191128
 
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
 
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
 
インフラエンジニアのためのKrypton For DevOps入門
インフラエンジニアのためのKrypton For DevOps入門インフラエンジニアのためのKrypton For DevOps入門
インフラエンジニアのためのKrypton For DevOps入門
 
Google+APIをさわってみる。
Google+APIをさわってみる。Google+APIをさわってみる。
Google+APIをさわってみる。
 
cndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmalt
 
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
 
Dart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dartDart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dart
 
Openshift 20191121
Openshift 20191121Openshift 20191121
Openshift 20191121
 
GDG Shikoku 2013
GDG Shikoku 2013GDG Shikoku 2013
GDG Shikoku 2013
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 

Recently uploaded

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Recently uploaded (9)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at high speed cli.go and cli-init

  • 1. CLI.GO と CLI-INIT で高速にコマ ンドラインツールを開発す る THE COMMAND-LINE TOOL DEVELOPED AT HIGH SPEED CLI.GO AND CLI-INIT 2014/12/12 @taketin
  • 2. WHAT'S CLI.GO ? https://github.com/codegangsta/cli
  • 3. A SMALL PACKAGE FOR BUILDING COMMAND LINE APPS IN GO star - over 1900 GitHub code search hit - over 2800 CLIツール実装に必要なインタフェースを提供 コアロジックに集中できる
  • 4. WHAT'S CLI-INIT ? https://github.com/tcnksm/cli-init
  • 5. THE EASY WAY TO START BUILDING GOLANG COMMAND-LINE APPLICATION ref. 高速にGo言語のCLIツールをつくるcli-initというツール をつくった cli.go のテンプレートを生成 高速に開発開始!
  • 7. #0 ENVIRONMENT $ brew install go $ vi .bashrc export GOPATH=$HOME/go export GOROOT=/usr/local/opt/go/libexec export PATH=$PATH:$GOPATH/bin:$GOROOT/bin
  • 8. #1 INSTALLATION $ go get -d github.com/tcnksm/cli-init $ cd $GOPATH/src/github.com/tcnksm/cli-init $ make install
  • 9. #2 SPECIFICATION 仕様を決める TODOアプリ コマンドは todo とする 追加、削除、一覧 ができる インターフェースは add, delete, list とする
  • 10. #3 CLI-INIT $ cli-init -s add,delete,list todo
  • 11. #4 DEVELOPMENT commands.go にガリガリ書く
  • 12. #5 FLAGS コマンドにフラグオプションを追加する場合 ex) todo delete -a commands.go にフラグの記述を追記 var deleteFlags = []cli.Flag{ cli.BoolFlag{Name: "all, a", Usage: "all delete"}, } var commandDelete = cli.Command{ Name: "delete", Usage: "", Description: ` `, Action: doDelete, Flags: deleteFlags, // add } func doDelete(c *cli.Context) { isDeleteAll := c.Bool("all") if isDeleteAll { // snip.. } }
  • 13. #6 BUILD $ go install $ todo -h
  • 14. #7 ENJOY Golang 学習コストそれほど高くない(気がする) 書き易いし読み易い(気がする) package の仕組み 便利ツール作るのに最適ぽい 標準ライブラリ充実 クロスコンパイル環境 速度が早い goroutine
  • 15. TALKER https://github.com/taketin/talker 重複無しで総当たりのくじ引き Dropbox をストレージで使う 社内勉強会などにご利用ください