「Java FAQ(What's New)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします。(編集局)
HTML、Java Applet、JavaScript、DHTML、CSS。そんな数々のブラウザテクノロジを包括した言語が登場した。その言語は「{}(curly brackets)」に由来した名前を持つ「curl(カール)」だ。
curlは、MIT(マサチューセッツ工科大学)のお膝元であるマサチューセッツ州にある新興企業Curl Corporationによって開発された。
6年間にわたる研究開発の結果、2001年10月にVersion 1.0がリリースされ、現在の最新版はWindows 用の実行環境がVersion 1.2、Linux版の実行環境であるPreview版、開発環境であるSurge Lab IDE Version 1.0が公開されている。
Webの生みの親として知られるティム・バーナーズリーが参画している。また、MITの優秀な人材が多くかかわっている。そのほかの顔ぶれも大御所ぞろいで、curlが次世代のインターネット言語だと騒がれるのも納得がいく。
curlの大きな特徴は、クライアントサイドに力を入れた技術であることだ。Javaではおなじみの「アプレット」技術の進化形だ。コンテンツの流通のためにネットワークに負荷をかけるのではなく、クライアントサイドのCPUパワーを最大限に生かそうというアプローチを取っている。
後発の言語であることもあって、既存の言語のさまざまな利点を生かし、欠点を克服したとの印象が強い。Javaと同様にマルチプラットフォーム化が進んでいるcurlが実現できる機能は多岐にわたっている。
現在、さまざまなWebサービスや、エンターテインメント系のWebコンテンツを見渡すと、Macromedia Shockwave/Flashを駆使したものなど、さまざまな技術が使われさまざまな応用と組み合わせのもとで動作している。
さまざまな技術を組み合わせてサービスを提供するということは技術者の腕の見せどころである。けれども組み合わせるものが多ければ多いほど予想できない不具合の要素や、メンテナンス性への負荷が考えられる。
単にうまく動かない・・・・・・という事象の奥には、さまざまな要因が絡み合っているのだ。
一方、curlはその複雑なシステムをとてもシンプルに、高速に動かすことを目指している。
curlの売り文句として以下の点が挙げられる。
curlは取っつきやすく奥の深い言語である。初心者はすぐに使えるようになり、エキスパートは、より複雑なコーディングを効率良く行える。
curlでは、GUIやインタラクティブで見栄えのするコンテンツをオブジェクト指向的な考えの下で開発を行う。curlの開発環境では逐次動作を確認しながら開発を進められる。curlはインタプリタなしで、用意されたcurlコンパイラによってその場でネイティブコードとして実行される。もちろんセキュリティ、安全性への考慮も怠りない。
JavaServer Pagesを用いたときなど、Webコンテンツの作成と、Webデザイン、インタラクションが混在し分業の困難さも指摘されている。タグライブラリが整備されてきたが、デザインとプログラムが混在する環境はメンテナンスや拡張の点から考えても、問題点が指摘されている。
curlがその解決策になるかどうかは場合によるかもしれないが、1つの選択肢にはなり得るだろう。
curlはWebブラウザの上に1枚の薄い透明のシートが重ねられたような感じで動作する。curlの動作にはSurgeプラグインを必要とする。プラグインというよりはWebページ全体をコントロールする新しいWebブラウザのようなイメージでcurlアプレットが動作する。
curlのイメージを明確に表現すると、ステイタスバーに表示されるHTMLファイルのダウンロード時間がcurlの実行時間へと変わった感じである。
curlのビジネスモデルは少々変わっている。curlはソースコードの量で課金される。
1クライアントデバイスのcurlのソースコード1キロバイト当たり0.0005ドル課金される。いままでにあまりなかったタイプのビジネスモデルである。開発者用、個人用、商用とライセンス形態が分かれている。もちろん開発中や、試用中は開発者用ライセンスの下で開発を進めることができる。
curlの場合、単にオブジェクト指向というだけではなく、短いコード。効率の良いコードというアプローチも重視される。
では、実際にcurlのソースコードを見てみよう、以下、HTMLでいうところの、“<B>Hello world!</B>”を意味している。
|| display hello world {bold Hello world!}
以下は、“7”という数字をWebブラウザ上に表示する。
|| display add value {value 3 + 4 }
コメント行がC言語やJava言語でおなじみの“//”ではなく“||”であるのが、慣れるまで違和感があるかもしれない。
ところで、curlの開発環境はソースコードを書きながら逐一表示画面、動作を確認できる。そのことが開発効率を上げることにも貢献している。開発中にインタラクティブなコードの実行が行えることで、スクリプト言語のような容易さを持っているといえよう。
curlが目指している理想を簡単に示すと、「Webの待ち時間をなくそう」ということだ。
Akamai、Kontiki、Bang Networksや、FineGround Networks、Spider Cacheなど、さまざまなキャッシュテクノロジも台頭してきている。Webを速くする単一の目的、方向性のためにさまざまな技術とアプローチがあるということを物語っている。
curlは、単にブロードバンド時代が到来して回線が速くなったという意味だけでの高速化ではなく、ユーザビリティ的に考えた「速く使えるWeb」を目指しているのだ。
curl(カール)という名前の由来はプログラムソース中に多く使われる括弧「{}」のことをcurly brackets(カールした括弧)と呼ぶことに由来している。
さて、この新顔である言語がさまざまなWebサービスやWebコンテンツをその名が示すとおり、クルクルと囲い込んでいくのであろうか?
新しい言語がそんなすぐに台頭してくるはずがないと思われる方も多いかもしれない。けれどもほんの少し過去を振り返ってほしい。10年前はJavaなんて言語がこんなに世界中で使われるようになっているなんてだれも予想しなかったことなのだから。
[参考書籍]
「Early Adopter Curl」 (Michael Gordon、James Joly, David Kranz、Dan Maharry、Paul J Metzger、Chris Ullman著:Wrox Press, Inc.: ISBN-1861005970)
次回は3月5日の公開予定です。
安藤幸央(あんどう ゆきお)
1970年北海道生まれ。現在、株式会社エヌ・ケー・エクサ マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元 CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG の情報源となるWebページをまとめている。
ホームページ:
http://www.gimlay.org/~andoh/java/
所属団体:
OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman)
主な著書
「VRML 60分ガイド」(監訳、ソフトバンク)
「これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社)
「The Java3D API仕様」(監修、アスキー)
Copyright © ITmedia, Inc. All Rights Reserved.