ついにこの日がやってきました!

まだ試験版という位置付けですが、IBM Domino のランタイムである "IBM XPages" が IBM Bluemix 上で公開されました。簡単に言えばノーツ/ドミノの .nsf ファイルが IBM のパブリックな PaaS クラウド上に用意された Domino HTTP サーバー上で動かすことができるようになった、ということです。PaaS なので Domino サーバーを構築する必要はありません。"IBM XPages" ランタイムのインスタンスを選んで起動するだけです:
2015071101


インスタンス作成後の画面がこちらです。作成した XPages(Domino) インスタンス上で自分の .nsf アプリケーションを動かすための手順が紹介されています。一般的なウェブアプリは DevOps サービスを使ったウェブ IDE でコーディングすることもできますが、.nsf の場合はそうはいきません。この手順の中にかかれているように「cf コマンドラインインターフェースツール」をインストールし、「スターターコード」をダウンロードしておきましょう:
2015071102


スターターコードは (インスタンス作成時に指定したアプリ名).zip というファイル名でダウンロードできます。この例ではインスタンス作成時の名前を dotnsf-xpages にしていたので、dotnsf-xpages.zip というファイルでダウンロードすることになります:
2015071103


インスタンス作成後の概要画面です。このインスタンスにはデフォルトで (インスタンス作成時に指定したアプリ名).mybluemix.net というホスト名が付与され、もうアクセス可能な状態になっています。XPages ランタイムの場合はデフォルトで 512MB のメモリが割り当てられるみたいですね:
2015071104


まだアプリケーションの中身には手を付けていませんが、デフォルトアプリケーションのままでホスト名(この例では dotnsf-xpages.mybluemix.net)を指定してブラウザでアクセスすると、このようなウェルカムページが表示されるはずです。後で確認しますが、この中身は .nsf ファイルの XPages で、その .nsf ファイルが Bluemix 上の Domino HTTP タスクを使って動いています:
2015071105


実際に動いているコードを確認してみましょう。先程ダウンロードしたスターターコード(dotnsf-xpages.zip)を展開すると、中に application.nsf と manifest.yml という2ファイルが含まれていることが分かります。application.nsf が Bluemix の Domino 上で動いている nsf ファイルで、manifest.yml はその application.nsf を dotnsf-xpages.mybluemix.net 上で動かすための設定が記述されたファイルです。この2ファイルをどこか専用のフォルダ(下図では c:\tmp\docroot\)を作って保存しておきます:
2015071106


application.nsf をノーツクライアントのデスクトップから開くとこんな感じです:
2015071107


この .nsf ファイルのアクセス権を確認します。現状、Bluemix 上で動かす .nsf ファイルは匿名アクセスができる必要がありそうです。自分の手元にある nsf ファイルを Bluemix にアップロードして試す場合は、匿名アクセスができるように -Default- や anonymous でのアクセス権があること、データベースの暗号化などが無効になっていることを確認してください:
2015071115


また application.nsf をドミノデザイナーで開くとこんな感じです。XPage 要素の中に先程ブラウザで表示したページが含まれています。先ほどの画面はやはりこの .nsf ファイルだったことが分かります:
2015071108


次に manifest.yml ファイルをテキストエディタで開いてみると、このような内容になっていることが確認できます(青字はコメント):
applications:
- disk_quota: 1024M
  buildpack: xpages_buildpack
  host: dotnsf-xpages ホスト名
  name: dotnsf-xpages Bluemix上のアプリ名
  path: .
  domain: mybluemix.net デプロイ先のドメイン名
  env:
    APP_HOME_URL: /application.nsf '/'でアクセスした時の実際のアクセス先
    APP_PRELOAD_DB: application.nsf 転送するNSFファイル
  instances: 1 インスタンス数
  memory: 512M メモリサイズ

この中身を書き換えると、異なる設定にしたり、異なるNSFファイルをアップロードすることもできるようになります。試しに匿名アクセス可能な updatesite.nsf というNSFファイルを用意しました(ノーツ8から対応した、Eclipse プラグインのアップデートサイト用のファイルです)。このNSFファイルは HTTP アクセスを想定して作られていますが、いわゆる XPages 対応はしていないものです:
2015071116


このファイルを Bluemix 上の Domino で動かしてみます。まずは manifest.yml を書き換えて、新しい NSF ファイルをアップロードし、またドキュメントルートにアクセスがあった場合にはこの NSF ファイルにアクセスするよう変更します:
applications:
- disk_quota: 1024M
  buildpack: xpages_buildpack
  host: dotnsf-xpages
  name: dotnsf-xpages
  path: .
  domain: mybluemix.net
  env:
    APP_HOME_URL: /updatesite.nsf
    APP_PRELOAD_DB: updatesite.nsf 
  instances: 1
  memory: 512M

次にこのアップロードする updatesite.nsf を先程のスターターコードを展開したディレクトリにコピーします。application.nsf はもう使わないので削除しても構いませんが、残しておいても構いません:
2015071117


ではこの updatesite.nsf を Bluemix 上の Domino アプリにデプロイしてみます。最初にインストールした cf コマンドラインツールを使います。Windows であればコマンドプロンプトを開いて、スターターコードを展開したフォルダに移動して、"cf login -a https://api.ng.bluemix.net" コマンドでログインします。メールアドレスとパスワードを聞かれるので、Bluemix アカウントに使っているメールアドレスとパスワードを入力します:

※データセンターとして英国を使っている場合、cf login コマンドのパラメータは https://api.ng.bluemix.net ではなく https://api.eu-gb.bluemix.net を指定します
2015071109

 
ログイン後に "cf push (アプリ名)" コマンドでデプロイします。manifest.yml に書かれた情報を元にデプロイ先やデプロイ対象、デプロイ先サーバーの設定などを識別して実行されます:
2015071110
 

無事に(エラーなく)デプロイが終了することを確認します。成功すると最後に稼働中となった Domino サーバーのステータスが表示されます:
2015071111
 

これで自分が用意した updatesite.nsf が Bluemix 上に転送されました。試しにブラウザでホスト名を指定してアクセスすると、先ほどのスターターコードのデフォルトアプリ(application.nsf)の画面ではなく、自分が用意した .nsf ファイルのデフォルトページ/デフォルトビューが表示されるはずです:
2015071112


・・・思い返してほしいのですが、ここまで Domino サーバーのインストールやインストール指示は行っていませんよね。Bluemix 側で最初から用意されたものを使っただけです。つまり Domino サーバーの用意までは IBM Bluemix が全て行ってくれて、利用者(管理者)は .nsf ファイルだけ用意して転送するだけでパブリックに公開された状態の Domino サーバー上で稼働させることができた、ということになるのです。これってすごくない!?

「うわ~、もしかしてノーツクライアントからもアクセスできちゃう!?」と期待したのですが、残念ながら現状は 1352 ポートは閉じられているようで、ノーツクライアントからこの Domino サーバーにアクセスすることはできないようです。つまり HTTP アクセスか XPages のページにアクセスできる、ということになります:
2015071113


気になるお値段ですが、どうやら他の Bluemix ランタイムと全く同じ模様です。つまり、こんな感じ:
 ・1GB時間あたり 7.35 円(メモリ1GBのインスタンス1つを1時間使うと7.35円)
 ・1ヶ月あたり 375GB時間までは無料枠、IBM XPages にも適用される
 ・無料枠を超えた分のGB時間が課金対象となる
2015071114
 
これも XPages 以外のランタイムと共通ですが一応注意点を。無料枠はアカウント1つに対する無料枠です。例えばこの XPages ランタイムのインスタンス1つだけを 512MB メモリで運用するのであれば無料枠内です。ただしこれ以外に Java ランタイムのインスタンス1つを 512MB メモリで運用する場合、どちらか1つは無料枠で運用できますが、もう1つはほぼ丸々課金対象となるので注意してください。

この XPages on Bluemix はまだ試験運転中で、今後仕様が変更になる可能性もあります。ただ少なくとも(メモリ512MBの条件があるとはいえ)無料でも試せて、自分が作った .nsf データベースが使えるパブリックな Domino が提供された、と考えると非常に大きなインパクトがあるように感じています。


ちなみに、上記で作成した dotnsf-xpages.mybluemix.net で動いている updatesite.nsf には、ボクが個人的に開発したノーツ用のプラグインアプリケーションがいくつか含まれていて、その中には時間が余った時たまにデモするテトリスなどのエンターテイメントアプリも含まれています:
2015071118

興味ある人はこちらを参照してインストールしてみてくださいませ:
ノーツに Eclipse プラグインを導入する


うーん、これでノーツアプリが Bluemix 上の Domino (のHTTPタスク) 上で動くようになったわけで、ということはノーツアプリで Bluemix Challenge 2015 に参加できるようになったとも言えるよな。。。