大規模アプリでの開発効率低下を防ぐ

 PHPは「まず動くものを作る」開発手法に適していると述べたが,その半面,Webアプリケーションの規模が大きくなると,デザインを表現するHTMLのコードと動的にデータを生成するPHPのコードが複雑に混在するため開発効率の低下が懸念される。

 この開発効率の低下を防ぐ手法には,ページのデザイン部分(テンプレート)とスクリプト部分にコードを分割するテンプレート・エンジンを利用する方法がある。PHPにはくつかのテンプレート・エンジンが存在するが,代表的なものがSmartyである*11

図4●セキュリティ確保のための機能
PHPに限らず,Webアプリケーションでは,不正な入力により,外部からコマンドやSQLを実行される,クロスサイト・スクリプティングによりユーザーが不正なスクリプトを実行させられてしまうなど恐れがある。PHPでは,入力中の危険なデータを無効化するための関数を備えている。正しく使用しよう

 テンプレート・クラスは便利だ。ただし,その利用に際しては要件を十分検討することをお勧めする。これはどの言語でも言えることだが,このようなライブラリの利用により,HTMLコーディングはシンプルになるものの,やはりWeb運用の取り決めごとや手間を増やすことになる。また,クラス・ライブラリ分のオーバーヘッドにより不必要にシステム・リソースを浪費することもある。

 可能であれば,運用向けのコンテンツ・マネージメントの仕組みを最初から構築するほうが実際的だ。その際,すべてのコンテンツは本当に「その都度」動的なものである必要があるのかを十分検討し,できる限り静的コンテンツを生成すれば性能面での効果も引き出せる。

 PHPに限ったことではないが,Webアプリケーションにセキュリティ・ホールを作らないように注意したい。PHPではフォームから入力されたデータの扱いにはコーディング上の注意が必要である。JSPなどに慣れたプログラマだと,不正アクセスに利用されるメタキャラクタやHTMLタグなどをフィルタリングするフォーム・データ関数を期待することだろう。しかし,PHPでは,良くも悪くも入力されたデータはそのまま引き渡される。プログラマがそれらを安全にする必要がある。PHPにはそのようなケースに対応するため,データ・クリーニングに利用できる関数がいくつか装備されている(図4[拡大表示])。

*            *            *

 今回,オープンソース開発言語のPHPに注目したが,ソフトウエアの価値は,その速度や技術的新規性よりは,むしろ適用範囲,実績などに裏打ちされた信頼性にある。その面でも,PHPを含め,いくつものオープンソース開発言語は十分な歴史を持つものになったと言える。


岡田良太郎(おかだ・りょうたろう)氏

株式会社テックスタイル代表取締役
2002年2月に築地に設立したテックスタイル(http://techstyle.jp/)で,オープンソース関連技術を中心に,インターネットシステムの構築,運用に関するセキュリティ・コンサルティングを実施。同社は現在,「オープンソースビジネスレビュー(OSBR)」という情報サービスを展開している。E-Mailはriotaro@techstyle.jp