Webプログラミング言語AQUAの特徴と課題について

Webプログラミング言語AQUAの特徴と課題について
−国産 Web プログラミング言語としての AQUA への期待−
杉浦システムコンサルティング,Inc
MBA ・システムアナリスト 杉浦 司
1 .Web プログラミング言語の動向
Web プログラミング 言語には 1987 年に開発されて以来、幅広く利用されている Perl をは
じめとして、データベースとの連携に秀でた PHP や、HTML のようなタグを使ったコーディ
ングによってプログラミングが容易な ColdFusion 、大規模な Web システムを構築することが
可能な Java 、さらにはあまり利用されることはないが実行速度が速く自由度が高い C 言語な
ど利用者の用途や好みによって幅広い選択が可能になってきている。特に Web プログラミン
グ言語には一般的なプログラム開発と違ってプログラム変更を迅速に行う必要があるためコ
ンパイルの必要がないスクリプトへのニーズが強く、Red Hat 系 Linux でインストーラや環
境設定ツールの開発言語として利用されている Python や国内での利用が広がっている Ruby
など新しいスクリプト言語への関心が高まってきている。なお、マイクロソフト社のスクリプ
ト実行環境(Web server, Internet Information Services )である ASP は、過去にスクリプトが
外部から見えるなどのセキュリティホールが問題となっており、Web サーバ Apache を採用す
る傾向とも重なって、ASP 利用者は思うようには増えていない。
また、最近の動向としてエキストリームプログラミング(※1)と呼ばれる開発手法が Web
プログラミング業界において急速に広まってきている。エキストリームプログラミングは多様
化する開発条件に対応しかつ高い生産性を実現する開発手法として米国で生まれ、日本でも XP
ユーザ会を中心に注目が集まってきている。
エキストリームプログラミング (eXtreme Programming)では①計画ゲーム、②短期リリース、
③メタファ(比喩)、④シンプルな設計、⑤テスト駆動開発、⑥リファクタリング、⑦ペアプロ
グラミング、⑧共同所有、⑨継続した結合、⑩最適ペース、⑪オンサイトの顧客、⑫コーディン
グ規約の 12 のプラクティス と呼ばれる特徴的な方法論を提示している。Web プログラミング
言語の検討においても言語そのものの特徴や優位性だけでなく、xUnit (エキストリームプロ
グラミングにおけるテスト駆動開発を支援するテストツール )など効果的な Web プログラミン
グを実現する開発環境がいかに提供されているかが重要な評価要素となってきている。
(※1) http://xp.medinfo.m.ehime-u.ac.jp/xp.html
2 .AQUA 言語の特徴
AQUA 言語はセブンネット社が開発した国産のスクリプト型 Web プログラミング言語であり、
以下のような特徴を持っている。
(1 )強力な日本語対応
AQUA 言語では日本語の文字コードを全く意識せずにコーディングすることができる。
フォームから入力された日本語の文字コードを自動認識し、日本語の値を持つ変数をその
まま日本語の値と比較することができる。日本語の変数名を使用することも可能である。
(2 )マクロ化された命令文
Perl など他のスクリプト言語よりもマクロ化された命令文を持っているため、習得が
容易であり開発工数も短縮することが可能である。特に、値チェック命令やデータベース命
令、経過日数命令といった業務用 の Web アプリケーションにおいて頻繁に使われる機能を
多く内蔵している。そのコーディング容易性は PHP や Cokdfusion といった スクリプト言
語と比較してもはるかに高いものとなっている。
(3 )他言語にみられないセキュリティ機能
変数フィルタリング命令によってフォームからの入力値をフィルタリング(数字や英
数字、全角文字などの特定の文字のみ通過させること。)することができる。この機能の優
れた点は悪意のユーザが入力フォームを使って予期せぬ SQL 命令を通過させるインジェク
ション行為を排除することができる点である。また、コーディング されたスクリプトを暗号
化することが可能でありスクリプトの漏洩や改変を防止することができる。
(4 )バグが発生しにくいスクリプト文法
変数そのものに対する命令がわかりやすいためプログラミングミス が起こりにくい構造
となっている。また、チェック命令や変数フィルタリング命令を使うことによって、変数渡
しの際に発生しやすいバグを早期発見することが可能となる 。デバッガ機能も実装されてお
り、フォーム変数などスクリプト内で利用される変数の値をステップごとに確認することが
できるためバグの発見が容易である。
(5 )データベースプログラミング の容易性
データベースについては Windows 版では SQLServer など OLE-DB 対応のデータベース、
Linux 版では PostgreSQL への接続が可能となっている。データベースに対する命令もリレ
ーショナルデータベースの構造を意識することなくデータの取得や更新が可能な簡易な命
令が用意されているため、コンピュータに詳しくないエンドユーザ でもデータベースプログ
ラミングを容易に開発することが可能である。
(6 )専用エディタの提供
スクリプト記述を補助する専用のテキストエディタが付属している。専用エディタでは
強調表示、プレビュー、実行、デバッグ機能が提供されている。
デバッグ機能では、逐次実行、ブレークポイントの設定、変数の値確認などができる。
(7 )エキストリームプログラミングに対応したテスト駆動開発ツールの提供
エキストリームプログラミングでは常にテストによってプログラミングを駆動させていく。
まずテストを設計してその次にテストをパスするためのコードを実装し、テストを行って
新たに実装すべき部分を確認しながらプログラミングを進めていくために、従来的なウォ
ーターフォール型によるシステム開発方法論と比べて頻繁にテストが行われることになる。
AQUA 言語ではテストを行うプログラムに与える入力パラメータやデータをあらかじめ設定
しておいてテストを自動実行させる機能を提供しており、エキストリームプログラミング手
法に基づいた高品質高生産性の Web プログラミングを実現することが可能となっている。
3 .主要 Web プログラミング言語の特徴
以下、AQUA の Web プログラミング 言語としての特徴を客観的に評価するために Perl 、PHP 、
ColdFusion 、Java (Java サーブレット、JSP 、EJB )、Python の主要 5 種類の Web プ
ログ
ラミング言語がそれぞれ持つ特徴について考察する。
※AQUA 言語と比較して特に優位な面を持っている言語を評価対象として抽出した。
(1 )Perl
Perl は 1987 年に Larry Wall 氏によって UNIX 上で開発された無償のスクリプト言語で
あり、ファイル操作、文字列処理を高速に行うことを得意としている。最新のバージョン
5.0 ではオブジェクト指向も取り入れらており、DBI と呼ばれるデータベース接続のための
モジュールも登場している。Perl が他の言語と比較して特に有利な点はその長い歴史によっ
て形成された圧倒的に多い利用者数であろう。世界中に広がる Perl プログラマによってサ
ンプルスクリプトやモジュールが豊富に提供されており、教育環境、開発環境、運用環境の
何れをとっても Perl ほど普及しているものはない。
Web プログラミング 言語としては CGI として外部プログラムの形で呼び出されるため、
Perl コード が起動される際のオーバヘッドが問題となり 同時アクセス数の多い大規模シス
テムに向かないとされていた点についても mod_perl と呼ばれる ApacheWeb サーバのモジ
ュールとして高速動作する関連ソリューションが登場したことによって解決しており、あら
ためて Web プログラミング言語としての Perl の強さが注目されてきている。
(2 )PHP
PHP も Perl と同じ無償のスクリプト言語であるが、最初から Web プログラミング言
語としての目的を持って開発されたため、Web アプリケーションを開発しやすいコード
体系となっている。(Perl がスクリプトの中に HTML を埋め込む形式となっているのに
対して、PHP など Perl より後発のスクリプト言語では HTML の中にスクリプトを埋め
込む形式となっている。)
PHP では CGI ではなく ApacheWeb サーバのモジュールとして動作するため高速に動
作する優位性を持っている。スクリプト言語としてはオブジェクト 指向もサポートしてお
り、エラーがあるとエラーの行と原因が表示されるためデバッグも容易である。
PHP の利用者は増加してきており、その機能も年々強化されてきている。もともと
PHP は PostgreSQL 、MySQL 、Oracle 、Sybase といった各種データベースとの連携に
優れていた上に、XML や PDF 、IMAP 、LDAP といったインターネット上で利用される
サービスを次々とサポートし初めており、Web アプリケーションの開発ツールとしての
実力を強化してきている。
(3 )ColdFusion
ColdFusion は元々アライレ社の商用製品だったが、2001 年 3 月にマクロメディア社と
の合併によって、Dreamweaver などの Web デザインツールと融合する形でより機能的
な開発言語として強化されている。ColdFusion によるアプリケーション開発では
ColdFusion Markup Language (CFML )と呼ばれる独自のマークアップ側言語を標準
HTML に組み合わせることによって実現される。CFML はタグベースの言語で習得が簡
単なことから米国を中心に利用者が拡大している。国内でも短期間での立ち上げが求めら
れる開発プロジェクトで利用されることが多く、人材派遣会社のパソナテック社は
ColdFusion の習得容易性に着目して人材派遣社員に対する ColdFusion の研修コースを
開催している。
ColdFusion はまた、非常に高性能であり大規模な Web サイトの運営にも耐えうる能力
を有している。キャッシュ機能やマルチスレッド処理機能、クラスタリング機能(ロード
バランス、フェイルオーバー)といった高負荷環境の中で高いレスポンスと高い信頼性を
要求される Web サイトの構築に必要な機能を実装している。データベースへの接続は
ODBC や OLE-DB 経由での接続をサポートする他、Oracle 、Sybase 、DB2 、Informix
とのネイティブ接続も可能である。
商用製品として販売店や開発業者、ユーザ会を組織化している点も ColdFusion の強み
である。開発業者やユーザが独自に開発したカスタムタグがタグギャラリーとして公開さ
れている。
マクロメディア社は BEA 社や IBM 社などアプリケーションサーバベンダーとの提携
も急速に展開しており、ColdFusion を WebLogic Server や WebSphere 上で稼働させる
ことによって、Java だけが 享受していたアプリケーションサーバの高機能・高性能性を
活用することができるようにした。このことによって、アプリケーションサーバの上で
ColdFusion が動くことによって Java のスキルがない開発者でも、WebSphere 上のアプ
リケーションを手軽に開発できるようになり、ColdFusion アプリケーションも従来の約
5 倍程度高速になるという。
(4 )Java (Java サーブレット 、JSP 、EJB )
Java はプラットフォームに依存しないプログラミング言語として登場した。パソコン
だけでなく、携帯電話や家電上でも稼働することをめざしている点で Web アプリケーシ
ョンへの利用を目的とする他の言語とは一線を画するものである。
Java は C++によく似た構文を持っておりオブジェクト指向をとり入れている。マルチ
スレッドにも対応するなど大規模でかつ高性能なレスポンスが要求されるアプリケーシ
ョンを開発する場合のデファクトとなってきている。Web アプリケーション開発言語と
しては当初、クライアントサイドのアプレットが先に登場し、その後、サーバサイドで稼
働するサーブレット や JSP が登場してきた。CGI ではリクエスト毎にプロセスを生成す
るため多重度を上げにくく、セションに依存するような永続的なサービスを提供しにくい
といった問題があったのに対して、サーバサイド Java はこうした問題を解決した。
サーブレットはサーバ側で HTML を生成する方法だがサーバ側で処理する Java コー
ド部分と処理結果を出力する HTML 部分がサーブレット中に混在してしまうために、
HTML の修正のたびにコンパイルし直す不便があったが、これを解決して HTML の中に
Java コードを埋め込む形式にしたのが JSP である。JSP とサーブレットは組み合わせて
利用されることが多く、複雑なプログラムコードはサーブレットとしてコンパイルしてお
き、簡易な画面制御を JSP で処理するという形態が一般的になってきている。なお、JSP
はサーブレットの上の技術であり、HTML での出力画面を中心に記述した JSP ファイル
は自動的にサーバ上でサーブレットのプログラムソースに変換された後、コンパイルされ
た後に実行される。
アプレット、サーブレット、JSP と Web アプリケーション開発の様々な場面での必要
となるソリューションを提供する Java だがさらに 、Enterprise JavaBeans(EJB)の登場
によってより強力なツールとなってきている。EJB は業務ロジックやアクセスなど複雑
なコーディングが必要となる部分に注目したコンポーネント技術である。EJB ではトラ
ンザクション管理、セッション管理、スレッド管理、オブジェクト のライフサイクル管理、
リソース管理といったハードウェアや OS といったインフラに近いレベルのサービスを隠
蔽してアプリケーション領域の業務処理ロジックの開発に注力できるようにしている。イ
ンフラに近いレベルのサービスと業務ロジックを切り離すことによって、業務ロジックを
再利用可能な部品(コンポーネント)として扱えるようにしているのである。なお、サンマ
イクロソフト社はサーブレット、JSP 、EJB などの エンタープライズアプリケーション開
発のための実行環境を総合して Java 2 Platform, Enterprise Edition (J2EE)として規定
している。
Java についてさらに 言及しておくべき 事項がある。非商用のアプリケーションの開発
用にフリーツールが豊富に用意されていると同時に、高性能 な開発環境やアプリケーショ
ンサーバが商用製品として市販されており、規模や用途の違いにかかわらず Java を利用
することが可能となっている点も Java の圧倒的な普及を証明する上で忘れることはでき
ない。
(5 )Python (パイソン)
Python は無償のスクリプト言語であり、RedHat 系の Linux ではインストーラや環境
設定ツールの開発言語として一般的に利用されている。 Python は非常に習得しやすい言
語となっており、米国では Python を学習用言語とするプログラミング教育プロジェクト
の支援を得ている。Python の特徴はシンプル性を重視している点であり、言語自体の機
能は最小限に押さえて必要な機能は拡張モジュールとして追加する形態がとられている。
国内ではあまり認知されていないが、そのアプリケーション開発能力はきわめて高いもの
であり、マルチプラットフォーム(Unix, Windows, Macintosh)対応、オブジェクト指向対
応、リストや辞書、複素数など豊富な組み込みデータ型の実装、mod_python (ApacheWeb
サーバのモジュール化)、マルチスレッド対応、C/C++による拡張、C/C++への組み込み
の他、GUI やデータベースアクセス、FTP や HTTP 、XML など様々な機能を提供する
豊富なライブラリが提供されている。
4 .主要 Web プログラミング言語との比較からみた AQUA 言語のアドバンテージ
(1 )対 Perl
Perl に対して AQUA が優位となる点は、強力な日本語対応、マクロ化された命令文、バ
グが発生しにくいスクリプト文法、データベースプログラミングの容易性といった特徴に
よる習得の容易性、開発工数の少なさをあげることができるだろう 。
その反面、世界中に広がる圧倒的な数の利用者からわかるように Perl の知名度は圧倒
的でありプログラマもサンプルコードも書籍も豊富に存在することから、Perl の習得もさ
ほど困難なものとはなっていない。また最近では CGI 形態となっている AQUA 言語に対し
て mod_perl では PHP と同様に ApacheWeb サーバ のモジュールとしての高速性まで手
に入れており、Java をも脅かす存在になりつつある。こうした状況を考えれば AQUA の
Perl に対する優位性は大量の perl プログラマ が存在する欧米ではなく、日本語という 2
バイト文字コードを使用する漢字圏において特に顕著であるといえる。
裏返せば AQUA がグローバルなツールとなるためには機能面、性能面でのさらなる強化
が必要であり、特に ApacheWeb サーバのモジュール化など高速化が求められるだろう。
※現在、セブンネット社において ApacheWeb サーバのモジュール化、IIS エクステン
ション化によるマルチスレッド対応を最優先課題として開発中であり、次期バ−ジョン
での実装が確実となっている。
(2 )対 PHP
大規模システム開発用の Java に対して中小規模システム開発用のスクリプト言語とし
て定評が高い PHP だが、日本語対応はあまりよいものであるとはいえない。
ApacheWeb サーバ のモジュールとしての高速性や豊富なデータベース連携能力、XML
や PDF 、IMAP 、LDAP といった強力なインターネット対応能力ははるかに AQUA を凌駕
するものだといえるが 、それでもなお、AQUA が持つ日本語対応能力ときわめてマクロ化
された文法による開発効率性は国内においてはきわめて重要な意義を持つといえる。PDF
や LDAP など AQUA 言語が実現できていないコードについて PHP と併用することは十分
に考えられるだろう。AQUA 言語が今後よりポピュラーなプログラミング言語となってい
くためには、より多くのプログラミング部品を提供することが不可欠となるだろう。
(3 )対 ColdFusion
ColdFusion は HTML タグの延長として習得が可能となっているようにわかりやすさ
も実装していれば、マルチスレッド、クラスタリングにも対応するなど、大規模システム
への対応力もあり、Web プログラミング言語としては完成度が極めて高いものと評価す
ることができる。特にマクロメディア社のアライレ社買収後、Web デザイン開発環境と
アプリケーションサーバとの連携がさらに実現したことによってより強力なソリューシ
ョンとなっている。
その ColdFusion に問題があるとすればその 保守性にあるだろう。HTML タグと混在し
て見分けがつきにくい CFML はさらに短期間でのシステム構築に利用されやすいという
状況も関係して、判読しにくいコーディングが修正を困難にしている。AQUA 言語もまた
HTML 埋め込み型のスクリプトであるが、そのコードは「@@」と「;」で区切る形式とな
っており判別がしやすく保守性に優れている。また、AQUA 言語ではユーザ関数機能を利
用することによって、大規模なプログラムソースの開発においても構築後の保守性を考慮
したモジュール分割による構造化プログラミングが可能となっている。修正、保守が不要
な Web サイトはあり得ないため、プログラムコードの保守性が高いことは、総合評価の
観点からきわめて魅力的な製品となっている ColdFusion に対する AQUA の優位性として
非常に意義のあるものとなっているといえるだろう。
(4 )対 Java (Java サーブレット、JSP 、JavaBeans )
Web プログラム開発における生産性を最優先させた AQUA と Web に特定されない様々
なデバイス上でのプログラム開発におけるフレキシビリティを最優先させた Java とでは
元々ターゲットとしている適用分野が異なるため、両者を比較すること自体無理がある。
そのターゲットの違いから、AQUA 言語は「国内」において「データベース」を利用し
たあまり特殊な機能を要求しないが「セキュリティ」は要求される「ビジネス」システム
の開発を行う場合には Java よりもはるかに小回りがきき高いコストパフォーマンスを示
すということがいえるだろう 。
(5 )対 Python
Python に対する AQUA の優位性はやはり日本語対応能力の高さによる国内での Web プ
ログラミングにおける際だって高い生産性にある。
Python は当初、教育用として開発されたものであり、習得の容易性という点において
最も AQUA 言語のコンセプトに近いものであるといえる。教育機関やマスメディアを通じ
た幅広い啓蒙活動、言語自体の機能は最小限に押さえて必要な機能を拡張モジュールとし
て追加していく Python の戦略はむしろ AQUA 言語サイドがベンチマーキング言語として
研究し、「国産の Python 」としてのポジションをめざすべきであると考える。
5 .国産 Web プログラミング言語としての AQUA への期待
AQUA 言語が有する開発容易性、日本語能力、データベース利用、高セキュリティ性、テス
ト駆動による生成プログラム品質の高さといった特徴は先行する海外のプログラミング言語
に対しても決して負けないだけの優位性を持っている。特に最近の動向として、ハードウェア
の急速な性能向上と価格低下の流れの中でソフトウェア性能よりも開発効率を重視すること
が不可欠となってきており、AQUA 言語が実現している開発生産性の高さは今後ますます高い
評価を受けると思われる。
なお、現在、国産の Web プログラミング言語としては Ruby 2 があるが、ビジネスユースで
の利用においては開発容易性や日本語能力、データベース利用などの面において AQUA が優位
性を有している。しかし、国産 Web プログラミング言語という同一のマーケットを持つと思
われるため、十分なベンチマーキングが必要であろう。
2 まつもと ゆきひろ氏が開発した Web プログラミング言語。オブジェクト指向プログラミン
グに対応するなどの特徴を持つ。http://www.ruby-lang.org/ja/
6 .AQUA 言語が有利となる適用分野
他の Web プログラミング言語が持つ強みとそれぞれに対する AQUA の優位点について考え
てみると、AQUA 言語が最も有利となる適用分野について以下のように定義することができる
だろう。
『迅速なシステム開発(生産性)や頻繁なシステム変更(フレキシビリティ)が不可欠であ
りかつ高い信頼性(品質、セキュリティ)を必要とする国内ビジネス分野』
7 .AQUA 言語の今後の課題
AQUA 言語が現在実現している様々な機能は非常に魅力的なものである。国内市場における
スクリプト言語のデファクトポジションを確立することは十分に可能であると考える。
しかし、グローバル市場においても強い競争力を獲得していくため には、本評価レポートに
おいて比較した他言語、特にコンセプトが近い Python が実現している諸機能について順次実
装して、より魅力的 な Web プログラミング言語としていくことが望まれる。
以上