SlideShare a Scribd company logo
GitHub Releasesからインストールしたコマンドを管
理する
発表者: 次郎 (@jiro_saburomaru)
⽬次
1. ⾃⼰紹介
2. GitHub Releasesとローカルでの管理
3. relma の使い⽅
4. relma の仕組み
5. まとめ
⾃⼰紹介
Key Value
名前 次郎
Twitter @jiro_saburomaru
職業 サーバサイドエンジニア
GitHub Releasesとローカルでの管理
皆様はGitHub Releasesを使ってますか︖
GitHub Releases便利なので、僕は⼤変活⽤させてもらっています。
GitHub Releasesは開発者にとっても、リポジトリを訪れた⼈(以降ユーザ)にとって
も、⼿軽に使える素晴らしい機能だと感じています。
GitHub Releasesご存知ない⽅のために軽く説明すると
GitHubのリポジトリに紐づく、任意のファイルをユーザに提供できる機能
リポジトリのリリースを管理する - GitHub Docs
「タグを付与された時点でのリリース物」として利⽤される場合がほとんど
例: タグ v1.0.1 のリリース物
よくあるリリース物は以下
各OS⽤の実⾏可能ファイル
コードから⽣成したフォントファイル
圧縮ファイル (zip, tar.gz) の場合が多い
たまにバイナリそのまま
参考
なにが便利か
開発者
無料で使える
リリースファイルのアップロードが容易
CI (GitHub Actions, Travis CIなど)と連携して⾃動リリース可能
ユーザ
無料で使える
簡単にダウンロードできる
僕は主にGitHub Releasesにだけ公開されているコマンドのダウンロードに使っていま
す
有名なコマンドなどは apt install できたりするものもありますが、
GitHub Releasesだけに公開されているコマンドも多いです。
管理に悩む
こういったGitHub Releasesから取得するタイプのコマンドをインストールする時、僕
は以下のようなコマンドを実⾏します。
cd /tmp
wget https://github.com/jiro4989/nimjson/releases/download/v1.2.8/nimjson_linux.tar.gz
tar xzf nimjson_linux.tar.gz
mkdir -p ~/bin
install -m 0755 ./nimjson_linux/bin/nimjson ~/bin/
インストールする時は特にこれで不便ありません。
ですが、コマンドをアップグレードしたくなった時に困りました。
主に以下の問題に遭遇しました。
このコマンドどこから取得したっけ︖
どうやってインストールしたっけ︖
そもそも新しいバージョン出てるんだっけ︖
この問題はGitHub Releasesから取得するコマンドが増えるほど⼤きくなりました
「debianパッケージみたいに apt install でインストールできて、
apt update して apt upgrade でバージョン更新できたらいいのになぁ...」と感じるよ
うになりました。
ですがGitHub Releasesはタグに紐づくリリース物を公開する機能であって、
リリース物をユーザがどう管理するかについては責務外と思います。
僕の「debianパッケージみたいに管理したい」がそもそも責務外の無茶な要求という
ものです。
ということで、作りました。
GitHub Releasesでインストールしたコマンドの⼀括アップグレードを可能にするコマ
ンドです。
名前は relma (レルマ) としました。
https://github.com/jiro4989/relma
実装にはGo⾔語を使⽤しました。
Windowsでも動作します(管理者権限が必要ですが)。
relma の使い⽅
インストール⽅法
最初に init で初期化して、 install にリリース物のURLを渡してあげるだけです。
これでリリース物の圧縮ファイルを展開して $HOME/relma/bin に実⾏可能ファイルの
シンボリックリンクが配置されます。
relma init
relma install https://github.com/jiro4989/nimjson/releases/download/v1.2.8/nimjson_linux.tar.gz
アップグレード⽅法
以下の様に update して upgrade するだけです。
update では最新バージョンの有無をチェックし、バージョン情報をローカルに保存
します。
upgrade を実⾏するとアップグレード可能なパッケージをすべてアップグレードしま
す。
relma update
relma upgrade
インストールしたパッケージの確認⽅法
relma でインストールしたパッケージの⼀覧を確認する場合は list を実⾏します。
relma list
relma の仕組み
インストール⽅法
relma install に渡したURLのファイルをローカルに落し、所定のパスに展開してシ
ンボリックリンクを作ります。
$HOME/
relma/
bin/
command.exe # シンボリックリンク
releases/
$OWNER/
$REPO/
$VERSION/
$RELEASE_FILE.tar.gz
assets/
command.exe # 実体
リリースファイルの展開後のディレクトリ構造にはある程度パターンがあります。
⼤体は以下の 3 パターンのいずれかだろう、と考えました。
これらの展開後のディレクトリ構造を判別して実⾏可能ファイルのパスを特定し、
$HOME/relma/bin 配下にシンボリックリンクを作成します。
release_v1.0.0.zip/
command.exe # コマンドだけ配置されるケース
release_v1.0.0.zip/
release_v1.0.0/
command.exe # 圧縮ファイル名のディレクトリ配下に
# コマンドが配置されるケース
release_v1.0.0.zip/
release_v1.0.0/
bin/
command.exe # 圧縮ファイル名のディレクトリ配下に
# bin ディレクトリが配置され、
# その下にコマンドが配置されるケース
アップグレード時のインストールURLの特定⽅法
GitHub Releasesで公開されているコマンドの多くは、リリース⼿順を⾃動化されてい
ます。
ローカルで⼿動で叩くコマンドか、あるいはCIからか、⼿段は違えど⼤なり⼩なり⾃
動化されている場合が多いです。
また、リリースファイルの命名も、リポジトリごとに違えど、概ね命名が決まってい
て、「リリースファイル名に含まれるバージョン番号だけが異なる」という点で共通
点があります。
よって、 relma install に指定したURLのバージョン番号をリリースのタグ番号で差
し替えれば、次のバージョンのリリースファイルを取得するURLが特定できるので
は、と考えました。
https://github.com/jiro4989/nimjson/releases/download/${VERSION}/nimjson_${VERSION}_linux.tar.gz
しかし、開発者が毎回⼿動でリリースファイルを作っていて、命名が不規則だった
り、タグとバージョン番号が不⼀致になるケースもあると思います
これは対象外としました。
あらゆるリポジトリをサポートするつもりはないですし、命名が不規則なのはリポジ
トリのオーナーの管理の問題と考えます。
8割くらいのリポジトリをカバーできれば、僕は満⾜です。
実際に操作を⾒てみます。
(ここで実際に操作)
まとめ
GitHub Releasesの話をしました
relma コマンドの使い⽅を説明しました
relma コマンドの仕組みを説明しました
皆様のお役に⽴てば幸いです。
以上

More Related Content

What's hot

Google App Engine で ChatOps やっていき
Google App Engine で ChatOps やっていきGoogle App Engine で ChatOps やっていき
Google App Engine で ChatOps やっていき
Satoru Takanami
 
Github と仲良くなろう!
Github と仲良くなろう!Github と仲良くなろう!
Github と仲良くなろう!
Kentaro Ohkouchi
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
Tadahiro Ishisaka
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座Yusei Yamanaka
 
Githubを使いこなす(・ω・)
Githubを使いこなす(・ω・)Githubを使いこなす(・ω・)
Githubを使いこなす(・ω・)
Kazuki Takahashi
 
日本androidの会 中国支部 29回勉強会 github
日本androidの会 中国支部 29回勉強会 github日本androidの会 中国支部 29回勉強会 github
日本androidの会 中国支部 29回勉強会 github
Tomohiko Himura
 
githubハンズオン
githubハンズオンgithubハンズオン
githubハンズオン
Ayaka Ueda
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
Taisuke Inoue
 
GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回
NaohiroHamada
 
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
ichikaway
 
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
DoshishaUniv ProntiatVR
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門
kazuki kuriyama
 
git ~start PullRequest~
git ~start PullRequest~git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
 
GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)
Wataru NOGUCHI
 
医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門
Yui Tomo
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座
貴一 末田
 
Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
Shoot Morii
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門Takashi Imagire
 

What's hot (20)

Google App Engine で ChatOps やっていき
Google App Engine で ChatOps やっていきGoogle App Engine で ChatOps やっていき
Google App Engine で ChatOps やっていき
 
Github と仲良くなろう!
Github と仲良くなろう!Github と仲良くなろう!
Github と仲良くなろう!
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座
 
Githubを使いこなす(・ω・)
Githubを使いこなす(・ω・)Githubを使いこなす(・ω・)
Githubを使いこなす(・ω・)
 
日本androidの会 中国支部 29回勉強会 github
日本androidの会 中国支部 29回勉強会 github日本androidの会 中国支部 29回勉強会 github
日本androidの会 中国支部 29回勉強会 github
 
githubハンズオン
githubハンズオンgithubハンズオン
githubハンズオン
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
 
GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回
 
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
 
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門
 
git ~start PullRequest~
git ~start PullRequest~git ~start PullRequest~
git ~start PullRequest~
 
Bitbucket and git
Bitbucket and gitBitbucket and git
Bitbucket and git
 
GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)
 
Git地図
Git地図Git地図
Git地図
 
医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座
 
Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
 

Similar to GitHub Releasesからインストールしたコマンドを管理する

GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理
Masafumi Yokoyama
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
matsuo kenji
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
VirtualTech Japan Inc./Begi.net Inc.
 
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)
日本マイクロソフト株式会社
 
GitHub Handson
GitHub HandsonGitHub Handson
GitHub Handson
Yoichiro Shimizu
 
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
Kazumi IWANAGA
 
Git_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdfGit_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdf
Yoshiki Tanaka
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
Takeshi Mikami
 
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版
VirtualTech Japan Inc./Begi.net Inc.
 
Git 実践入門
Git 実践入門Git 実践入門
Git 実践入門
Yasutaka Kanzaki
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
Nariaki Tateiwa
 
GitHubの入門を読む前に読む入門書
GitHubの入門を読む前に読む入門書GitHubの入門を読む前に読む入門書
GitHubの入門を読む前に読む入門書
相皓 卞
 
GitHub Actions
GitHub ActionsGitHub Actions
GitHub Actions
Shogo Ichinose
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月
Kazumi IWANAGA
 
20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide
cosmo0920
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
ymmt
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
Suguru Oho
 

Similar to GitHub Releasesからインストールしたコマンドを管理する (20)

GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)
【de:code 2020】 GitHub 新機能のご紹介(2020 年 5 月発表)
 
GitHub Handson
GitHub HandsonGitHub Handson
GitHub Handson
 
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
 
Git_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdfGit_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdf
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
 
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版
 
Git 実践入門
Git 実践入門Git 実践入門
Git 実践入門
 
Gitのいろは
GitのいろはGitのいろは
Gitのいろは
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
 
GitHubの入門を読む前に読む入門書
GitHubの入門を読む前に読む入門書GitHubの入門を読む前に読む入門書
GitHubの入門を読む前に読む入門書
 
GitHub Actions
GitHub ActionsGitHub Actions
GitHub Actions
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月
 
20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
Git 20100313
Git 20100313Git 20100313
Git 20100313
 

Recently uploaded

シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
TatsuyaHanayama
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 

Recently uploaded (6)

シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 

GitHub Releasesからインストールしたコマンドを管理する