2018.04.27

オフショア開発

少し前話題になっていた"Rust"という言語を調べてみた

調べていじってみました。

1, Rustとは???


公式として上がっているページはこんな感じ

上記確認すればなんとなく理解出来るはず..?
(個人的にめっちゃ難しかったです。。)

オーナーシップや静的or動的ディスパッチ等の知らない概念が結構多いなと思いました。。

2, 特徴


とりあえずRustの特徴をまとめてみました

- Firefoxを開発するMozillaが開発

- C++のようなコンパイル言語(静的)

- 安全性、速度、並行性の3つに焦点を合わせて開発が進められているプログラミング言語

もう少し特徴を掘ってみると

- 借用検査=メモリ安全およびデータ競合安全をコンパイラが保証する

- 寿命を変数の型に含める=メモリ管理を行うという概念を導入=メモリ安全性など様々な健全性が実現できることを証明

- ランタイムのGCがない=しかしコンパイル時解析のおかげで自動メモリ管理が可能

- マルチスレッドプログラミング=データ競合(競合状態ではない)をコンパイル時に防ぐ

- ポリモーフィズムをコンパイル時に解決できる

まあ捉え方としてはC++の出来の良い息子、って感じですかね。コンパイル時に得する事が多い言語です。

去年からWebAssemblyをRustで使用出来るようになった(従来ならEmscriptenでコンパイラが普通)みたいですね。

Rustの立場から見ればWebAssemblyは昔から知っていた幼馴染の可愛い子で、なかなか話しかける事が出来なかったが成人式後にやっと仲良くなった的な...

また、Stack OverflowのアンケートによるとRustは2015年、2016年と2年連続で、最も愛されているプログラミング言語に選ばれたそうです。。

現時点でのQuestionsは少ないですが、今後伸びてくる可能性を秘めていると感じます。

また、RustにはYoutubeチャンネルが存在しますw。

興味のある方はご確認を。

3, 環境構築


とりあえず環境構築しましょう。

今回は合わせてcargoとrustupを説明したいと思います。

cargoとは

- Rustのビルドシステム

- Rustと同時にインストールされてる

- ビルドと実行が高速

rustupとは

- Rustのためのツールチェーンマネージャー

- いろんな環境で動かせるようにコンパイラ(とパッケージマネージャなどの道具一式toolchain)を管理するためのソフト

- ツールチェーンやクロスコンパイル環境を構築

- rustupインストールしちゃう方が環境構築は早い

とりあえずインストールから(公式だと違いますがbrewの方が楽なので)

brewでインストールしてもcargoは入ってます(もちろん公式でも)

Ver確認(rustc)

Ver確認(cargo)

rustupインストール

Ver確認(rustup)

1回目を実行してからすぐに2回目を実行すると、

***

このように2回目は Compiling ... の行がないのが確認できるかと思います。

Cargo はプロジェクトのファイルが変更されていないか確認し、最後のビルドから変更されたファイルがあるときにだけプロジェクトを再度ビルドします(高速化の一要因)。

またRustはstable, beta, nigtlyの3種類の配布用チャネルを用意しています。

- Nightly masterブランチの日ごとの最終成功ビルド、新機能が追加される。
- Beta 6週ごとにNightlyから昇格、Stableに向けてバグフィックスが行われる。
- Stable 6週経ったBetaが昇格。

次のリリースで自分のプログラムがどのように振る舞うか、rustupを使ってチェックすることができます。確認するためには、現在のプラットフォーム向けのbetaツールチェーンをインストールし、それを使ってユニットテストを実行する必要があります。
(ローカルでしか動かさない人には必要ないと思います)

一部コマンドを紹介します。

rust環境確認

新しいプロジェクトを作成

コンパイル

実行(プロジェクトのビルド&実行が1発で実行!!)

テスト

Search

とりあえず新しいプロジェクト

Rustには他の言語と違う言い回しが多いなと感じました。
例えば、

変数に値を代入する=Rustでは束縛する

みたいな感じです。

又便利なことに上記により

変数は値に対する所有権を持つ&変数がスコープから外れる

所有権を持つ値のリソースを解放

何らかの値を束縛している変数を新しい変数に束縛しなおす

新しい変数に所有権が移動して前の変数からは値を参照できなくなる

上記により、メモリの解放し忘れが無くなります。

4, Rustは色んな可能性を秘めている

環境構築が億劫な人はこちらで一旦いじるのも有りかと思います。
(web上で動きを確認できる為、Rustに入りやすいかな)

深く調べてみたくなった(難しすぎた)ので、又ブログに書きたいと思います。

5, ベトナムでのオフショア開発なら・・・

ベトナムへ進出されるなら、若くて優秀なエンジニア達とホーチミンで約9年、オフショア開発・アプリ開発を展開しているバイタリフィバイタリフィアアジアへお気軽にご相談ください。又、オフショア開発のリスクや費用を極限まで抑えた『拠点開設プラン』も用意しております。またベトナム向けIT・WEBサービス/アプリの開発支援、ローカライズ、テストマーケティングといった進出支援に加えて、日本や他国向けのオフショア開発やアプリ開発も行っております。ご興味がありましたら、ぜひご連絡下さい。