周回遅れでIT業界デビューしたエンジニアのブログ

就職氷河期にモロにぶち当たり、人生で混迷を極めた末にIT業界に安寧を見出そうとしているアラフォーのお勉強日記です。

VirtualBoxでUbuntuの仮想環境を作って、Rustを試しに書いてみた

こんにちは。年末、ヒマになったので仮想環境で遊んでいます。
今日のお題はVirtualBoxUbuntuとRustです。

f:id:sionff:20171230151413p:plain

目次

  • Ubuntuをダウンロードする
  • Oracle VM VirtualBoxをダウンロードする
  • Oracle VM VirtualBoxで仮想環境を作る
  • Rustをインストールする
  • エディタをインストールする
  • Rustで数当てゲームを作ってみる
  • おわりに

Ubuntuをダウンロードする

f:id:sionff:20171230151915p:plain

から「Ubuntu Desktop」を選択し、最新版のUbuntuのisoファイルをダウンロードします。最新の16.04だと右クリック「端末を開く」で好きな場所からコンソールが開けるので便利です。超おすすめ。
※日本語サイトの「Ubuntu日本語Remexイメージ」だと、バージョンが古い可能性があるので注意が必要です。後から色々バージョンアップする羽目になるので面倒です。

Oracle VM VirtualBoxをダウンロードする

f:id:sionff:20171230151928p:plain
Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle
OSに合ったインストーラーを選びましょう。32または64bitもお忘れなく。特に難しいことはありません。

Oracle VM VirtualBoxで仮想環境を作る

f:id:sionff:20171230152024p:plain
VirtualBoxをインストールしたら、新規で仮想環境を作成します。名前を入力するとき、Ubuntuと入れると自動でUbuntuを作るモードになってくれます。ちょっと便利。

このあと、仮想環境を起動するときに先ほどダウンロードしておいたUbuntuのisoファイルを指定します。
(設定したハードディスクの容量によっては長時間になるので、お茶でも飲みながらのんびり待つといいです)

Rustをインストールする

ここからはRustの公式サイトを参考にしていくとよいです。

こちらがチュートリアルのページ。

2.はじめるから進めて……まずはRust本体をインストールします。

sudo apt install curl
curl https://sh.rustup.rs -sSf | sh
sudo apt install rustc
rustc --version

Ubuntuをインストールしたてなので、たぶんcurlも一緒に入れることになるはず。

この後、Cargoというパッケージ的なものの説明があるので、よく読んでインストールしておくとよいです。具体的な説明はチュートリアルに譲りますが、「cargo run」のコマンド1つでパッケージごとコンパイルしてくれる、かつ動作してくれるのがいい感じです。

エディタをインストールする

ついでにエディタも用意しておくとよいでしょう。
とりあえず使い慣れたSublime Text 3をダウンロード。

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https

echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text/list

sudo apt-get update
sudo apt-get install sublime-text

これでコーディングも楽々。

Rustで数当てゲームを作ってみる

f:id:sionff:20171230155937p:plain

とりあえず書いて動かしてみました。

extern crate rand;

use std::io;
use std::cmp::Ordering;
use rand::Rng;

fn main() {
    println!("Guess the number!");

    let secret_number = rand::thread_rng().gen_range(1, 101);

    println!("The secret number is: {}", secret_number);

    loop {
        println!("Please input your guess.");

        let mut guess = String::new();

        io::stdin().read_line(&mut guess)
            .expect("failed to read line");

        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => continue,
        };

        println!("You guessed: {}", guess);

        match guess.cmp(&secret_number) {
            Ordering::Less    => println!("Too small!"),
            Ordering::Greater => println!("Too big!"),
            Ordering::Equal   => {
                println!("You win!");
                break;
            }
        }
    }
}

ってやると……

$ cargo run
   Compiling guessing_game v0.1.0 (file:///home/you/projects/guessing_game)
     Running `target/guessing_game`
Guess the number!
The secret number is: 61
Please input your guess.
10
You guessed: 10
Too small!
Please input your guess.
99
You guessed: 99
Too big!
Please input your guess.
foo
Please input your guess.
61
You guessed: 61
You win!

という感じで数当てゲームができます。

おわりに

Rustは難易度が高いようですが、爆速になったFirefoxの一部の開発言語であり、C++に代わるかもしれない言語としてGoと並んで注目されているので、機会を見つけて触ってみると面白いのではないかと思います。

何より、新しい言語に触るときのワクワクする感じが楽しいですよね。