目次


IBM Bluemix モバイル入門

Mobile Cloud Platform 編

Comments

はじめに

IBM Bluemix では、モバイルのバックエンドの開発を省力化するサービス群、いわゆる MBaaS を提供しており、開発者は高度なモバイルアプリをクイックに開発する事ができます。更に、IBM Bluemix が提供する多彩なサービスを組み合わせて、様々なアイデアを実現する機能をモバイルアプリを組み込むことができます。

この記事では、1 章でモバイル開発に利用できる Bluemix のサービスの概要について解説します。その後、IBM Bluemix の MBaaS の中核である、Mobile Cloud Platform に焦点をあて、2 章でその概要を、3 章で具体的な実装方法について説明します。

※2015年1月時点の情報に基づき掲載しています。提供されるサービスの種類・内容は変更されている可能性があります。

IBM Bluemix モバイルの前に、IBM Bluemix の概要について知りたい場合にはこちらの Wiki ページの下記の記事をご覧ください。

1. Bluemix モバイル概要

Bluemix が提供するモバイル用のサービスは、大きく 3 つの種類に分かれます。

  • Mobile Cloud Platform
  • IBM MobileFirst Platform for iOS
  • 上記プラットフォームに属さない汎用のサービス

2 つのプラットフォームは、それぞれ SDK を共通とするサービス群で、そのため、通常、同じプラットフォーム内のサービスを組合せて利用します。 一方、SDK とは独立した「汎用」のサービス群もあります。これらのサービスは、いずれかのプラットフォームと組み合わせて利用するか、またはプラットフォームとは別個に稼動します。以下、それぞれのサービスについて紹介します。

Mobile Cloud Platform のサービス群

Android、iOS、Web (JavaScript)、Apache Cordova または IBM MobileFirst Platform Foundation (旧名称 Worklight、以下 Worklight) アプリケーションから利用できる MbaaS を提供しています。表 1 にこのプラットフォームのボイラープレートと各サービスの概要を記載しています。当記事ではこの Mobile Cloud Platform について次章以降で詳しく説明します。

表 1. Mobile Cloud Platform のサービス群
カテゴリアイコン名称説明
Boiler-platesMobile Cloud[SDK for Node.js] + [Mobile Application Security] + [Mobile Data] + [Push] +[Mobile Quality Assurance] で構成されるテンプレート。

※ [Mobile Quality Assurance] については「汎用のサービス群」の項目参照。

Run-timesSDK for Node.jsMobile Cloud Platform のアプリでサーバーサイドの処理を組み込むたい場合に利用できるランタイム。SDK から専用の API で利用可能。
MobileMobile Application SecurityMobile Cloud Platform のアクセス制御を集中管理。 ユーザー認証やアプリ、デバイス単位でアクセスの制御が行える。[Mobile Data]、[Push] サービス利用における前提。
MobileMobile Dataクラウド・ストレージ・サービスを提供。Cloudant ベースの NoSQL DB。データは JSON 文書としてデータを格納するが、アプリからは SDK の API を利用する事で、各プラットフォームのネイティブ・クラスとして扱える。ファイル同期の機能やジオフェンス (ベータ版) の機能も持つ。
MobilePushiOS および Android に対して、プッシュ通知サービスを提供。

IBM MobileFirst Platform for iOS のサービス群

iOS 8 のアプリから利用できる MBaaS を提供しています。現在はベータ版での提供です (2015年1月 時点)。iOS8 向けに開発を行う場合、こちらのプラットフォームが推奨されています。表 2 にこのプラットフォームのボイラープレートと各サービスの概要を記載しています。

表 2. IBM MobileFirst Platform for iOS のサービス群
カテゴリアイコン名称説明
Boiler-plateMobileFirst Services Starter[SDK for Node.js] + [Advanced Mobile Acces] + [Cloudant NoSQL DB] + [Push for iOS8] で構成されるテンプレート。ベータ版。
Run-timesSDK for Node.jsIBM MobileFirst Platform for iOS のアプリでサーバーサイドの処理を組み込むたい場合に利用できるランタイム。
MobileAdvanced Mobile Accessバックエンドへのアクセス制御を提供。カスタム・アカウントまたは既存のソーシャル・アカウント (Google/Facebook) を利用した認証が可能。iOS8 以降、ベータ版。
MobileCloudant NoSQL DB (Data for iOS8)クラウド・ストレージ・サービスを提供。JSON 文書としてデータを格納する NoSQL DB。データベースまたはデータごとにアクセス制御や、モバイル・クライアントのローカルデータとの同期ができる。また水平または地理的にスケールする事が可能。詳細はこちらの「Cloudant NoSQL DB サービス」の項目参照。IBM MobileFirst Platform for iOS の SDK の API を利用する事で、iOS のネイティブ・クラスを利用してデータの CRUD が可能。またデータの同期などの API も提供。ベータ版。
MobilePush for iOS8サイレント・プッシュ通知、インタラクティブ・プッシュ通知を含む iOS8 のプッシュ通知に対応。ベータ版。

汎用のサービス群

表 3 に各サービスの概要を記載しています。Mobile Quality Assurance サービスや Twilio サービスは、固有の SDK を提供しており、Mobile Cloud Platform または IBM MobileFirst Platform for iOS と組み合わせて利用できます。

表 3. 汎用のサービス群
カテゴリアイコン名称説明
MobileMobile Quality Assuranceモバイル・アプリの品質指標の管理を提供。クラッシュ・ログ自動収集、バグレポート機能やユーザー・フィードバック機能など。独自の SDK を Android/iOS/Worklight アプリに組み込んで利用する。
MobileTwilio電話回線またはインターネット回線を用いた音声通話や SMS の機能を提供。電話と読み上げによる通知や、電話アンケートなどが可能。国内では KDDI が当サービスを提供。Bluemix モバイルでは通常 Node.js から利用する。詳細はこちら参照。
SecurityAppScan Mobile Analyzerモバイル・アプリのソースコードをスキャンし、セキュリティーの問題をレポート。MBaaS ではなく、パッケージされたファイルを直接アップロードして利用。Bluemix 版は Android のみ対応、100MB までのアプリをスキャン可能(2015年1月 時点)。
Web and ApplicationRapid Appsコーディングの知識なしで、ビジュアル・ツールを用いて Web アプリまたはモバイル Web アプリの設計・開発が可能。独立したサービスで、認証・データ保存の仕組みを持つ。このサービスは他のサービス (Push など) と組み合わせて使う事はできない。ベータ版 (2015年1月 時点)。

順番予約モバイル・アプリケーション

デモの場面は、病院やレストラン、アトラクションなどでよくある順番予約のシーンです。利用者は順番の予約をオンラインから行えるだけでなく、順番が近づくとプッシュ通知、或いは、電話での呼び出し (Twilio による音声自動読み上げ) による通知を受け取ることができます。予約を受付ける施設側は、モバイル画面から受付状況を確認したり、通知を実施することができます。また予約者が電話番号を登録する際には、SMS (Twilio の機能) によるワンタイムコードで電話番号の確認を行うことで間違い電話を防止します。

2. Mobile Cloud Platform 概要

表 1 にあるように、「Mobile Cloud」ボイラープレートでは、「SDK for node.js」「Mobile Application Security (以下、MAS)」「Push」「Mobile Data」の 4 つが、統合されて提供されています。アプリケーションは共通の IBM Mobile Cloud Platform SDK (以下 SDK) を組み込むことで、IBM Mobile Cloud Platform の API 経由でそれぞれのランタイム・サービスを利用する事ができます。

2.1. Mobile Cloud Platform の構成

Mobile Cloud Platform では、MAS サービスを介して Node.js ランタイムや Mobile Data/Push サービスにアクセスします (図 1)。

MAS サービスは、アクセス先のアプリを「アプリケーション・ルート (または経路、英語名:Application Route)」で特定するとともに、「アプリ・キー (英語名:Application ID)」と「アプリ・シークレット (またはアプリケーション秘密鍵、英語名:Application Secret)」の各キーの値を検証して、アクセス制御を行います。アプリ・キー、アプリ・シークレット、アプリケーション・ルートの設定・確認方法については後述します。

モバイル・クライアントは、SDK を組み込みむことで、Mobile Cloud アプリにより簡単にアクセスすることができます。

SDK を利用できないバックエンドシステム等では、本来の REST 通信を直接制御してアプリにアクセスする必要があります。

図 1. Mobile Cloud Platform の全体像

2.2. Mobile Application Security

MAS は、2.1 で述べたアプリへのアクセス制御の他に、モバイル・アプリにユーザー認証を組み込む機能や、MAS にアクセスするアプリを制限する機能、ユーザー・デバイス単位でアクセスを拒否 (無効化) する機能があります。以下、アクセス制御以外の 3 つの機能について概要を紹介します。

2.2.1. ユーザー認証

MAS では、Google アカウントまたは Worklight の認証機能を利用して、ユーザー認証の機能を組み込む事ができます。

Google アカウントの認証の場合、Google+ platform の SDK を利用し 、OAuth による認証が行えます。下記は、Google アカウントで OAuth で認証する場合の画面遷移のイメージになります。

図 2. Google 認証を利用した OAuth 認証の流れ (BlueList-auth サンプルアプリ)

Worklight を利用した認証を行う場合、MAS サービスに Worklight の公開鍵ファイルを登録します。Worklight を利用した認証の詳細については Worklight のドキュメントをご参照ください。

2.2.2. アプリ認証

デフォルトでは、すべてのアプリが MAS サービスへアクセスできます。MAS のクライアントリストという機能を有効にすると、指定したアプリのみがアクセスできるようになります。アクセス可能なアプリは、プラットフォームに応じた ID (例、Android の場合はパッケージ名) を用いて指定します。

2.2.3. ユーザーまたはデバイスアクセスの無効化

MAS にアクセスしたユーザーまたはデバイスは記録されます (ユーザーは、MAS のユーザー認証を利用している場合のみ記録)

記録されたユーザーまたはデバイスをダッシュボードから検索し、アクセスの可否を ON/OFF で設定できます。(図 3)

図 3. MAS ダッシュボード (ユーザー/デバイスアクセスの無効化)

2.3. Mobile Data サービス

Mobile Data サービスではデータ・クラスまたはファイルという形でデータを格納する事ができます。また、あわせてロケーション・データ・サービス機能も提供しています (2015年1月 時点で Beta)。

2.3.1. データ・クラス

Mobile Data サービスはスキーマーレスの NoSQLDB 機能であり、事前にサービス側にデータ構造を定義しておく必要はありません。SDK の API を利用してクラスを定義し、保存を行うと自動的に DB 上にそのクラスが作成されます。そして、そのクラスのエントリとしてデータが格納されます。図 4 に Mobile Data のダッシュボードから、データ・クラスの情報を表示した画面イメージを示しています。

また、Mobile Data のダッシュボードから CSV ファイルをインポートしてデータを格納する事も可能です。新規のクラスの場合には、インポート時にクラス名を指定します。既存のクラスにデータを追加する場合には、CSV ファイルに加えて、クラスの属性へのマッピングを記述したマッピング・ファイルを用意する必要があります。

図 4. モバイル・データのダッシュボード画面

2.3.2. ファイル

File Sync プラグインを利用する事で、Mobile Data とモバイルのローカルに保存されているファイル群を同期する事ができます。ファイルは、モバイル・アプリから追加できるほか、Mobile Data のダッシュボードからも追加できます。ファイルを保管する保管するディレクトリは、アプリ ID に加えて 2 次 ID (ユーザーID など) で区別されるため、ユーザー別 (或いはグループ別など) で同期するディレクトリを指定できます。File Sync プラグインは、iOS ネイティブまたは Android ネイティブの SDK で利用できます。

*2015/1 時点では、日本語ファイル名はサポートされていないためご注意ください。

図 5. モバイル・データのダッシュボード画面 (ファイルセクション)

2.3.3. ロケーション・データ・サービス

Mobile Data では、現時点ではベータ版ですが (2015年1月 時点)、ジオフェンスの機能が利用できます。ジオフェンスで使用する境界は GeoJSON 形式で登録します。この機能は、iOS ネイティブまたは Android ネイティブの SDK で利用できます。

2.4. Push サービス

Push サービスでは、Android デバイスまたは iOS デバイス向けにプッシュ通知を送信する事ができます。Android デバイス向けには Google Cloud Messaging (GCM)、iOS デバイスに向けに Apple Push Notification Service (APNS) を利用します。

Mobile Cloud SDK を利用して、Push サービスにデバイスを登録します。また合わせてタグを登録する事で、その端末がサブスクライブするトピックを指定できます。

図 6. Push サービスの概要

プッシュ通知の送信対象は、一斉送信、タグ別、登録時の ID (コンシューマー ID) 別、プラットフォーム別 (iOS/Android) から選択できます。

プッシュ通知の送信は、Push サービスのダッシュボードから送信する事ができます。またバックエンドシステムから REST API 経由で送信する事や、モバイルアプリから Mobile Cloud SDK の API 経由で送信する事もできます。

図 7. Push サービスのダッシュボード (プッシュ通知の入力画面)

2.5. Node.js

Mobile Cloud Platform では、サーバーサイドの処理を稼動する Runtime は Node.js です。Node.js はサーバーサイドで JavaScript を稼動させる Web アプリのプラットフォームの 1 つです。

SDK for Nodejs によって、Node.js から、Mobile Cloud Platform の各サービス (Mobile Data/Push/MAS) に API 経由でアクセスできます。既存の Node.js のアプリを、Mobile Cloud 用に拡張する事も可能です。

モバイルアプリ上の SDK から Node.js にセキュアにアクセスするために、cloud code という名前の API 群が提供されています。

*Node.js 自体の詳細については、以下をご参照ください。

3. Mobile Cloud Platform の実装の流れ

図 8 は Mobile Cloud Platform を利用した場合のアプリ開発の流れです。作業には、主に Bluemix ダッシュボードを使用した Bluemix 上で行う操作と、各開発環境上で行うコーディング主体の作業があります (図で Bluemix のマークをつけている手順が Bluemix のダッシュボードで操作する手順になります)。

図 8. Mobile Cloud Platform の実装の流れ

次項以降は、上図の手順に沿って下記の順序で説明していきます。

3.1. Mobile Cloud アプリ作成

ボイラー・プレートを使って Bluemix 上にアプリケーションを作成します。以下は、その手順です。

  1. Bluemix へログインします。
  2. 「カタログ」-「ボイラープレート」から「Mobile Cloud」を選択します。
    図 9. Bluemix ダッシュボードのカタログ
  3. 「名前」、「ホスト」を指定して、「作成」をクリックします。「(指定したホスト名).mybluemix.net」が作成するアプリのデフォルトのアプリケーション・ルートになります。
    図 10. Mobile Cloud ボイラープレート
  4. 「モバイル用アプリの有効化」画面が表示されます。この画面から可能な操作は後から変更できるため、「続行」をクリックします。
  5. アプリの作成が完了し、アプリの「概要」画面が開きます。アプリの概要画面は以下のようになっています。
    • ① Bluemix アプリの概要 (下記) の画面を開くリンクです。
    • ② Node.js アプリの設定変更や、ファイル・ログの確認などが行えます。デフォルトではシンプルな Node.js アプリ (スターター・アプリケーション) が作成されて、デプロイされています。Node.js アプリの開発については後述します。
    • ③ 各サービスのダッシュボードが開けます。
    • ④ アプリケーションルート (経路) の値がリンクとして表示されています。リンクをクリックすると、デフォルトでデプロイされる Node.js アプリ (スターター・アプリ) が開きます。
    • ⑤ Node.js アプリのリソースの変更が行えます。
    • ⑥ ③ と同様です。
    • ⑦ モバイル・オプションの詳細が開きます。次のステップで解説します。
    • ⑧ IBM DevOps Services に Node.js アプリのリポジトリを作成する事ができます。IBM DevOps サービスを利用の詳細については、「Bluemix のボイラープレートと DevOps Services を利用して短時間で Node.js アプリケーションを作成する」や「Bluemix と IBM DevOps Services で始めるアプリケーション開発 (資料デモ)」をご覧ください。
    • ⑨ Node.js アプリの起動、停止、再起動が行えます。起動や停止のログがアクティビティー・ログに表示されます。
    図 11. Mobile Cloud アプリの概要
  6. 「モバイル・オプション」からアプリケーションルート (経路) と自動生成されたアプリ・キーとアプリ・シークレットが確認できます。これらの値は、後述する SDK への組み込みで使用します。
    図 12. Mobile Cloud アプリのモバイル・オプション
  7. 必要に応じて、「サービスの追加」から他に使用するサービスを追加します。
    図 13. Mobile Cloud アプリへのサービスの追加

3.2. クライアントの開発

SDK を組み込んで、モバイル上で稼動するクライアントを開発します。

3.2.1. Mobile Cloud SDK の組み込み

SDK をアプリに組み込んで構成します。モバイル・オプションの下記から、開発するプラットフォームのアイコンをクリックすると、各プラットフォームのスタートガイドを参照できます。SDK を組み込む手順と、サンプルアプリケーションの利用法について記載されています。

図 14. Mobile Cloud の各プラットフォームの SDK のガイドへのリンク

多くの場合、SDK は開発するプラットフォームに応じたパッケージ・マネージャーを利用します。プラットフォームごとのセットアップ方法の概要は下記のようになります。パッケージ・マネージャーのインストール方法や、SDK をインストールする方法については各プラットフォームのガイドに詳細が記載されています。

プラットフォームインストール方法概要
iOSオープンソースのパッケージ・マネージャーである CocoaPods を利用、インストールするコンポーネントは Podfile というファイルに記述する。Mobile Cloud SDK の指定方法はサンプル・アプリケーションの Podfile ファイルを参照。

※iOS8 の新機能 (インタラクティブプッシュ通知など) はサポートされていないためご注意ください。iOS 用の開発には IBM MobileFirst Platform for iOS の利用が推奨されています。

AndroidEclipse with ADT を利用する場合、Mobile Cloud SDK の jar ファイルをダウンロードし、lib フォルダに配置する。Android Studio の場合、同梱されている Gradle を使用する。Mobile Cloud SDK のビルドスクリプト (build.gradle) の記述方法はサンプルアプリケーションの build.gradle ファイル参照。
ハイブリッド (Apache Cordova)Cordova ツールを利用し、Cordova プラグインとして追加する。使用するコマンドはガイド参照。
ハイブリッド (Worklight)手動でプラグインをインストールします。詳細な手順は開発者ガイドのハイブリッドの「Set up Worklight」の項目参照。
JavaScript (モバイル Web)オープンソースの Web 用パッケージ・マネージャーである Bower を利用してインストールする。コマンドは JavaScript の開発者ガイドの「Set up SDK」参照。

3.2.2. クライアント実装の記述

クライアントのコードに SDK を使った処理を記述します。

  1. Mobile Cloud SDK の初期化コードを記述します。初期化コードで、アプリ・キーとアプリ・シークレット、アプリケーション・ルートを指定する必要があります。また、SDK 全体を初期化した後に、各サービスを利用するための初期化します。

    下記は JavaScript の場合の初期化コードになります。他のプラットフォームでも同様のコードになります。

    <script>
     var config = {
         applicationId:'<applicationId>',
         applicationRoute:'<applicationRoute>',
         applicationSecret:'<applicationSecret>'
     };
     IBMBluemix.initialize(config);
     IBMCloudCode.initializeService();//Cloudecode(Node.jsへのアクセス)を初期化
     IBMData.initializeService(); //Mobile Data用の初期化
     IBMPush.initializeService();//Pushサービス用の初期化
    
     </script>
  2. Mobile Cloud SDK で行う処理を記述していきます。下記は JavaScript で、SDK と Cloudecode を初期化し、Node.js アプリに対して get を行うサンプルコードになります。多くの場合に利用される promise を使った future パターンで処理を記述しています。
    IBMBluemix.initialize(config).then(function(){
       return Q.when("SDK initialized!");
    }).then(function(msg){
       return IBMCloudCode.initializeService();
    }).then(function(cc){
       return cc.get("/endpoint");
    }).catch(function(err){
       IBMBluemix.getLogger().error(err);
    });

    iOS/Android の場合、この future パターンを利用するために Bolts フレームワークを利用しています。詳細は、開発者ガイドの各プラットフォームの Promises/Chaining の項目を参照してください。

開発者ガイドには各プラットフォームでサービスを利用するための基本的なコードが紹介されています。また、各サービスの資料には、サンプルやチュートリアル、API リファレンスへのリンクが掲載されています。

下記の表に各プラットフォームの資料の一覧 (2015年1月 時点) を記載しています。

この中でも Mobile Data サービスのサンプル・アプリ・チュートリアルには、もっとも基本的な実装及び解説があります。Mobile Data サービスのサンプルから参照すると理解しやすいでしょう。

プラットフォーム開発者ガイドAPI リファレンスMobille Data サンプルアプリPush サンプルアプリMAS サンプルアプリMobile Data チュートリアルPush チュートリアル
iOSiOS 開発者ガイドiOS API リファレンスbluelist-mobiledata サンプル (Objective-C/Swift)

filesync-iOS サンプル (Objective-C)

quickstart-push サンプル (Objective-C)

bluelist-push サンプル (Objective-C)

bluelist-auth サンプル (Objective-C)IBM Mobile Data for Bluemix サービスを利用して iOS アプリを作成する-
AndroidAdnroid 開発者ガイドAndroid API リファレンスbluelist-mobiledata サンプル

filesync-android サンプル

quickstart-push サンプル

bluelist-push サンプル

bluelist-auth サンプルIBM Mobile Data for Bluemix クラウド・サービスを利用して Android アプリを作成するIBM Push for Bluemix クラウド・サービスを利用して Android アプリを拡張する
Apache CordovaHybrid 開発者ガイドJavaScript API リファレンスbluelist-mobiledata サンプル--Cordova と IBM Bluemix の Mobile Data サービスを利用してハイブリッド・モバイル・アプリを作成するBluemix 対応の Cordova プラグインを追加して、ハイブリッド・モバイル・アプリでプッシュ機能を利用する

5 分以内にモバイル・アプリケーションからプッシュ通知を送信する

JavaScript (モバイル Web)JavaScript 開発者ガイドJavaScript API リファレンスbluelist-mobiledata サンプル----
ハイブリッド (Worklight)Hybrid 開発者ガイドJavaScript API リファレンス-----

3.3. サーバー・サイドでの処理の組み込み (Node.js)

アプリケーションにおける共通した処理をサーバー側で稼動させたい場合や、Mobile Cloud 以外のサービスを利用 (Twilio など) する場合などは、サーバーでの処理を実装することが必要になります。Mobile Cloud では、こういったサーバーでの処理を JavaScript で記述し Node.js で実行する事ができます。Node.js での処理は Mobile Cloud SDK から、cloud code という API で呼び出します。(ちなみに、SDK を通じて Mobile Cloud のサービスだけを利用する場合は、サーバーでの処理の実装は必須ではありません)

3.3.1. Node.js を使うための準備

Node.js での開発には、npm (Node.js のパッケージ管理ツール) が必要です。Node.js の前提要件とインストーラーは、下記から確認できます。

また、Node.js アプリを Bluemix にデプロイするためには、Cloud Foundry (以下,CF) コマンドライン・ツールが必要になります。ツールは以下からダウンロードする事ができます。

詳細は下記のガイドのセクション 1 をご覧ください。

3.3.2. スターター・アプリをテンプレートとしたコード開発

Mobile Cloud ボイラープレートでは、Node.js アプリのテンプレートとしてスターター・アプリを用意しています。このテンプレートを拡張して実際の開発を行っていく事ができます。次から、そのダウンロード方法と、アプリの内容と更新・デプロイ手順、拡張方法のそれぞれについて記載しています。

  1. Bluemix アプリ左側のメニューから「コーディングの開始」をクリックします。
    図 15. [コーディングの開始]リンク
  2. Node.js アプリの開発・デプロイ方法のガイドが表示され、ここから、CF コマンド・ライン・インターフェース または IBM DevOps を使用する場合のそれぞれのガイドも参照できます。ここでは、CF コマンドライン・インターフェースを選びます。
    図 16. Node.js アプリの開発・デプロイ方法のガイド 1
  3. Mobile Cloud の Node.js のスターター・アプリを、このガイドのリンクからダウンロードする事ができます。ガイドの下記のリンクをクリックします。
    図 17. スターター・アプリのダウンロードリンク

    参考.ダウンロードするスターター・アプリは、Mobile Cloud アプリにデフォルトでデプロイされる Node.js アプリで、アプリケーション・ルートにアクセスすると下記のようなメッセージと、スターター・アプリを拡張する方法を記述したガイドへのリンクが表示されます。

    図 18. スターター・アプリの画面
  4. スターター・アプリを解凍し、解凍したディレクトリへ移動します。
  5. app.js を開きます。app.js がスターター・アプリの主要なコードが記載されているファイルになります。Mobile Cloud SDK に関連するコードについて説明します。

    下記のコードで、使用するモジュールの宣言を行っています。SDK を利用するためには、通常、ibmbluemix モジュールと、express モジュールが必要です (サンプルにはありませんが、通常、express-namespace モジュールも利用されます)。また、Mobile Cloud のサービスを利用する場合、アプリケーションルート (経路) の値と、アプリケーション ID の値が必要です。その他、Node.js から利用するモジュールを追加します。サンプルでは MobileData サービスのモジュール (ibmdata) を追加しています。

    var express 	= require('express'),
    	app     	= express(),
    	ibmbluemix 	= require('ibmbluemix'),
    	ibmdata     = require('ibmdata'),
    	config  	= {
    		// change to real application route assigned for your application
    		applicationRoute : "yourApplicationRoute",
    		// change to real application ID generated by Bluemix for your application
    		applicationId : "yourApplicationId"
    	};

    下記のコードで SDK の初期化を行っています。

    // init core sdk
    ibmbluemix.initialize(config);

    下記のコードで、各 Mobile Cloud のサービスの初期化を行っています。コメントアウトされていますが、Push と MAS サービスの初期化についても記載されています。

    // init service sdks 
    	app.use(function(req, res, next) {
    		req.data = ibmdata.initializeService(req);
    		//  req.ibmpush = ibmpush.initializeService(req);
    		req.logger = logger;
    		next();
    });
    //var mas = require('ibmsecurity')();
    //app.use(mas);

    下記のコードで、アプリケーション・ルートに get リクエストした場合の動作を定義しています。アプリケーション・ルートにリクエストがあった場合、アプリに含まれている index.html へリダイレクトするように定義しています。

    //redirect to cloudcode doc page when accessing the root context
    app.get('/', function(req, res){
    	res.sendfile('public/index.html');
    });

    下記のコードでは、ロギングをし、アプリのコンテキスト・ルートをログに出力しています。ちなみに、コンテキスト・ルートは、${appHost}/v1/apps/${applicationId}という形式になります (例えば、newmyapp123.mybluemix.net/newmyapp123/v1/apps/852948b9-a4c1-4c0a-9099-072fc25bxxxx/)。

    var logger = ibmbluemix.getLogger();
    logger.info('mbaas context root: '+ibmconfig.getContextRoot());
  6. package.json ファイルを開きます。package.json ファイルは、Node.js アプリのマニフェストファイルで、依存関係を記述します。Mobile Cloud SDK は下記のように dependencies で定義されています。
       "dependencies": {
          "express": "4.*",
          "body-parser": "*",
          "ibmsecurity": "*",
          "twilio": "*",
          "ibmbluemix":"*",
          "ibmdata":"*"
       },
  7. スターター・アプリを解凍したディレクトリで、下記のコマンドを実行します。アプリの稼働に必要なモジュールをインストールする事ができます。
    npm install --production
  8. app,js を更新します。下記のリンク先のガイドに、スターター・アプリにシンプルなエンド・ポイントを追加し、スターター・アプリをローカルで実行する手順が記載されています。
  9. manifest.yml ファイルを開いて確認します。これは Cloud Foundry のマニフェストファイルになります。下記のように定義されています。manifest.yml の詳細は Bluemix 資料のアプリケーション・マニフェストの項目をご参照ください。
    applications:
      - services:
      - newmyapp123-MAS
      - newmyapp123-Push
      - newmyapp123-MobileData disk_quota: 1024M host: newmyapp123 name: newmyapp123 command: node app.js path: . domain: mybluemix.net instances: 1 memory: 128M
  10. 「コーディングの開始」の残りのガイドの手順には、お使いの環境で、bluemix にアプリをデプロイ、確認するための一連のコマンドが表示されています。ここからコピーして試す事ができます。スターター・アプリを解凍したディレクトリから実行します。
    図 19. Node.js アプリの開発・デプロイ方法のガイド 2

3.3.3. Node.js アプリ開発の参考情報

  1. Mobile Cloud の Node.js アプリの開発では、以下のガイド、資料が参考になります。開発者ガイドに Mobile Cloud サービスを利用するための基本的なコードが記載されています。API の詳細は JavaScript API リファレンスに記載されています。また、下記のサンプルアプリ、チュートリアルで、Node.js を利用して開発を行っています。
プラットフォーム開発者ガイドAPI リファレンスPush サンプルアプリPush チュートリアルTwilio チュートリアル
Node.jsNode.js 開発者ガイドJavaScript API リファレンスbluelist-push サンプルIBM Push for Bluemix クラウド・サービスを利用して Android アプリを拡張するTwilio クラウド・サービスを利用して Android アプリと iOS アプリにテキスト・メッセージング機能を追加する

Node.js 自体の開発方法については、以下の資料が参考になります。

3.4. Bluemix の各サービスの設定

ここでは、良く利用される次のサービスの次のような設定操作について解説します。

  • Push サービスのセットアップ
  • MAS サービスのアプリ認証 (クライアント・リスト) の設定方法
  • MAS サービスのユーザー認証の設定方法

3.4.1. Push サービスのセットアップ

  1. Push 基盤への設定・登録

    Push サービスを利用するには、まず、Apple 或いは Google の Push メッセージ基盤への登録や設定を行う必要があります。この際に、アプリケーションがサービスを利用する際に必要な生成物も入手します。

    • Apple Push Notification Service (APNS) の場合

      APNS (Apple Push Notification Service) を利用するためには、iOS Dev Center を利用して、証明書を作成・アップロードします。以下の参考資料を参照ください。

      参考.

    • Google Cloud Messaging (GCM)の場合

      GCM を利用するためには、Google API プロジェクトの SenderID (Project Number) と API キーが必要になります。以下の参考資料を参照ください。

      参考.

  2. Push サービスへの登録

    GCM/APNS を利用するための登録を行った後、Push サービスのダッシュボードから、キーの登録や証明書のアップロードを行います。Push サービスのダッシュボードを開き、[Configuration]タブの「Edit」ボタンから登録する事ができます。Push サービスでは、開発用 (Sandbox) と本番用 (Production) をそれぞれ登録できるようになっているため、開発用と本番用で登録するキー・証明書は分ける事をおすすめします。

    図 20. Push サービスの APAN/GCM 登録画面

    詳細なダッシュボードからの登録手順については、下記を参照ください。

3.4.3. MAS のアプリ認証 (クライアントリスト) の設定

必要に応じて、MAS のクライアントリストの機能を有効にし、登録したアプリのみ MAS サービスへアクセスできるように設定します。MAS のダッシュボードの[Registered Clients]タブを開きます。[Enable Client List]を有効にし、[Add Client]からアクセス可能とするアプリを登録します。

図 21. MAS サービスのクライアントリストの設定画面

各プラットフォームに応じて、アプリの ID を登録します。使用する ID は下記の表をご覧ください。

図 22. MAS サービスのクライアントリストの ID 指定方法

3.4.4. MAS のユーザー認証のセットアップ

必要に応じて、MAS のダッシュボードからユーザー認証用の設定をセットアップします。

  1. Google アカウント認証のセットアップ

    下記の 3 ステップの手順で実装します。

    • [ステップ 1] MAS のダッシュボードのから [Enable Google Sign-In]を有効化

      MAS のダッシュボードの[Registered Clients]タブを開き、下記のように、[Enable Google Sign-In]を有効にしてから[Save]をクリックします。

      図 23. MAS のダッシュボードのユーザー認証設定画面
    • [ステップ 2] Google Google Developers Console からプロジェクトの作成

      Google Developers Console へログインし、プロジェクトを作成します。 [API & auth]の[Google + API]を有効にし、認証に使用するアプリを登録します。アプリを登録すると、クライアント ID が取得できます。詳細な手順は、Google+ platform のガイドをご覧ください。

    • [ステップ 3] クライアントアプリに Google+ platform の SDK の組み込みと、MAS 用のコードを追加

      開発しているクライアントアプリに、Google+ プラットフォームの SDK を組み込みます。その際、ステップ 2 の手順で取得するクライアント ID を使用します。実装方法については、下記のサンプルアプリや各プラットフォームの開発者ガイドのセキュリティーの項目をご参照ください。Google+ プラットフォーム SDK の組み込み方法については、前項のリンクを参照ください。Google+の認証を行った後、取得したトークンを MAS サービスへ渡すコードを記述する必要があります。

      • Bluelist-auth (iOS/Android のサンプルがあります。Readme.md にセットアップ方法が記載されています)
  2. Worklight 認証のセットアップ

    下記の 3 ステップで実装します。

    • [ステップ 1] MobileFirst platform foundation (Worklight) から公開鍵の出力

      MobileFirst platform foundation から公開鍵を出力します。サーバー上でコマンドを実行する事で出力する事ができます。詳細は下記をご覧ください。

    • [ステップ 2] MAS のダッシュボードの[Enable Worklight Sign-In]を有効化

      MAS のダッシュボードの[Registered Clients]タブを開き、 [Worklight Sign-In]を有効にし、1 の手順で取得した公開鍵を登録します。次に [Save]をクリックします。

    • [ステップ 3] クライアントアプリへの Worklight の認証機能の組み込みと、MAS 用のコード追加

      クライアントアプリに Worklight の認証の機能を組み込み、認証後、取得したトークンを MAS サービスへ渡すコードを記述する必要があります。実装方法については、下記のサンプルアプリや各プラットフォームの開発者ガイドのセキュリティーの項目をご参照ください。

      • Bluelist-auth (Android のサンプルがあります。Readme.md にセットアップ方法が記載されています)

3.5. REST API の利用

SDK を利用できないバックエンドシステム等から Mobile Cloud のサービスにアクセスする場合、直接 REST API での呼び出しも可能です。

Mobile Cloud の REST API は下記の 3 種類あります。

  • data ・・・ Mobile Data サービスに対して、CRUD 操作などが行える API
  • analytics ・・・ MAS,Mobile Data,Push のそれぞれの統計情報にアクセスできる API。項目によっては後述するダッシュボードの Analytics よりも詳細な情報が取得できます。
  • push ・・・ Push サービスに対して、プッシュ通知の送信やタグの操作などが行える API

REST API の詳細は下記のドキュメントから確認できます。

これらのドキュメントには、その場でサービスの動作を確認できる「Try it out!」機能も付いています。動作確認には、アプリ・キーおよびアプリ・シークレットの値の入力が必要です。

※1 アプリ・キーはリクエストする URL に使用されます。また、REST のリクエストヘッダーの「IBM-APPLICATION-SECRET」という項目に、アプリ・シークレットの値を入れてリクエストを送信する必要があります。

※2 ドキュメントの[Model]に引数または戻り値の説明が、[Model Schema]に引数または戻り値の json 形式での構造が記述されています。

参考. Bluemix サービスのモニター

各サービスは、ダッシュボードの [Analytics]タブから、使用状況が確認できます。例として Push サービスの分析タブの画面を下図に記載しています。

確認できる項目は、各サービスの資料 (MAS, Push, MobileData) の「分析」の項目をご参照ください。

図 24. Push サービスの Analytics

おわりに

当記事では、IBM Bluemix モバイルの概要と、その中核となる Mobile Cloud Platform の概要・実装方法について解説しました。

Bluemix モバイルでは、豊富なサンプル・チュートリアルが用意されているため、すぐに実際の動作を確認する事ができます。また、実現させたいアイデアに近いサンプルアプリがあれば、それを拡張する事で簡単にプロトタイプを作る事ができます。

また、現在ベータ版で提供している IBM MobileFirst Platform for iOS では、さらに柔軟な認証や最新の通知形式 (インタラクティブ通知) などに対応しています。iOS8 以降でアプリを開発する場合には、ぜひこちらのプラットフォームの利用も検討してください。

IBM Bluemix モバイルを活用して、モバイル・アプリケーションのアイデアをより早くカタチにして、実現していただければと思います。


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Mobile development
ArticleID=998757
ArticleTitle=IBM Bluemix モバイル入門
publish-date=03052015