PHP on i を始めましょう
これに飛びつく理由はたくさんあっても、飛びつかない理由はほとんどないでしょう
PHP の利用人口は IBM i で急速に増加しています。PHP が IBM i にフィットするのには十分な理由があります。多くの組織が Web ベース・アプリケーションを通じて、近代化とユーザーとのコミュニケーションに邁進しています。PHP は IBM i で、堅牢で、安全、ユーザーが使いやすく、視覚的にも魅力ある Web アプリケーションを作成するための優れたツールの 1 つです。PHP on i の利用人口と成長は、一部には、IBM と Zend Technologies の努力の間にある強力な同盟関係に起因しています。
IBM i で PHP を始めるにはどうしたらよいでしょうか?Web 開発に PHP をいまだあえて使用していないユーザーにとって、この記事はその疑問に答えることでしょう。また、PHP の基本概念を説明し、PHP の利用を開始するにあたって考慮すべき内容を探っていきます。
PHP を理解する
PHP は、 Web アプリケーション開発向けに設計されたサーバー側の言語で、非常に簡単にスクリプトを作成できます。コンテンツ・マネジメント、カスタマー・リレーションシップ・マネジメント、データベース・アクセス、e-コマース、ポータル、インターネット、イントラネットの各アプリケーション、フォーラム、ブログ、ウィキ、またその他の Web ベース・アプリケーションに幅広く使用されています。PHP の開発は 1993 年に開始されました。プログラマーである Rasmus Lerdorf が「Personal Home Page Tools (パーソナル・ホームページ・ツール)」と言うスクリプト・セットを作成した 1995 年に紹介されました。Lerdorf が初めて Mosaic Web ブラウザーを目にした 1993 年の IT Conversations でポッドキャストが紹介されたとき、インターネットが未来のアプリケーション開発でプラットフォームとして選択できることを知りました。しかし、会社側はそれに異を唱えたため、彼は会社を辞め、コンサルティング・ビジネスを始めたのです。
以降の 6 か月間で、気が付くと Lerdorf は、 C で同じ CGI プログラムを繰り返し作成していました。彼はそのようにして C プログラムのライブラリーを収集し、HTML を解析して、自分の C ルーチンを呼び出すテンプレート構文解析プログラムを追加しました。こうして PHP の初版が生まれました。開発者である Zeev Suraski と Andi Gutmans は、 1997 年にその構文解析プログラムを作り直し、PHP 3 の基礎を作り上げ、言語名も PHP: Hypertext Preprocessor と変更しました。PHP が正式に登場したのは 1998 年 6 月でした。また Suraski と Gutmans の両者は Zend Technologies を創設し、1997 年以降貢献を続けています (ZEev + aNDi =Zend)。
IBM i での PHP の歴史は、後に始まりました。概略を簡単に説明しましょう。
- 2004 年 - IBM i 向けの非公式 PHP バイナリーである i5 PHP が i5php.net で利用できるようになりました。
- 2005 年 - IBM と Zend が一緒になりました。
- 2006 年 - IBM の支援と Zend のプロの技術サポートを得た公式リリースを含んだ Zend Core for i5/OS が紹介されました。
- 2007 年 - Zend Studio IDE/コード・エディターおよび Zend Platform パフォーマンス・ブースターおよびコード・トレーサー/モニターが紹介されました。
- 2008 年 - Zend Framework が DB2 の i バリアントのサポートを追加しました。
- 2009 年 - Zend Server Beta for i により Core および Platform が最適に組み合わされました。
- 2010 年 - Zend Server がリリースされました。
- 2011 年 - Zend Studio IDE は、標準エディションに組み込まれたすべての機能を大幅にアップデートしました。FastCGI が Apache サーバーに組み込まれ、応答時間の迅速化とシステムの効率化を行いました。
- 2012 年 - Zend Open Source Toolkit および PHP Cloud が発表されました。
現在、世界中の Web サイトの 35 パーセント以上が PHP で動作し、Yahoo、eBay、Wikipedia、Mazda、Disney、Facebook、YouTube など多数の主要組織が PHP を使用しています。PHP on i により、ユーザーのデスクトップにロードされただけの Web ブラウザーでアプリケーションにアクセスし、それを使用することができます。
IBM i で PHP が輝きを放つ場所
PHP は IBM i 開発者にとって、次のような多くの利点があります。
- 簡単に学習できて、開発者を育成できる。開発者はゼロから始めても、便利な機能を素早く作成できます。この言語は熟達するまで段階的に進むことができ、高度化させる余地もたっぷりあります。
- データを Web に取り込む簡単な方法である。Web 開発を知らないユーザーでもデータの取得、表示、更新方法を素早く学習できます。
- 堅牢で、他の Web テクノロジーとの統合性が良い。XML 操作、暗号化、Excel 文書および PDF 文書作成など、多数の機能と拡張機能が利用できます。PHP アプリケーションでは、アドオン・ツールを多数記載したリストを使用して、そのアプリケーションに統合できます。Zend Server Community Edition (CE) には、ネイティブ i コマンドおよびプログラムの実行、ネイティブまたは SQL での DB2 for i へのアクセス、DTAARA、DTAQ、およびユーザー・スペースへのアクセス、システム値の読み取り、スプール・ファイルの読み取り、一覧、および作成、システム・オブジェクトの一覧などの機能が組み込まれています。PHP はプラットフォームおよびデータベースの幅広いリストをサポートしています。
- 安価なコストで始めることができる。PHP は IBM のネイティブ Apache サーバーを使用して完全に i 上で動作するオープン・ソース・ツールです。IBM i 5.4 で出荷が開始され、DB2 データベース・ソフトウェアに接続します。Zend Server CE は無償提供です。
- 世界中の開発者の大規模コミュニティーで考え抜かれて作成された言語である。コード例はオンラインで無制限に簡単に見つけることができます。
- 非常にポータブルである。別のデータベースを使用して別のプラットフォームで開発された PHP アプリケーションを簡単に i に移行し、多少の変更を加えるだけですぐに稼働させることができます。
- 幅広いセキュリティー・オプションを備えている。コーディング技法と構成を簡単に構造化して、統合し、多数のレベルのセキュリティーを実現できます。
- パフォーマンスに優れている。PHP はその実行速度で注目されてきました。負荷の高いデータベース相互作用に使用する場合、他のプログラミング言語と比較してパフォーマンスに優れています。効率的で、すぐに使用でき、実行性も優れています。
- プリコンパイルと違って、PHP プロセッサー・モジュールを備えた Web サーバーで解釈される。PHPは、実行前に特殊なバイトコード形式を使用して実行時にコンパイルされます。コンパイルはプログラマーおよびユーザーにトランスペアレントです。PHP ページに変更を加えても、さらにコンパイルすることなく、結果を即座にブラウザーで確認できます。これにより、開発中で迅速なフィードバックが行われます。
PHP 学習の準備をする
PHP の学習を開始する前に、基本的な HTML、SQL、および IFS の基礎を知っておく必要があります。HTML は、 Web ページにコンテンツを作成し、アレンジする場合に使用する主要言語であり、HTML エレメントは、 Web ページの基本的なビルティング・ブロックです。SQL はデータ管理に使用するプログラミング言語です。SQL を使用して、PHP アプリケーションを介してデータを取得、追加、変更、また削除することになります。IFS は i の一部であり、PC のハード・ディスクに似たストレージを提供します。PHP コードは i ではここに常駐しています。
また、JavaScript および Cascading Style Sheets (CSS) も学習することになります。JavaScript は、動的機能を Web ページに追加するクライアント側の言語です。CSS はサイト・ページの外観に一貫性を持たせ、外観のメンテナンスに掛ける時間を短縮する方法を提供します。サイトの外観に影響を与える色、フォント、また他の属性の指定に使用します。
HTML、SQL、JavaScript、CSS の基礎は、無償のオンライン・リソースや書籍など、さまざまなソースを通して学習できます。きちんとした教室で学習したい場合は、地域の多くの大学で利用しやすい選択肢を提供しています。
PHP を学習する
良い知らせとしては、前提条件でもお話したように、PHP を学習する場合さまざまなリソースから選択できる、ということがあります。ほとんどは i 固有ではありませんが、めげないでください。PHP のポータビリティーを忘れないでください。他のプラットフォームやデータベースを使用しているコード例は、i でも使用できる同じコードで、基礎を学習するには十分です。主要な Web 開発言語として PHP を真剣に学習しようとするなら、Zend が優れたリソースとして、基礎から高度なスキルに至るまで多数のレベルのトレーニングを提供しています。
こうしたすべての選択肢に圧倒される前に、一歩下がって、どのようにしたら最適な学習ができるか、学習期間、トレーニング予算などを考えてみてください。基礎から始めたら、前提条件に取り組んだことを確認して、パイロット・プロジェクトを選択し、Zend Framework の学習へと進み、エンタープライズ・アプリケーションに取り組んでください。
簡単に学習できて、開発者を育成できます。この言語は熟達するまで段階的に進むことができ、高度化させる余地もたっぷりあります。
フレームワークを使用する
フレームワークは、アプリケーションの開始点を作成し、セキュリティー機能と、複数のアプリケーション間で使用できるモジュラー設計を提供します。アプリケーションは、データベース・アクセスおよび相互作用、プレゼンテーション層、アプリケーション・ロジックなど基本的な共通コンポーネントを備えています。フレームワークは共通エレメントの構造および設計パターンを提供し、開発者がアプリケーション作成に費やす時間を短縮できます。標準を提供しつつ、開発者が自分のスタイルのコーディングが使用できる柔軟性を備えています。
フレームワークは構造上、アプリケーションを Model-View-Controller と呼ばれるものに分解しています。MVC は設計パターンで、共通のコーディング・フレームワークが即座にレプリケートできるようにするコード構造です。設計パターンは、アプリケーションを構築する上での骨組みまたは枠組みと考えることができます。Model は、基本機能の動作、データ・アクセス・ルーチン、およびアプリケーションのビジネス・ロジックを管理します。また、データ変更のための情報や指示に対する要求に応答します。View はプレゼンテーション層で、エンド・ユーザーに何を表示するのかを定義します。HTML を使用したい場合、メインライン PHP コードを上書きするという心配をせずに、ビューに HTML をドロップできます。Controller はパターンをまとめ、多少のビジネス・アプリケーション・ロジックを組み込みます。アプリケーション・フローも処理します。コントローラーは、ユーザー入力を受信したら、モデルおよびビューに、入力に従った操作をするよう指示します。
PHP の知識がないユーザーは、Zend Framework を使用する前に、基礎を学習し、多少経験を積んだ方がよいでしょう。使用するときになったら、Zend Framework が IBM i ですぐに利用できることがわかると思います。
i で使用できる PHP と共通で使用されている他のフレームワークとして、CakePHP、Symfony、CodeIgniter があります。また、コードを別のプラットフォームから移植している場合や、開発スタッフがすでに別のフレームワークの経験がある場合に、他のフレームワークを検討することがあります。IBM i で PHP をコーディングしている場合、Zend Framework が最適です。他のフレームワークも IBM i で使用でき、きちんと動作しますが、IBM と Zend はお互いに密に、特に IBM i Power System で使用する PHP ツールを提供するため、多大な努力を払ってきました。Zend Server、Zend Studio、Zend Framework を使用することで、IBM i における PHP の結合性ある環境が実現します。
Zend Server と Zend Studio をインストールする
世界各国に 30,000 を超える顧客を抱える Zend Technologies は、PHP アプリケーションの開発、展開、管理のための製品およびサービスを提供しています。IBM および Zend は、IBM i 開発者が自分たちの環境で PHP を使用するために必要としているあらゆるもの、幅広い製品、トレーニング、サポートなどの形で提供しています。Zend の包括的な製品ファミリーは、PHP アプリケーションのライフサイクル全体をサポートします。
すでにお話したように、Zend Server CE は無償で提供され、始めるために必要なものが揃っています。2010 年 8 月、IBM は、IBM i 5.4、6.1、7.1 で Zend ソフトウェアをあらかじめロードした新製品の出荷を開始しました。1 年間の Web ベース・シルバー・サポートも無償で提供されています。Zend Server がインストールされていない製品をお使いの場合は、Zend のダウンロード・ページ http://www.zend.com/en/downloads/
をご覧ください。ソフトウェアを素早く稼働させるための簡単な手順が紹介されています。Zend Server をダウンロードする前に、http://www.zend.com/en/products/server/downloads
にある IBM i タブ下に記載されている前提条件を完了する必要があります。
また、IBM i に推奨する IDE である Zend Studio をダウンロードするのがよいでしょう。Zend Studio は Eclipse で構築されています。これを使用して、コードをより早く開発および管理し、問題を迅速に突き止め、解決することができます。また Zend Studio には現在、チーム・コラボレーションの機能が組み込まれており、今後のリリースでは、PHP Cloud と動作できるようになります。Zend Studio のルック・アンド・フィールは、Eclipse または Rational Developer for Power Systems に非常によく似ています。
Studio は、IBM i の顧客には無償提供され、マップ・ドライブ (ローカル) または FTP サーバー (リモート) に接続できます。Studio は、開発者に構文エラーや他の誤りについて警告を出し、コードを対話式にデバッグし、グリーン・スクリーン IDE の F4 に似たコード完了を実現しています。Zend Studio は、http://www.zend.com/en/products/studio/downloads
からダウンロードできます。優れたパフォーマンスを発揮するため、PC の RAM は 2GB 以上をお勧めします。インストールが完了すると Studio はIDE を紹介し、その機能をざっと説明している対話式のチュートリアルをポップアップで表示します。ボタンをクリックするとヘルプが利用できます。
あなたの最初のスクリプト
次の手順に従って最初のスクリプトを作成します。
- コマンド・プロンプトから GO ZENDSVR/ZSMENU と入力し、オプション 5 の [Service Management] メニューの [1. Start Zend Server Subsystem] を選択して、Zend Server を開始します。
- スクリプトを作成したら、http:///www/zendsvr/htdocs/helloworld.php に保存します。
- ブラウザーで、URL http://isystem:10088/helloworld.php を実行します。
スクリプトを実行すると "Hello, World!" がブラウザーに表示されます (図1)。
多数のソースやサイトに PHP のサンプル・コードが提供されています。他のユーザーが共有した例を簡単に見つけることができます。インターネットで検索するだけでコードが見つかることがしばしばあります。他人の例を取得するときは、自分の環境で徹底的にコードをテストしてから、実稼働させてください。データベース接続および表名およびフィールド名を変更するだけで、別のプラットフォーム向けの PHP コードを再利用できることがしばしばあります。
始めるための PHP コードのリソースをいくつか示します。
- hotscripts.com
- sourceforge.net
- opensourcecms.com
- phpjunkyard.com
- phpfreaks.com
また、通常は、すぐに使用でき、自分の PHP アプリケーション内に簡単に組み込むことができる、特定の目的のためのツールを見つけることができます。図2 に示したツール例は、オープン・ソースで無償提供されています。
他にも PHP コードおよびツールを提供する無償のオープン・ソース・ツールが多数あります。また PHP 専門の Web サイトも多数あります。コーディングしているなら、次のサイトが役立つでしょう。
- zend.com
- zend.com/forums
- php.net
- www-03.ibm.com/systems/i/software/php
- hotscripts.com
- phpmagazine.net
- phptoplist.com
- planet-php.net
- phpdeveloper.org
- php.resouceindex.com
- phpbuilder.com
サポートを見つける
サポートはどこで受けたらよいでしょうか?次のような選択肢があります。
コミュニティー
問題に遭遇したり、疑問が生じたりした場合、だれかがすでに同じ問題を経験し、解決したことがある可能性が高いです。インターネットのブログ、LinkedIn グループ、ローカルの PHP グループで、コミュニティーを見つけることができます。
Zend
Zend Support Center (http://www.zend.com/en/support-center) には、ナレッジベース、オンライン文書、フォーラム、FAQ など、いくつかの選択肢を提供しています。最初は無償サポートで十分かと思います。PHP を使用してアプリケーション開発を行い、主要な開発ツールとしてその言語を使用し続ける場合でも、Zend は、営業時間内のアクセス、年中無休の電話アクセス、優先応答などのオプションを備えた無償サポートを行っています。
ユーザー・グループ
ローカル・ユーザー・グループ (LUG)、COMMON、PHP ユーザー・グループは、PHP をコーディングして使用している他の仲間と交流したり、対話したりするための優れたソースです。Zend は、http://www.zend.com/en/community/local-php-groups
に PHP グループのリストを掲載しています。
ブログおよびフォーラム
インターネットは、例、ディスカッション、問題解決のための優れたソースです。LinkedIn にはいくつか PHP 専門グループがあります。
セキュリティーを構築する
Web 開発は、アプリケーションを World Wide Web (ワールド・ワイド・ウェブ) に開放するため、セキュリティーを見過ごしたり、軽視したりすることはできません。幸いにも、IBM i および PHP のおかげで、データが外の世界から安全に保たれるようにするセキュリティー層を構築できます。多数のリソースで、セキュアな Web アプリケーション開発をする方法を討論したり、検討したりしています。次に、PHP セキュリティーを中心に扱ったサイトおよびソースをいくつか示します。
- PHP Freaks サイト: http://www.phpfreaks.com/tutorial/php-security
- PHP.net セキュリティー・マニュアル: http://www.php.net/manual/en/security.php
- PHP Security Consortium: http://www.phpsec.org
アプリケーションのセキュリティーを確保するための技法には、次のようなものがあります。
- ローカルのデフォルト・ポートを使用せずに、Web アプリケーション専用の別のポートを使用する。
- ファイアウォールに防護された ISP を介してポートを構成する。
- アプリケーションでユーザー ID およびパスワードを要求させるようにする。
- キーストロークが記録される可能性をゼロにするため、パスワードを暗号化する。
- 権限に制限をかけて、Web アプリケーションで使用する IBM i ユーザー・プロファイルを設定し、エミュレーションや Web アプリケーション以外からシステムにアクセスする他の方法で IBM i にサイン・インできないようにする。Zend Server では、デフォルトのユーザー・プロファイル、QTMHHTTP が提供されています。コード・アプリケーションを使用してインタージェクションを防ぎ、Web アプリケーション内で許可された内容以外のものにアクセス、取得、または更新する、コマンドやステートメントを実行できる機能を防ぎます。
- アップデート機能のブロックまたは制限、アプリケーションで使用されるプログラムおよびデータへのアクセス制限、データ表示のみのアクセス制限によりアプリケーション権限を制限する。
- 投稿および取得の際に注意する。あらゆる形式の取得またはインタージェクションを行わないコーディング技法を使用します。
- IFS 構造でさらに保護レイヤを提供する (Web アプリケーションは IFS に常駐)。この構造により、コードおよびデータの可視性を制限し、防ぎます。
- ユーザーに有効なログイン ID およびパスワードがない限り、ログインが必要で、アプリケーションへのアクセスをブロックするコーディング技法を採用する。ユーザーがこの要件を迂回しようとすると、ログイン・ページへと追い払われます。
セキュリティーは複雑かつ興味深いトピックで、Web アプリケーション開発の際の重要な検討事項です。一貫性のあるセキュリティー機能を自分のアプリケーションに組み込むよう、時間を掛けて、自分の環境向けの標準を開発してください。
その他の検討事項
PHP を開始するのは、多くの要因を考慮しなければならない、複雑なプロセスです。すでに説明した内容に加えて、検討すべき他のトピック一式を挙げました。
- 外部ヘルプ。外部ヘルプにアクセスする場合はどうしましょうか?これは、多くの要因により異なります。スタッフの数が少ない組織に属しており、Web に迅速にアクセスしたい場合は、外部リソースで目的を達成できます。外部リソースは、アーキテクチャーおよび設計、リモート・インストールおよび管理、アプリケーション移行、指導による開発、PHP セキュリティー監査に役立ちます。
- 標準およびガイドラインを定義。あらかじめアプリケーション開発の標準およびガイドラインを定義することで、長い目で見て時間の節約になります。ガイドラインを提供し、コーディングに一貫性を持たせることで新しいリソースを追加する際に、標準が役立ちます。これは、アプリケーションのメンテナンス、機能拡張、サポートの利点をもたらします。
翼を広げて飛び立ちましょう
この記事では、IBM i で PHP を始める場合に考える分野およびトピックについて多くを探りました。PHP の学習方法は多数あります。IBM i で、この言語をますます使用していってもらいたいと思います。基礎を学習することから始めて、実験をし、楽しんで、形どおりに行ってください。Zend Server CE をダウンロードして、インストールするのにコストは掛かりません。DB2 の読み書きを組み込んだ単純な Web ページを作成するようにしてください。Matis/400 や WordPress などオープン・ソース・ソフトウェアを試してみてください。経営陣に売り込む前に、i で PHP がいかに優れた動作をするかを自分で試してください。PHP コミュニティーにアクセスして、仲間、先輩、PHP のファンとの関係を築いてください。
準備ができたら、パイロット・プロジェクトを選択し、マネージャーにその潜在的な価値を示し、プロジェクトの承認を得てください。パイロット・プロジェクトは十分に考えて定義し、役立ち、適度な範囲でなければならず、DB2 などの IBM i リソースにアクセスする必要があります。それは、Web にとって新しいアプリケーション、または既存のアプリケーションの拡張機能になる可能性があります。小さく始めることが、うまく成し遂げ、今後の標準を設定し、経験を積むための安全なスペースを提供することに役立ちます。あらかじめ努力を惜しまないことで、PHP を使用して動作するアプリケーションを作成するだけでなく、予想通り、また予想を上回る素晴らしいアプリケーションを作成する際に差が出るでしょう。