目次


連載 Domino V10 アプリ開発 #鬼わか 解説

第 3 回「Node.js を導入してサンプルアプリを動かしてみよう #鬼わか 解説」

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: 連載 Domino V10 アプリ開発 #鬼わか 解説

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:連載 Domino V10 アプリ開発 #鬼わか 解説

このシリーズの続きに乞うご期待。

1

はじめに

連載 「Domino V10 アプリ開発 #鬼わか 解説」のページにアクセスいただき、ありがとうございます。

前回は、CentOS7 上の IBM Domino V10.0.1 に、IBM Domino AppDev Pack (以降、AppDev Pack と表記) の アドオンモジュールを導入し、Proton タスクを起動しました。
今回は、別の Windows サーバー上に Node.js を導入し、Node.js アプリケーションから、Proton タスク経由で IBM Domino 上のアプリケーションにデータを登録するところまでを行います。

AppDev Pack には、前回導入した Proton モジュールのほか、Node.js アプリケーション側で利用する domino-db モジュールが含まれています。Node.js アプリケーションから、IBM Domino データベースにアクセスするためのパッケージです。
(その他にも 認証とアクセス管理を司る IAM モジュール等も含まれていますが、それはまた別の機会に説明します。)
第 3 回目となる本稿では、以下の図の環境を構築して、Node.js アプリケーションから IBM Domino のアプリケーションにデータを登録する方法を解説します。

 

2

IBM Domino へのサンプルアプリの配置

準備として、CentOS 上の IBM Domino に、サンプルアプリの nsf ファイルを置きます。

今回扱うサンプルファイルは node-demo.nsf です。これは AppDev Pack で提供されるサンプルアプリケーションで、AppDev Pack を解凍した後のディレクトリに置いてあります。

root ユーザーで、解凍後のディレクトリからデータディレクトリにファイルをコピーします。
(下記のコマンドでは、/root からコピーしています。)

#cp /root/node-demo.nsf /local/notesdata

コピーすると、下記の画像のようにファイルを確認できます。
ですが、このままだと Domino 用で用意した Linux ユーザーで操作できないので、権限を変更します。(連載第 1 回で設定しましたが、Linux ユーザー名:notes、Linux グループ名:notes です)

 

/local/notesdata に移動し、chown コマンドで権限を変更します。

#cd /local/notesdata
#chown notes:notes /local/notesdata/node-demo.nsf

 

これで、IBM Domino 側の準備は完了です。

3

Node.js を導入する

次にあらかじめ用意した Windows Server に Node.js を導入します。
Node.js はこちらからダウンロード可能です。https://nodejs.org/en/download/

ダウンロードが完了したら任意のフォルダにモジュールを配置します。
モジュールクリック をクリックして インストーラーを起動します。
Welcome 画面が表示されるので、Next をクリックします。

 

 

使用許諾の画面が表示されます。
I accept the terms in the License Agreement」にチェックを入れて Next をクリックします。

 

PATH を選択して Next をクリックします。ここではデフォルトの PATH に設定しています。

 

Custom Setup を選択して Next をクリックします。
機能の選択はデフォルトのままにして Next をクリックします。

 

注意) Windows Server のバージョンが古い場合はデフォルトのままだとエラーになる場合があります。
その際は 「Performance countersr」を外してインストールしてください。

 

Install をクリックしてインストールを開始します。

 

Finish をクリックしてインストール完了です。

 

コマンドプロンプトを開き、導入バージョンを確認します。
コマンドプロンプトで node -v と入力すると node.js のバージョンが表示されます。

 

Node.js には多くのパッケージが公開されており、 npm を使ってインストールなどの管理をしていきます。npm のバージョンも確認しておきましょう。
コマンドプロンプトで npm -v と入力すると npm のバージョンが表示されます。

 

4

サンプルアプリを動かす

domino-db パッケージを利用した Node.js のアプリケーションを動作させる準備が整いましたので、実際にサンプルアプリケーションを動作させてみましょう。動かしてみるのはドキュメントに付属している node-demo.nsf に 2 文書を作成する以下のサンプルになります。
createOptions にて新規に作成する文書の Form 名や、各フィールドの値を定義し、ulkCreateDocuments メソッドで対象となるアプリケーションに文書を作成する。文書が正しく作成されたら作成された文書の ID (Document UNID) をコンソール上に出力するようなサンプルコードになります。

const { useServer } = require('@domino/domino-db');

const serverConfig = {
  hostName: 'your.server.com', // お使いのサーバーのホスト名へと変更してください
  connection: {
    port: '3002', // Proton タスクが利用しているポート番号へと変更してください(本稿では8080に変更)
  },
};

const databaseConfig = {
  filePath: 'node-demo.nsf',
};

const createOptions = {
  documents: [
    {
      Form: 'Contact',
      FirstName: 'ふみひろ',
      LastName: 'おかざき',
      City: '箱崎',
      State: '東京',
    },
    {
      Form: 'Contact',
      FirstName: 'まりこ',
      LastName: 'しんがい',
      City: '伊万里',
      State: '佐賀',
    },
  ],
};
useServer(serverConfig).then(async server => {
  const database = await server.useDatabase(databaseConfig);
  const response = await database.bulkCreateDocuments(createOptions);

  // Display the new document UNIDs
  const unids = response.documents.map(doc => doc['@unid']);
  console.log(`Documents created: ${unids}`);
});

まず、こちらのソースコードを app.js という名前のテキストファイルにコピーし、作業用のディレクトリ (C:\My-App など) にコピーしてください。その際に、サーバー名やポート番号は環境に合わせて書き換えてください。また、日本語のデータを登録する場合には、UTF-8 形式でファイルを保存して下さい。
この app.js を Node.js のアプリケーションとして実行するにはアプリケーションとしてパッケージングする必要があります。コマンドプロンプトを起動し、app.js を作成した作業用ディレクトリ (C:¥My-App) に移動します。コマンドプロンプトで npm init とコマンドを実行します。すると、アプリケーションをパッケージングするのに必要な情報の入力を求められるので、指示に従って必要情報の入力を行います。

 

処理が完了すると、作業用ディレクトリに package.json というパッケージ情報を定義したファイルが生成されパッケージング作業が完了します。

次に、アプリケーションが IBM Domino と連携するための APIs を利用するために domino-db パッケージを導入します。domino-db パッケージは AppDev Pack 内に domino-domino-db-1.1.0.tgz というファイル名で提供されているので、このファイルを作業している端末から参照可能な場所 (C:\temp など) コピーします。
domino-db パッケージのインストールはコマンドプロンプトから npm install /temp/domino-domino-db-1.1.0.tgz --save を実行する事で完了します。

 

domino-db パッケージのインストールが完了すると、作業用ディレクトリ下に node_modules というディレクトリが生成され、その中に必要なモジュールがコピーされていることを確認できます。

これで、アプリケーションを実行する準備が整いました。コマンドプロンプトから node app.js とコマンドを実行すると app.js に記述したロジックが実行されます。正しく動作するとサーバー上の node-demo.nsf に新規に 2 文書が作成され、コマンドプロンプトにて作成された 2 文書の文書 ID (Document UNID) が出力されていることを確認できます。

 

 

5

おわりに

外部の JavaScript から Domino サーバー上の Notes データベースの操作ができるようになりました。適用範囲が非常に広く、大変便利な機能であることがお分かりいただけたかと思います。
次回ご紹介する Domino V10 新機能は、Domino Query Language (DQL) です。どのようなことができるかは、次回の連載記事をお見逃しなく!


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


コメント

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=1064657
ArticleTitle=連載 Domino V10 アプリ開発 #鬼わか 解説: 第 3 回「Node.js を導入してサンプルアプリを動かしてみよう #鬼わか 解説」
publish-date=02122019