HTTPサーバーとWeb開発

103. RPG プログラマーに必要な Web開発の知識とは ?

米国サイトで「RPG プログラマーに必要な Web開発の知識」という
記事があったので紹介しよう。

RPG プログラマーが Web開発しようとするときに前提として必要となる技術とは、

とされている。

■ HTML の文法

まず「HTML の文法」は絶対に必要であるのは当然だが HTML のすべてを最初から
理解している必要はない。
Webアプリに必要な HTML タグの知識だけで最初は十分である。
何かのツールで Wizard 生成された HTML を隅から隅まで理解している必要はなく、
必要になった項目から学習するだけでよい。
例えば生成されたHTML にコンボボックスを追加するにはコンボボックスだけの
記述を学習すればよいのである。
最終的にはスタイル・シート(CSS) まで習得できれば、それにこしたことはない。

■ JavaScriptプログラミング

次に「JavaScriptプログラミング」であるが最初に誤解のないように説明すると
「JavaScriptは Java ではない !」ということである。
また JavaScript のことを省略して Java と呼ぶことは絶対にない。
よく「私はまだJavaを勉強していない。」という人があるが、これは全く理解していない人である。
JavaScript は、Java と同じ文法によるスクリプト言語であり、ブラウザ上で
動作するプログラムである。
JavaScript は基本的にブラウザでの入力の妥当性検査に使用されるが
最近では Ajax (= JavaScript による非同期通信) によってダイナミックにHTML を
書き換える技術が盛んであるというよりは当然の機能となってきているので
Ajax も是非、学習しておきたいものである。

■ XML の文法

上に書いたように Ajax を使うにしても XML を理解している必要があり、
今の時代では データ表現としての XML は、あらゆる場面で登場する。
XML に文法とか (文法という言葉は原文の XML Syntax を翻訳した) いうほどの
ものではないが XML と DOM (=Document Object Model) の扱う方の基本的な知識が必要だろう。
DOM というと何やら難しそうに聞こえるが DOM とは XML を展開したデータだと
思えばよい。これは RPG プログラマーであれば DB2/400 を良く知っているので
容易に学習できるはずである。
ただし残念なことに世間に出版されている XML に関する学習書籍や Webサイトでは
XML や DOM の基本を理解していない著者が多く、読み手を混乱させているケースが多い。
XML と DOM はこのサイトでもわかりやすく解説しているがさらに説明を加える予定である。

■ CGIプログラミング・モデル

CGIプログラミング・モデル」とは基本的な CGI (Common Gate Interface =
HTMLを出力するプログラムのことを CGI と呼ぶ) の動作を理解することである。
CGI は一旦、HTML を出力すると同時に終了するのが基本的な動作である。
プログラムが終了するのであるから、変数値も保持されない。
CGI は HTML を出力すると同時に終了するのが基本的な動作である。
しかし HTML がブラウザに表示されているのを見ると、裏で RPG プログラムが EXFMT
待機しているものと信じて、その考えから離れることができない人がいる。
いくら説得しても待機していると信じるしかない人は残念ながら Web開発には向いていない。

■ CGI開発ライブラリー

CGI開発ライブラリー」とは ブラウザから送られてくるデータは GET での要求であったり
POST での要求であったり、さらに文字列もエンコード(コード化)されていたりする。
例えば「/」(スラッシュ) という文字は「%2F」というようにコード化されている。
%2F とは HEXコードの X'2F' のことを意味しているが X'2F' とは ASCIIコードの
/」である。
これを EBCDIC コードの「/」に変換する必要がある。
漢字も同じで「%4F%23」のようにASCII コードの漢字2バイトで表現されており
これをデコード(コード解除)して EBCDIC の漢字に戻さなければならない。
このようにブラウザからの入力を受け取るには結構な労力を必要とする。
そこでこのような面倒な処理を代わりに行なってくれるライブラリーが必要となってくる。
IBM HTTPサーバー(Apache) は、デコードまでの面倒は見てくれないので
自分で独力でやるか、またはツールとしての何らかの「CGI開発ライブラリー」が必要となってくる。

■ ASCII から EBCDIC への変換

上記の CGI 開発ライブラリーで説明したようにエンコードされた文字列を
デコードして再組み立てした得た文字も、それは ASCII コードであるので
さらに ASCII から EBCDIC へ変換する必要がある。
そこで RPG プログラマーは ASCII から EBCDIC への変換を行なう必要がある。
Unicode が普及し始めた現在では ASCII からだけでなく Unicode から
EBCDIC への変換も視野に入れなければならない。
参考までに ASCII から EBCDIC への変換には API:QDCXLATE を使用する。
Unicode から EBCDIC への変換には API:iconv を使用する。

< まとめ >

上記の 「CGI開発ライブラリー」と「ASCII から EBCDIC への変換」はEnterpriseServer などの
市販のツールがその代わりとなる。
EnterpriseServer の Wizard で「新しいプロジェクトの作成」によってWebアプリを自動生成すれば、
その他の素養を理解していなくて、もとにかくは正常に作動するWebアプリがおよそ 5分もあればできてしまう。
そのようなツールがない場合は「CGIプログラミング・モデル」は素養として理解しておく必要がある。
また「HTML の文法」は始めからすべて理解している必要はなく、最初は Wizard に頼っていても
少しずつ学習していく程度でよい。
しかし全く知らなくて良いかというと、そうではない。
DSPF の DDS の理解が必要であるのと同じで インターフェースとなる HTML はやはり学習しておく必要はある。
JavaScriptプログラミング」はその次の段階の学習でよい。
Ajax によって画面の動きをダイナミックに動作させることができるようになると、自然に「XML の文法」も
吸収していくにちがいない。

最後に誤解のないように付記すると Web開発を行うには、 Perl, Rubby, PHP , ... のような特殊な
開発言語を学習する必要があるとの誤解が多いが、その必要は全くない。
Perl, Rubby, PHP, ... 等のスクリプト言語はオープン系の世界で C言語を使ってポータル・サイトを
開発するよりは開発効率が良くなる、ということで開発された言語であり、それを System i 上で
敢えて使用するのは時代の逆行である。
これらの言語はインターフェースであるHTML にビジネス・ロジックであるスクリプト言語を
混ぜたようなものであり、MVC 3階層モデルのようにビューとロジックの分離が叫ばれている
現在でビューとロジックを混ぜた時代逆行の手法である。
しかも SQL によるパフォーマンス低下とスクリプト解釈によって実行速度は遅い。
特に PHP は IBM が一時は推薦したもののパフォーマンスの悪さにもはや採用する
選択肢としては姿を消している。
CGI と言えども System i 上では RPG がデータ・ベースのアクセスには最も優れた
パフォーマンスを発揮する。

要は RPG プログラマーにとっては

HTML + JavaScript がわかれば相当な開発を行うには十分である

と言える。