SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Goで作って配布する
Azureコマンドラインユーティリティ
de:code夏まつり ~よりコミュニティを楽しくするためのコミュニティのすすめ the FINAL
2020-08-08 八重樫 剛史 Takeshi Yaegashi
自己紹介
2
八重樫 剛史 Takeshi Yaegashi
株式会社バンダイナムコスタジオ所属
Linux・Unix・OSS・Go 言語が好きなエンジニア
組み込みシステム開発、ゲームサーバ開発、CI/CD インフラ開発、
開発環境のクラウドシフトなどの業務に従事
活動場所
ホームページ・ブログ https://l0w.dev
GitHub https://github.com/yaegashi
GitLab https://gitlab.com/yaegashi
Twitter https://twitter.com/hogegashi
今日の話題
3
 私の de:code 2020
 Go と Gophers と Azure
 azbill の紹介とクラウド利用費用可視化のねらい
 Go による Azure プログラミング
 Go によるクロスプラットフォーム・シングルバイナリ CLI ツール開発
私の de:code 2020
4
 ゲーム会社の開発インフラのクラウド導入を推進する立場にいるので、
テクニカルな話題だけでなく、DX・組織変革の話題も大いに参考になりました
 全部は見てませんが参考になったセッションや企画
 A12 A13 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう!
 S09 Apps on Azure AD - アプリケーション連携 WHY と HOW
 Z05 ビジネスをアジャイルに変革する「Cloud Center of Excellence」とは
 de:code 夏まつり ~よりコミュニティを楽しくするためのコミュニティのすすめ
 実は de:code 2019 では自分も登壇していました
 DT01 ゲームメーカー目線でAzureを活用した開発インフラのクラウドシフトとアプリ設計事例紹介
Go について
5
https://golang.org
 Google 製のプログラミング言語 (2009)
 C ライクでシンプルな文法、豊富なライブラリ
 サーバー、インフラ、コマンドライン (CLI) ツールが得意分野
 Docker, Kubernetes, Terraform など現代のクラウドインフラの実装主力言語
 クロスプラットフォーム開発サポート
 Linux, macOS, Windows など各OS・CPU向け実行ファイルが簡単に作れる
 マスコット Gopher (ホリネズミ)
 Go コミュニティの人たちを Gophers と呼ぶこともあります
Gophers にとっての Microsoft/Windows/Azure
6
 フロンティアもしくはブルーオーシャン (のひとつ)
 Go にとって未踏のサービス・OS・API がたくさんある
 Go・Azure・インフラなど様々なコミュニティで先駆者になれるチャンス
 事例 msgraph.go https://github.com/yaegashi/msgraph.go
 拙作の Microsoft Graph のクライアントライブラリ
このような重要な API のライブラリがまだないのが Go と Azure の世界
 msgraph.go 利用プロジェクト
 Terraform (Goで開発) の各種プロバイダ: msgraph, outlook
 matterbridge チャットブリッジサーバ: Teams 対応に msgraph.go を利用
 Gophers Slack の #microsoft #azure-sdk-for-go などで交流しましょう
 Microsoft 勤務の Gophers もたくさんいます
azbill の紹介
7
https://github.com/yaegashi/azbill
 Go 言語によるコマンドライン (CLI) ユーティリティ
 Azure で使った費用の利用明細を JSONL や CSV の形式でエクスポートする
 オフラインのコスト分析のためのデータを生成する
 Qiita の紹介記事
https://qiita.com/yaegashi/items/dfde7206f7eaf009c345
azbill 開発の動機
8
 最近の仕事:開発インフラのクラウド導入推進
 2019 年度は社内の Azure 利用実績を伸ばし Enterprise Agreement 導入に成功!
 Azure サブスクリプションが作り放題となり、構成の自由度・柔軟性が飛躍的に増す
 クラウド利用コストの可視化
 どの部署・プロジェクトがどれだけ Azure を使っているかを誰でもわかるようにして、
新規利用開始の敷居をさらに下げ、相互チェックも働くようにしたい
azbill
Go による Azure プログラミング
9
https://github.com/Azure/azure-sdk-for-go
 Azure SDK for Go
 Azure Resource Manager (ARM) の REST API を発行できる Go のライブラリ
 VM を作成・起動・停止したり、請求書を照会したりが Go プログラムでできる
 Azure SDK の問題点 (Go に限らない話)
 Azure SDK の更新が最新の ARM REST API に追いついていないことが多い
 例: 新しい形式の利用明細を照会するために Consumption API のバージョン 2019-10-01 を使い
たいが Azure SDK for Go ではバージョン 2019-01-01 までしか使えない
AutoRest による Azure SDK コード生成
10
https://github.com/Azure/autorest
 AutoRest CLI で最新の ARM REST API の定義から SDK コードが生成できる
 azure-rest-api-specs: REST API の OpenAPI 定義
 AutoRest CLI: SDK コード生成 CLI ツール (Node.js)
 autorest.go: Go コード生成プラグイン (C# .NET Core)
$ npm install -g autorest
$ git clone --depth=1 https://github.com/Azure/azure-rest-api-specs.git specs
$ autorest --go 
--tag=package-2019-10 
--output-folder=./azure-sdk/consumption 
--package-name=github.com/foo/bar/azure-sdk/consumption 
specs/specification/consumption/resource-manager
Visual Studio Code と development container による
Go 開発環境セットアップ
 開発環境構築の悩み
 Go でなにか作ってみたいけどインストール
と設定がめんどくさい…
 AutoRest CLI を使おうと思ったら Node.js と
か .NET Core のインストールも必要…
 VSCode の development container が便利
 Linux 開発環境の Docker コンテナを自動的に
作ってシェルを起動してくれる
 azbill も .devcontainer を用意しているので最
新版の開発・テストにすぐ参加できる
 Go の開発においては CLI に限らず JAMstack
アプリなどあらゆる案件でおすすめできる
11
Go によるクロスプラットフォーム・
シングルバイナリ配布
 azbill のバイナリ配布
 Linux, macOS, Windows 向けがある
 Windows なら zip の中の約 9MB の実行ファ
イル azbill.exe だけで動く
 シングルバイナリが便利なところ
 ダウンロードしてすぐに使ってもらえる
 コンテナに簡単に組み込める
 Go によるクロスプラットフォーム・シン
グルバイナリ CLI の例
 kubectl, hugo, docker-compose, などなど
 az aks install-cli
12
GoReleaser によるビルド・リリース
13
https://goreleaser.com
 各OS・CPU向けのビルド・リリースを自動化してくれる CLI ツール
 GitHub Actions, GitLab CI, CircleCI など様々な CI/CD サービスをサポート
 azbill のようなクロスプラットフォーム CLI ツールに最適
 .goreleaser.yml を書くことで設定する
project_name: azbill
builds:
- goos: [linux, darwin, windows]
goarch: [amd64]
archives:
- name_template: '{{.ProjectName}}_v{{.Version}}_{{.Os}}_{{.Arch}}'
format_overrides:
- goos: windows
format: zip
Go による CLI ツール開発
14
 spf13/cobra https://github.com/spf13/cobra
 Go で最も使われている CLI 構築ライブラリ
 コマンドラインオプション解析や bash/zsh 補完などをサポートする
 kubectl などもこれを使っている
 yaegashi/cobra-cmder https://github.com/yaegashi/cobra-cmder
 spf13/cobra の拡張
 階層コマンドの記述とテストがやりやすくなる
 Qiita の記事
https://qiita.com/yaegashi/items/9acc1d22bcc247542a4e
まとめ
15
 Go と Azure とクラウド導入の話を中心にお伝えしました
 Go と Gophers と Azure
 azbill とクラウド費用可視化の取り組み
 Go の得意なクロスプラットフォーム・シングルバイナリ CLI ツール
 これからもいろいろなコミュニティへのアウトプットを頑張っていきます!
おわり
16

Weitere ähnliche Inhalte

Was ist angesagt?

2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugaktsk
 
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話xiidec
 
Wordpress on heroku
Wordpress on herokuWordpress on heroku
Wordpress on herokuKokoro Sato
 
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料慎二 山田
 
Windows Azureで Webサーバーを再発明してみる
Windows AzureでWebサーバーを再発明してみるWindows AzureでWebサーバーを再発明してみる
Windows Azureで Webサーバーを再発明してみるSunao Tomita
 
VSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusqueVSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusquekyusque
 
Rancher使ってみたよ(初心者向け)
Rancher使ってみたよ(初心者向け)Rancher使ってみたよ(初心者向け)
Rancher使ってみたよ(初心者向け)Shun Sumiya
 
Bicep + VS Code で楽々Azure Deploy
Bicep + VS Code で楽々Azure DeployBicep + VS Code で楽々Azure Deploy
Bicep + VS Code で楽々Azure DeployTakekazu Omi
 
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chefコンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-ChefYukihiko SAWANOBORI
 
Dockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバDockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバ祐磨 堀
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippboxGo Chiba
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバるDaigou Harada
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドMasanori Nara
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションKazuhiro Hara
 
dockerでImmutable InfrastructureなWordPressを考える
dockerでImmutable InfrastructureなWordPressを考えるdockerでImmutable InfrastructureなWordPressを考える
dockerでImmutable InfrastructureなWordPressを考えるGMOインターネット
 
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureA 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureGoAzure
 
Durable Functions (Core) 気になっていたことを勉強がてら実装してみた
Durable Functions (Core) 気になっていたことを勉強がてら実装してみたDurable Functions (Core) 気になっていたことを勉強がてら実装してみた
Durable Functions (Core) 気になっていたことを勉強がてら実装してみた朋志 佐々木
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Nakazawa Yuichi
 

Was ist angesagt? (20)

2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsug
 
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話
 
Wordpress on heroku
Wordpress on herokuWordpress on heroku
Wordpress on heroku
 
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
Nuxt.js入門 2018/02/02 Vue.js入門勉強会@渋谷 発表資料
 
Windows Azureで Webサーバーを再発明してみる
Windows AzureでWebサーバーを再発明してみるWindows AzureでWebサーバーを再発明してみる
Windows Azureで Webサーバーを再発明してみる
 
VSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusqueVSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusque
 
Rancher使ってみたよ(初心者向け)
Rancher使ってみたよ(初心者向け)Rancher使ってみたよ(初心者向け)
Rancher使ってみたよ(初心者向け)
 
Bicep + VS Code で楽々Azure Deploy
Bicep + VS Code で楽々Azure DeployBicep + VS Code で楽々Azure Deploy
Bicep + VS Code で楽々Azure Deploy
 
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chefコンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
 
Dockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバDockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバ
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippbox
 
Bot Framework v4 開発 Tips 2018-11
Bot Framework v4  開発 Tips 2018-11Bot Framework v4  開発 Tips 2018-11
Bot Framework v4 開発 Tips 2018-11
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバる
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルド
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
 
dockerでImmutable InfrastructureなWordPressを考える
dockerでImmutable InfrastructureなWordPressを考えるdockerでImmutable InfrastructureなWordPressを考える
dockerでImmutable InfrastructureなWordPressを考える
 
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureA 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
 
Durable Functions (Core) 気になっていたことを勉強がてら実装してみた
Durable Functions (Core) 気になっていたことを勉強がてら実装してみたDurable Functions (Core) 気になっていたことを勉強がてら実装してみた
Durable Functions (Core) 気になっていたことを勉強がてら実装してみた
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築
 

Ähnlich wie Goで作って配布するAzureコマンドラインユーティリティ

【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜日本マイクロソフト株式会社
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionYoshifumi Kawai
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio CodeTakashi Okawa
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!Minoru Naito
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化Issei Hiraoka
 
ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure FunctionsKeiji Kamebuchi
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた日本マイクロソフト株式会社
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について真吾 吉田
 
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Kazumi IWANAGA
 
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころKazumi IWANAGA
 
AKS+KEDAで実現!Container Functions Pipeline
AKS+KEDAで実現!Container Functions PipelineAKS+KEDAで実現!Container Functions Pipeline
AKS+KEDAで実現!Container Functions PipelineTsukasa Kato
 
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
Settings SyncとCodespaceで体験する新世代へのパラダイムシフトSettings SyncとCodespaceで体験する新世代へのパラダイムシフト
Settings SyncとCodespaceで体験する新世代へのパラダイムシフトAtsushi Nakamura
 
Monaco Editor on Cloud
Monaco Editor on CloudMonaco Editor on Cloud
Monaco Editor on CloudShuto Suzuki
 
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証Yuta Matsumura
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートAkira Inoue
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Kazumi IWANAGA
 
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~Akira Inoue
 

Ähnlich wie Goで作って配布するAzureコマンドラインユーティリティ (20)

【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure Functions
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
 
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
 
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
 
AKS+KEDAで実現!Container Functions Pipeline
AKS+KEDAで実現!Container Functions PipelineAKS+KEDAで実現!Container Functions Pipeline
AKS+KEDAで実現!Container Functions Pipeline
 
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
Settings SyncとCodespaceで体験する新世代へのパラダイムシフトSettings SyncとCodespaceで体験する新世代へのパラダイムシフト
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
 
Monaco Editor on Cloud
Monaco Editor on CloudMonaco Editor on Cloud
Monaco Editor on Cloud
 
Inside of swift
Inside of swiftInside of swift
Inside of swift
 
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~
 
Azure Fundamental
Azure FundamentalAzure Fundamental
Azure Fundamental
 

Mehr von yaegashi

go generate 完全入門
go generate 完全入門go generate 完全入門
go generate 完全入門yaegashi
 
msgraph.go: Go言語で Microsoft Graph プログラミング
msgraph.go: Go言語で Microsoft Graph プログラミングmsgraph.go: Go言語で Microsoft Graph プログラミング
msgraph.go: Go言語で Microsoft Graph プログラミングyaegashi
 
AnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αyaegashi
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Goyaegashi
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話yaegashi
 
golang binary hacks
golang binary hacksgolang binary hacks
golang binary hacksyaegashi
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件yaegashi
 
Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献yaegashi
 

Mehr von yaegashi (8)

go generate 完全入門
go generate 完全入門go generate 完全入門
go generate 完全入門
 
msgraph.go: Go言語で Microsoft Graph プログラミング
msgraph.go: Go言語で Microsoft Graph プログラミングmsgraph.go: Go言語で Microsoft Graph プログラミング
msgraph.go: Go言語で Microsoft Graph プログラミング
 
AnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + α
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話
 
golang binary hacks
golang binary hacksgolang binary hacks
golang binary hacks
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
 
Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献
 

Kürzlich hochgeladen

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Kürzlich hochgeladen (10)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

Goで作って配布するAzureコマンドラインユーティリティ

  • 2. 自己紹介 2 八重樫 剛史 Takeshi Yaegashi 株式会社バンダイナムコスタジオ所属 Linux・Unix・OSS・Go 言語が好きなエンジニア 組み込みシステム開発、ゲームサーバ開発、CI/CD インフラ開発、 開発環境のクラウドシフトなどの業務に従事 活動場所 ホームページ・ブログ https://l0w.dev GitHub https://github.com/yaegashi GitLab https://gitlab.com/yaegashi Twitter https://twitter.com/hogegashi
  • 3. 今日の話題 3  私の de:code 2020  Go と Gophers と Azure  azbill の紹介とクラウド利用費用可視化のねらい  Go による Azure プログラミング  Go によるクロスプラットフォーム・シングルバイナリ CLI ツール開発
  • 4. 私の de:code 2020 4  ゲーム会社の開発インフラのクラウド導入を推進する立場にいるので、 テクニカルな話題だけでなく、DX・組織変革の話題も大いに参考になりました  全部は見てませんが参考になったセッションや企画  A12 A13 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう!  S09 Apps on Azure AD - アプリケーション連携 WHY と HOW  Z05 ビジネスをアジャイルに変革する「Cloud Center of Excellence」とは  de:code 夏まつり ~よりコミュニティを楽しくするためのコミュニティのすすめ  実は de:code 2019 では自分も登壇していました  DT01 ゲームメーカー目線でAzureを活用した開発インフラのクラウドシフトとアプリ設計事例紹介
  • 5. Go について 5 https://golang.org  Google 製のプログラミング言語 (2009)  C ライクでシンプルな文法、豊富なライブラリ  サーバー、インフラ、コマンドライン (CLI) ツールが得意分野  Docker, Kubernetes, Terraform など現代のクラウドインフラの実装主力言語  クロスプラットフォーム開発サポート  Linux, macOS, Windows など各OS・CPU向け実行ファイルが簡単に作れる  マスコット Gopher (ホリネズミ)  Go コミュニティの人たちを Gophers と呼ぶこともあります
  • 6. Gophers にとっての Microsoft/Windows/Azure 6  フロンティアもしくはブルーオーシャン (のひとつ)  Go にとって未踏のサービス・OS・API がたくさんある  Go・Azure・インフラなど様々なコミュニティで先駆者になれるチャンス  事例 msgraph.go https://github.com/yaegashi/msgraph.go  拙作の Microsoft Graph のクライアントライブラリ このような重要な API のライブラリがまだないのが Go と Azure の世界  msgraph.go 利用プロジェクト  Terraform (Goで開発) の各種プロバイダ: msgraph, outlook  matterbridge チャットブリッジサーバ: Teams 対応に msgraph.go を利用  Gophers Slack の #microsoft #azure-sdk-for-go などで交流しましょう  Microsoft 勤務の Gophers もたくさんいます
  • 7. azbill の紹介 7 https://github.com/yaegashi/azbill  Go 言語によるコマンドライン (CLI) ユーティリティ  Azure で使った費用の利用明細を JSONL や CSV の形式でエクスポートする  オフラインのコスト分析のためのデータを生成する  Qiita の紹介記事 https://qiita.com/yaegashi/items/dfde7206f7eaf009c345
  • 8. azbill 開発の動機 8  最近の仕事:開発インフラのクラウド導入推進  2019 年度は社内の Azure 利用実績を伸ばし Enterprise Agreement 導入に成功!  Azure サブスクリプションが作り放題となり、構成の自由度・柔軟性が飛躍的に増す  クラウド利用コストの可視化  どの部署・プロジェクトがどれだけ Azure を使っているかを誰でもわかるようにして、 新規利用開始の敷居をさらに下げ、相互チェックも働くようにしたい azbill
  • 9. Go による Azure プログラミング 9 https://github.com/Azure/azure-sdk-for-go  Azure SDK for Go  Azure Resource Manager (ARM) の REST API を発行できる Go のライブラリ  VM を作成・起動・停止したり、請求書を照会したりが Go プログラムでできる  Azure SDK の問題点 (Go に限らない話)  Azure SDK の更新が最新の ARM REST API に追いついていないことが多い  例: 新しい形式の利用明細を照会するために Consumption API のバージョン 2019-10-01 を使い たいが Azure SDK for Go ではバージョン 2019-01-01 までしか使えない
  • 10. AutoRest による Azure SDK コード生成 10 https://github.com/Azure/autorest  AutoRest CLI で最新の ARM REST API の定義から SDK コードが生成できる  azure-rest-api-specs: REST API の OpenAPI 定義  AutoRest CLI: SDK コード生成 CLI ツール (Node.js)  autorest.go: Go コード生成プラグイン (C# .NET Core) $ npm install -g autorest $ git clone --depth=1 https://github.com/Azure/azure-rest-api-specs.git specs $ autorest --go --tag=package-2019-10 --output-folder=./azure-sdk/consumption --package-name=github.com/foo/bar/azure-sdk/consumption specs/specification/consumption/resource-manager
  • 11. Visual Studio Code と development container による Go 開発環境セットアップ  開発環境構築の悩み  Go でなにか作ってみたいけどインストール と設定がめんどくさい…  AutoRest CLI を使おうと思ったら Node.js と か .NET Core のインストールも必要…  VSCode の development container が便利  Linux 開発環境の Docker コンテナを自動的に 作ってシェルを起動してくれる  azbill も .devcontainer を用意しているので最 新版の開発・テストにすぐ参加できる  Go の開発においては CLI に限らず JAMstack アプリなどあらゆる案件でおすすめできる 11
  • 12. Go によるクロスプラットフォーム・ シングルバイナリ配布  azbill のバイナリ配布  Linux, macOS, Windows 向けがある  Windows なら zip の中の約 9MB の実行ファ イル azbill.exe だけで動く  シングルバイナリが便利なところ  ダウンロードしてすぐに使ってもらえる  コンテナに簡単に組み込める  Go によるクロスプラットフォーム・シン グルバイナリ CLI の例  kubectl, hugo, docker-compose, などなど  az aks install-cli 12
  • 13. GoReleaser によるビルド・リリース 13 https://goreleaser.com  各OS・CPU向けのビルド・リリースを自動化してくれる CLI ツール  GitHub Actions, GitLab CI, CircleCI など様々な CI/CD サービスをサポート  azbill のようなクロスプラットフォーム CLI ツールに最適  .goreleaser.yml を書くことで設定する project_name: azbill builds: - goos: [linux, darwin, windows] goarch: [amd64] archives: - name_template: '{{.ProjectName}}_v{{.Version}}_{{.Os}}_{{.Arch}}' format_overrides: - goos: windows format: zip
  • 14. Go による CLI ツール開発 14  spf13/cobra https://github.com/spf13/cobra  Go で最も使われている CLI 構築ライブラリ  コマンドラインオプション解析や bash/zsh 補完などをサポートする  kubectl などもこれを使っている  yaegashi/cobra-cmder https://github.com/yaegashi/cobra-cmder  spf13/cobra の拡張  階層コマンドの記述とテストがやりやすくなる  Qiita の記事 https://qiita.com/yaegashi/items/9acc1d22bcc247542a4e
  • 15. まとめ 15  Go と Azure とクラウド導入の話を中心にお伝えしました  Go と Gophers と Azure  azbill とクラウド費用可視化の取り組み  Go の得意なクロスプラットフォーム・シングルバイナリ CLI ツール  これからもいろいろなコミュニティへのアウトプットを頑張っていきます!

Hinweis der Redaktion

  1. 1