HTTPサーバーとWeb開発

65. Ajax による応用事例

Ajax を組み込むことによって従来では不可能であると思われてきた懸案が次々に可能となる。
Ajax を使わずに JavaScript でもできるのだが非常に複雑になっていた記述も Ajax によって簡単になったり、パフォーマンスを向上させたりすることができる。
既に弊社では「EnterpriseSever Ver5.0」に Ajax によるいくつかの機能を追加している。
そのいくつかの事例を紹介しよう。
Ajax の事例は弊社製品にとっても非常に重要であるところから具体的なサンプルに関しては
潟Iフィスクアトロの HP で、今後公開する予定であるので注視されたい。

【 ツリー構造のメニューや部品構成のツリー構造の表示 】

メニューを Web化するときにはツリー構造のメニューとして移行すると非常にわかりやすく
視認性を高めることができる。
また製品の部品構成表もツリー構造として表示すればユーザーにとって非常にわかりやすいものとなる。
このようなツリー構造を表示するときにすべてのサブメニューやすべての莫大な部品構成を最初からHTML の中に含めていたのでは、ダウンロードに時間がかかるのは必然であり、
ユーザーがほんの一部の構成を調べたいだけであるのに毎回、すべての構成がダウンロードされているのであれば構成が表示されるまでユーザーは待たされることになる。
Ajax であれば最初のメニューや最初に製品一覧だけを表示しておいて、ユーザーが詳細
を見たいとしてクリックしたメニューや製品だけの構成をもう一度、その場でダウンロードして
表示するようにすることができる。
つまり必要なときに必要な情報だけがダウンロードされてくる仕組みである。

下記は EnterpriseServer Ver5.0 のメニューである。
このメニューは HTML としてバッチで変換したり手動で作成したものではない。
EnterpriseServer が提供するメニューだけでなく、ユーザーが作成した適用業務メニューも変換することなく、その場でこのようなツリー構造メニューとして表示されるのである。
従ってユーザーが元の既存のメニューを修正すると直ちにこのメニューに反映される。
しかし、この変換は単純な WebFacing ではなく、ユーザーがカスタマイズすることも可能である。
もちろんクリックした項目だけが追加として Ajax によってダウンロードされてくるようになっている。

【 大量の伝票入力 】

繰り返し行われる大量の伝票の入力は高速レスポンスが要求されるので、これまで Web で実現するには不向きとされてきた。
しかし前のサンプルでおわかりのように Ajax であれば、非常にパフォーマンスに優れている
ばかりか、データの送信を Ajax によって送信したと同時に、次の新規入力画面を表示
することもできる。
つまり、ユーザーが入力しているあいだに、前のレコードの処理をサーバー側で行わせる
ことができるのである。
DSPF でも、このような機能はあるが、HTML では到底、不可能であると思われてきた。

【 5250 妥当性検査や 5250キーボード機能の実現 】

これは前述の「大量の伝票入力」とも関連しているが、良くある話として

「Webは照会系には適しているが、入力系には向かない。
入力はやはり CUI の 5250エミュレータが優れている。」

しかし思い出して欲しい。Windows 3.1 や DOS-PC の時代はファイル・コピーなどの
ユーティリティーの実行は DOSモードのほうが速いとして、マニアックなユーザーは好んで DOS コマンド・プロンプトを使用していた。
しかし、Windowsエクスプローラ や マイコンピュータが普及した今日では、果たして何人の
人がDOSコマンドを使っているのだろうか ?
今や「速い」ということよりも「やさしい」ことのほうが重要である時代なのだ。
しかしやはり「速い」操作性は重要でもある。
5250には独自の妥当性検査やキーポード機能を持っている。十字キーやFieldExitキーによる右寄せやTAB 移動もその例である。
数字や漢字の妥当性検査も JavaScript で頑張って開発することは可能だが、漢字半角混じりのオープンフィールドの文字数オーバーを検索するのは JavaScript では相当大変なことになる。
しかしサーバー・サイドでオープン・フィールドの文字数オーバーを検査することは簡単であることは容易に想像がつくであろう。

Ajax を使ってそのフィールド個別の妥当性検査を行うようにすればオープン・フィールドの
文字数検査も容易に実現することができる。
このような 5250独自の機能を Webで実現するには Ajax による個別フィールドの検査が
有効である。
Ajax はフィールドの個別検査を CGI で行える唯一の手段である。
米国では既に Ajax による 5250機能再現のための Tips & Technuques を紹介しているサイトもあるので検索されてもいいだろう。
弊社では System i ユーザーのための 5250機能の再現のための ライブラリーの無償公開も予定しているので弊社サイトを時折、覗いて頂ければと思う。

【 POPUP ウィンドウの表示 】

RPG では POPUP ウィンドウを表示するために、下位のサブ・プログラムを呼び出すという
手法が一般的であるが残念ながら Web では、この方法はそのまま再現することはできない。
単純に POST/GET で submit したのであれば、結果はページの入れ替えになってしまうので
あなたがサプ・プログラムを呼び出して POPUP表示しているのであれば、サブ・プログラムを呼び出した結果は画面全体に POPUP の結果が表示されてしまって、親画面はどこかへ消滅してしまうことになる。
あなたは Web で POPUP は、いくらでも見かけたことがあると主張するたも知れないが、
それは恐らくwindow.open という JavaScript が実行されているからである。
同じCGI の結果で POPUP を親画面の上にオーバーレイして表示することができないのは HTTPプロトコルの仕様である。
弊社の EnterpriseServer Ver4.0 の場合であっても POPUP だけは手修正によって window.open というJavsScript を追加する必要があった。

ここで Ajax の登場である。
弊社では EnterpriseServer Ver5.0 のために System i でのサブ・プログラムによる
呼び出しであってもそのまま従来の RPG ロジックを変更することなく POPUPを表示する
方法を模索し続けた。
結果はやはり Ajax を使うことによって初めて可能となったのである。
詳細はサンプル CGI として後日、公開を予定している。

【 窓口業務や客先での照会/入力に 】

窓口業務や出先での営業マンによる照会/入力には、ことさら見栄えとパフォーマンスが
要求されることになる。
これらの環境下においてパフォーマンスが悪いと、イメージを損ねてしまうばかりか、業務に
支障を来たすことは必至である。
パフォーマンスが要求される場面においてこそ、Ajax はその効果を発揮するのである。

【 生産計画シミレーションを Web で 】

生産計画や製造日程計画のシミレーションは画面の横幅を必要とするので 5250画面が最も苦手とすることろである。
そのため従来では Excel などにダウンロードして Excel 上でシミュレーションしてからSystem i へアップロードするような手法が多く採用されてきた。
しかし Web、特に Ajax を併用すれば横方向にも縦方向にも無制限にデータを表示して、しかも素早い表示が可能となるので、Excel よりも扱いやすくなる。