Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
crates.io にライブラリを公開してみた / publish-on-crates-io
Search
haco
November 13, 2020
Programming
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
crates.io にライブラリを公開してみた / publish-on-crates-io
haco
November 13, 2020
More Decks by haco
See All by haco
コードファースト vs スキーマファースト on Rust / code-first-vs-schema-first
haco
0
2.5k
新タクシー配車システムの裏側/dispatcher-background
haco
1
460
Other Decks in Programming
See All in Programming
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
150
AHC070解法紹介
eijirou
0
110
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
610
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
170
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
370
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
140
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
530
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
1.1k
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
6.5k
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
230
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
420
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Side Projects
sachag
456
43k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Cult of Friendly URLs
andyhume
79
7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
190
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
30 Presentation Tips
portentint
PRO
1
390
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Transcript
Mobility Technologies Co., Ltd. crates.io にライブラリを公開してみた t.aida / 相田岳彦 2020/10/29
MoT.rs #2
Mobility Technologies Co., Ltd. 2 主題 : Rust エコシステム紹介 1.
crates.io 紹介 2. ライブラリ公開の手順 3. 自動化のススメ 話すこと
Mobility Technologies Co., Ltd. crates.io の紹介 3 01
Mobility Technologies Co., Ltd. 4 https://crates.io/ crates.io って何?
Mobility Technologies Co., Ltd. 5 • RubyGems や • JavaScript
の npm みたいなやつです crates.io って何?
Mobility Technologies Co., Ltd. 6 モジュールを検索したり… こんな感じで
Mobility Technologies Co., Ltd. 7 ドキュメントを読んだり… こんな感じで
Mobility Technologies Co., Ltd. 8 依存モジュールを確認できたり… パッケージ管理に必要な一通りの機能が揃ってます こんな感じで
Mobility Technologies Co., Ltd. 9 https://www.reddit.com/r/rust/ 最新情報のキャッチアップは reddit がオススメ •
あるある罠の Q&A • アップデート後のバグ報告 • ライブラリ作者によるハイテンションなリリース報告 • 今話題のブログ記事 etc… 余談
Mobility Technologies Co., Ltd. ライブラリを公開する 10 02
Mobility Technologies Co., Ltd. 11 まずはアカウント登録!
Mobility Technologies Co., Ltd. 12 まずはアカウント登録!
Mobility Technologies Co., Ltd. 13 APIトークン発行!
Mobility Technologies Co., Ltd. 14 $ cargo login xxxxxxxxxx $
cargo publish または… $ export CARGO_REGISTRY_TOKEN=”xxxxxxxxxx” $ cargo publish ライブラリ公開!
Mobility Technologies Co., Ltd. 15 ライブラリの公開は超簡単です! レッツトライ!! 君だけの最強のライブラリを公開してライバルに差をつけよう! ということで
Mobility Technologies Co., Ltd. 16 cargo.toml ファイルに一行追加するだけ [dependencies] serde_json =
"1.0" もちろん使うのも簡単!
Mobility Technologies Co., Ltd. 17 …?
Mobility Technologies Co., Ltd. 18 「npm でも gem でもほとんど同じでしょ」 え、それって…
Mobility Technologies Co., Ltd. 19 「npm でも gem でもほとんど同じでしょ」 「当たり前のことじゃないの?」
え、それって…
Mobility Technologies Co., Ltd. 20 「npm でも gem でもほとんど同じでしょ」 「当たり前のことじゃないの?」
→ そんなふうに考えていた時期が(ry え、それって…
Mobility Technologies Co., Ltd. 21 組み込み Linux で使われている C/C++ の世界観では全く当たり前ではない!
それって当たり前のことじゃないの?
Mobility Technologies Co., Ltd. 22 まずビルドツールが乱立していて… • GNU Make /
CMake / Ninja / Meson / Bazel / Gradle (!) etc... ビルド方法がライブラリごとに異なるため… • 依存しているモジュールのバージョンを調べて • ライブラリをそれぞれの手順でビルドして • 生成されたファイル群を特定のパスに配置して やっと自分のアプリケーションをビルドできる (yum や apt で完結するなら楽だけど docker コンテナは必須) (クロスコンパイルのツールチェインが入ると GB 単位で膨れる) (そもそもパッケージ管理ツールで完結することはまずない ) C/C++ のプロジェクトは…
Mobility Technologies Co., Ltd. 23 まずビルドツールが乱立していて… • GNU Make /
CMake / Ninja / Meson / Bazel / Gradle (!) etc... ビルド方法がライブラリごとに異なるため… • 依存しているモジュールのバージョンを合わせて • ライブラリをそれぞれ異なる手順でビルドして • 生成されたファイルを特定のパスに配置して やっと自分のアプリケーションをビルドできる (yum や apt で完結するなら楽だけど docker コンテナは必須) (そもそもパッケージ管理ツールで完結することはまずない ) C/C++ のプロジェクトは… TL;DR ビルドが地獄!
Mobility Technologies Co., Ltd. 24 システムプログラミング言語では 統一されたツールがあること自体が画期的! なので…
Mobility Technologies Co., Ltd. 25 言い換えると… ウェブ開発のようなお手軽さで システムプログラミング言語を扱うことができる!! (ライブラリ公開の話から脱線してますね…) ということで
Mobility Technologies Co., Ltd. 自動化のススメ 26 03
Mobility Technologies Co., Ltd. 27 数が増えてくると結構大変 ライブラリ公開はお手軽だけど…
Mobility Technologies Co., Ltd. 28 複数個のライブラリを含むプロジェクトで ▪ libs/ ▪ foo/Cargo.toml
▪ bar/Cargo.toml ▪ baz/Cargo.toml ▪ app/ ▪ Cargo.toml foo, bar, baz をリリースしたい場合 たとえば…
Mobility Technologies Co., Ltd. 29 $ cd libs/foo $ cargo
publish --manifest-path=... を繰り返すのは面倒なので CI にやらせたい! 手作業で
Mobility Technologies Co., Ltd. 30 • libs/*/Cargo.toml が更新されたらライブラリのリリース • master
以外では --dry-run • リリース時は Cargo.toml のバージョンを上げる [package] name = "foo" version = "0.1.0" # これ 運用ルールを決める
Mobility Technologies Co., Ltd. 31 更新されたファイルの一覧を取得して - id: files uses:
jitterbit/get-changed-files@v1 with: format: 'json' 適当なリリース用のスクリプトに渡せば OK - name: Release applications if: ${{ github.ref == 'refs/heads/master' }} run: | ./builder/call.sh task release-apps \ --files='${{ steps.files. outputs.added_modified }}' GitHub Actions でやること
Mobility Technologies Co., Ltd. 32 • Cargo.toml から version 取得
• タグを作って git tag と git push 実行 • 最後に cargo publish お手軽! リリース用のスクリプトでやること
Mobility Technologies Co., Ltd. 33 三行まとめ • ライブラリ公開は簡単! • GitHub
Actions で自動化も簡単! • Rust やってこ 公開したライブラリ • log4rs-cases - crates.io • env-extractor - crates.io おわり
文章·画像等の内容の無断転載及び複製等の行為はご遠慮ください。 Mobility Technologies Co., Ltd. 34