特集

IBM i 7.3

IBM i 7.3 の新機能とそのインパクト

Part 2

ティアンドトラストの小川誠氏と資料を読み解く
IBM i 7.3 の発表と同時に多数の製品資料が公開された。現段階ではテキストベースの資料が中心で、画面や仕組み図、動画資料などは少ないが、限られた資料を読み解くだけでも 7.3 のインパクトがうかがえる。IBM i やオープンソースを駆使した開発を幅広く手がけ、長年、IBM i のトレーニング講師も務めるティアンドトラストの小川誠氏に IBM i 7.3 の解説をお願いした。てきたので、その時にざっと発表内容に目をとおしてみましGitとEclipse Orion のサポートが衝撃的た。何よりも Git と Eclipse Orion のサポートが衝撃的でしたね。後になって、いつもより詳しく調べてみましたが、今回i Magazine（以下、i Mag） IBM i 7.3 の第一印象はどのよは DB2 とオープンソース関連の追加・拡張が目覚ましく、オーうなものでしたか。

プン系技術者をどう IBM i の世界に誘い入れるか、IBM の“本気度”を強く感じました。そのあたりが一気に進んだ印象で

小川 ツイッターで「IBM i 7.3 リリース」のツイートが流れ

図表 1す。

テンポラル・テーブルの仕組み

従来の DB2 for i
トリガー・プログラム
ユーザー作成カレント DB

参照プログラム

履歴 DB

SQL の UNION 句を使い参照
・INSERT・UPDATE・DELETE・INSERT・UPDATE・DELETE

テンポラル・テーブル

システムが自動管理

120

カレント DB

履歴 DB

・INSERT・UPDATE・DELETE・DELETE

2016 Summer

120-127_16imagSUMMER_toku2-2_FIX.indd 120

2016/05/13 23:43

Part 2i Mag

オープン系への対応は、これまでのバージョンにもありましたが、それとは違う印象ですか。

i Mag

IBM i 7.3 の新機能とそのインパクト

このテンポラル・テーブ

ル（Temporal Table） は、IBMの資料を見ると「テンポラル・サ

小川 オープン系への対応はこれまで、レガシーのいいものポート」や「システム期間テンポを残しつつアドオンする形でなされてきたと思います。そのラル表」「システム時間テンポラため、オープン系技術者が IBM i で開発や運用をするには、ル表」という訳語も当てられていIBM i の基本事項を知らないと話にならなかった。そこを今ますね。

小川 誠氏
ティアンドトラスト株式会社
取締役

回の新バージョンでは振り切って、オープン系の技術だけでも IBM i を扱える道が拓けてきた。その方向に、舵が一気に小川切られた感じです。

SQL2011 で 搭 載され た 機 能 で す

テンポラル・テーブルはが、「システム期間テンポラル表」ではわかりにくいですね。
DB2（UDB）では V10 で、Oracle（V12）やマイクロソフトの SQL Server（2016）でも対応済みです。

テンポラル・テーブル

i Mag 「ユーザー待望の」というようなコピーが目に付きます。どういう機能ですか。

履歴テーブルを自動で保守
日時・期間を指定して過去のデータを参照できる

小川 DB2 のテーブルには通常、現時点の 1 次情報しか入っていませんが、たとえば 5 年前のある時点のデータを知りたい時、そのレコードを記録しておいてくれるのがテンポラル・テーブルの機能です（図表 1）。

図表 2

テンポラル・テーブルと履歴テーブル
テンポラル・テーブル
監査例
ユーザー

履歴テーブルシステムが保守

コード

商品

単価

I/U/D

開始列

終了列

A001

ピアノ

￥800,000

0001-01-01 9999-12-31

A002

ギター

￥250,000

0001-01-01 9999-12-31

A003

トランペット￥150,000

0001-01-01 9999-12-31

A004

ベース

￥150,000

0001-01-01 9999-12-31

図表 3

USER1がレコードを挿入

監査例
コード

商品

単価

テンポラル・テーブル
監査例
ユーザー

コード

商品

単価

A001

ピアノ

￥800,000

0001-01-01 9999-12-31

A002

ギター

￥250,000

0001-01-01 9999-12-31

A003

トランペット￥150,0000001-01-01 9999-12-31

A004

ベース

￥150,000

0001-01-01 9999-12-31

A005

ドラム

￥750,000

USER1

I

I/U/D

開始列

終了列

履歴テーブルシステムが保守

I/U/D

ユーザー

システムが保守

開始列

終了列

監査例
コード

商品単価

ユーザー

システムが保守
I/U/D

開始列

終了列

2016-03-25 9999-12-31

http://www.imagazine.co.jp/ 121

120-127_16imagSUMMER_toku2-2_FIX.indd 121

2016/05/13 23:43

特集

IBM i 7.3

図表 2 を見てください。左側のテーブル（テンポラル・テー

コードなので、開始列は「0001-01-01」、終了列は「9999-12-31」

ブル）には、コード、商品、単価が入っています。このテーになっています。そして右側の「履歴テーブル」は、テンポブルを、「テンポラル・テーブル」として使うために「開始列」

ラル・テーブルに対して挿入・更新・削除が何もなされていと「終了列」を SQL で追加します（実際には、これ以外に必ないので、ブランクの状態になっています。

須のフィールドがありますが、わかりやすくするために省略

この図表 2 のテーブルに USER1 がレコードを挿入すると、しています）。開始列の最小値は「0001-01-01」、終了列の最左側のテンポラル・テーブルにレコードが挿入され、開始列大値は「9999-12-31」で、本来は実際のタイムスタンプから時・はレコードを挿入した時点の「2016-03-25」となり、監査列（後分・秒・ナノ秒が取得されます。図表 2 は現在生きているレ述）のユーザーは「USER1」、挿入（I）・更新（U）・削除（D）

図表 4

USER2 がレコードを更新
テンポラル・テーブル
監査例

システムが保守

コード

商品

単価

ユーザー

I/U/D

A001

ピアノ

￥820,000

USER2UA002

ギター￥250,000

A003

トランペット￥160,000

A004

ベース

￥150,000

A005

ドラム￥750,000

図表 5

USER3 がレコードを削除

USER2

履歴テーブル

U開始列

終了列

監査例
コード商品

単価

2016-03-28 9999-12-31

A001

ピアノ

￥800,000

0001-01-01 2016-03-28

0001-01-01 9999-12-31

A003

トランペット￥150,000

0001-01-01 2016-03-28

USER1I

ユーザー

履歴テーブルシステムが保守

商品

単価

A001

ピアノ

￥820,000

A002

ギター

￥250,000

A003

トランペット￥160,000

A004

ベース

￥150,000

A005

ドラム

￥750,000

図表 6

2016-03-27 時点のレコードを照会（★対象レコード）

USER2

I/U/D

U

I

USER1

開始列

終了列

監査例

監査例

ピアノ

￥820,000★ A002

ギター￥250,000

トランペット￥160,000★ A004ベース￥150,000★ A005

ドラム￥750,000

A003

122

ユーザー

USER2

USER1

ユーザー

商品単価

2016-03-28 9999-12-31

A001

ピアノ

￥800,000

0001-01-01 2016-03-280001-01-01 9999-12-31

A003

トランペット￥150,000

0001-01-01 2016-03-28

2016-03-28 9999-12-31

A003

トランペット￥160,000

USER2

U

2016-03-28 2016-04-10

0001-01-01 9999-12-31

A003

トランペット￥160,000

USER3

D

2016-03-28 2016-04-10 ※2016-03-25 9999-12-31※＝ON DELETE AND ROW 指定時のみ追加（監査目的）

U

I

I/U/D

開始列

終了列

履歴テーブルシステムが保守

I/U/D

システムが保守

コード

テンポラル・テーブル

A001

終了列

2016-03-25 9999-12-31

コード

単価

開始列

0001-01-01 9999-12-31

監査例

商品

I/U/D

2016-03-28 9999-12-31

テンポラル・テーブル

コード

ユーザー

システムが保守開始列

終了列

監査例
ユーザー

システムが保守コード

商品単価I/U/D

開始列

終了列

2016-03-28 9999-12-31★ A001

ピアノ￥800,000

0001-01-01 2016-03-280001-01-01 9999-12-31★ A003

トランペット￥150,000

0001-01-01 2016-03-28

2016-03-28 9999-12-31

A003

トランペット￥160,000

USER2

U

2016-03-28 2016-04-100001-01-01 9999-12-31

A003

トランペット￥160,000

USER3

D

2016-03-28 2016-04-10 ※2016-03-25 9999-12-31※＝ON DELETE AND ROW 指定時のみ追加（監査目的）2016 Summer

120-127_16imagSUMMER_toku2-2_FIX.indd 122

2016/05/13 23:43

Part 2

IBM i 7.3 の新機能とそのインパクトを示すカラムには「I」が記載されます。終了列は、終了しす。当社の技術者に IBM i 7.3 の資料を読ませたら、案の定、ていないので「9999-12-31」のままです（図表 3）。

このテンポラル・テーブルに注目し、「これができるようにな

次に、USER2 が「ピアノ」と「トランペット」の単価を変更すると、テンポラル・テーブルの単価欄の値が変更され、ると、お客様からの問い合わせ対応が楽になる」とか「問い合わせ対応が不要になる」という話が出ていました。

開始列は変更した日時、監査列には「USER2」と「U」が記載されます。そして履歴テーブルには、変更前のレコードがi Mag 利用中の DB2 for i に適用するには、どうするのです

取り込まれ、終了列のところが、変更された日の「2016-03-28」

か。に変わります（図表 4）。
次に、USER3 が「トランペット」のレコードを削除すると、小川 現行の DB2 へのフィールドの追加が必要で、それと同テンポラル・テーブルからそのレコードが削除され、削除さじレイアウトのファイルをもう 1 つ作成して、SQL コマンドれたレコードは履歴テーブルに引き継がれて終了列が削除日を使って 2 つを連携させます。に変わります。指定がある場合は、監査列に「USER3」と「D」が記載されたレコードも追加されます（図表 5）。
また、ある時 点 のレコードを 照 会 す る 場 合 は、SQL のi Mag

利用中の DB2 とは別に履歴テーブルをもつファイルができるとなると、IBM i 上のデータ量が膨らみますね。

SELECT 文を使ってその時点を指定すると、開始列と終了列の間で該当するレコードを選択します。図表 6 は、2016-03-

小川

27を検索条件に指定して照会した時の結果です。この要領で、なく、どのファイルをテンポラル・テーブルで管理するかのある期間のレコードを調べることが可能になります。

そうです。だから、すべての DB を対象にするのでは選別が必要になります。マスター系のファイルの履歴管理には、特に有効な機能だと思います。

i Mag

こうした処理をテンポラル・テーブルを使わずに行うのは大変ですか。
小川 DB2 と同じレイアウトの DB をもう 1 つ別に作成し、OLAP サポート

DB2 でデータが挿入・更新・削除されたら、それをもう 1 つの DB に反映するトリガー・プログラムを書く必要があります。参照でも、両方の DB のレコードを見るために SQL のUNION の機能を使わなければなりません。それはちょっと面倒です。その面倒を避けるために、都度、クエリーを使っSQL によるデータ分析を提供
IBM i 上のデータ活用を拡大させる端緒て問い合わせるケースが多いのではないかと思います。これに対してテンポラル・テーブルでは、履歴テーブルをシステ
ムが自動で保守し、参照もシステムが両方のテーブルを合わ

i Mag OLAP のサポートもずいぶん強調されていますね。

せてデータを見せてくれます。テンポラル・テーブルでは、初期設定（履歴テーブルの作成や 2 つのファイルの関連づけ）

小川はユーザーですが、それ以降はシステムが自動でやってくれ

IBM i 6.1 から利用できていますが、今回は一挙に多数のます（図表 6）。

OLAP 用関数がサポートされました。この中には、3 つのレ複数のレコードに順位を付ける RANK 関数などはコードを足して、その合計値に対する各項目の百分率（％）
i Mag 業務アプリケーションでよく使われる処理ですね。

を出す関数などもサポートされています。この計算式を RPGで書こうとしたら、けっこう大変です。

小川

過去のある時点のデータを知るための処理ですから、よく使います。過去のある時点のデータを知るということでi Magはバックアップなどの方法もありますが、バックアップだとす。注目した関数はありますか。

資料を見ると、10 種類以上の関数が追加されていま

1 日 1 回程度がふつうですから、1 日に複数回、変更された過程は見ることができません。テンポラル・テーブルだと、挿入・小川

変更・削除のたびに記録されますから、正確な把握が可能で相関関係を導き出す回帰分析用の関数は使い道が多そうでどれも面白そうなものばかりですが、2 つの変数から

http://www.imagazine.co.jp/ 123

120-127_16imagSUMMER_toku2-2_FIX.indd 123

2016/05/13 23:43

特集

IBM i 7.3

す。広告費と売上高の相関分析から、ある広告投資額に対す

小川 データベースの変更に対する履歴情報は、今まではプる売上高を想定するような使い方ですが、IBM i でこれをやログラマーの責任において設定していましたが、ヒューマンるには、DB2 のデータを別ファイルに移して、そのデータにエラーで記録されないことも残念ながらありました。システ

対して OLAP ツールを当てるしかないので、大きな効率化とムが自動的に保守する監査列を使用すればその心配もなくな言えます。
Web Queryにも同様の回帰分析機能がありますが、りますので、積極的に使用すべきですね。

今回は SQL だけでできるのがポイントです。
少し別の観点になりますが、私は今回の OLAP 機能の追加を見て、あらためて統計学を勉強しようと思いました。IBM i上には過去からのデータが大量に蓄積されています。しかし、セキュリティ・オーソリティ・
コレクション大半のユーザーは、その過去のデータをもっと有効活用できるはずです。今回追加されたテンポラル・テーブルの機能とOLAP サポートは、IBM i の世界でデータの活用・分析を大きく広げる、足がかりのような拡張ではないかと思えます。
今回の OLAP 機能を理解して統計学を習得すれば、ユーザーユーザーのアクションを記録し適切な権限設定を支援するセキュリティ機能にさらに有効な提案ができるのではないか、とか、20 年分のデータがあるのなら、そこから思わぬ情報を引き出せるのではないか、などと考えています。

i Mag

セキュリティ・オーソリティ・コレクションはどういうものですか。
小川

監査列の生成レコードの変更情報を自動的に記録
監査用として利用できる

ユーザーがあるプログラムをコールした時に、どの権限でアクセスしたのか、何のファイルに対してどのようなアクションを起こしたのかを記録するのがセキュリティ・オーソリ
ティ・コレクションです。権限設定がユーザー（グループ）ごとにふつうになされている現状において、どうしてこんな機能が必要になるのかというと、たとえば、何の権限ももたないユー
ザーがシステムを利用する時、「*PUBLIC」でアクセスすると、システムによっては「*CHANGE」権限が割り振られてしまうことがあります。別のユーザーは「*USE」権限でアクセスし、i Mag 監査列の生成とはどのようなものですか。

権限どおりの利用しかできないのに対して、*PUBLIC 権限だとそのようなことが起きる場合があるからです。

小川 レコードに対する変更についての情報（変更のタイプ、しかし、これらを精査するツールがなかったこともあり、ユーザー情報など）を追跡するためにシステムによって保守

これまでは見過ごされるのが一般的でしたが、「データ・セされるフィールドのことです。レコードの変更に関わるユーキュリティ違反が数多く報告されているので、多くのお客様ザー名やクライアントの IP アドレス、ジョブ名などの情報を、はセキュリティ・ポリシーを検討しています」と IBM i 7.3

DB がレコード単位で自動的に生成します。先ほどの図表 5の製品解説書にあるように、過剰な権限に起因するセキュリを例にすると、「トランペット」のレコードを USER3 が 2016-

ティ事案が多発しているのでしょう。

04-10 に削除すると、右側の履歴テーブルに USER3 が 2016-

セキュリティ・オーソリティ・コレクションは、ユーザー

04-10 に「D」したという証跡が記録されます。この例はテンのアクションに対してシステムがどう判断してアクセスを許ポラル・テーブルの機能そのものですが、この「D」を設定可しているか、その記録を取ってくれるものです。そしてそする機能を提供するのが監査列の生成です。レコードの変更のログを基に権限の過剰や対応策などを判断し、セキュリをシステムが自動的に記録するので、監査用に使えるというティ全体を向上させるのが目的です。

わけです。

ログデータは、ユーザーごとに収集でき、システム提供のリポジトリに記録されます。ログの照会は SQL や Navigator

i Mag 開発者を楽にする機能でもありますね。

124for i で表示可能と解説書に明記されています。

2016 Summer

120-127_16imagSUMMER_toku2-2_FIX.indd 124

2016/05/13 23:43

Part 2DB2 Web Query for i 2.2
MySQL や PostgreSQL などをサポート
画面デザインの刷新に期待

IBM i 7.3 の新機能とそのインパクト

小川 Navigator for i は、Web ブラウザを使用した管理ツールです。7.3 では、テンポラル・テーブルやセキュリティ・オーソリティ・コレクションに対応した拡張が含まれます。システム・モニターには HTTP サーバーの要求受信率、応答送信率、要求処理時間などの情報のモニター機能も追加されました。また、時刻の同期を行う NTP の構成が可能になるなど、多くの拡張がなされています。

i Mag DB2 Web Query for i は 2.1 から 2.2 へとバージョンアップされ、MySQL や PostgreSQL などの外部 DB を新たにサポートしました。Type4 の JDBC ドライバーを使えば、オープンソース対応Oracle などへもアクセスできるとあります。
小川 これは、DB2 Web Query Standard Edition でのサポートで、廉価版の Express Edition ではサポートされないようです。MySQL や PostgreSQL を使っているオープン系の技

Eclipse Orion と Git により
IBM i 上でオープン系の開発スタイルを実現術者は多いので、そういう人たちが IBM i の世界に入ってきた時に、IBM i と並んで MySQL や PostgreSQL も利用できるメリットは大きいだろうと思います。

i Mag

オープンソース関連ではさまざまな追加・拡張がありますが、小川さんが衝撃を受けたのはどういう点ですか。
i Mag ほかに注目すべき点はありますか。
小川
小川

その説明は、当社の開発環境を紹介するとわかりや

現行の DB2 Web Query for i 2.1 は画面デザインが古すいと思います。当社では RDi を PC にインストールして開臭く、それがもう少し洗練されればもっと使われるだろうと発マシンとし、ソースのバージョン管理はオープンソースの感じていました。製品資料に「第一に特筆すべき変化は、サSubversion を利用し、ソースを PC から IBM i 上のソースファインオン画面と BI ポータル画面がきれいにシンプルになったイルへプッシュする形で開発を行っています。Subversion はこと」とありますから、大いに期待しています。Web のどこ

別途立てた Linux サーバー上で稼働し、RDi の Subversion プを探しても、2.2 の画面が見当たらないのが残念です。

ラグインを使って連携します（図表 7）。

それと、Web Query の出力先に Excel（.xslx）と HTML5

今回の Git と Eclipse Orion のサポートによってこうした開がサポートされています。ウインドウ・サイズに合わせて自発環境がどう変化するかというと、まず Web ブラウザベース

動調整されるダッシュボードも提供されるので、使い勝手がのOrionを使うと、ソースはそのままIFSに格納され、バージョ大幅に改善されるものと思います。

ン管理は IBM i 上の Git で行われるようになります（図表 8）。
つまり、オープン系のスタイルで一貫して IBM i プログラムを開発できるようになるわけです。この点が、私には衝撃的でした。

IBM Navigator for i
多くの機能も追加

i Mag RDi を使わなくてもいい開発環境の提供は驚きですね。
小川

資料によると、エディタとしては RDi の代わりになりそうですが、システム開発にはデバッガなどのツールも必要で、Orion でどこまで可能なのかは、現時点ではわかっていません。その意味でRDiは今後も必要だと思います。Orionは、

i Mag Navigator for i はどのような拡張ですか。

RDi のような Eclipse のプラグインをたくさんもつフル装備のhttp://www.imagazine.co.jp/ 125

120-127_16imagSUMMER_toku2-2_FIX.indd 125

2016/05/13 23:43

特集

図表 7

IBM i 7.3

ティアンドトラストの開発環境
PC

IBM i

RDi

開発

プッシュソース＊PGM＊MODOLE

ソース
ファイル

エクスポートIFSLinux サーバー
Subversion（オープンソースのバージョン管理ツール）

リポジトリ

図表 8

バックアップ

IBM i 7.3で可能になる開発環境
PC

IBM iRDi

開発

プッシュソース

ソース
ファイル

＊PGM
＊MODOLE

Git
リポジトリ
PC
エクスポート

開発

ブラウザ

126

バージョン管理

Orion

IFS

2016 Summer

120-127_16imagSUMMER_toku2-2_FIX.indd 126

2016/05/13 23:43

Part 2

IBM i 7.3 の新機能とそのインパクト

IDE ではなく、Web ベースの軽量な開発環境なので、PC 上にに配置されると思います。もちろん、ネイティブの RPG ソー

広い画面の開発用エディタとソースをプッシュする機能さえスと、Node.js や PHP などのオープン系ソースの両方のバーあればいいという私のような技術者にとってはとても魅力的ジョンを管理できますし、IBM i 上にあると IBM i と一緒にですね。しかも Orion は、Node.js やその他オープンソース言バックアップを取ることも可能になるでしょう。

語のプラグインをもち、RPG の構文検査機能も備えています。
i Mag そのほかに注目しているものは何ですか。
i Mag Orion の利用が進みそうですね。
小川

今回のオープンソース対応では、「Tools」で GCC も小川 IBM i 以外のプラットフォームでは、フリーの開発環提供されています。GCC は、Linux 環境でごく一般的なコ境を使うのがごくふつうなので、そう考えると、Orion といンパイラで、C や C++、Objective-C などに対応しています。

う選択肢が浮上します。

IBM i にも C コンパイラがありますが、オープンソース絡み

それと Orion は Eclipse 環境なので、他の言語の開発者もでは IBM i 上でコンパイルできずバイナリを用意する必要が

IBM i での開発をイメージしやすいというメリットがありまあったり、IBM i ネイティブでは稼働せず仮想システムに限す。Orion で開発したソースを、IFS ファイル上に置けるの定されているものもありました。GCCがサポートされたので、で、Java や PHP の開発者が Linux 上のディレクトリにソース

IBM i 上でオープン系ソースのコンパイルが可能になりましを put するのと同じ感覚で作れます。

た。

RPG については、フリーフォーム化以前は F 仕様書や D 仕様書などは等幅フォントを使わないと RDi などのエディタでi Mag お話をうかがうと、IBM i の伝統的な開発からオープは桁位置がそろいませんでした。FF RPG になると桁位置をンな世界へと大きく踏み出した感じですね。

気にしなくてもいいので、フォントが自由に選べるようになります。それにより古臭さがなくなり、他の言語の開発者にとっても違和感がかなりなくなりますね。

小川

本当にそう思います。これまでの新バージョンでは新機能がたくさん追加されてきましたが、今回は見た目と入り口が大きく広がった印象です。こうなると、今までの RPG のi Mag Git はクラウドではなく IBM i 上に置かれるのですね。

コーディング規約をまっさらにして、オープンな開発手法に小川

グラム開発の方法が大きく変わりつつあると思えますね。

則った規約を作っていく必要があると思います。IBM iのプロライセンスとして登録されるので、おそらく IBM i 上

http://www.ismagazine.jp/

http://www.imagazine.co.jp/ 127

120-127_16imagSUMMER_toku2-2_FIX.indd 127

2016/05/13 23:43