Google Cloud Platform Japan Blog
最新情報や使い方、チュートリアル、国内外の事例やイベントについてお伝えします。
ゲスト投稿 : Smash.gg が Firebase と GCP に移行した理由
2017年10月10日火曜日
編集部注 :
Smash.gg
は世界中のプレーヤーや組織に利用されている e スポーツ プラットフォームです。毎月 2,000 件ほど開催され、合計で 6 万人以上が参加するオンライン イベントをサポートしています。最近では、世界最大規模の格闘ゲーム大会 “EVO 2017” をホストしました。この投稿は Google Cloud Platform(GCP)に移行した企業をシリーズでお伝えするもので、今回が第 1 回目です。GCP に関心を持った経緯、移行の理由、移行によって得られたメリットなどを Smash.gg の共同創設者に語っていただきました。今後は、特定サービスの移行に関する技術の詳細についてもお伝えしていきます。お楽しみに。
Smash.gg 上で運営されているオンライン トーナメントでは、プレーヤーがリアルタイムで対話できるようにする必要があります。参加者が双方共にその場にいることを確認し、ゲームをセットアップし、対戦の結果を受け入れてもらうためです。また、対戦への参加やレポートにまつわる問題を解決したり、対戦相手やモデレーターとやりとりしたりするときのためにシンプルなチャット サービスも必要です。
私たちが最初に構築したオンライン対戦レポーティング サービスは、既製のチャット サービスと UI によるやりとりを利用したもので、完全なリアルタイムではありませんでした。そのチャット サービスがライブでの大会中に不具合を起こし、もっと優れたソリューションが必要だということになりました。
私たちは、WebSocket ベースのアプローチや、
PubNub
や
Firebase
などを使って自らサービスを構築することを検討しました。そして最終的に、Firebase を採用することにしたのです。Firebase は幅広く利用されているのに加え、Google という “後ろ盾” を持ち、価格面でも非常に優れていたからです。
Firebase Realtime Database を使用したオンライン対戦の様子。2 人のプレーヤーがリアルタイムでゲームにチェックインし、セットアップし、レポートまで行っている。
私たちは昨年 5 月、まず Firebase から移行に着手しました。最初のリリースでは、
Firebase Realtime Database
をリアルタイム キャッシュのように使用し、参加者の対戦データを同期させていました。Smash.gg のバックエンド側で対戦が更新されたりレポートされたりすると、その更新された対戦データが Firebase にも書き込まれます。私たちは
React
と
Flux
を使うことで、ラッパ コンポーネントが Firebase を確認し、更新された対戦データを Flux ストアに送信できるようにしました。
Firebase によるチャット サービスの実装も同様に簡単でした。Firechat からヒントを得たことで、最初の実装は 1 日で完了し、本番環境への対応準備もさらに 1 日あれば十分でした。
独自のソリューションを構築する場合と比較して考えると、Firebase を選択するのは当然だと言えます。開発が容易で、時間もコストも節約できるからです。Firebase により、最終的にはサーバーの負荷が低減され、レポーティングのフローもシンプルになり、対戦のエクスペリエンスは真にリアルタイム化されました。
その年の後半、Smash.gg では
Firebase Cloud Messaging
(FCM)の利用を開始し、Firebase のデータが変更されると
Google Cloud Functions
のトリガーを使ってブラウザにプッシュ通知を送るようにしました(たとえば、
モデレーターのリクエストを管理者に知らせる
といった目的で通知しています)。
Firebase Realtime Database と同様、Cloud Functions は非常に使いやすく、初めて使ったときには魔法のように感じました。さらに、
Google Cloud Pub/Sub
や
Google BigQuery
などの GCP サービスと Firebase をうまく連携させる方法についても、Cloud Functions を通じて深く知ることができました。
GCP への移行
今年 3 月、私たちは Cloud Functions に関する発表を見届けるために
Google Cloud Next '17
に参加しました。そこでわかったのは、他の GCP サービスでも、開発者のエクスペリエンスを向上させ、開発コストを下げるといった点に注力していたことです。
Cloud Pub/Sub や
Stackdriver Trace
、
Stackdriver Logging
、
Google Cloud Datastore
などは、Smash.gg に求められる当面のニーズを一部解決してくれるものでした。これらの GCP サービスは、既存のサービス プロバイダーの製品を補完することを目的に、私たちが自ら開発の計画を立てていたものと同じだったのです。おおまかに言うと、GCP サービスは、開発者のワークフローを改善することに重点を置き、開発やメンテナンスに要する時間の削減に貢献しているように思えました。
GCP サービスのインタラクティブなデモ(
Google Container Engine
や
Google App Engine
と Stackdriver Trace / Logging を使ったデモ、Cloud Pub/Sub や BigQuery と Stackdriver とのデモなど)を見た後で、私たちは GCP への全面的な移行を検討することにしました。
アプリケーションの移行は 5 月中旬に開始しました。そのときに利用した GCP サービスは、Container Engine、Cloud Pub/Sub、
Google Cloud SQL
、Cloud Datastore、BigQuery、Stackdriver です。移行の際、コア サービスの一部を再構築することにし、Kubernetes の環境へと移行しました。アプリケーションの大半はすでにコンテナ化していましたが、以前は PaaS のようなサービスの上で動かしていたため、Kubernetes への変更はとても大きなことでした。
Kubernetes には多くの利点がありましたが(業界標準であり、クラウド インスタンスをより効率的に使える点や、アプリケーションの移植性、コードで定義されたイミュータブル インフラストラクチャなどが利点の一例です)、それへの変更と同時に、変更前の PaaS で提供されていたトップレベルのアプリケーション指標をいくつか失うことになりました。たとえば、全体的な RPS(Requests Per Second : 1 秒間に処理されるリクエスト数)や、ステータスごとの RPS、レイテンシなどです。
もっとも、こうした指標のグラフは、
log-based metrics
(ログ ベースの指標)や、Stackdriver から BigQuery へのログの
エクスポート機能
を活用することで、コンテナのログから簡単に作成することができます。別のサービスを使っても同じようなことが可能ですが、私たちにとっては GCP だけで完遂することが、GCP を評価しながら迅速かつ自由に目的を達成する方法だったのです。
Stackdriver Trace を使ったリクエストの計時や分析も GCP のセールスポイントで、過去に利用していたサービスにはなかった機能でした。ただし、Smash.gg の移行時には、PHP 用の Trace SDK が非同期トレースをサポートしていませんでした(Smash.gg のバックエンド サービスは PHP で構築されており、とても良い PHP だと思います)。その後 PHP 向けの Google Cloud SDK は非同期トレースをサポートするようになりましたが、Smash.gg では次のように GCP サービスをいくつか組み合わせ、非同期トレースのシステムを構築しました。
トレースを JSON の形でログ出力するようにトレース レポータを作成
その後、Stackdriver のログ エクスポート機能を用いて、トレースを Pub/Sub トピックに送信
最後に、Cloud Functions の Pub/Sub サブスクライバが REST API を利用してトレースをレポート
本番環境向けのトレース機能を実装するにあたっては、Google Cloud SDK がより最適なソリューションであることは明らかです。とはいえ、GCP サービスの組み合わせがうまく機能していることからも、GCP での開発がどれだけ簡単かがおわかりいただけると思います。
移行の結果
GCP を本番環境で運用して 1 か月が経過し、私たちは時間とコストを共に節約できたことを実感しています。全体的なコストは、
確約利用割引
が適用されていなくても、予備のシステム容量を確保したうえで最大 10 % 低くなりました。
Stackdriver のロギング / モニタリング機能や Container Engine、そして Kubernetes により、DevOps による作業が容易になり、チーム全体のレベルも向上しました。また、一元管理された形ですべてのログの検索が可能で、複数システム間でログを相互参照し、問題の根本原因をより迅速に特定できるようになりました。さらに、Cloud Datastore や Firebase のようなフルマネージドの従量制サービスとの組み合わせは、Smash.gg の全エンジニアにとって、GCP での開発をより簡単でアプローチしやすいものにしています。
私たちは GCP に移行したことを本当にうれしく思っており、今後のブログ投稿で移行の詳細をお伝えするのが楽しみです。皆さんが、競争力の高いゲームが好きな開発者で、GCP 上で面白いものを開発している私たちに協力してくれるのであれば、ぜひ Smash.gg までご連絡ください。Smash.gg は先ごろ
Spark Capital
や
Accel
、
Horizons Ventures
よりシリーズ A の
投資
を受け、人材を
募集中
です。
* この投稿は米国時間 9 月 8 日、Smash.gg の Engineering Director/Co-founder である Nathan Welch によって投稿されたもの(投稿は
こちら
)の抄訳です。
- By Nathan Welch, Engineering Director/Co-founder, Smash.gg
GCP でスケーラブルなウェブ プロトタイプを構築する
2016年9月14日水曜日
* この投稿は米国時間 8 月 31 日、Google Web Engineer である
Jason Mayes
によって投稿されたもの(投稿は
こちら
)の抄訳です。
Google のウェブ エンジニアとして、私は過去 5 年間、社内チームやお客様向けのスケールド システムを開発してきました。システムの中には、ウェブのフロントやバックエンドのコンポーネントが含まれていることもよくあります。
この投稿では、
Google Cloud Platform
(GCP)を使って開発したカスタムメイドの機械学習システムの話をしたいと思います。このブログを読んで、自分でも何かクールなウェブ アプリを構築したいと思ってもらえれば幸いです。
この話は、私がコンピュータのビジョンに関心を持ったところから始まります。私は長年、この分野に興味を持っていました。読者の皆さんの中には、望みどおりの結果を得るために最もシンプルなソリューションを探そうと努力していた私の個人的な実験に関する
公開ポスト
を目にした方がいらっしゃるかもしれません。
私はシンプルであることが大好きなのですが、自分の手がけるプロジェクトが年を追うごとに複雑になるにつれ、特にその気持ちが大きくなりました。仲のいい友人が昔、私に「シンプルであることは複雑な芸術だ」と言ったのですが、この業界に 10 年在籍して本当にそのとおりだと感じています。
コンピュータ ビジョンに関する私の初期の実験において、動きを分離させようとしているところ
私の
ウェブ エンジニア兼コンピュータ サイエンティスト
としての経歴は、2004 年に当時人気だった LAMP などを手がけたことから始まりました。その後 2011 年に Google に入社し、Google Cloud スタックに出会いました。つまり
Google App Engine
のことです。私は、スケーリングとディストリビューションを扱うシステムによって時間が大きく節約できることを知り、以来 App Engine に夢中になっています。
しかし、2011 年から時は流れ、最近私は
TensorFlow
を使ってウェブ ベースの機械学習システムを開発するプロジェクトに関わりました。ここで、私が開発に使った Google Cloud の新技術を一部紹介しましょう。
課題 : 長期間稼働しているタスクと短時間でクリティカルなタスクの両方に対し、ジョブの実行を保証するには?
TensorFlow を使って Google Compute Engine によるカスタム オブジェクトを認識しているところ
今年の初め頃、私は Google が開発したマシン インテリジェンス向けのオープンソース ソフトウェアである TensorFlow の使い方を学んでいました(試す価値のあるものですよ)。
Google Compute Engine 上で TensorFlow を動かす方法
がわかると、私は TensorFlow が単体ではスケールできないものであることにすぐに気づきました。負荷分散するために、いくつかのコンポーネントをそれぞれのサーバーに分割しなくてはならなかったのです。
初期デザインと課題
私のアプリケーションでディープ ニューラル ネットワークの一部を再トレーニングするには、平均 30 分程度かかっていました。長時間かかるジョブがある可能性を考えると、ユーザーに進捗状況を知らせるために、リアルタイムのステータス アップデートを提供したいと思いました。
また、すでにトレーニングが済んだクラシファイヤーを使って画像分析をする必要もありました。これにかかる時間は、1 つのジョブにつき 100 ミリ秒以下です。こうした短時間のジョブが、30 分かかるような長時間のジョブにさえぎられるようなことがあってはなりません。
最初の実装は次のようになりました。
この段階で、次のような問題が発生しました。
Google Compute Engine
サーバー上でさまざまなタイプのジョブを処理したため、非常に大きな負荷がかかってしまった。
Compute Engine のオートスケーリング プールを需要に合わせて 10 インスタンスまで作ることができたものの、時間のかかるトレーニング タスクが 10 個リクエストされると、分類やファイルのアップロードといったタスクのためのインスタンスが残らない。
プロジェクトの予算が限られていたため、一度に起動できるインスタンスは 10 個までだった。
データベースの選択肢
このアプリケーションでは、さまざまな種類のワークロードをサポートする必要があったことに加え、永続的データが保管できなくてはなりませんでした。それができるデータベースは数多く、当然のことながら
Google Cloud SQL
もその 1 つです。ただ、この方法にはいくつか問題がありました。
時間がかかる :
Cloud SQL を使うには、SQL データベースと統合できるようにすべての DB コードを自分で書き直さなくてはなりません。また、稼働するプロトタイプをできるだけ早く提供する必要がありました。
セキュリティ :
Cloud SQL の統合には、Google Compute Engine のインスタンスがコア データベースに直接アクセスする必要がありましたが、私はコア データベースを見せたくありませんでした。
さまざまな種類のジョブ :
今は 2016 年ですから、きっとこんな問題を解決する何かがあるはずで、さまざまなジョブの種類に対応できるはずですよね?
その解決策として私は、モバイル アプリケーションやウェブ アプリケーションの開発に向けた Google の Backend as a Service(BaaS)である
Firebase
を使うことにしました。
Firebase によって既存の API を使うことができ、(私の Node.js ベースのサーバーに最適な)JSON オブジェクトを使って永続的データを保管できるようになりました。これにより、クライアントが DB の変更をリッスンできるようになり(ジョブの進捗状況を伝えるのに最適です)、私の Cloud SQL のコア データベースと密接に統合する必要もなくなりました。
私が利用した GCP サービス
最終的に私はサーバーを 3 つのプールに分けました。それぞれのプールは特定のタスクに対して高度に特化させており、1 つは分類用、1 つはトレーニング用、そしてもう 1 つはファイルのアップロード用としました。各タスクで利用したクラウド技術は以下のとおりです。
Firebase
James Tamplin
および彼のチームと話して以来、私はずっと Firebase をプロジェクトに使う機会をうかがっていました。
Firebase の主な機能の 1 つに、リアルタイム データベースを数分で作れるというものがあります。そう、リアルタイムです。しかも、JavaScript を使うだけで、更新のすべてをリッスンできるのです。Firebase を使えば、動くチャット アプリケーションが 5 分以内に作れます。
これは、リアルタイムでジョブの進捗状況を確認するのに最適です。というのも、私はフロントエンドに問題のあるジョブへの変更をリッスンさせ、GUI をリフレッシュできるためです。
また、すべてのウェブ ソケットや DB fun も処理されるので、私はすごく使いやすい API を使って JSON オブジェクトを渡すだけでいいのです。Firebase はオフラインにも対応しており、オンライン状態になった時点で同期されます。
Cloud Pub/Sub
同僚の
Robert Kubis
と
Mete Atamel
が、Google のマネージド リアルタイム メッセージング サービスである
Google Cloud Pub/Sub
を私に紹介してくれました。
Cloud Pub/Sub は、セントラル トピックにメッセージを送ることを可能にするもので、そこから Compute Engine インスタンスがサブスクリプションを作ることもできるし、セントラル トピックに対して非同期的に緩くつながった状態でプルやプッシュすることもできます。これにより、容量に空きが出ると、すべてのジョブが最終的に稼働することが保証されます。
また、これはすべて水面下で行われるため、自分でジョブをリトライする必要もありません。時間が大幅に節約できます。
Cloud Pub/Sub のパブリッシャとなるエンドポイントの数に制限はなく、どこからでもサブスクリプションが可能
App Engine
私は App Engine でフロントエンド ウェブ アプリケーションをホストし、配信しました。HTML や CSS、JavaScript、テーマなどの資産はすべてここに保管されており、必要に応じて自動的にスケールされます。
さらにいい点は、App Engine がマネージド プラットフォームであることです。セキュリティ機能が搭載されているほか、
App Engine の API
に対して自分の好みの言語(Java、Python、PHP など)でコーディングした際に自動でスケーリングする機能も搭載されています。
API は Memcache や Cloud SQL などの高度な機能にもアクセスできるようになっており、負荷が増してもスケールする方法で頭を悩ませる必要はありません。
オートスケーリング機能の付いた Compute Engine
Compute Engine は、きっとほとんどのウェブ開発者になじみのあるものでしょう。これは、自分の選択した OS をインストールできるサーバーで、そのインスタンスに対して完全にルート アクセスすることが可能です。
インスタンスは完全にカスタマイズでき(仮想 CPU の数や、RAM、ストレージの容量も設定できます)、課金は分単位のため、要求に応じてスケールアップやスケールダウンする際にさらなるコスト削減が可能です。
もちろん、ルート アクセスができるということは、これらのマシンでやりたいと思っていたことがほぼ何でもできるということなので、私も TensorFlow を稼働させる環境としてこれを選びました。
また Compute Engine は、オートスケーリングのメリットも享受できます。要求に応じて、また設定した数値に応じて、利用できる Compute Engine インスタンスの数を増やしたり減らしたりすることが可能です。私のユースケースでは、CPU の平均利用率に応じてオートスケーラはいつも 2 から 10 のインスタンスとなっていました。
Cloud Storage
Google Cloud Storage
は、(サイズ的にも数的にも)大量のファイルを安価に保管できるサービスです。世界中のエッジ サーバー ロケーションにレプリケーションされており、その場所は要求しているユーザーに近いロケーションとなっています。
私が自分の機械学習システムでクラシファイヤーをトレーニングするために使ったファイルをアップロードし、必要になるまで保管していたのもここです。
Network Load Balancer
私の JavaScript アプリケーションはウェブ カメラを利用していたので、安全な HTTPS 接続にてアクセスする必要がありました。Google の
Network Load Balancer
は、自分で定義した異なる Compute Engine クラスタにトラフィックを送ることができるものです。
私の場合、画像分類クラスタと、新しいクラシファイヤーをトレーニングするためのクラスタがあったので、何がリクエストされたかによって、そのリクエストを適切なバックエンドに HTTPS 経由ですべて安全に送ることができました。
すべてを組み合わせた結果
これらのコンポーネントをすべて組み合わせてみると、私のシステム アーキテクチャは、だいたい次のようなものになりました。
これでちゃんと動いてはいましたが、一部無駄な部分もありました。Google Compute Engine Upload Pool のコードは、単に App Engine 上で稼働するように Java で書き直せることに気づいたのです。こうすることで直接 Cloud Storage にプッシュできるため、Compute Engine インスタンスの余分なプールが必要なくなります。やった!
また、App Engine を使うことになったため、カスタムメイドの SSL ロード バランサも必要なくなりました。App Engine 単体で新しいジョブを Pub/Sub へと簡単に内部でプッシュでき、すべてのフロントエンドのアセットをそのまま appspot.com 経由で HTTPS にて送ることができるためです。
つまり、Google の appspot.com 上でデプロイした場合、最終的なアーキテクチャは次のようになるでしょう。
アーキテクチャの複雑さが軽減されるとメンテナンスも楽になり、コスト削減にもつながります。
まとめ
Pub/Sub と Firebase を使うことで、私は 1 週間以上の開発時間を削減できたと見ています。これで私は目の前の問題にすぐに取りかかり、短時間で解決できるようになりました。さらには、プロトタイプが要求に応じてスケールしていき、予算に余裕がまったくないときでもすべてのジョブを最終的に片付けられることを保証できるようになったのです。
Google Cloud Platform サービス群の組み合わせは、ウェブ開発者が完全なエンドツーエンド システムのプロトタイプを短時間で作るうえで素晴らしいツールキットであり、セキュリティと今後のスケーラビリティに対する支援も同時に得られるものです。ぜひ皆さんも試してみることをお勧めします。
- Posted by Jason Mayes, Google Web Engineer
Firebase と App Engine によるモバイル バックエンド サービスの構築
2016年7月12日火曜日
* この投稿は米国時間 6 月 30 日、Google Cloud Platform の Solutions Architect である Teppei Yagihashi によって投稿されたもの(
投稿はこちら
)の抄訳です。
私たちは Google I/O 2016 において、Google のいくつかのモバイル製品を 1 つに統合するという、
Firebase に関する重要なリリース
を発表しました。
新しい Firebase は、モバイル クライアントとバックエンド サービスを構築する際の複雑さを緩和します。また、ユーザー ベースの拡大やアプリからの収益向上、アプリのイベント データの収集と分析に役立つツールを提供します。
Firebase を使えば、スケーラブルで疎結合なシステムを容易に構築できます。たとえば、既存の Android クライアントに一切影響を及ぼすことなく、iOS もしくはウェブのクライアントを追加することが可能です。バックエンド サービスが必要な場合は、App Engine Flexible Environment が新しいバックエンドの能力を自動的に追加してくれます。
私たちは先ごろ、ステップバイステップ ガイドとサンプル コード(
Android アプリ
、App Engine ベースの
バックエンド サービス
)によるネイティブ チャット アプリケーションの作り方を具体的に説明した新しいソリューション ドキュメントを公開しました。
このソリューション ドキュメント “
Build a mobile app using Firebase and App Engine Flexible Environment
”(Firebase と App Engine Flexible Environment を使ったモバイル アプリ構築)では、Android アプリと
App Engine Flexible Environment
で実行されるサーブレットとの間のやり取りの方法が示されています。
Android クライアント アプリは、
Firebase Realtime Database
にデータを格納することで、他のユーザーとチャット メッセージを交換します。また、サインインおよびサインアウト イベントやチャネル変更イベントなどのユーザー アクティビティ ログをリアルタイムで Java サーブレットにプッシュします。
前述のサンプル コードでは、サーブレット インスタンスはアクティビティ ログを単純にメモリにキャッシュしていますが、これは Firebase と App Engine Flexible Environment の組み合わせで可能になることの一例に過ぎません。サーブレット インスタンスは、たとえば次のような用途に使用できます。
非同期の重いバックエンド処理 :
リソースを大量に消費し、クライアント デバイスではとても実行できないようなタスクは、バックエンド サービスによって非同期に処理できます。
リアルタイムな不正利用の検出 :
サーブレットは短時間で複数のデバイスのユーザー イベントを検出できます。
ETL 処理 :
バックエンド サービスは、高度な分析のために、ユーザー イベント ログを
Google BigQuery
など他のデータ ストアに送ることができます。
詳細は、
Firebase のドキュメント
や、
Google Cloud Platform
の各種サービスを使った
モバイル ソリューション
の構築方法を参照してください。Firebase と App Engine に興味がある方は、
無料トライアル
にサインアップすることをお勧めします。
- Posted by Teppei Yagihashi, Solutions Architect, Google Cloud Platform
GCP との統合が進む Firebase
2016年6月2日木曜日
* この投稿は米国時間 5 月 18 日、Firebase Product Leads である James Tamplin と Francis Ma によって投稿されたもの(
投稿はこちら
)の抄訳です。
アプリケーション構築の BaaS(Backend as a Service)として機能する Firebase が
Google に買収
された後、Firebase の活気あふれるコミュニティに参加しているデベロッパーの数は、短期間のうちに全世界で 11 万人から 47 万人へと増加しました。
買収後、Firebase は付加価値的な位置づけのサービスだけでなく、コア インフラストラクチャの面でも
Google Cloud Platform(GCP)
への依存度を深めています。たとえば、先日開催の
Google I/O 2016
で発表された Firebase の新機能のいくつかは GCP と深くかかわっています。
Firebase のデベロッパーからよくリクエストされる機能の 1 つは、画像や動画といった大きなサイズのファイルを格納できるようにすることです。そこで、
Google Cloud Storage
で動く新しい Firebase Storage では拡張性をより高め、GCP 上の他プロジェクトによって保存されているファイルへの簡単なアクセスを可能にしています。
Firebase は GCP と同じ基盤アカウント システムを使用するため、開発した Firebase アプリでさまざまな GCP サービスを利用できます。たとえば、新しい Firebase Analytics の生の分析データを
Google BigQuery
にエクスポートすれば、アプリケーションとユーザーの高度なインサイトに役立てることができます。
私たちは今後も、Firebase と GCP の統合を進め、モバイル アプリケーションのポートフォリオの一助となる完全なパブリック クラウド機能を提供していきます。
Firebase に関してもっと知りたい方は、
こちらの新しいサイト
をご覧ください。私たちが Google I/O 2016 で発表した新機能については、
Firebase のブログ
を参照してください。
現在、発表した新機能の実装を進めており、皆さんからのフィードバックをお待ちしています。
機能に関する要望
も、ぜひお寄せください。
Firebase と Google App Engine でリアルタイムデータにバックエンドロジックを追加
2015年11月4日水曜日
* この投稿は、米国時間 10 月 27 日、 Firebase の Benjamin Wulfe によって投稿されたもの(投稿はこちら)の抄訳です。
Firebase は Android、iOS、ウェブベースのモバイルアプリを構築するためのプラットフォームであり、デバイス間でリアルタイムのデータストレージ、自動同期を行います。しかしデータ上でバックエンド プロセスを実行しなければならない場合はどうでしょうか?
App Engine
アプリケーションを皆さんがお使いの Firebase データベースに接続すれば、同期やアップデートの管理を行わなくても、データ上で複雑なロジックを実行できます。Firebase が皆さんの代わりに処理を行うのです。
Firebase 2.4.0 の Android クライアントリリースのアップデートにより、App Engine アプリケーションからの Firebase データベースへのアクセスが容易になります。
チュートリアル、
Use Firebase and Google App Engine in an Android App(Androidアプリで Firebase と Google App Engine を利用)
では、Firebase に「to-do list(やることリスト)」を保存し、App Engine 上で実行されているバックエンドロジックを使って、毎日リマインダーメールを送信する Android アプリを作成する手順を解説しています。
このチュートリアルでは、以下の技術を使う方法が学べます。
Firebase
:モバイルアプリ構築用プラットフォームで、リアルタイムのデータストレージ&同期、ユーザー認証などを提供。
Android Studio
:IntelliJ IDEAベースのAndroid開発環境
Cloud Tools for Android Studio
:Android Studioに含まれるツール一式。Google Cloud Platformサービスとの統合が可能。
Google App Engine
:クラウドでアプリケーションコードを実行するための環境、Platform as a service (PaaS)
- Posted by Benjamin Wulfe, Firebase
8月19日(水) ハンズオン セミナー: Google Cloud Workshop: はじめてみよう Firebase
2015年8月17日月曜日
この度、Google Cloud Workshop と題して Google 主催の
Google Cloud Platform
技術ワークショップを開催していくこととなりました。
第一回目として、きたる 8月19日(水) 13:30 より、Google Cloud Platform のモバイルプラットフォームである
Firebase
のハンズオン ラボを実施します。
Google デベロッパー アドボケイトの Mandy Waite と佐藤一憲がチューターを担当し、Firebase のリアルタイム データベースを用いたインタラクティブな Web アプリケーション開発の手順をひとつずつ解説していきます。
* 最新技術の内容をお届けするため、資料と説明は英語ベースとなりますが、必要に応じてチューターの佐藤が日本語でも補足します。
日時: 8月19日(水) 13:30 - 16:30 (開場 13:00)
会場: 東京都港区六本木一丁目四番五号 アークヒルズサウスタワー 6F
費用: 無料
アジェンダの詳細、登録はこちらからどうぞ。
http://eventdots.jp/event/567833
クラウドにおけるモバイルファースト開発
2015年6月4日木曜日
* この投稿は、米国時間 5 月 29 日、Product Marketing Manager の
Andy Tzou によって投稿
されたものの抄訳です。
ユーザーがモバイルファースト、そしてモバイルオンリーへと移っていくようになり、Google では、モバイル特有の課題に対するソリューションを用意することを目指してきました。例えば、デベロッパーがアプリのフロントエンド ユーザー エクスペリエンスに専念できるフル マネージド サービスや、デベロッパーがプロジェクトに必要なだけ管理できるプラットフォームと IaaS (infrastructure-as-a-service) などです。
モバイルの世界
Firebase
は、モバイルの世界において、これまでのプログラミング モデルの限界への画期的な一歩です。
RESTful
なモデルは、特にウェブにおいては大きな役割を果たしてきましたが、モバイルにおいてはどうでしょう。例えば、地下鉄へ入る時、飛行機モードにする時、接続エリアが制限された場所では、ネットワークの接続が断続的になったり、ネット環境自体が存在しないことさえあります。こんな環境でシームレスなサービスを作ることは難しいのに、ユーザーはオフラインでも動くアプリを求めるようになっています。
シームレスなオフライン機能
先日の Google I/O で Firebase は、
iOS
と
Android
での
オフライン
をネイティブサポートすると公表しました。Firebaseは、デベロッパーに代わってデータを維持し、ネットワークが利用できない場合には自動的にデータをデバイスにローカル保存します。接続が回復すると、自動的にアプリケーション データをクラウドに同期します。RESTful なモデルでは、デベロッパー自身がシームレスなオフライン環境を作ろうと努めなければならず、さらには、モバイル、デスクトップ、Android、iOS と、多種多様なクライアントにアプリケーション データを常に同期させることを期待され、デベロッパーにとって複雑さは勢いを増すばかりです。Firebase は、接続状態に関係なく、デベロッパーに代わって、デバイス全体にわたるデータ同期を管理します。
リアルタイム
オフラインに加え、ユーザーはアプリには素早く、迅速な応答を期待します。自分が乗る予定の車が徐々に近づいていることを地図上で確認したり、SNS への投稿が瞬時に表示されたり、Google ドキュメントでリアルタイムに共同編集したりです。リアルタイムであることは、ユーザー エクスペリエンスにおいて重要になってきました。
Firebase は、モバイル アプリケーションに対するリアルタイム同期アプローチの先駆けです。アプリケーション データは、デベロッパーの労力を必要とせずに、クラウドおよびクライアント デバイス全体とリアルタイムで同期されます。
インフラストラクチャとコンピューティング
さらに、Google Cloud Platform では、既存のバックエンドの管理または移行を検討するモバイル デベロッパーのために、
Google App Engine
や
Managed VM
、
Google Compute Engine
といったモバイル アプリ構築のためのさまざまなオプションを提供しています。長期的なジョブのホスト、分析の実行、またはカスタム ビジネス ロジックの記述のために最適です。
Google Cloud Platform では、モバイル デベロッパーおよびモバイルへの対応を最優先に考えています。例えば、
Rovio
の Angry Birds、
Feedly
のモバイル コンテンツ、
Citrix
のリモート コラボレーションなど、実際の例も読んでみてください。
Firebase
や
Google Cloud Platform
を使って、次世代の素晴らしいモバイル エクスペリエンス構築を!
-Posted by Andy Tzou, Product Marketing Manager, Google Cloud Platform
Google Cloud Platform Live:Container Engine、Cloud Networking、その他の発表について
2014年11月5日水曜日
本内容は、米国時間、11月4日に Product Management、バイスプレジデントの Brian Stevens によって投稿されたものの抄訳です。
本日より、Gogle Cloud Platform Live(
livestream
)を開催しています。本日、GCP に関するアップデートを発表させていただき、一歩一歩ですが、皆様のご要望に近づくことができればと考えております。
シンプルで柔軟なコンピュート環境の選択肢
本日のクラウド上での開発は、大きく断片化された経験の寄せ集めです。仮想マシンを使うか、マネージドプラットフォームを使うかを予め選択する必要があります。仮想マシンを使うと、すべてをスクラッチで構築するか、あるいはオープンソースのコンポーネントを利用するか、いずれにしても自分自身で環境を構築することができます。一方マネージドプラットフォームを使うと、低レイヤのコントロールを諦めることになります。Google では、クラウド上でのコンピュートというものを一般とは異なるものとして考えています。すなわち、アプリケーション、さらにはそのなかのコンポーネント単位で異なる抽象性が選択可能なものとして捉えているのです。本日、このようなビジョンに基づき、2 つの重要なステップとなる発表をいたします。
Google Container Engine
Kubernetes と Google Compute Engine による Docker コンテナ運用サービス
Google Container Engine
は、Google Compute Engine で構成されたマネージドクラスタ上でポータブルな Docker コンテナを起動し、ユーザーの手を煩わせることなく適切なコンテナ配置を提供できるサービスです。個別の仮想マシンを直接用いる従来手法に代わる、クラウド アプリケーションの新しい運用手法を実現します。オープンソース プロジェクト Kubernetes をベースとし、Google Compute Engine の仮想マシンを用いたコンテナ ベース アプリケーション構築の最適な手段を提供します。オープンソース実装であるため、手元の開発マシンをはじめ、オンプレミス マシン、パブリック クラウドなど、様々な環境の間でアプリケーションを自由に移動できる高いポータビリティを提供します。Google Compute Engine のすばやい仮想マシン起動、そしてシームレスな仮想ネットワークと統合することで、コンテナベース アプリケーションを稼働させるための最適な環境を Google Cloud Platform 上で実現します。
App Engine における Managed VM
PaaSの進化
App Engine は、お客様に、サーバーレベルの構築や設定よりも、アプリケーションそのものを提供することに集中していただくという我々のビジョンのもとに誕生しました。今年のはじめ、Google は、Managed VM という App Engine の進化を予告しました。
Managed VM
により、App Engine を柔軟な仮想マシン環境で構成した場合の利点を、すべて受けることができるようになります。本日より、Managed VM はベータとなり、オートスケーリング サポート、Cloud SDK 統合、Docker コンテナ上でのランタイムのサポートを提供するようになりました。App Engine は、ユーザがアプリケーションのコードそのものに集中できるよう、すべてのアプリケーションの構築に必要な補助的なサービス(ネットワークルーティング、ロードバランシング、オートスケーリング、モニタリング、ロギング)をプロビジョンし、設定します。ユーザーは、あらゆる言語、ライブラリそして実行環境そのもののカスタマイズやリプレイスを行うことができます。(App Engine 上で Node.js を動かしたいですか?それができるようになりました)さらに、Compute Engine が提供する幅広い種類のマシンタイプにアクセスができるようになったとも言えます。
Google Cloud Interconnect:グローバルなアーキテクチャをサポートするより良いネットワーク接続
柔軟で、高性能で、安全なネットワークは、すべてのインターネット スケールのアプリケーションとエンタープライズITシステムのバックボーンとなっています。本日、我々は、Google のもつ世界規模のファイバーネットワークをユーザの方々に簡単に享受いただけるよう、下記、3つの新しい接続オプションを提供開始します。
Direct Peeering - 33 カ国 70 箇所以上の POP (Point of Presence) に高速な回線を直接接続することができます。
Carrier Interconnect - Equinix, IX Reach, Level 3, TATA Communications, Telx, Verizon, Zayo など、Google のキャリアパートナーを経由して Google に
接続することができます
。
来月、VPN を利用した接続方式を提供する予定です。
ネットワーク
については、水曜日のセッションで、より詳しく検証していきます。
Google Firebase
:
リアルタイムのモバイル/Web アプリケーション開発を簡単に
Google は 2 週間前、Google Cloud Platform への Firebase の参加をアナウンスしました。今日のセッションでは、Firebase のプラットフォームの強力さをかいま見ることのできるデモを行います。いまのモバイル アプリケーション ユーザーにとっては、ソーシャルサービス上の友人のステータスやチャット、コメント、ロケーションなどの情報のリアルタイム共有は当たり前となっています。しかしこれまでの一般的な開発ツールでは、多数のデバイスとその背後にあるデータベースやストレージとのリアルタイム連携の実装は容易ではありません。Google Firebase はこうしたリアルタイム連携を簡単に実現できるテクノロジーであり、すでに 6 万を超えるアプリケーションで利用されています。より詳細な紹介を木曜日に予定しています。
Google Cloud Debugger
先の Google I/O では、プロダクション環境におけるアプリケーションのトラブルシューティングを容易にする Cloud Debugger についてごく簡単に紹介しました。本日より、このサービスのベータ版が利用できます。 Cloud Debugger を使えば、サービスの内部で何が起きているかをログを追いながら推測する必要はなくなります。コード上の 1 行を選んでウォッチポイントをセットするだけで、サービスのいずれかのインスタンス上で次にその行が実行されたタイミングでローカル変数とスタックトレース内容が取得され、デバッガ上に表示されます。セットアップ作業や複雑な設定は不要で、ユーザーへのパフォーマンス面での影響もほとんどありません。
Google Compute Engine Autoscaler
本日発表したこのサービスは Google が自社で使用しているものと同じ技術を使っており、負荷が急激にスパイクしてもシームレスに対応、開発者が使用率やその他指標に応じて、VM フリートを動的にリサイズできるサービスです。その他指標の例としては、HTTP ロードバランサーの QPS や VM CPU 使用率、Cloud Monitoring(監視サービス)からのカスタム指標などです。
Cloud Platform のフリートライアルについて
新規のお客様は、
こちら
から
フリートライアル
に登録いただくと、Google Cloud Platform のお好きな製品、サービスを $300 分ご利用頂くことが可能です。お客様がアカウントをアップグレードされない限り、私達がお客様のクレジットに請求することはありません。 $300ですと n1-standard-2 VMs 24x7 を 60 日間、11TB以上のデーターを格納、または、BigQuery を使用し、60TB 以上のデーターを処理することなどができます。フリートライアルについての詳細は
こちら
をご覧下さい。
* フリートライアルについての説明は現在英語のみとなっております。このトライアルについては、日本のお客様も対象となります。
成長するパートナー・エコシステム
サンフランシスコのパートナーラウンジイベントでは、
Tableau
、
Red Hat
、
DataStax
、
MongoDB
、
SaltStack
、
Fastly
そして
Bitnami
の各社を紹介しています。Bitnami 社は、Google Cloud Platform 上で動作する
Launchpad
を発表しました。これは、ワンクリックで一般的なオープンソースのアプリケーションをデプロイできるしくみと、100 以上のクラウドイメージを提供します。Fastly 社は、
Cloud Accelerator
を Google Cloud Platform と連携し、コンテンツ配信と極限での性能を提供します。
急速に増加する顧客企業数
過去数ヶ月間にわたり、GCP を開発環境としてご選択頂いているお客様の数は急速に増加しています。Live では、数千におよぶ Compute Engine コアを用いてハリウッドスタジオ向けの高品質なビジュアルイフェクト作成を可能にしている
Atomic Fiction
をはじめ、印刷サービス全体をホストされたストレージソリューションから Google Cloud Platform に移行した Office Depot の事例など、お客様事例をご紹介しています。コスト削減、アジリティ開発、サービスを強化の実現を支援しています。
新たな価格削減
いつものようにですが、ムーアの法則に従うべく、価格削減について発表させていただきます。 Network egress (47%)、BigQuery storage (23%)、 Persistent Disk Snapshots (永続ディスク スナップショット) (79%)、Persistent Disk SSD (永続ディスク SSD)(48%)、そして Cloud SQL (25%) です。これらは、10月に発表させていただきました
Google Compute engine 価格 10% 削減
に追加され、適用されるものです。
12 か月間のトライアル
300 ドル相当が無料になるトライアルで、あらゆる GCP プロダクトをお試しいただけます。
Labels
.NET
.NET Core
.NET Core ランタイム
.NET Foundation
#gc_inside
#gc-inside
#GoogleCloudSummit
#GoogleNext18
#GoogleNext19
#inevitableja
Access Management
Access Transparency
Advanced Solutions Lab
AI
AI Hub
AlphaGo
Ansible
Anthos
Anvato
Apache Beam
Apache Maven
Apache Spark
API
Apigee
APIs Explore
App Engine
App Engine Flex
App Engine flexible
AppArmor
AppEngine
AppScale
AprilFool
AR
Artifactory
ASL
ASP.NET
ASP.NET Core
Attunity
AutoML Vision
AWS
Big Data
Big Data NoSQL
BigQuery
BigQuery Data Transfer Service
BigQuery GIS
Billing Alerts
Bime by Zendesk
Bitbucket
Borg
BOSH Google CPI
Bower
bq_sushi
BreezoMeter
BYOSL
Capacitor
Chromium OS
Client Libraries
Cloud API
Cloud Armor
Cloud Audit Logging
Cloud AutoML
Cloud Bigtable
Cloud Billing Catalog API
Cloud Billing reports
Cloud CDN
Cloud Client Libraries
Cloud Console
Cloud Consoleアプリ
Cloud Container Builder
Cloud Dataflow
Cloud Dataflow SDK
Cloud Datalab
Cloud Dataprep
Cloud Dataproc
Cloud Datastore
Cloud Debugger
Cloud Deployment Manager
Cloud Endpoints
Cloud Firestore
Cloud Foundry
Cloud Foundry Foundation
Cloud Functions
Cloud Healthcare API
Cloud HSM
Cloud IAM
Cloud IAP
Cloud Identity
Cloud IoT Core
Cloud Jobs API
Cloud KMS
Cloud Launcher
Cloud Load Balancing
Cloud Machine Learning
Cloud Memorystore
Cloud Memorystore for Redis
Cloud monitoring
Cloud NAT
Cloud Natural Language API
Cloud Networking
Cloud OnAir
Cloud OnBoard
cloud Pub/Sub
Cloud Resource Manager
Cloud Resource Manager API
Cloud SCC
Cloud SDK
Cloud SDK for Windows
Cloud Security Command Center
Cloud Services Platform
Cloud Source Repositories
Cloud Spanner
Cloud Speech API
Cloud Speech-to-Text
Cloud SQL
Cloud Storage
Cloud Storage FUSE
Cloud Tools for PowerShell
Cloud Tools PowerShell
Cloud TPU
Cloud Translation
Cloud Translation API
Cloud Virtual Network
Cloud Vision
Cloud VPC
CloudBerry Backup
CloudBerry Lab
CloudConnect
CloudEndure
Cloudflare
Cloudian
CloudML
Cluster Federation
Codefresh
Codelabs
Cohesity
Coldline
Colossus
Compute Engine
Compute user Accounts
Container Engine
Container Registry
Container-Optimized OS
Container-VM Image
Couchbase
Coursera
CRE
CSEK
Customer Reliability Engineering
Data Studio
Databases
Dbvisit
DDoS
Debugger
Dedicated Interconnect
deep learning
Deployment Manager
Developer Console
Developers
DevOps
Dialogflow
Disney
DLP API
Docker
Dockerfile
Drain
Dreamel
Eclipse
Eclipse Orion
Education Grants
Elasticsearch
Elastifile
Energy Sciences Network
Error Reporting
ESNet
Evernote
FASTER
Fastly
Firebase
Firebase Analytics
Firebase Authentication
Flexible Environment
Forseti Security
G Suite
Gartner
gcloud
GCP
GCP Census
GCP 移行ガイド
GCP 認定資格チャレンジ
GCPUG
GCP導入事例
gcsfuse
GEO
GitHub
GitLab
GKE
Go
Go 言語
Google App Engine
Google Apps
Google Certified Professional - Data Engineer
Google Cloud
Google Cloud Certification Program
Google Cloud Client Libraries
Google Cloud Console
Google Cloud Dataflow
Google Cloud Datalab
Google Cloud Datastore
Google Cloud Endpoints
Google Cloud Explorer
Google Cloud Identity and Access Management
Google Cloud INSIDE
Google Cloud INSIDE Digital
Google Cloud INSIDE FinTech
Google Cloud Interconnect
Google Cloud Launcher
Google Cloud Logging
Google Cloud Next '18 in Tokyo
Google Cloud Next '19 in Tokyo
Google Cloud Platform
Google Cloud Resource Manager
Google Cloud Security Scanner
Google Cloud Shell
Google Cloud SQL
Google Cloud Storage
Google Cloud Storage Nearline
Google Cloud Summit '18
Google Cloud Summit ’18
Google Cloud Tools for IntelliJ
Google Code
Google Compute Engine
Google Container Engine
Google Data Analytics
Google Data Studio
Google Date Studio
Google Deployment Manager
Google Drive
Google Earth Engine
Google Genomics
Google Kubernetes Engine
Google maps
google maps api
Google Maps APIs
Google Maps Platform
Google SafeSearch
Google Service Control
Google Sheets
Google Slides
Google Translate
Google Trust Services
Google VPC
Google マップ
Google 公認プロフェッショナル
GoogleNext18
GPU
Gradle
Grafeas
GroupBy
gRPC
HA / DR
Haskell
HEPCloud
HIPAA
Horizon
HTCondor
IaaS
IAM
IBM
IBM POWER9
icon
IERS
Improbable
INEVITABLE ja night
inevitableja
InShorts
Intel
IntelliJ
Internal Load Balancing
Internet2
IoT
Issue Tracker
Java
Jenkins
JFrog
JFrog Artifactory SaaS
Jupiter
Jupyter
Kaggle
Kayenta
Khan Academy
Knative
Komprise
kubefed
Kubeflow Pipelines
Kubernetes
KVM
Landsat
load shedding
Local SSD
Logging
Looker
Machine Learning
Magenta
Managed Instance Group
Managed Instance Group Updater
Maps API
Maps-sensei
Mapsコーナー
Maven
Maxon Cinema 4D
MightyTV
Mission Control
MongoDB
MQTT
Multiplay
MySQL
Nearline
Network Time Protocol
Networking
neural networks
Next
Node
NoSQL
NTP
NuGet パッケージ
OCP
OLDISM
Open Compute Project
OpenCAPI
OpenCAPI Consortium
OpenShift Dedicated
Orbitera
Organization
Orion
Osaka
Paas
Panda
Particle
Partner Interconnect
Percona
Pete's Dragon
Pivotal
Pivotal Cloud Foundry
PLCN
Podcast
Pokemon GO
Pokémon GO
Poseidon
Postgre
PowerPoint
PowerShell
Professional Cloud Network Engineer
Protocol Buffers
Puppet
Pythian
Python
Qwiklabs
Rails
Raspberry Pi
Red Hat
Redis
Regional Managed Instance Groups
Ruby
Rust
SAP
SAP Cloud Platform
SC16
ScaleArc
Secure LDAP
Security & Identity
Sentinel-2
Service Broker
Serving Websites
Shared VPC
SideFX Houdini
SIGOPS Hall of Fame Award
Sinatra
Site Reliability Engineering
Skaffold
SLA
Slack
SLI
SLO
Slurm
Snap
Spaceknow
SpatialOS
Spinnaker
Spring
SQL Server
SRE
SSL policies
Stack Overflow
Stackdriver
Stackdriver Agent
Stackdriver APM
Stackdriver Debugger
Stackdriver Diagnostics
Stackdriver Error Reporting
Stackdriver Logging
Stackdriver Monitoring
Stackdriver Trace
Stanford
Startups
StatefulSets
Storage & Databases
StorReduce
Streak
Sureline
Sysbench
Tableau
Talend
Tensor Flow
Tensor Processing Unit
TensorFlow
Terraform
The Carousel
TPU
Trace
Transfer Appliance
Transfer Service
Translate API
Uber
Velostrata
Veritas
Video Intelligence API
Vision API
Visual Studio
Visualization
Vitess
VM
VM Image
VPC Flow Logs
VR
VSS
Waze
Weave Cloud
Web Risk AP
Webyog
Wide and Deep
Windows Server
Windows ワークロード
Wix
Worlds Adrift
Xplenty
Yellowfin
YouTube
Zaius
Zaius P9 Server
Zipkin
ZYNC Render
アーキテクチャ図
イベント
エラーバジェット
エンティティ
オンライン教育
クラウド アーキテクト
クラウド移行
グローバル ネットワーク
ゲーム
コードラボ
コミュニティ
コンテスト
コンピューティング
サーバーレス
サービス アカウント
サポート
ジッター
ショート動画シリーズ
スタートガイド
ストレージ
セキュリティ
セミナー
ソリューション ガイド
ソリューション: メディア
データ エンジニア
データセンター
デベロッパー
パートナーシップ
ビッグデータ
ファジング
プリエンプティブル GPU
プリエンプティブル VM
フルマネージド
ヘルスケア
ホワイトペーパー
マイクロサービス
まっぷす先生
マルチクラウド
リージョン
ロード シェディング
運用管理
可用性
海底ケーブル
機械学習
金融
継続的デリバリ
月刊ニュース
資格、認定
新機能、アップデート
深層学習
深層強化学習
人気記事ランキング
内部負荷分散
認定試験
認定資格
料金
Archive
2019
8月
7月
6月
5月
4月
3月
2月
1月
2018
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2017
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2016
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2015
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2014
12月
11月
10月
9月
8月
6月
5月
4月
3月
2月
Feed
月刊ニュースレターに
登録
新着ポストをメールで受け取る
Follow @GoogleCloud_jp