Rust

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

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

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!

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Rust