Dartアドベントカレンダー 9日め。
社会のピエロ @mogettaです。
本日は最近β版が動き出したManagedVMをDartで動かしてみようと思います。
普段はフロントエンド業で、Unityとかしてる人間なので、穴がおおい記事とは思いますが、補足等いただけると幸いです。
GAEってなに
これ読んどきましょ。
https://cloud.google.com/appengine/docs
サーバーサイドのインフラをGoogleさんがやってくれるので我々がコードに集中しましょ。
というのがまぁ趣旨です。逆にマイナスな点としては、GAE専用のコードになってしまいがち。というところ。
ManagedVMってなに
いままでのGAEはPython,Java,PHP,Goなどの言語がサポートされていましたが、Docker等の技術の躍進により、それ以外の言語でもGAEのサポートを受けつつ開発が行えるようになりました。それがManagedVMです。
インストール
基本はこちらに沿って行えば問題ないはず。OSなどの環境によって手順も違うのでここでは補足を中心に
https://www.dartlang.org/server/google-cloud-platform/app-engine/setup.html
以下インストール業が続きます。大まかな手順としては
- Dartのインストール
- boot2dockerのインストール
- イメージの取得 (docker pull google/docker-registry
- gcloudツールのインストール https://cloud.google.com/sdk/#Quick_Start
- path設定で躓いたりしました。zshとか使ってる人は自動でお任せしているとPath通らない
- google-cloud-sdk/path.zsh.inc とかあるのでそちらを使う。
- プロジェクト作成 https://console.developers.google.com/project
- クレジットカードが必要になります。課金アカウントを設定
- 「課金と設定」から課金を有効にするボタンを押す。
- プロジェクトの課金設定をONにします。
Hello World
https://www.dartlang.org/server/google-cloud-platform/app-engine/run.html#deploying-to-app-engine
↑のURLにそって進めていきます。プロジェクトの用意面倒だな。と思ったら
https://github.com/dart-lang/appengine_samples
のHello Worldを取ってくるのがよいかと。
プロジェクトの作成
普通のDartアプリケーションと違う点は
- app.yamlの作成
- dockerfileの作成
くらいかな。事前に
pub get
もお忘れなく
ローカルで試してみよう。
app.yamlのあるディレクトリで以下を実行しましょう localhostでサーバーが立ち上がります。
gcloud preview app run app.yaml
公開してみよう。
app.yamlのあるディレクトリで以下を実行しましょう、設定が適切であればDeployが始まります。
gcloud preview app deploy app.yaml
自分がつまづいたところ
-
そもそもプロジェクトを作成してなかった。
- プロジェクトを作成しましょう -> https://console.developers.google.com/project
-
課金状態がOFFになっていた。↓こんなかんじのエラーがでる
12:35 AM Host: appengine.google.com
Error 400: --- begin server output ---
Failed Project Preparation (app_id='s~dart-sandbox'). Billing not enabled.
--- end server output ---
補足
忘れると地味に課金され続けて痛手になります。デプロイが終わって、いろいろ試せたら課金設定OFF
#Client-server
じゃあ、ファイルの転送とかルーティングもやってみようか。というのが以下のページ。こっから本格的なアプリ作成が可能になります。
https://www.dartlang.org/server/google-cloud-platform/app-engine/client-server/
自分がつまづいたところ
- 自分のPCなどでプレビューを行う場合、pub serveで立ち上げたサーバーをそのままにする。
- その後、 gcloud preview を実行する。
これを勘違いしていたため、 gcloud preview しても503が返り続ける。という現象に苦しみました。
Dart-force
せっかくのDartなので、Server,Client共にDartにした上でWebsocketとか試したいなーという方。
こちらのサンプルをどうぞ。Dart-forceさんがサンプルを用意してくれています。
ローカルで試す場合はapp.yamlに
env_variables:
DART_PUB_SERVE: 'http://192.168.59.3:7777'
を追加するのを忘れずに。
明日は@laco0416さんの「Dartの最新情報を集める」です。