Submit Search
Upload
Go 言語で CLI ツールを作ってみた
•
0 likes
•
874 views
M
makoto ikezoe
Follow
Go(Un)Conference(Goあんこ)LT大会 5kg で話したスライドです #gounco #go #golang
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 33
Download now
Download to read offline
Recommended
Bitbucket pipelines を使ってみた話
Bitbucket pipelines を使ってみた話
makoto ikezoe
Xcode で gulp を使うお話
Xcode で gulp を使うお話
Yoichiro Sakurai
いまさら触るAwt
いまさら触るAwt
Keiichi Kobayashi
Angular2実践入門
Angular2実践入門
Shumpei Shiraishi
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
Erina Takei
僕はどうしてAngular2をテーマに登壇することになってしまったのか
僕はどうしてAngular2をテーマに登壇することになってしまったのか
Tomohiro Noguchi
Ninja framework使ってみた
Ninja framework使ってみた
eiryu
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論
鉄次 尾形
Recommended
Bitbucket pipelines を使ってみた話
Bitbucket pipelines を使ってみた話
makoto ikezoe
Xcode で gulp を使うお話
Xcode で gulp を使うお話
Yoichiro Sakurai
いまさら触るAwt
いまさら触るAwt
Keiichi Kobayashi
Angular2実践入門
Angular2実践入門
Shumpei Shiraishi
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
Erina Takei
僕はどうしてAngular2をテーマに登壇することになってしまったのか
僕はどうしてAngular2をテーマに登壇することになってしまったのか
Tomohiro Noguchi
Ninja framework使ってみた
Ninja framework使ってみた
eiryu
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論
鉄次 尾形
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話
akatsuki174
チーム開発にSwiftLintを導入してみた・詳細版
チーム開発にSwiftLintを導入してみた・詳細版
Ikada Kaori
Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫
furusin
クリエイティブの視点から探るAngular 2の可能性
クリエイティブの視点から探るAngular 2の可能性
Yasunobu Ikeda
2013 08-19 jjug
2013 08-19 jjug
sk44_
進撃のSbt
進撃のSbt
Yuto Suzuki
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
Erina Takei
会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話
Shuji Yamada
angular1脳で見るangular2
angular1脳で見るangular2
Moriyuki Arakawa
Easy easy2
Easy easy2
ssuser944f29
React meetup 3_eight
React meetup 3_eight
Hideharu Okuma
べき等データベースマイグレーションツールmigu
べき等データベースマイグレーションツールmigu
Naoya Inada
AndroidアプリをTravis CIでビルド
AndroidアプリをTravis CIでビルド
Kiwamu Okabe
Laravel Meetup Tokyo Vol.3 告知 LT
Laravel Meetup Tokyo Vol.3 告知 LT
Kenichi Mukai
Directiveで実現できたこと
Directiveで実現できたこと
Kon Yuichi
iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
Toshio Ehara
Riot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tips
Keisuke Imai
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Takayuki Shimizukawa
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋
Yuto M
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
史識 川原
More Related Content
What's hot
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話
akatsuki174
チーム開発にSwiftLintを導入してみた・詳細版
チーム開発にSwiftLintを導入してみた・詳細版
Ikada Kaori
Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫
furusin
クリエイティブの視点から探るAngular 2の可能性
クリエイティブの視点から探るAngular 2の可能性
Yasunobu Ikeda
2013 08-19 jjug
2013 08-19 jjug
sk44_
進撃のSbt
進撃のSbt
Yuto Suzuki
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
Erina Takei
会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話
Shuji Yamada
angular1脳で見るangular2
angular1脳で見るangular2
Moriyuki Arakawa
Easy easy2
Easy easy2
ssuser944f29
React meetup 3_eight
React meetup 3_eight
Hideharu Okuma
べき等データベースマイグレーションツールmigu
べき等データベースマイグレーションツールmigu
Naoya Inada
AndroidアプリをTravis CIでビルド
AndroidアプリをTravis CIでビルド
Kiwamu Okabe
Laravel Meetup Tokyo Vol.3 告知 LT
Laravel Meetup Tokyo Vol.3 告知 LT
Kenichi Mukai
Directiveで実現できたこと
Directiveで実現できたこと
Kon Yuichi
iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
Toshio Ehara
Riot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tips
Keisuke Imai
What's hot
(19)
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話
チーム開発にSwiftLintを導入してみた・詳細版
チーム開発にSwiftLintを導入してみた・詳細版
Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫
クリエイティブの視点から探るAngular 2の可能性
クリエイティブの視点から探るAngular 2の可能性
2013 08-19 jjug
2013 08-19 jjug
進撃のSbt
進撃のSbt
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話
angular1脳で見るangular2
angular1脳で見るangular2
Easy easy2
Easy easy2
React meetup 3_eight
React meetup 3_eight
べき等データベースマイグレーションツールmigu
べき等データベースマイグレーションツールmigu
AndroidアプリをTravis CIでビルド
AndroidアプリをTravis CIでビルド
Laravel Meetup Tokyo Vol.3 告知 LT
Laravel Meetup Tokyo Vol.3 告知 LT
Directiveで実現できたこと
Directiveで実現できたこと
iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
Riot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tips
Similar to Go 言語で CLI ツールを作ってみた
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Takayuki Shimizukawa
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋
Yuto M
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
史識 川原
Arduino を PHP で制御する
Arduino を PHP で制御する
Kenichi Ahagon
Easybuggy(バグ)の召し上がり方
Easybuggy(バグ)の召し上がり方
広平 田村
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
74th
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011
Takako Miyagawa
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
PythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEG
Jun Okazaki
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話
雄也 日下部
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
Kentarou Mukunasi
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
Takeshi Komiya
らくちん Go言語
らくちん Go言語
株式会社YEBIS.XYZ
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
Masakazu Muraoka
HTML5 のお話
HTML5 のお話
tomo_masakura
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
Toshiaki Aoike
Chrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるには
Yosuke HASEGAWA
Logcatの話
Logcatの話
Shinobu Okano
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
Takesxi Sximada
TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)
Kiyoshi Ogawa
Similar to Go 言語で CLI ツールを作ってみた
(20)
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Arduino を PHP で制御する
Arduino を PHP で制御する
Easybuggy(バグ)の召し上がり方
Easybuggy(バグ)の召し上がり方
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
PythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEG
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
らくちん Go言語
らくちん Go言語
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
HTML5 のお話
HTML5 のお話
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
Chrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるには
Logcatの話
Logcatの話
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)
Recently uploaded
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Toru Miyahara
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
mizukami4
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
Toru Miyahara
20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.
ShigekiInatama
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
Toru Miyahara
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
Kurata Takeshi
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
Toru Miyahara
Recently uploaded
(7)
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
Go 言語で CLI ツールを作ってみた
1.
ikezoe.makoto CLI ツールでGo 作ってみた
2.
https://github.com/IkezoeMakoto/zcrypt どれ? ※利用は自己責任でお願いします
3.
実演
4.
● どうして作ろうと思った? ● 軽くソースコード ●
利用技術は? ● 工夫した点は? ● まとめ 目次
5.
● どうして作ろうと思った? ● 軽くソースコード ●
利用技術は? ● 工夫した点は? ● まとめ 目次
6.
● APIなどのアクセスキーの管理がgitでしたい ○ 暗号化して置いておきたい どうして作ろうと思った?
7.
● APIなどのアクセスキーの管理がgitでしたい ○ 暗号化して置いておきたい ●
手軽に 暗号化/復号 したい ○ どこの環境でも使えて、どこの環境でも簡単に導入可 どうして作ろうと思った?
8.
● APIなどのアクセスキーの管理がgitでしたい ○ 暗号化して置いておきたい ●
手軽に 暗号化/復号 したい ○ どこの環境でも使えて、どこの環境でも簡単に導入可 ● Goでツール作ってみたかった ○ 高速、軽量、オブジェクト指向でない言語 どうして作ろうと思った?
9.
● どうして作ろうと思った? ● 軽くソースコード ●
利用技術は? ● 工夫した点は? ● まとめ 目次
10.
https://github.com/IkezoeMakoto/zcrypt どれ? ※利用は自己責任でお願いします
11.
● どうして作ろうと思った? ● 軽くソースコード ●
利用技術は? ● 工夫した点は? ● まとめ 目次
12.
● gox ● ghr ●
Makefile ● (ワンライナー) 利用技術
13.
https://github.com/mitchellh/gox ● 並列クロスコンパイルをしてくれるツール ● 利用箇所
gox -output "tags/$(TAG)/{{.Dir}}_{{.OS}}_{{.Arch}}" 利用技術 - gox
14.
● github release
page にアップロードしてくれるツール ● 利用箇所 https://github.com/tcnksm/ghr ghr $(TAG) tags/$(TAG) 利用技術 - ghr
15.
● 依存関係の解決 ● ビルド、テスト、デプロイ、等コマンドのインターフェース 利用技術
- Makefile PlantUML
16.
git tag |
sort | tail -1 | awk -F "." "{cnt=$3+1}{printf "%s.%s.%d", $1, $2, cnt}" ● git tag の最新番号にインクリメントしたバージョンを返す ● git tag でタグ一覧取得 ● sort で新しい順に並び替え ● tail -1 で1件のみ取得(この時点で最新のタグを取得できる) ● awk -F "." "{cnt=$3+1}{printf "%s.%s.%d", $1, $2, cnt}" ○ . 区切りにして3つ目に+1をしてくっつける 利用技術 - ワンライナー
17.
● どうして作ろうと思った? ● 軽くソースコード ●
利用技術は? ● 工夫した点は? ● まとめ 目次
18.
● 自動デプロイ ● テスト方法 ●
ブログ 工夫した点は?
19.
1. masterにマージ 工夫した点は? -
デプロイフロー
20.
1. masterにマージ 2. CI
発火 工夫した点は? - デプロイフロー
21.
1. masterにマージ 2. CI
発火 deploy: docker: - image: circleci/golang:1.9 working_directory: /go/src/github.com/IkezoeMakoto/zcrypt steps: - checkout - run: make deploy 工夫した点は? - デプロイフロー
22.
1. masterにマージ 2. CI
発火 3. デプロイターゲット実行 deploy: docker: - image: circleci/golang:1.9 working_directory: /go/src/github.com/IkezoeMakoto/zcrypt steps: - checkout - run: make deploy 工夫した点は? - デプロイフロー
23.
1. masterにマージ 2. CI
発火 3. デプロイターゲット実行 deploy: get/tag $(TAG) $(GOPATH)/bin/gox $(GOPATH)/bin/ghr gox -output "tags/$(TAG)/{{.Dir}}_{{.OS}}_{{.Arch}}" ghr $(TAG) tags/$(TAG) 工夫した点は? - デプロイフロー
24.
1. masterにマージ 2. CI
発火 3. デプロイターゲット実行 4. タグ採番 deploy: get/tag $(TAG) $(GOPATH)/bin/gox $(GOPATH)/bin/ghr gox -output "tags/$(TAG)/{{.Dir}}_{{.OS}}_{{.Arch}}" ghr $(TAG) tags/$(TAG) 工夫した点は? - デプロイフロー
25.
1. masterにマージ 2. CI
発火 3. デプロイターゲット実行 4. タグ採番 5. 並列クロスコンパイル deploy: get/tag $(TAG) $(GOPATH)/bin/gox $(GOPATH)/bin/ghr gox -output "tags/$(TAG)/{{.Dir}}_{{.OS}}_{{.Arch}}" ghr $(TAG) tags/$(TAG) 工夫した点は? - デプロイフロー
26.
1. masterにマージ 2. CI
発火 3. デプロイターゲット実行 4. タグ採番 5. 並列クロスコンパイル 6. githubのreleaseページに並列アップロード deploy: get/tag $(TAG) $(GOPATH)/bin/gox $(GOPATH)/bin/ghr gox -output "tags/$(TAG)/{{.Dir}}_{{.OS}}_{{.Arch}}" ghr $(TAG) tags/$(TAG) 工夫した点は? - デプロイフロー
27.
● go test
を使ってない 工夫した点は? - テスト
28.
● go test
を使ってない ○ go の標準関数をテストしたいわけじゃない 工夫した点は? - テスト
29.
● go test
を使ってない ○ go の標準関数をテストしたいわけじゃない ○ テストしたいのは 暗号化と復号 ができているか 工夫した点は? - テスト
30.
● https://blog.zoe.tools/entry/2018/10/09/230910 工夫した点は? -
ブログ
31.
● https://blog.zoe.tools/entry/2018/10/09/230910 影響
32.
● どうして作ろうと思った? ● 軽くソースコード ●
利用技術は? ● 工夫した点は? ● まとめ 目次
33.
● Go製ツールは簡単に作れる ○ gox,
ghr を使うと幸せになれるよ ● 自動デプロイは楽 ○ 最初に用意しておくと、機能改修が楽に ● 何かネタができたら定期的にアウトプットしよう ○ 継続することが力になる まとめ
Download now