IBM iをどのようにしてオープン化すればよいのでしょうか?
IBM iからUNIXやWindowsサーバーに移行することが
よいオープン化なのでしょうか?
IBM iは大量のデータ・ベースを扱うのに適しているDB2/400リレーショナル・データ・ベースが標準搭載されています。
数十万件の情報から求めるレコードを瞬時に取り出す機能は他のSQLデータ・ベースではありえません。
他のオープン系SQLデータ・ベースではすべてのデータをCPUに読み込んでからでないと処理できません。
このため大量のデータ処理には向いておらずオープン系に移行するとIBM iと同じことができるのではと期待して失敗する原因となっています。
IBM iのDB2/400データ・ベースはレコード・レベルのアクセスを可能とした
リレーショナル・データ・ベースであり大規模データの保存とアクセスに向いています。
レコード・アクセスの速さ
ご存じのように何十万件や何百万件のデータは企業にとって珍しくありませんがDB2/400データ・ベースなら数百万件のデータの中から求めるデータ1件を抽出するのも瞬時に行います。
レコード単位の最小のメモリ管理
その上、DB2/400データ・ベースではレコード単位で読み取りをしますのでCPUのメモリは1レコードの大きささえあれば良いことになります。
IBM PowerSystem は堅牢なことでも知られていて安全性は高いとの評価を得ています。
ハードウェアの保守契約と第三者保守で企業として安心して運用することができます。
ハードウェアの保守契約体制が保証されていないサーバーを企業が使うことはありません。
米国のTV-CM でかつてこのようなものがありました。
「うちのサーバーは全く見たことがないが一体どこにあるんだ? 探してみよう!」と言って社内中を探してみると倉庫の中でひっくり返って動いているAS400が発見されたそうです。
阪神大震災で実際にあった話ですがあちこちで倒れていた当時の白モデルのAS400はタワーごと倒れていたのですが元気よく印刷を続けているのが多くのユーザーで見られたそうです。
DB2/400データ・ベースに比べてSQLデータ・ベースは小規模管理に設計されたものです。
ファイル全体の読み取りが必要
オープン系のSQLデータ・ベースでは毎回ファイル全体をまず読み取ってから求めるレコードを探さなければなりません。
レコードを一件追加するにしてもすべてのレコードにキーの重複がないかどうか調べてからレコードを追加します。
このため処理はDB2/400に比べて大変遅くなります。
大量のメモリが必要
SQLデータ・ベースでは毎回ファイル全体を読み取らなければならないので大量のCPUメモリが必要となります。
また多くのエンド・ユーザーを抱える企業法人ではレコード共有の問題を回避することが難しくなります。
オープン化の失敗事例が多いのは前述のデータ・ベースの違いが
あります。IBM iのユーザーはIBM iと同じことが他のオープン系の
システムでもできるかのように錯覚していますがオープン系の
SQLデータ・ベースは大規模管理には向いていません。
このため10年かかってもオープン系に移行できないプログシェクトは珍しくありません。
Javaの開発を体験したことのない方のほうが
Javaはオープン系の優れた言語であると
期待してしまいがちですがJavaはクラス(class)とクラス継承の
抽象化を言語の特徴としていますが
Javaのクラスの特性は会社の体系によって様々です。
そのためJavaプログラマーが入社しても文法として
Javaのコーディングはできますがその会社のクラスを
理解できなければ開発も保守もできません。
またJavaによるWeb開発(JSP & Servet)はさらに
敷居の高い構造でHTML+JavaScriptに完全に精通した
プログラマーにしか開発も保守もできなくなります。
Javaが人気を集めた生存期間はわずか5年でした。
ご存じでしょうか? あの GoogleではJavaの使用は
もう禁止されています。
それではどのようにすればオープン化は成功するのでしょうか?
先のデータベースの構造の違いに見てきたようにDB2/400データ・ベースのレコード・レベルのアクセスの利点を生かしてオープン化することが成功の道と言えます。
しかしオープン化するにはオープン系の開発言語でDB2/400データ・ベースをレコード・レベルでアクセスできるようにする必要があります。
ここで切り札となるのが Python.400 フレーム・ワーク です。
Python.400 フレーム・ワークは 「AS400エンジン」という
PythonがDB2/400へレコード・レベルでアクセスするための
機能を提供するライブラリーです。
しかもAS400エンジンが提供しているメソッドはRPGプログラム
が実際に使用しているのと同じ関数です。
だから信頼性が高いのです。
さらにPython.400はRPG/COBOLプログラマーよりむしろPythonプログラマーがIBM iの開発が理解できるようにオブジェクト指向のプログラミングを指向しています。
RPGやCOBOLでは不足がちであったオブジェクト指向をプログラミングに取り入れることによって
他人には読みにくかったレガシー・プログラムの
弱点を補っていることに気づいて頂けるはずです。
このようにIBM iの開発をオブジェクト指向の観点からの
開発を可能にいるのがPython.400です。
Python.400でPythonとDB2/400を使って段階的にオープン化する道こそオープン化の成功の道と言えます。