コンテンツに移動
Google Cloud

株式会社Ginco の導入事例:業界に先駆け Google Kubernetes Engine と Firebase を導入し、先進的仮想通貨ウォレット アプリ「Ginco」を短期間で開発

2018年12月27日
Google Cloud Japan Team

https://storage.googleapis.com/gweb-cloudblog-publish/images/logo_ginco.max-400x400.png

今、何かと話題の仮想通貨・ブロックチェーン関連サービス。株式会社Ginco は、日本発のクライアント型ウォレット アプリ「Ginco」で、業界の注目を集めているスタートアップです。そのバックエンドに Google Cloud Platform(GCP)が採用されている理由や、今後の利用拡大について、同社 CTO の森下さんと、バックエンド エンジニアの髙妻さんにお話いただきました。

https://storage.googleapis.com/gweb-cloudblog-publish/images/OF7BJ9AVIsW-03Bt00WfGRR2qPYvPlIaumXjNMe8t.max-1600x1600.JPEG

利用している Google Cloud Platform サービス

Google Kubernetes EngineCloud Firestore(ベータ版)Cloud Scheduler(ベータ版)Google StackdriverGoogle BigQuery など


写真左から

  • CTO 森下 真敬氏
  • バックエンド エンジニア 髙妻 智一氏

株式会社Ginco

株式会社Ginco は「次世代の銀行をつくる」を理念に、仮想通貨ウォレット アプリ「Ginco」を提供するブロックチェーン事業者。その他にも、仮想通貨のマイニング事業や、法人向けのブロックチェーン サービス開発支援事業を行い、仮想通貨のウォレットという "入口" から、それをどう活用していくかという "出口" の部分までを、ブロックチェーン技術を基盤に広く展開している。2017 年 12 月設立、従業員数は 約 30 名(2018 年 12 月時点)

安全かつ快適なウォレット アプリの開発・運用に GCP が貢献

株式会社Ginco の、来たるべき仮想通貨時代に向けた取り組みの 1 つが、仮想通貨ウォレット アプリ「Ginco」。
仮想通貨は管理者のいないブロックチェーン上の資産のため、管理の方法によってはハッキングや不正ログインなどによって、突如失われて(奪われて)しまうことがあります。

そんな中、現在注目を集めているのが「Ginco」のような仮想通貨ウォレット アプリ(クライアント型ウォレット)。ユーザー 1 人ひとりに割り当てられる資産の認証コード(秘密鍵)を、スマートフォン内に保存するため、単一の障害点や攻撃対象がなく、一般に利用されている取引所のウォレットなどと比べて、セキュリティ性に優れています。また、クライアント型ウォレットでは、ユーザー間で直接送金をすることができるため、取引所のメンテナンスによって送金できないということがなく、送金手数料も最低限で、しかも安全にやり取りを行うことができます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/_-SfX65GlSztyTn3dy0SR5EdFwVsfqv81R5vrNZD8k.max-1600x1600.PNG

「今回、Ginco アプリを立ち上げるにあたり、Google Kubernetes Engine(GKE)と、Firebase を活用しました。具体的には、まず GKE はブロックチェーンのノードを立てるために使っています。既存の方法では、都度、ややこしいパラメーター設定が必要で、非常に面倒だったのですが、Kubernetes ならそれらをコードとして残しておき、Git で管理、CI ツール(継続的インテグレーションという思想に基づいて開発を支援するツール)を使って簡単にデプロイできます。また、クラッシュした際のリカバリーもとても簡単です。Kubernetes を使ったブロックチェーン ノードの運用例はあまり聞いたことがないのですが、やってみると非常に便利。今後、スタンダードになっていくのではないかと思っています。」(森下さん)

もう 1 つの Firebase は、Ginco アプリのバックエンド サーバーで活用。実は開発初期は Google App Engine(GAE)と Cloud Datastore を使って運用しようと考え、実際にほとんどできあがっていたのですが、ベータ版リリースの 2 週間前に、Firebase 環境に切り替える判断をしたそうです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Fw9msDw1AzVMDt36SZ_7NB5_G4GO4AeMuZEgvaaHY.max-1600x1600.JPEG

「仮想通貨ウォレットの運用に重要なのはリアルタイム性。ブロックチェーンでは、ブロックがどんどん繋がっていくことによって、データのファイナライズが行われ、それによってステートがどんどん変わっていきます。一般的なウォレットではその最新ステートを確認するために、クライアント側から更新をかける必要があり、それがユーザーにとっては手間に、サーバーにとっては負荷になっていました。そこで、Ginco アプリでは、それをサーバー側からクライアント側にリアルタイムで通信する方法に改善したかったのです。開発と並行していろいろ調べていたところ、そうした要望に Firebase がピッタリだということが分かり、リリース直前ではあったのですが、急遽置き換えることにしました。GAE が担っていた部分も、Cloud Functions for Firebase に置き換え、すべて Firebase 上で動くようにしています。ちなみに、これも、我々が業界に先駆けてチャレンジしているのではないかと思っています。」(森下さん)

また、Firebase は Ginco のセキュリティにも貢献しているとのこと。Ginco はアプリの性質上、サーバー側にブロックチェーンの「秘密鍵」を持たず、ユーザーの個人情報も扱っていない(匿名情報などを保持)ため、この点で最も重要なのは、ノードに対するクライアントからのリクエストを正しく認証できるかということでした。

「一般的なサーバーでは自前で認証機能を実装する必要がありますが、Firebase なら、Firebase Authentication を使うことで、Google の認証を使ってセキュアにアクセスすることができ、簡単で、安心です。」(森下さん)

https://storage.googleapis.com/gweb-cloudblog-publish/images/yNAfOWgejS7IHuu0qGU6p7ilHP5FX74bANT9p89n2.max-1600x1600.JPEG

「加えて、直近の機能追加で実装された仮想通貨の交換機能(日本、米国では、現在のところ法規の問題から利用できず)でも Firebase が活躍しています。従来の方法では、交換時のレートを都度、ブロックチェーン ノードに確認しにいくため時間がかかっていたのですが、Ginco では、あらかじめ定期的に取得してきた最新レート情報を Cloud Firestore に登録し、それをアプリから直接参照することで高速なやり取りを実現しています。また、レート変化の即時反映が簡単にはできない問題も、Firestore なら、リアルタイムに値の変更をクライアントに反映できます。なお、ブロックチェーン ノードにレート情報を取りに行くジョブも、Cloud Functions for Firebase と Cloud Scheduler を利用。従来の手法と比べて高速化できるだけでなく、サーバーのモニタリングが必要なくなるなど、心理的にも楽ですね。サーバー エンジニアとクライアント エンジニアの職種の壁がなくなってきていると思いました。」(髙妻さん)

「そう、とにかく開発がスムーズに進められるんです。今後も、このやり方で機能を追加していきたいと考えています。」(森下さん)

フルマネージドでスケーラブルな GCP はブロックチェーンに好適なプラット フォーム

新時代の分散型ネットワークとして登場したブロックチェーン技術ですが、現在のところ、ブロックチェーンを使ったサービスの多くが大手クラウド プラットフォーム上に構築されています。数ある選択肢の中から、Ginco が GCP を選んだのにはどういった理由があったのでしょうか。森下さんは次のように語ります。

「もちろん、当初は GCP 以外のクラウド プラットフォームも検討しました。その際、細部を細かく作り込んでいくのであれば、他の選択もありえたと思っていますが、決定打となったのは、GCP がフルマネージドだったこと。将来的にエンジニアを増やした時に、フルマネージドな GCP の方がキャッチ アップしやすく、トータルのマネジメント コストも GCP の方が下がることは明白でした。最終的にはサーバーレスな構成にしたいと考えていたことも、GCP の導入を後押ししました。コスト面に関しては、少なくともインフラ エンジニア分は削減できていますし、データベースの運用コストも一般的な RDB と比べて削減できていると感じています。外部スタッフも含め、10 人に満たない開発チームながら、数か月でベータ版までこぎ着けることができたスピード感も大きなメリットの 1 つです。」(森下さん)

「開発の手間も劇的に下がっていますね。例えば、仮想通貨の交換機能の開発を従来の方法で行うと 10 以上の API を実装する必要があったのですが、Firebase を利用することで、クライアントから使用する API は 1 つも実装することがありませんでした。同じ事を既存の方法でやろうとしたら 5 倍くらいの労力がかかっていたと思います。コストも 3 分の 2 くらいになったのではないでしょうか。」(髙妻さん)

https://storage.googleapis.com/gweb-cloudblog-publish/images/lYMxM3VEK77-0dqpua31p0bLn_nHHXMWOTGbZtEfW.max-1600x1600.JPEG

最後に、今後、さらに GCP の活用を拡げていくかについて、いくつかの計画をお話いただきました。

「近い将来に、ブロック エクスプローラーと呼ばれるブロックチェーンのデータベース サービスがあるのですが、これを Cloud Spanner などの GCP のフルマネージドなシステムを使って作ってみたいと思っています。ブロックチェーンの思想的に、特定のプラット フォームに依存するかたちになるのは望ましくないのですが、ブロックチェーンの難しいところは、スタートアップ企業にも世界規模のスケーリングが必要とされるプロダクトを作らねばならないこと。そう考えたとき、フルマネージドでスケーラブルな GCP は理想的なプラット フォームだと考えています。」(森下さん)

その他の導入事例はこちらをご覧ください。

投稿先