MilkcocoaでBaaSを体験!~バックエンドの仕組みと使い方~

第4回 圧倒的にリアルタイム通信が楽しくなる! Milkcocoaをサーバーサイドで使ってみよう! ~Milkcocoa Node.js SDKの紹介~

この記事を読むのに必要な時間:およそ 3.5 分

前回まででMilkcocoaの概要から簡単な使い方,発展的な使い方を紹介しました。前回まではフロントエンド開発としてのJavaScriptを使ってブラウザで動作するWebアプリケーションを実装してきました。

今回はMilkcocoaのNode.js向けSDKを用いて,サーバサイドでMilkcocoaを使っていきたいと思います。

図1 MilkcocoaとNode.ja

図1 MilkcocoaとNode.ja

Milkcocoa Node.js SDK

まだ開発版ですが,MilkcocoaはNode.jsのSDKも公開されています。Milkcocoa Node.js SDKは通常のJavaScript SDKと同様の使い方をすることができ,直感的に記述することが可能なので,初心者でも迷わずに使うことが出来ます。

APIリファレンスは通常のSDKのものと同じです。

Milkcocoaをあえてバックエンドで利用する

前回までの内容からわかるとおり,Milkcocoaを使うことでバックエンド構築をすることなく,フロントエンド開発だけでアプリケーションが作れるようになります。Milkcocoaをあえてバックエンドで利用するメリットを紹介したいと思います。

データベースとWebSocketライブラリの代替

Node.jsを使ったリアルタイム通信を行いデータを保存していく仕組みを作る場合はNode.jsmongoDBsocket.ioを使ったアーキテクチャがデファクトスタンダードになりつつあります。このアーキテクチャを用いることで,サーバプログラムで処理を行った内容をリアルタイムにユーザに通知することが可能になります。

図2 Node.jsを使ったリアルタイム通信のアーキテクチャ

図2 Node.jsを使ったリアルタイム通信のアーキテクチャ

ただ,この構成をするためにはNode.js,mongoDB,socket.ioをそれぞれ用意する必要があり,ある程度の作業コストが発生します。

図3 MilkcocoaがmongoDBとsocket.ioを肩代わりしてくれる

図3 MilkcocoaがmongoDBとsocket.ioを肩代わりしてくれる

MilkcocoaはmongoDBとsocket.ioを一挙に肩代わりしてくれるサービスとも言えます。Node.jsの準備だけしておけば,すぐにでもチャットのようにリアルタイム通信を行いデータを保存する仕組みを作ることができます。また,自前で用意するアーキテクチャが減ることで,作業スピードを上げることが可能になります。

負荷分散にMilkcocoaを利用

Milkcocoaを使いサーバへのアクセス数を制御するという利用方法もあります。通常のWebサービスでリアルタイム通信を行う場合,Webサイトに訪れるユーザ数がそのままWebSocketのコネクション数になります。

図4 サーバの負荷が高い

図4 サーバの負荷が高い

サーバへの同時接続数が多くなればなるほど,サーバ負荷が大きくなり,コストやサーバダウンのリスクが高くなります。

図5 サーバの負荷を軽減できる

図5 サーバの負荷を軽減できる

静的サイトホスティングのフロントサーバと実際の処理をするバックエンドサーバーの間にMilkcocoaを仲介することで,バックエンドサーバに対するコネクションを一本化出来るので,負荷を軽減し,コストやリスクを下げることも出来ます。

サーバサイドでの処理をイベントとしてフロントサーバに反映させるときに有効です。

IoT領域でデバイスとWebを繋げるMilkcocoa

IoT(Internet of Things)という単語をご存知でしょうか? 直訳すると⁠モノのインターネット⁠です。色々なモノがインターネットと接続して新たなコミュニケーションや表現が可能となるという領域です。

ArduinoRaspberry Piなどのマイコンボードを経由してモノに接続する表現が流行ってきています。

IoT領域ではデバイスとデバイスをつなげたり,デバイスとWebをつなげる場合のコネクション手法をどうするかが課題になります。その手法としてMilkcocoaを利用することができます。Milkcocoaの開発元である⁠株⁠Technical Rockstarsの部谷氏の発表資料ではRaspberry Pi上でNode.jsを使いMilkcocoa Node.js SDKを経由してWebゲーム上でエフェクトを掛ける仕組みを紹介していました。

図6 Raspberry PiからMilkcocoaを経由してWebゲーム上でエフェクトを掛ける

図6 Raspberry PiからMilkcocoaを経由してWebゲーム上でエフェクトを掛ける

このような連携時にもMilkocoa Node.js SDKは活用できますし,既に構築済みのWebサービスにこう言ったデバイス連携を後から追加しようとしたときにも,Milkcocoaを使うことで簡単に連携ができます。

著者プロフィール

菅原のびすけ(すがわらのびすけ)

株式会社LIG エンジニア。1989年生まれ。岩手県立大学在籍時にITベンチャー企業の役員を務める。

同大学院を卒業後,株式会社LIGにWebエンジニアとして入社し,Web制作に携わる。

最近は特にIoT領域,インタラクティブな企画実装などに従事している。

マッシュアップアワードを始めとしたハッカソン等で入賞歴あり。

家賃0円クリエイターズシェアハウス第1期生。ジーズアカデミー第1期メンター。

LIGinc,HTML5Experts.jp,さくらのナレッジ,gihyo.jpなどでも執筆・寄稿をしている。

Milkcocoaエバンジェリスト,特技はわんこそば,趣味は雪合戦。

Twitter:@n0bisuke

LIGincプロフィール:http://liginc.co.jp/member/member_detail?user=nobisuke

コメント

  • 記事情報が古い為、補足です。

    こちらもお読みください! https://teratail.com/questions/16556

    Commented : #2  のびすけ (2015/11/03, 22:43)

  • Re:

    分かりやすいサイトで助かっています。
    今はnpmからmilkcocoaが動くので、sample.jsの1行目のvar MilkCocoa = require("./index.js");をvar MilkCocoa = require("milkcocoa");にして、3行目のvar milkcocoa = new MilkCocoa("https://io-ti2dak0ql.mlkcca.com");を自分で作ったapp-idにしないと動かないんですね。
    初心者なので気づくのに1日かかりましたがいろいろ調べて勉強になりました。

    Commented : #1  みやの (2015/09/26, 08:26)

コメントの記入