« ^ »
[WIP]

Rustで遊ぶ

所要時間: 約 3分

昨今のRustの勢いを見ているとRustを避けて通る事はできなそうだ。そこでRustで遊ぶ事にした。

開発環境を構築する

Rustコンパイラやその他の開発ツールをインストールするには rustup 1を使う。公式ドキュメントに従い以下のコマンドでインストールする。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

これによりコンパイラである rustc や、パッケージツールである cargo などが使用可能になる。もしインストールディレクトリに PATH が通っていない場合、 PATH を通す必要がある。このあたりの手順は rustup の出力に記載されているため、それに従い設定する。おそらく使用しているシェルごとの設定方法が説明されているだろう。

テキストエディタの設定

プログラミング作業は基本的にはテキストエディタで行う2。IDE3を使う人もいるかもしれないが、それは、IDEの中に実装されているテキストエディタを使っているから、結局のところテキストエディタを使っている。僕はEmacsというテキストエディタが好きだから、ここでEmacsの設定を少しだけ行う事にする。

今回はコードハイライト4されるようにするため、EmacsのRust用メジャーモードである rust-mode をインストールする。

M-x package-install RET rust-mode RET
Emacs拡張 rust-mode をインストールする。これはEmacsのミニバッファで行う。

他にも便利な機能はたくさん実装されているけれど、そういうものは必要だと心底思えた時に入れればいい。

最初のプログラムはHello, world!から

どんな時でもプログラミングを始める時は「Hello world!」から始めるようにしている。それは、しばらく使っていなかった言語であっても同じだ。「Hello world!」の良い所は、プログラミングが簡単であり、コンパイルや実行方法などの基本的な事を確認できる所だ。まずは helloworld.rs

という名前でファイルを作り、コードを実装する。

fn main () {
    println!("Hello, world!");
}

main という関数が1つあるコードができた。これをコンパイルする。

rustc helloworld.rs

すると helloworld という実行可能なバイナリファイルが出力される。実際に実行してみよう。

./helloworld

Hello, world!

Hello, world! という文字列が表示された。Rust、完全に理解した。

ファイル分割

更にRustの理解を深める。プログラムのソースコードは、長くなると管理が難しくなっていく。通常はある程度大きくなった時点でファイルを分割する。ファイルの分割や取り込みの方法は各言語ごとにやり方が異なる。Rustではどうすればファイル分割できるのかを確認する。

Rustでソースコードを分割するには、Rustをモジュール化する方法が簡単そうだ。分割したいコードをモジュールとして定義し、そのモジュールを別ファイルに分け、モジュール内で定義されたものを取り込んで使うという方法が良さそうだ。

tree example_module
example_module
|-- main.rs
`-- testing.rs

例として、このようなファイル構成とする。 main.rs にはエントリーポイントとしての main 関数を定義し、 testing.rs には分割対象の関数として print_hellowolrd を定義する。この関数は、モジュールとして読み込んで使用できるように、関数に pub を宣言し、 pub fn println_helloworld() のように定義しておく。この関数を main.rs で使うため mod を使い、 mod testing; のように取り込みを宣言する。そして testing::println_helloworld(); のような形で関数を利用する。

main.rs

testing.rs

このコードをビルドする。

rustc example_module/main.rs

生成された実行可能ファイルを実行する。

./main

Hello, world!

分割できた。


2

そういえば、今はグラフィカルなプログラミング環境もあるのだった。そう いった環境はノーコードと呼ばれていたりするかもしれない。Node-RedのようなGUIで線を繋ぐような手法もありそうだ。

3

統合開発環境

4

テキストエディタ上でコードに色を付けて、見やすくする機能の事。