Node.jsの概要
昨今、JavaScriptは最もポピュラーなWebアプリ開発言語であると言っていいだろう。
当初はNetScpae Navigator用であったが、現在ではすべてのブラウザにJavaScript実行エンジンが付属しており、汎用的な言語となっている。
JavaScript実行エンジンとしてGoogleが開発したV8があるが、Node.jsはこのV8をサーバーサイドで実行させ、その上でJavaScriptを動作させる。ポピュラーなJavaScriptを使ってサーバーサイドアプリケーションを(も)構築できる点が、人気の理由となっている。
Node.jsを利用すれば、フロントエンド(ブラウザ)アプリもバックエンド(サーバー)アプリも、両方ともJavaScriptで開発できる。IBM i のNode.js(V8 JavaScriptエンジン)はPASE上で動作する。パッケージを追加してRPG、COBOL、CL、IFSなどへのアクセス、IBM i OSの情報取得、HTTP/HTTPSの送受信も可能である。
IBM i へのNode.jsや後述するrpmのインストールは、ACS(IBM i Access Client Solutions)のオープンソースパッケージ管理を利用すると便利である。
Node.jsのAPIで、たとえばFile System API (fs)はPOSIX標準に準拠したモデル・手順でファイルシステム(IFS)にアクセスできる。
例
fs.readFile(path[, options], callback)
fs.mkdir(path[, options], callback)
Node.jsで最もメジャーなリポジトリは npm で、130万以上のペンソースが公開されている。
npmはパッケージ管理ツールの名称としても知られている。Node.jsのアプリコードはnpmなど公開リポジトリでも、オンプレミスのIBM iを含むプライベートなリポジトリにも格納できる。
npmで公開されているパッケージのほぼすべてが、JavaScriptで記述されている。JavaScriptパッケージは基本的にIBM i 上で動作するので、Node.jsのパッケージもほぼすべてIBM iで動作する(例外的にC/C++でコンパイルするパッケージがあり、これらはIBM iやPower Systems 上でそのままでは動作しない可能性がある)。
Db2 for iを利用するためのNode.jsパッケージ
それではIBM i上のNode.jsで使えるおすすめのOSSやパッケージをいくつか紹介しよう
odbc
コミュニティでメンテナンスされている。稼働OSを問わず、Node.jsからODBCによりDb2 for i へアクセスできる。IBM i のNode.jsパッケージの多くは、ODBCを想定してビルドされている。
一般にODBCを使用するには、ODBCドライバ・マネージャーとODBCドライバを導入する必要がある。Windowsだけは、ODBCドライバ・マネージャーが初期導入されている。IBM i、Linux、MacではunixODBCとunixODBC-dev(e1)のダウンロード/導入が必要である。
導入後にodbcinst.ini(データソース名 DSNsの定義を追加)、odbc.ini(データソースごとにデータベース接続情報を定義)を設定する。
IBM i へのODBC導入の具体的手順は、githubの次のページを参照してほしい。
GitHub: IBM / ibmi-oss-examples
https://github.com/IBM/ibmi-oss-examples/blob/master/odbc/odbc.md
大まかに言えば、IBM iのPASE環境にドライバ・マネージャーとしてunixODBCを導入し、ODBCドライバとしてACSのPASE App パッケージに含まれるODBCドライバ(IBMiODBC_driver.zipから)をインストールする。
2020年11月時点では、上記のURlからリンクする次のページに導入手順が記載されている
IBM i OSS Docs: ODBC
https://ibmi-oss-docs.readthedocs.io/en/latest/odbc/README.html
IBM Support: ODBC driver for the IBM i PASE environment
https://www.ibm.com/support/pages/node/885929
sequelize-ibmi
ODBCを使用して、Node.jsアプリとDb2 for iの間でORM(オブジェクト・リレーショナル・マッパー)を実装するパッケージである。Db2 for iのテーブルレコードをNode.jsの(JavaScriptの)オブジェクトに変換する。
itoolkit
Node.jsからIBM iリソースへ接続するためのオールインワンのツールキットである。
Node.jsクライアントからXMLを介してIBM i にアクセスするXMLSERVICE、あるいは前述したodbcやidb-connectorを経由してDb2 for iにアクセスする、CLコマンドやシェルスクリプト、PGMコール等を実行する、データキューを作成する・利用するなど、さまざまな機能がある。
著者
佐々木 幹雄氏
日本アイ・ビー・エム株式会社
パワーシステムテクニカルセールス
シニアITスペシャリスト
AS/400利用のお客様担当SEから出発し、さまざまなテクニカル職種を担当。現在はPower Systemsはじめインフラ提案・アーキテクチャ設計を主に担当している。
[i Magazine・IS magazine]
特集|Db2 for i 最新Tips~多彩な角度からDb2 for iの高度活用にアプローチする
PART 1 Db2 for i の歴史と拡張の方向性
PART 2 Db2 for i サービスとIBM i サービスの機能拡張
PART 3 IBM i Access Client Solutions(ACS)のDb2 for i 関連機能
PART 4 Db2 for iの日常運用を見直す
PART 5 Node.js on IBM iのDb2 for i 関連機能
PART 6 Db2 Mirror for iの概要と運用時の考慮点
Column SQLサンプルの活用法(IFSオブジェクトの管理)