LoginSignup
5
5

More than 5 years have passed since last update.

GAE/managedVMとDart

Last updated at Posted at 2014-12-08

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

自分がつまづいたところ

  • そもそもプロジェクトを作成してなかった。
  • 課金状態が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の最新情報を集める」です。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5