Rust

RustでCLIツール開発:環境構築・テンプレート・CI/CD完全ガイド

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

1. 開発環境の整備

ツール 用途 インストール方法(2024‑05)
rustup Rust コンパイラ・標準ライブラリのマルチツールチェーン管理 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \| sh
VS Code + rust-analyzer & CodeLLDB 高速なコード補完・インライン診断・デバッグ VS Code の拡張マーケットプレイスで Rust AnalyzerCodeLLDB を検索してインストール
cargo‑generate テンプレートからプロジェクト雛形を作成 cargo install cargo-generate(初回のみ)
cross (任意) Docker 上でのクロスコンパイル支援 cargo install cross

ポイント
- rustup default stable で安定版をデフォルトにし、必要時だけ rustup toolchain install nightly として Nightly を追加します。
- VS Code の設定例は次節で紹介します。

VS Code 推奨設定

これにより Clippy によるコードチェックが保存時に自動実行され、デバッグは CodeLLDB が利用できるようになります。


2. プロジェクトの雛形を作成する

公式テンプレートは cargo‑generate が提供している「rust-cli-template」をベースにしています。以下のコマンドでプロジェクトを生成します。

生成されたディレクトリ構成(抜粋)

なぜ src/lib.rs にロジックを置くか
- ユニットテストは cargo test --lib だけで高速に走らせられる。
- バイナリ固有のコード(引数解析等)は main.rs に限定でき、ライブラリとして再利用しやすくなる。


3. CLI 本体の実装 ― clap v4 + エラーハンドリング

3‑1. 引数解析は clap::Parser マクロで完結

cargo run -- --help を実行すると、上記属性から自動生成されたヘルプが表示されます。

3‑2. エラーハンドリングは thiserroranyhow の併用

アプリケーション層では anyhow::Result<()> を返すことで、スタックトレースや追加コンテキストを簡単に付与できます。

3‑3. src/main.rs のエントリポイント例


4. テスト戦略と CI/CD 設定

4‑1. ユニットテスト・統合テストの書き方

ユニットテスト(src/lib.rs 内)

統合テスト(tests/cli.rs

4‑2. GitHub Actions ワークフロー

以下は lint → test → cross compile を自動化した ci.yml の例です。

主なポイント

ステップ 目的
cargo clippy コーディング規約・潜在的バグの検出
cargo test --locked Cargo.lock に固定された依存関係で再現性確保
cross build Docker 上でマルチプラットフォーム向けにビルド
softprops/action-gh-release ビルド成果物を自動的にリリースへ添付

5. クロスコンパイルと配布

5‑1. cross の利用手順(Docker が必要)

生成物は target/<triple>/release/ に格納されます。サイズ削減が必要な場合は strip コマンドでシンボル情報を除去できます。

5‑2. GitHub Releases と Homebrew tap の連携

上記 CI ワークフローの release ジョブで、ビルド済みバイナリを自動的に添付し、同時に Homebrew 用 Formula を更新します。
Homebrew に登録すれば macOS ユーザーは次のコマンドだけでインストールできます。


6. ドキュメント生成と公開(任意)

  • cargo doccargo doc --no-deps --open でローカルに API ドキュメントを表示。
  • GitHub Pages に自動デプロイしたい場合は gh-pages ブランチへビルド成果物をプッシュする Action を追加すると便利です。

7. 参考情報

項目 URL
Rust公式インストール手順 https://www.rust-lang.org/tools/install
cargo‑generate リポジトリ https://github.com/cargo-generate/cargo-generate
cross(クロスコンパイル) https://github.com/cross-rs/cross
Qiita 記事「Rustで初めてのCLIツール開発 - addpath」 https://qiita.com/Tao119/items/c31f0c6981fcf571e3d0
clap v4 ドキュメント https://docs.rs/clap/latest/clap/
thiserror クレート https://crates.io/crates/thiserror
anyhow クレート https://crates.io/crates/anyhow

8. まとめ

  1. rustup + VS Code で開発基盤を統一し、cargo-generate の公式テンプレートからすぐにプロジェクト雛形を取得。
  2. src/binsrc/lib に分割したモジュラー構成でテスト容易性と再利用性を確保。
  3. clap v4 derive でシンプルに CLI を定義し、thiserror + anyhow による一貫したエラーハンドリングを実装。
  4. ユニットテスト・統合テストを書き、GitHub Actions で Clippy → Test → Cross‑Compile の自動化パイプラインを構築。
  5. cross と Docker イメージで主要 OS 向けにビルドし、CI が作成したバイナリを GitHub Releases に添付、さらに Homebrew tap で macOS 配布まで完結。

このフローを踏めば、ローカル環境のセットアップから実際のリリースまで一貫した手順 が確立できます。まずは本稿の手順に沿って addpath のようなシンプル CLI を作り、GitHub にプッシュして CI が走ることを確認しましょう。その後、独自機能やライブラリ化を進めれば、実務レベルのツールへと自然にスケールアップできます。 Happy Rusting!

スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-Rust