メニューボタン
IBMi海外記事2008.09.11

RPGの次に来るもの:PHPを使うべきか否か

シャーロン・ホフマン 著

RPGでは事実上どんなことでもできるという考えに同意する System i の開発者はたくさんいます( しかもそれは正しいのです)。しかしだからといってある特定のタスクを処理するのに RPG が常に"最良の"方法であるとは限りません。RPGが最良のツールである場合もあれSQLが一番良い場合もあるだろうし、他の言語が良い場合もあるでしょう。しかし他の言語を新たに学習するからといって RPGはもうおさらばだというわけでもありません。

あなたが担当する開発ポートフォリオには RPG、Cobol、CL、DDS、SQL、HTML、CSSや XMLといった HTML 関連言語などがすでにあるとして、次にどの言語に挑戦するべきかをどのようにして決めたらよいのでしょうか。適切な言語を探し出すことと開発チームに最適な人材を探すこととは多くの類似点があります。社員を新たに採用するときはチームの他のメンバーとうまくやっていける人が欲しいと思うでしょうが、その人の長所や欠点がチームの他のメンバーの長所や欠点を助長するのではなく補完する人が欲しいと思うでしょう。そうでないとチームのバランスが崩れてしまいます。たとえば技術的な専門知識は持っていてもユーザーとうまくコミュニケーションが取れるメンバーが誰もいない、といった具合になってしまいます。同様に、次にどの言語を学習するかを決める際は、あなたの開発ポートフォリオの穴をコスト(時間、労力、費用)の許す範囲で埋めてくれるような言語がないだろうかと探すことになるでしょう。

System i の開発者は優れたデータ取り出し言語( SQL)と優れたビジネス・プログラミング言語( RPG)をすでに手にしているのです。したがって、あなたが探しているプログラミング能力はおそらくSystem i 固有のコードと、( HTML、XML、CSSなどといった)標準的なウェブ言語で記述されたウェブ対応のユーザー・インタフェースとのギャップを埋めることのできる言語でしょう。そうした言語が存在する可能性は大きく、もちろん、最良の選択肢はそれぞれの状況に依存します。ただし、PHPはこの必要条件を完璧に満たすものです。あなたの開発ポートフォリオの中でどこに PHPがはまるのかみてみましょう。

なぜPHPなのか

PHPが多くの人に受け入れられている理由の1つはそのとっつきやすさにあります。PHPでは数行で実用的なコードを書くことができ、少なくとも初期の段階ではオブジェクト指向プログラミング( OOP : object-oriented programming )について何も知らなくても PHPを使うことができます。

PHPでは簡単に解決できるのに他の言語では解決するのが難しい問題の良い例として、ウェブ・サービスの起動があります。自社のビジネス・パートナーがサポートしているウェブ・サービスを起動してそのウェブ・サービスが返してくるデータを抽出しなければならなくなったとしましょう。これにはいろいろなやり方があり、 RPGのみによる解決方法もその1つです。しかしウェブ・サービスを起動する PHPのコードを一度目にしてしまうと今までの大騒ぎは何だったのだろうかと思うことでしょう。

図1 に示した PHPのスクリプトは、2種類の通貨単位を入力として受け取り換算レートを返す、公開されている通貨換算ウェブ・サービスを起動しています。このウェブ・サービスを使用するには SOAPメッセージ( SOAP標準とこの特定のウェブ・サービス用 WSDL に固有な要件に準拠した XML ドキュメント)を作成する必要があります。ほとんどの言語ではこうした要件を処理するにはかなりのコードを記述(または生成)しなければなりませんが、PHPではウェブ・サービスに関する詳細事項の全てを代わりに処理してくれます。

図1 のコードはウェブ・サービスのロケーションを指定し、入力パラメータ( FromCurrencyとToCurrency )の値をセットし、このウェブ・サービスからオペレーションの1つ( ConversionRate )を起動しています。パラメータとオペレーションの名前はWSDLで定義されているものと一致していなければなりません。(特定のウェブ・サービス用の WSDL から特徴を比較的容易に解読するための対話型ツールは多数あります。)

通貨換算ウェブ・サービスが正常に終了すると、その換算結果が入った SOAPメッセージが返されます。この例の場合は非常に単純なデータが結果として返されます。ここでも、この SOAPメッセージの中から実際のデータを抽出するのは他の言語では厄介な処理ですが、PHP では容易に処理できます。図1は SOAPの応答からデータを取り出し $webServiceResponse というPHP変数に格納しています。起動したウェブ・サービスが複数のデータを返す場合は、データを名前で取り出すことができます。この例ではウェブ・サービスが返す1つの値が単に表示されるだけです。しかし、ウェブ・サービスを呼び出した結果が PHP変数に格納される場合、自分のアプリケーション内で使用したりデータベース・ファイルに書き出したりすることができます。

以上の通り、ウェブ・サービスを起動するという特定のタスクについては PHPほど簡単に実行できるものはないでしょう。これだけでも PHPが System i の開発者にとって興味深い選択肢であることがおわかりいただけたと思いますが、System i 環境でPHPを使用することの利点は他にもあります。

System i の固有機能

System i の開発者にとって PHPが特に魅力的である要因の1つが System i PHP API 群です。この API を使用すると System i のデータを取り出したり、System i のプログラムを呼び出したり、メッセージ・キューを読んだり、などといったことが可能になります。System i 固有の PHP API は IBM の Toolbox for Javaにある System i 固有の Java 機能と同様の機能を提供しています。この API 、特にその SQLのサポート機能を使用すると System i のカスタム統合コードを書く必要がなくなり、既存のビジネス・ロジックとデータをブラウザ上のユーザー・インタフェースやウェブ・サービスなどといったクロス・プラットフォームのコード・コンポーネントで連携する部分に集中できるようになります。

開発用ツールの観点からすると、Zend Studio が使用できるようになったことで、新しいプログラミング言語に対して多くの場合必要となる投資を伴う学習曲線が緩やかになりました。Zend Studioは System i の開発者が無償で利用できるようになっていますので、どの開発ツールを購入したらよいか判断に迷うことはなくなります。Zend Studioは IDEとして非常に使いやすいものですが、PHPも非常にシンプルで、テキスト・エディタ(メモ帳でもOK)を使用して PHP のコードを書くこともできます。PHP専用の IDE はこの他にも多数あり、Zend社は WDSc ( Rdi )やその他の Eclipseベースの IDEで使用できる Eclipseのプラグインを作成しています。

System i の開発者にとってPHPを使用することで得られる重要な恩恵の 1つに PHPを使用している System i の開発者たちが活発に活動しているグループの存在があります。その結果、何か問題に直面したときに同様の壁に突き当たっている、あるいは既にその問題をうまく解決した他の開発者を見つけることができる可能性があります。System i 固有のPHP情報を探すときは、まずは System iNEWS 誌の 2008 年 2 月号を見てみると良いでしょう。Zend社のサイトの System i のセクション( zend.com/en/partners/strategic/i5os )も非常に有益な情報源です。

PHPはウェブ開発者のコミュニティ一般(つまり System i だけでなく)で広く使用されており、PHPがオープン・ソースのソリューションであることからフリーのオンライン・リソースも豊富で、PHPのフォーラムも非常に活発です。PHPの学習資料に関しては書籍から大学の授業に至るまで豊富なものがあります。

PHPの一般的な情報をお探しであれば、PHPは LAMPと呼ばれるテクノロジーの集まりの一部であるということを知っていると良いでしょう。LAMPの最初の3文字は Linux、Apache、MySQL をそれぞれ表しており、「P」は Perl または PHPのことを意味しています。PHP以外の LAMPテクノロジーに興味がなくても LAMPのサイトは良い情報源です。LAMP全体だけでなく LAMPの各テクノロジーについてカバーしているからです。

さて PHPがすばらしいものだとおわかりいただけましたでしょうか。フリーで簡単に学習できて使いやすい、同じような考えを持った開発者のコミュニティもあり、まさにあなたが探していた機能を持っている言語でしょう。しかし全てに最適な言語というのはありませんので、他の言語に比べて PHPがどのような場合にうまくフィットするのかをもう少し見てみましょう。

ギャングの1人

PHPはスクリプト言語として誕生しました。JavaScriptの代わりあるいはそれに加えて PHPのコードを HTML ドキュメントの中に直接挿入できるからです。スクリプト言語はウェブ開発では良くないコーディング・テクニックだと聞いたことがあるかもしれませんが、本当のところはもっと複雑な事情があります。スクリプト言語に頼りすぎることはモデル-ビュー-コントローラ(MVC: Model-View-Controller)アーキテクチャを壊すことになり、コード中のビュー(ユーザー・インタフェース)の部分にビジネス・ロジックがたくさん入りすぎてしまうので問題となるのです。

一方、コードの一部あるいは少なくとも一部のシンプルな選択ロジックをスクリプト言語で記述することで応答性の良いユーザー・インタフェースを容易に構築できるようになります。本当に必要なタスクにだけスクリプト言語を使用するのがコツです。ウェブ・インタフェースから直接データにアクセスできるからといって、実際にそうすることが良いというわけでは必ずしもありません。HTMLの中に PHPのコードを挿入するのは便利だとお考えになるかもしれませんが、HTMLまたは他の言語で書かれたコードから起動できる別のコードモジュール中に PHPを格納することもできます。

現在のところ、ウェブ開発者のコミュニティではスクリプト言語、特に JavaScriptが受け入れられています。Ajaxに人気があるからです。しかし数年すればスクリプト言語はすべて悪いとウェブ開発の専門家たちが(再び)非難するようになるでしょう。だからといってPHPをあきらめる必要はありません。そうではなくて、ウェブ開発のベスト・プラクティスが(柔らかい言い方をすれば)継続的な変化の状態にあり、時が経つにしたがってウェブ開発の戦略を修正しなければならないだろう、ということを認識しておく必要があるということです。

PHPはスクリプト言語から進化し、全てのオブジェクト指向言語機能を含んでいますので、開発側の要件が進化するにしたがってより複雑なPHPプログラミングを追加することができます。しかし他の強力なプログラミング言語を本当に必要とする場合はPHPの代わりにあるいはそれに加えてJavaや.NET言語のいずれかを使用することも検討してください。

幸いなことに、その他の多くのウェブ開発用言語(Java、C#、JavaScriptなど)はPHPと同じ汎用的な文法に沿っているので、PHPを習得しておけば他の言語の習得も容易になります。実際のところ、PHPを使用するつもりが全くなくてもJavaを習得するための事前準備としてPHPを学習しておくことも意味があることだとおわかりになるでしょう。PHPをどのような形態で使用することになったとしても、System i の開発ツールキットにPHPを加えておくことは重要です。

勝負に出る

RPGのビジネス・ロジックとウェブ対応のユーザー・インタフェースを連携するための小規模なコードを必要とする場合はPHPを使用するのが理想的な状況です。同じことは他の多くの言語を使用しても実現可能ですが、PHPは習得するのが容易で、System i の PHP開発者が利用できる情報源がたくさんあります。既存のSystem i プログラミング・ツールを補完する言語をお探しなのであれば、PHPを検討対象に挙げてください。あなたの要望に「まさにぴったり」となるかもしれません。

あわせて読みたい記事

PAGE TOP