Rustが、コードのスタイルガイド「Rust Style Guide」と自動整形ツールを導入する理由。コードをめぐる議論を省き、メンタルの負担を減らし、プログラマを参加しやすくする
Mozillaが中心となってオープンソースで開発されている言語「Rust」の最新バージョン「Rust 1.24」がリリースされました。
Rust言語は、C言語のように低レベルのシステム開発向けに作られた言語。不正なメモリ領域を指すポインターなどを許容しない安全なメモリ管理と、マルチスレッド実行においてデータ競合を排除した高い並列性を実現している点が特長です。Mozillaの新型高速ブラウザエンジン「Servo」の開発などに使われていることが知られています。
Rust 1.24では、コードのフォーマットツール「rustfmt」のプレビュー版が導入され、インクリメンタルコンパイルがデフォルトでオンになりました。
コードのスタイルガイドと自動フォーマットの利点とは?
Rustにはコードフォーマットのガイドラインを示す「Rust Style Guide」が用意されています。
Rust 1.24では、デフォルトでこのRust Style Guideに沿ってコードを自動的に整形してくれるツール「rustfmt」がプレビュー導入されました。
rustfmtは、Vim、Emacs、Sublime Text、Atom、そしてVisual Studio Codeなどから呼び出すことが可能。また、自動ビルドツールなどによってツールチェーンの一部に組み込むことで、Rustのコードをつねにスタイルガイドに従って自動的に整形することも可能です。
Rust Style Guideには、なぜスタイルガイドと自動フォーマッティングツールが重要なのか、次のように説明されています。
Formatting code is a mostly mechanical task which takes both time and mental effort. By using an automatic formatting tool, a programmer is relieved of this task and can concentrate on more important things.
コードのフォーマッティングのほとんどは機械的な作業であり、時間とメンタルを消費するものです。自動フォーマッティングツールを用いることで、プログラマはこうしたタスクから解放され、より重要な作業にフォーカスできます。
Furthermore, by sticking to an established style guide (such as this one), programmers don't need to formulate ad hoc style rules, nor do they need to debate with other programmers what style rules should be used, saving time, communication overhead, and mental energy.
それだけでなく、(本書のような)確立されたスタイルガイドを遵守することで、プログラマはアドホックなスタイルのルールを考える必要もなく、また他のプログラマとスタイルのルールはどうあるべきか議論する手間も省け、時間を無駄にすることなく、コミュニケーションのオーバーヘッドも、メンタルを消費することもありません。
Humans comprehend information through pattern matching. By ensuring that all Rust code has similar formatting, less mental effort is required to comprehend a new project, lowering the bar to entry for new developers.
人はパターンマッチングを通じて情報を理解するものです。Rustコードのフォーマットが同様であることを確固にすることで、新規プロジェクトにおけるメンタル面での負担を減らし、新しいプログラマの参加を容易にします。
プログラマのあいだでは、先頭の空白はタブを用いるのかスペースを用いるのか、ステートメントのどこで改行するべきかなど、コードの適切なフォーマットについてのやりとりが起こることがあります。
ささいな議論であっても、コードのフォーマットをチームなどで摺り合わせ、守っていくのは指摘されているように手間も時間もかかり、心理的負担もゼロではありません。
Rustはプログラミング言語として使いやすくなるように、こうしたプログラマの負担を減らすべく、スタイルガイドとフォーマッティングツールを積極的に整備していることが示されています。
インクリメンタルコンパイルがデフォルトでオンに
Rust 1.24では、インクリメンタルコンパイルがデフォルトでオンになりました。これによりコンパイル時間が大幅に短縮されています。また、コンパイルにおける並列処理のパラメータもこのリリースで16になり、よりコンパイル時間の短縮に貢献。ただし、生成されるコードのパフォーマンスを最大にしたい場合には、この設定を1にするほうがよいとされています。
あわせて読みたい
技術選定の審美眼。時代を超えて生き続ける技術と、破壊的な変化をもたらす技術を見極める(前編)。デブサミ2018
≪前の記事
W3C、「WebAssembly」仕様について初めてのワーキングドラフトを公開