ブログ

/ 5 views

Rust開発の第一歩:標準ツール使いこなしガイド

1. はじめに:Rustツールチェーンの役割

Rustの世界へようこそ!Rustを学ぶということは、単に新しいプログラミング言語の構文を覚えることではありません。Rustの真の力は、開発者を強力にバックアップする**「ツールチェーン」**と呼ばれるツール群にあります。

Rustは、開発者が直面する「安全性」と「実行速度」という難しいトレードオフを解決するために設計されました。そして、その設計思想を支えているのがこれから紹介するツールたちです。Rustを使うことで、あなたは次のような素晴らしい恩恵を手にすることができます。

  • 安全性: コンパイラが厳格にチェックを行い、メモリエラーや未定義動作を未然に防ぎます。
  • 速度: CやC++に匹敵する、無駄のない極めて高い実行パフォーマンスを実現します。
  • 協調の容易さ: 標準のパッケージマネージャを通じて、crates.ioで公開されている膨大なライブラリを、ファイルにバージョン番号を一行書くだけで簡単に利用・共有できます。

ツールを使い始める前に、まずはそれらを自分のコンピュータに招き入れる方法を確認しましょう。

2. rustup:Rustのインストーラー兼管理人

Rustの導入において最初に登場するのがrustupです。これは単なるインストーラーではなく、Rustのバージョンや関連ツールを管理する「管理人」のような存在です。

Web開発の世界でRubyのRVMやNodeのNVMを使ったことがある方なら、それらと同じ役割を果たすものだと考えると分かりやすいでしょう。rustupを使えば、常にプロジェクトに適したバージョンのRustを切り替えて使うことができます。

インストール手順

まずは公式サイト https://rustup.rs にアクセスしてください。そこに表示される指示に従ってコマンドを実行するだけで、Rustの開発に必要な環境が整います。

バージョン確認

インストールが完了すると、主要な3つのコマンド(cargo, rustc, rustdoc)が使えるようになります。正しくインストールされたか、ターミナルで確認してみましょう。成功すれば、次のような詳細なバージョン情報(ビルドハッシュと日付を含む)が表示されます。

$ cargo --version
cargo 1.56.0 (4ed5d137b 2021-10-04)
$ rustc --version
rustc 1.56.0 (09c42c458 2021-10-18)
$ rustdoc --version
rustdoc 1.56.0 (09c42c458 2021-10-18)

常に最新の状態を維持

Rustは進化の早い言語ですが、rustupがあれば安心です。以下のコマンドひとつで、最新の安定版へ簡単にアップグレードできます。

$ rustup update

無事にインストールができたら、次は実際にコードを書き、動かすための「万能ツール」を紹介します。

3. Cargo:Rust開発の強力なパートナー

cargoは、Rust開発における「コンパイルマネージャ」「パッケージマネージャ」そして「汎用ツール」としての役割をすべて兼ね備えた万能ツールです。開発者のほとんどは、直接コンパイラを叩くのではなく、このCargoを通じてプロジェクトを操作します。

Rustの主要なツールの役割を整理すると、以下のようになります。

ツール名役割
cargoプロジェクト作成、ビルド、実行、ライブラリ管理を担う中心ツール。ビルド結果は通常 target/debug に格納される。
rustcRustのコンパイラ。通常はCargoが裏側で必要な設定と共に呼び出してくれる。
rustdocソースコード内のコメントから、整形された美しいHTMLドキュメントを生成するツール。

それでは、Cargoを使って実際に最初のプロジェクトを作成してみましょう。

4. 実践ワークフロー:プロジェクトの作成から実行まで

Cargoを使えば、わずか数ステップでプログラムを実行可能な状態にできます。ここでは hello という名前のパッケージを作る手順を解説します。

  1. プロジェクト作成: ターミナルで cargo new hello と入力します。すると Created binary (application) 'hello' package というメッセージが表示され、プロジェクトに必要な最小限のファイルが自動生成されます。
  2. ディレクトリ移動: 作成されたディレクトリに入るため、cd hello を実行します。
  3. 実行:cargo run コマンドを入力します。このコマンドは優秀で、ソースコードの変更を検知して「ビルド(コンパイル)」を行い、そのまま「実行」までを一度にこなします。
    • エキスパートの知恵: cargo run コマンドは、パッケージ内のどのディレクトリにいても実行可能です。わざわざトップディレクトリに戻る必要はありません。

プログラムが動いたら、Cargoが裏側でどのようなファイルを作ってくれたのか覗いてみましょう。

5. Rustプロジェクトの構造:中身はどうなっている?

cargo new を実行すると、現代的な開発に欠かせないボイラープレート(定型コード)が自動的に用意されます。

  • Cargo.toml
    • パッケージのメタデータを保持する設定ファイルです。名前やバージョンのほか、edition = "2021" のようにRustのエディションが指定されています。これにより、言語が進化してもあなたのコードの安定性が守られます。外部ライブラリを使いたいときは、[dependencies] セクションに追記します。
  • src/main.rs
    • 実際のRustコードを書く場所です。最初から以下のコードが書き込まれています。
  • target/
    • ビルドプロセスで生成された実行ファイルや中間ファイルが格納されます。

最後に、開発をよりスムーズにするための便利なコマンドをいくつか紹介します。

6. 開発を支える便利なCargoコマンド

効率的な開発サイクルのために、以下のコマンドをマスターしましょう。

  • cargo build
    • コンパイルのみを行い、実行ファイルを作成します。通常は target/debug に出力されますが、--release フラグを付けると強力な最適化が適用され、本番用の高速なバイナリが target/release に生成されます。
  • cargo test
    • ソースコード内に #[test] 属性が付いた関数を自動的に集めて実行します。これらのテスト用関数は通常のコンパイル時にはスキップされるため、製品版のバイナリがテストコードで肥大化することはありません。安全性と速度を両立するRustらしい仕組みです。
  • cargo clean
    • target/ ディレクトリ内の生成物を削除して、プロジェクトをクリーンな状態に戻します。
  • rustup doc --std
    • Rust標準ライブラリの公式ドキュメントをブラウザで開きます。オフラインでも閲覧できるため、いつでも素早く仕様を確認できます。

7. まとめ:あなたのRustの旅がここから始まります

このガイドで学んだ rustupCargo という強力なツールがあれば、あなたはもうRustの世界の住人です。これらのツールは、あなたが小規模な実験コードを書くときも、数千の依存ライブラリを持つ複雑なシステムを構築するときも、変わらずにあなたを支えてくれます。

Rustのツールチェーンは、開発者が本来の創造的な仕事に集中できるように設計されています。さあ、準備は整いました。あなたの思い描く素晴らしいプログラムを、Rustで形にしていきましょう!