LINEUP & SCHEDULE

大規模プロダクトのための Cargo Workspace ベストプラクティス

  • トラック A

  • 11:20 - 11:45 (JST)

    • 発表言語: 日本語

Rust での大規模なプロダクト開発において、モジュール (mod) を使って機能を分けると各コンポーネントの責務を管理しづらくなっていきます。Cargo の Workspace 機能を使うと複数クレートを一箇所で管理でき、責務を分けやすくなります。

特にバックエンドを開発していると、コンポーネントの責務ごとに依存したいクレートが異なる場合があります。Cargo Workspace を使ってクレートを分けると Cargo.toml も分かれるので依存関係の管理がしやすくなります。

自社プロダクトのバックエンド開発を 3 年ほど継続した経験に基づくベストプラクティスを共有できればと思います。具体的には、以下に困ったり嬉しかったりしました。

  • 共通で依存したいクレートのバージョンを統一するにはどうすると良いか (1.64.0 で workspace.dependencies 機能が追加されて解決した)
  • 共通で利用したい型をどのように扱うと良いか
  • 外部サービスの API をモック化しやすくなった
  • Procedural macro を使う場合、そもそもクレートを分ける必要がありますが、同じワークスペースの中で扱うことができます
  • 各クレートの name のプレフィックス or サフィックスを合わせると良い
  • (自社プロダクトとは関連してないですが、) crates.io に publish するには cargo-release が便利
  • etc……

シェアしましょう!


プロフィール

名和雅実

名和雅実

Fairy Devices Inc., Product Development Department, Engineer


Copyright © Rust.Tokyo 2024 all rights reserved.


特定商取引法に基づく表示

ぜひフォローしてください! @rustlang_tokyo

お問い合わせ: rust-tokyo-staff@googlegroups.com

過去の開催