tl;dr
前回の記事の実践版。がばがばだけど、とりあえずまとめてみる。
http://qiita.com/migeru/items/4577d4b44ae9a4eef1b4
コンセプト
- Google Compute Engine(以下GCE)を使ってRustツールを作成(ただしHelloWorld)
- インスタンスはプロダクト毎に一個とする。使わないときは落としておく。(1個のインスタンスでやると、複数のプロダクトの開発時に、言語のバージョン管理とか設定の整合性を取るのが面倒なので)
- インスタンスは安さ重視でプリエンプティブVMインスタンスを使用。
プリエンプティブVMインスタンスは、通常インスタンスより価格が安い代わりに、24時間しか起動しないのとたまに勝手にインスタンスが終了する。(体感で一ヶ月に3,4回くらい?)
詳しくは以下のURL
https://cloud.google.com/compute/docs/instances/preemptible?hl=ja
環境
- マシン - Chromebook
- ブラウザ - Google Chrome
基本手順
- プロジェクト作成(1度作ればOK)
- インスタンス作成・起動(プロダクト毎に作成する)
- SSH接続
- 開発用初期設定
- RustをインストールしてHelloWorld
プロジェクト作成
- Google Compute Engineにアクセス > https://console.cloud.google.com/compute/
- プロジェクト作成、課金を有効にする旨のメッセージが表示されるので、指示に従ってプロジェクトを作成、クレジットカード情報を登録する。
インスタンス作成
好きに設定する。
自分は、設定が楽なのでUbunu16.04を使っている。メモリは3.75GBを使っている。
ただし大事な点が2点
- ゾーンは
asia-northeastを使う
(東京リージョンなので回線的にレイテンシが良い) - プリエンプティブVMインスタンスにする。(メモリ3.75GBだと$20くらい安くなる)
>
管理、ディスク、ネットワーク、SSH 認証鍵
をクリック。プリエンプティブ
の項目をオンにする
作成した場合、自動でインスタンスが起動する。
停止状態だった場合は、接続の横のボタンのメニューから、「開始」をクリック
SSH接続
Chrome拡張が入っていない場合、インストール。
入っている場合はそのまま使う。
拡張機能がないと、Ctrl + w
でウィンドウを閉じてしまう。また、Chromeとは別のアイコンでウィンドウが開かれる。
- SSH接続を押す(ポップアップブロックされたら解除してもう一度トライ)
- ウィンドウを開いたら、右上の左側のボタンをクリックして、
Chromeの拡張機能をインストール
をクリック - 開いたウィンドウから、拡張機能をインストール
- VMインスタンスの画面をリロードする(先程インストールした拡張機能が読み込まれる。)
- SSH接続を押して、再度開く
- 右上の右のボタンからオプションを開いて、フォントサイズや、コピー動作を変更する。(デフォルトだと
Ctrl + v
でクリップボードの中身がペーストされるが、neoviのキーバインドとかぶってるのでCtrl + Shift + v
に変更)
開発用初期設定
開発用の設定はdotfilesで管理している。
以下のURLにしたがってインストール
dotfilesの出来栄えは微妙。とりあえずで作ったので、これから改良する。
あと、gitが入っていないと動かないかも。(これを作ったときGCEにデフォルトでgitが入っていると思い込んでた)
Ubuntu16.04でしか動くことを想定していない。(ソフトインストールにapt使ってたり)
主なインストールソフトは以下の通り
* neovim(vim-bootstrapで設定。rustのプラグインもvim-bootstrapのものを使用)
* tmux
* fishシェル(設定するのが面倒なので。いろいろ最初からできるfish様素晴らしい)
neovimはtmuxでない状態で一旦起動すること。Vim-Plugとプラグインをインストールするため。また、tmux内でneovimを起動すると、なぜかVim-Plugがインストールされない.
RustでHelloWorld
-
以下のサイトを参考にRustをインストール。(インストール後はシェルの再起動が必要)
-
エディタでHelloWorldを書く(neovimで書いた。)
hello.rsfn main() { println!("Hello World!"); }
- コンパイルして実行
$ rustc ./hello.rs $ ./hello # Hello World!
所感
Google Compute Engineは親切なので、見れば大体の操作はわかるはず。UIに関しては、個人的にAWSよりは使いやすい。Chromebookでの開発に関しては、croutonで色々設定したりするよりは全然やりやすいかなと思う。