search
LoginSignup
5

More than 5 years have passed since last update.

posted at

updated at

GAE/managedVMとDart

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の最新情報を集める」です。

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
What you can do with signing up
5