開発環境の構築
本章では、Rustを用いて計算物理学の研究・開発を開始するための開発環境を構築します。本書は、Rustの基本文法を既に習得されている読者を対象としているため、多くの方はRustをインストール済みであると想定されます。該当する方は、本節を読み飛ばしていただいて問題ありません。
Rustをまだインストールされていない方や、環境を再確認したい方のために、標準的な構築手順を以下に解説します。
Rustのインストール
Rustをまだインストールされていない方は、Rust公式サイトの案内に従ってインストールを実行してください。公式サイトでは、お使いのOS(Windows, macOS, Linux)に応じた最新のインストール手順が提供されています。
Rust公式のツールチェーン管理ツールであるrustupを使用することで、Rustコンパイラのバージョン管理や、関連ツールの更新を容易に行うことができます。
インストールの確認
Rustが正しくインストールされているかを確認するため、ターミナルで以下のコマンドを実行してください。
rustc --version
cargo --version
これらのコマンドがそれぞれのバージョン情報を表示すれば、インストールは成功です。
rustc: Rustのコンパイラcargo: Rustのビルドツール兼パッケージマネージャ
本書では、プロジェクトの作成や管理にcargoを主に利用します。
Rustのバージョンについて
本書では、Rustの安定版(stable)を使用することを推奨します。Rustは後方互換性が重視されているため、多くの場合、少し古いバージョンでも本書のコードは問題なく動作します。
古いバージョンのRustを使用していてコンパイルエラーが発生した場合は、以下のコマンドで更新してください。
rustup update
特定のバージョンを使う必要がある場合は、rust-toolchain.tomlなどでプロジェクトごとに固定できます。ただし、本書を読み進める上では、まずstableを使えば十分です。
可視化ツールの確認
本書では、表形式のデータをCSVに保存し、gnuplotで可視化する流れを標準とします。gnuplotが利用できるかは、次のコマンドで確認できます。
gnuplot --version
インストールされていない場合は、お使いのOSのパッケージマネージャや公式サイトの案内に従って導入してください。
Pythonのmatplotlib、HDF5、NumPy形式(.npy、.npz)は必須ではありません。複雑なデータ加工、多次元配列、大きなデータを扱う章や発展課題で、必要に応じて利用します。
開発環境の動作確認
次に、簡単なプログラムを作成・実行し、開発環境が正しく動作することを確認します。ここでは、本書のテーマに合わせて、簡単な数値計算を行うプログラムを作成します。
プロジェクトの作成
まず、新しいプロジェクトを作成します。任意のディレクトリで以下のコマンドを実行してください(physics_testの部分は任意のプロジェクト名に変更可能です)。
cargo new physics_test
cd physics_test
cargo newは、新しいRustプロジェクトの雛形を生成するコマンドです。physics_testという名前のディレクトリが作成され、その中に以下のようなファイル構造が生成されます。
physics_test/
├── Cargo.toml # プロジェクトの設定ファイル(依存関係など)
└── src/
└── main.rs # メインのソースファイル
簡単な数値計算プログラムの作成
src/main.rsをエディタで開き、以下の内容に書き換えてください。このプログラムは、自由落下する物体の位置と速度を時系列で計算するものです。
fn main() {
// 物理定数
let g = 9.8; // 重力加速度 [m/s^2]
let v0 = 0.0; // 初速度 [m/s]
let h0 = 100.0; // 初期高度 [m]
println!("自由落下シミュレーション");
println!("初期高度: {} m", h0);
println!("重力加速度: {} m/s^2", g);
println!();
// 時刻ごとの位置と速度を計算
println!("時刻[s] 高度[m] 速度[m/s]");
println!("================================");
for i in 0..=10 {
let t = i as f64 * 0.5; // 0.5秒刻み
let v = v0 - g * t; // 速度 v = v0 - gt
let h = h0 + v0 * t - 0.5 * g * t * t; // 位置 h = h0 + v0*t - (1/2)*g*t^2
if h >= 0.0 {
println!("{:6.1} {:7.2} {:9.2}", t, h, v);
} else {
// 地面に到達した場合、正確な到達時刻と速度を算出して終了
let t_impact = (v0 + (v0 * v0 + 2.0 * g * h0).sqrt()) / g;
let v_impact = v0 - g * t_impact;
println!("{:6.2} {:7.2} {:9.2} (地面到達)", t_impact, 0.0, v_impact);
break;
}
}
}
このプログラムは、以下の物理法則に基づき実装されています。
- 速度:
- 位置:
ここで、 は重力加速度、 は初速度、 は初期高度です。
プログラムの実行
プロジェクトのルートディレクトリ(Cargo.tomlが配置されているディレクトリ)で、以下のコマンドを実行してください。
cargo run
初回の実行ではプロジェクトのコンパイルが行われるため、多少時間を要します。コンパイルが完了するとプログラムが自動的に実行され、以下のような出力が表示されます。
自由落下シミュレーション
初期高度: 100 m
重力加速度: 9.8 m/s^2
時刻[s] 高度[m] 速度[m/s]
================================
0.0 100.00 0.00
0.5 98.78 -4.90
1.0 95.10 -9.80
1.5 88.97 -14.70
2.0 80.40 -19.60
2.5 69.38 -24.50
3.0 55.90 -29.40
3.5 39.97 -34.30
4.0 21.60 -39.20
4.5 0.77 -44.10
4.52 0.00 -44.27 (地面到達)
このような出力が得られれば、開発環境は正しく構築されています。
コードの概要
上記のコードでは、Rustの基本的な機能をいくつか利用しています。
- 変数の宣言:
letキーワードで変数を宣言します。Rustの変数はデフォルトでイミュータブル(不変)です。 - 浮動小数点数:
f64型(64ビット浮動小数点数)を利用しています。多くの場合、型はコンパイラによって推論されるため、明示的な記述は不要です。 - ループ:
forループを用いて、0.5秒ごとに時間ステップを進めています。 - 型変換:
i as f64という構文で、ループカウンタの整数iを浮動小数点数に変換しています。 - 条件分岐:
if文を用いて、物体が地面に到達したか否かを判定しています。 - 書式付き出力:
println!マクロと書式指定子(例:{:6.1})を使い、整列された出力を生成しています。
このプログラムは非常に単純ですが、計算物理学の基本的な要素(物理法則の数式化、時間発展シミュレーション、結果の出力)を含んでいます。本書では、これらの要素をさらに発展させ、より複雑な物理現象のシミュレーションを扱います。
エディタとIDE
Rustのコードを記述するためのエディタや統合開発環境(IDE)は、ご自身の好みに応じて選択いただけます。多くの主要なエディタには、Rustをサポートする拡張機能が提供されています。
どのエディタを選択する場合でも、rust-analyzerのサポートを有効にすることを強く推奨します。rust-analyzerは、Rust公式の言語サーバープロトコル(LSP)実装であり、以下のような強力な開発支援機能を提供します。
- コード補完
- エラーチェックとハイライト
- 定義元へのジャンプ
- リファクタリング
これらの機能により、開発効率が大幅に向上します。
AI coding agent の利用(推奨)
本書の演習では、AI coding agentの利用を推奨します。例えば、Codex、OpenCode、Claude Code などのツールを用いることで、コードの作成や修正、入出力、テスト雛形、プロット用スクリプト、エラー原因の調査、差分の確認を任せることができます。
ただし、特定のツールを必須とはしません。各ツールのインストール方法、料金、利用条件は変わる可能性があるため、本書では詳細な手順や比較は扱いません。利用する場合は、それぞれの公式情報を確認してください。
実践的な導入資料として、CompPhysHack 2026 の講義資料と、 AtelierArith による coding agents のハンズオン資料も参考になります。 後者では、Claude Code や Cursor などの coding agent を用いた開発の進め方が、 演習を通して紹介されています。
AI coding agent は、演習用プロジェクトや本書のリポジトリのルートディレクトリで起動し、
Cargo.toml、srcディレクトリ、テスト、差分を参照できる状態にします。
agent に任せた変更は、cargo checkやcargo testで確認し、
必要に応じてgit status、git diff、git diff HEADで変更内容を確認してください。
Rustのコンパイラとテストは、AI coding agent が生成したコードを検査するためのハーネスとして機能します。一方で、コンパイルが通ることは、物理モデル、数値計算法、単位、境界条件、乱数 seed などが正しいことを意味しません。これらは、各章で扱う理論と検証方法に立ち返って確認する必要があります。
次のステップ
以上で、開発環境の構築と、簡単な物理シミュレーションの実行が完了しました。しかし、画面への出力だけでは、結果を直感的に理解することは困難です。
次節では、シミュレーション結果をグラフとして可視化する手法について解説します。
トラブルシューティング
もしインストールや実行時に問題が発生した場合は、付録C: デバッグとトラブルシューティングをご参照ください。そこでは、よくある問題とその解決策が記載されています。
また、Rust公式のドキュメントも非常に充実しており、問題解決の一助となります。
- The Rust Programming Language(日本語版):Rustの公式入門書(通称 The Book)
- Rust By Example(日本語版):豊富な実例を通じてRustを学ぶ
- The Cargo Book:Cargoの公式ドキュメント