自己紹介
出田 守と申します。
しがないPythonプログラマです。
情報セキュリティに興味があり現在勉強中です。CTFやバグバウンティなどで腕を磨いています。主に低レイヤの技術が好きで、そっちばかり目が行きがちです。
Rustを勉強していくうえで、読んで学び、手を動かし、記録し、楽しく学んでいけたらと思います。
動機
今回なぜRustに興味を持ったかというと、
- 最近特に話題になっている気がする
- システム向けのプログラミング言語をマスターしたい
- セキュリティを学ぶ上でもRustを通してメモリ管理の方法を学びたい
- システムプログラミングをしたい
- などなど
あげるとキリがない、欲望の塊ですね。
私はPythonからこの世界に入り、Cは学生時代と勉強のために少し使っていた程度で、C++なんかは使ったことがないという・・・。なので、一つはシステム向けのプログラミング言語を操れるようになりたいという気持ちから興味を持ちました。
あと、やはりコンピュータ技術でもコアな部分を触りたいという気持ちもあります。例えば、OSを作ったり、デバイスドライバを作ったりしたいです。作って、動かしている姿を想像するとワクワクしますよね。
Rustとは
上でも書いた通りシステム向けプログラミング言語のひとつです。ほかにはCやC++などがあります。
RustはCやC++では難しいメモリの管理を正しく制御し、これらをコンパイル時にチェックしてくれるようです。
Rustでは所有権、移動、借用という機構が存在します。
- 所有権は個々の値の生存期間を明確にすること
- 移動はある値をある所有者へ引き渡すこと
- 借用は所有権に影響を与えることなく一時的に値を利用すること
今はモヤモヤしていますが、これらは勉強を進めていくうちに学んでいくと思います。
環境構築
今回新しい言語を学ぶということで、普段はLinuxを使っていますが、Windowsという新しい環境で構築し学んでいこうと思います。また、エディタもEmacsを使っていますが、Vimを使うことにしました。
以下、私の環境です。
OS: Windows10 Home 64bit 1903
CPU: Intel Core i5-3470 @ 3.20GHz
RAM: 8.00GB
インストール
インストールは非常に簡単でした!WindowsはVisual C++ 2013以降が必要なようなので事前にインストールしておいてください。
- https://www.rust-lang.org/tools/install にアクセス
- Windowsの場合はrustup-init.exeをダウンロード&インストール。Linuxの場合は
curl https://sh.rustup.rs -sSf | sh
とするだけでしょうか(未検証)。
環境変数もPATHに.cargo/binが自動で設定されていました。至れり尽くせりですね!
バージョン確認
$ cargo --version
cargo 1.37.0 (9edd08916 2019-08-02)
$ rustc --version
rustc 1.37.0 (eae3437df 2019-08-13)
$ rustdoc --version
rustdoc 1.37.0 (eae3437df 2019-08-13)
これら3つのコマンドについて
- cargoはRustのコンパイルとパッケージを管理。
- rustcはRustのコンパイラ。通常はcargoでコンパイルしてくれるが、直接実行することもあるらしい。
- rustdocはRustのドキュメンテーションツール。ソースコード中のコメントを正しく記述していればHTMLなどでドキュメント化してくれるらしい。
今回はここまで。