株式会社エスリンク

サーバサイドプログラム開発

Webの利用もただ情報を見せるだけでなく,トランザクションやアプリケーションに利用されるようになってきた。その際に利用される技術は,単純な HTMLの利用ではなくサーバサイド技術というWebアプリケーション技術を利用することになる。この技術も今は複数の技術があるので,目的により何を利用するかを選択する知識が必要になる。

サーバサイド技術(JSP/サーブレット、ASP.NET、PHP、XML)

サーバサイド・スクリプトの代表的な技術は,サーバサイドJavaやASP.NET,PHPがある。これらは,扱うベンダーも異なり見かけも背景も異なる技術だが,本質的には大きな違いはない。

Webサイトを作る技術は大きく2種類に分けられる。要求されたコンテンツ,一般的にHTMLデータをそのまま応答する静的なページの仕組みがある。何度アクセスしても同じドキュメントが返る静的,スタティックなページである。

一方,クライアントが送るリクエスト情報やデータベースなどに蓄積された情報を元に,ダイナミックにコンテンツをその場で生成する動的なページの仕組みがある。本格的なWebアプリケーションを作る際には,動的なページを構築することになる。

動的なページにも,さらに2種類の技術がある。クライアントサイド技術とサーバサイド技術である。これらは,プログラムが実行される場所が違う。クライアントサイドはユーザが使っているコンピュータ上で動き,サーバサイドは中央で管理されたサーバ上で動く技術になる。

これらは環境への依存度が大きく異なり,クライアントサイドは,何万通りもあるコンピュータ上で動作するため,性能やオペレーティングシステム,プラットフォームなども千差万別である。サーバサイド技術は基本的に動作するプログラムが管理されたサーバで動き,サーバの性能に合わせてチューニングできる。

またクライアントサイド技術は,すべてクライアント側で動作するため,比較的大きなトラフィック量が必要になる。

一方,サーバサイド技術は,データベースとのやり取りはすべてサーバ側で行われ,でき上がった結果だけを送るのでトラフィック量は少なくなる。データソースも,クライアントサイド技術は,個人のコンピュータ上のデータを操作するため,変更は別のユーザに影響することはない。一方,サーバサイド技術では,データソースがすべてのユーザで共有されるため,あるユーザが行った変更が別のユーザに影響することもある。

サーバサイド技術イメージ

サーバサイドJava

サーバサイド技術の中には,サーバサイドJava,J2EE(Java2 Enterprise Edition)がある。大規模開発の実績ではほかと比べて群を抜いている。Java言語をベースにしている技術で,いくつかの標準APIを組み合わせた総称で呼ばれている。

Javaは企業の基幹システムなどで非常に多くの実績やノウハウをもっており,商業製品やオープンソース製品を問わず,多くのプロダクトがあり,作る側としては,多くの選択肢がある。

また,Javaは非常に先進的な技術者や研究者の間で人気があり,デザイン・パターンや先進的な開発手法など,上流設計に関する資料や文献も非常に豊富である。その一方で,少し習得が難しいと言われている。

昨年Java1.5が登場し,その中のGroovyスクリプトは,Javaの安全な部分や本格的な開発ができる部分のみを取り出し,スクリプト言語のように簡単に書けるようにする取り組みである。JSFという標準のアプリケーション・フレームワークも登場し,今後,Javaの開発が簡単になっていくことが期待される。

サーバサイドJavaイメージ

ASP.NET

ASP.NET(Active Server Pages .NET)は,マイクロソフトが出しているサーバサイド技術になる。特徴は,オールインワン・パッケージで高い開発生産性をもつ点である。環境としては,基本的にマイクロソフトが出している製品なので,マイクロソフトのWindowsプラットフォーム上のWebアプリケーションもマイクロソフトが出しているIISサーバ上でしか動作しない。

ASP.NETはWindowsの最新のアプリケーション基盤である.NET Frameworkの上で一から再構築された新しいアーキテクチャである。もともとASPというサーバサイド技術があったが,それが拡張されたのではなく,ASP.NET1.0という,全く新しい技術になっている。

特徴は,基本ソフトウエアのWindowsプラットフォームからIISアプリケーション・サーバ,また開発環境,アプリケーション・フレームワークまで,マイクロソフトの製品で,オールインワン・パッケージで提供されるのが大きな魅力である。

一つのベンダーがすべて提供するため,構造が非常にシンプルで,また個々のモジュール間の連結性も良くストレスなく開発できる。ただし,Javaに比べると後発の技術であるため,実績はJavaに現状では劣っているが,今後,徐々にASP.NETの案件も増えるであろう。

ASP.NETの統合開発環境,Visual Studio.NETは,非常に高機能であるが,この開発環境は商用製品で,導入にはコストが掛かる。

ASP.NETイメージ

PHP

PHPのプラットフォームは主要なWindowsやLinuxなどで動作可能なスクリプト言語である。開発環境をオールフリーのオープンソース製品でそろえることができる。プラットフォームはLinux,WebサーバはApache,データベースはMySQLでPHPを使う組み合わせや,データベース部分にPostgreSQLを使う組み合わせがある。

ASP.NETやJavaに比べると非常にシンプルな構文で,関数主体の初学者にも分かりやすい言語構文になっている。もともとはパーソナル用途が多かったが,昨年7月に新しいバージョンPHP5が登場し,さまざまな強化点が盛り込まれた。このためJavaやASP.NETに付いている本格的なプログラミングを構築する際に必要なオブジェクト指向構文やXMLへの対応,また,データベースも標準添付でSQLiteが使えるようになった。こうした技術がそろうことで,PHPが今後大規模なシステム構築に使える基盤もできつつある。

また,Javaの機能拡張の提案でJavaのコミュニティJCP(Java Community Process)で,JSR-223という提案がある。Javaで開発する際に,フロントエンドのページを作る部分はPHPを使える試みである。これにより,JavaかPHPかという二者択一ではなく,ページの部分は書き慣れたPHPを使い,本格的にビジネスロジックを構築する部分はJavaにするような柔軟な使い分けも可能になりそうである。

またPHPの場合,安いレンタルサーバでも大体の場所で動作する。予算がなくWebアプリケーションを作るには,PHPは有力な選択肢になる。

PHPイメージ

技術の選択

これらの技術は,ベンダーも背景も異なっているが,本質的なWeb技術では違いはない。それぞれの技術には一長一短があり対象となるWebアプリケーションにより選択肢は変わってくる。それぞれの技術を相対的に概観できる視点をもつことが重要である。

複数技術の共通点を理解し,その一方で個々の技術で得意な部分,不得意な部分を理解する。案件ごとに構築したいWebアプリケーションの性質に応じて,最適なものを選択することが大事な能力である。(通信&メディア研究会)

技術の選択イメージ