Saturday, April 09, 2005

次世代のインターネット言語curl登場!

http://www.atmarkit.co.jp/fjava/column/andoh/andoh06.html
安藤幸央のランダウン[6]
次世代のインターネット言語curl登場!

安藤幸央(andoh@dst.nk-exa.co.jp)
株式会社エヌ・ケー・エクサ
2002/2/5


--------------------------------------------------------------------------------
「Java FAQ(What's New)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします。(編集局)

--------------------------------------------------------------------------------






■curlの登場
 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が実現できる機能は多岐にわたっている。


HTML、CSS的な文字表現、レイアウトデザイン

JavaScript、DHTML的な動き

Java Appletの持つインタラクティブ性。ユーザーインターフェイス

2Dグラフィックス表現、3Dグラフィックス表現。マルチメディア対応

ネットワーク親和性

 現在、さまざまなWebサービスや、エンターテインメント系のWebコンテンツを見渡すと、Macromedia Shockwave/Flashを駆使したものなど、さまざまな技術が使われさまざまな応用と組み合わせのもとで動作している。

 さまざまな技術を組み合わせてサービスを提供するということは技術者の腕の見せどころである。けれども組み合わせるものが多ければ多いほど予想できない不具合の要素や、メンテナンス性への負荷が考えられる。

 単にうまく動かない・・・・・・という事象の奥には、さまざまな要因が絡み合っているのだ。

 一方、curlはその複雑なシステムをとてもシンプルに、高速に動かすことを目指している。

■curlの世界

 curlの売り文句として以下の点が挙げられる。


クライアントサイドで高速に動作する

素早く習得でき、速いペースで開発できる

拡張、メンテナンスが容易

 curlは取っつきやすく奥の深い言語である。初心者はすぐに使えるようになり、エキスパートは、より複雑なコーディングを効率良く行える。

 curlでは、GUIやインタラクティブで見栄えのするコンテンツをオブジェクト指向的な考えの下で開発を行う。curlの開発環境では逐次動作を確認しながら開発を進められる。curlはインタプリタなしで、用意されたcurlコンパイラによってその場でネイティブコードとして実行される。もちろんセキュリティ、安全性への考慮も怠りない。

 JavaServer Pagesを用いたときなど、Webコンテンツの作成と、Webデザイン、インタラクションが混在し分業の困難さも指摘されている。タグライブラリが整備されてきたが、デザインとプログラムが混在する環境はメンテナンスや拡張の点から考えても、問題点が指摘されている。

 curlがその解決策になるかどうかは場合によるかもしれないが、1つの選択肢にはなり得るだろう。

■curlの実行環境(サンプルコンテンツ)

 curlはWebブラウザの上に1枚の薄い透明のシートが重ねられたような感じで動作する。curlの動作にはSurgeプラグインを必要とする。プラグインというよりはWebページ全体をコントロールする新しいWebブラウザのようなイメージでcurlアプレットが動作する。

 curlのイメージを明確に表現すると、ステイタスバーに表示されるHTMLファイルのダウンロード時間がcurlの実行時間へと変わった感じである。


curlで計算したレイトレーシングによる3次元画像。ジャギー(ギザギザ)のままのものと、計算によって滑らかになったもの


普通のHTML+CGIの画面と変わりないように思えるかもしれない。実際にはcurlで記述されたものだ。滑らかなフォント表示とリアルタイムに描画が行われて動くテカテカと反射する球と床面を実現している

■curlのサンプル

 curlのビジネスモデルは少々変わっている。curlはソースコードの量で課金される。

 1クライアントデバイスのcurlのソースコード1キロバイト当たり0.0005ドル課金される。いままでにあまりなかったタイプのビジネスモデルである。開発者用、個人用、商用とライセンス形態が分かれている。もちろん開発中や、試用中は開発者用ライセンスの下で開発を進めることができる。

 curlの場合、単にオブジェクト指向というだけではなく、短いコード。効率の良いコードというアプローチも重視される。

 では、実際にcurlのソースコードを見てみよう、以下、HTMLでいうところの、“Hello world!” を意味している。

|| display hello world
{bold Hello world!}

 以下は、“7”という数字をWebブラウザ上に表示する。

|| display add value
{value 3 + 4 }

 コメント行がC言語やJava言語でおなじみの“//”ではなく“||”であるのが、慣れるまで違和感があるかもしれない。

 ところで、curlの開発環境はソースコードを書きながら逐一表示画面、動作を確認できる。そのことが開発効率を上げることにも貢献している。開発中にインタラクティブなコードの実行が行えることで、スクリプト言語のような容易さを持っているといえよう。



curlによるグラフ表示の開発中の例


■curlの目指すもの

 curlが目指している理想を簡単に示すと、「Webの待ち時間をなくそう」ということだ。

 Akamai、Kontiki、Bang Networksや、FineGround Networks、Spider Cacheなど、さまざまなキャッシュテクノロジも台頭してきている。Webを速くする単一の目的、方向性のためにさまざまな技術とアプローチがあるということを物語っている。

 curlは、単にブロードバンド時代が到来して回線が速くなったという意味だけでの高速化ではなく、ユーザビリティ的に考えた「速く使えるWeb」を目指しているのだ。

 curl(カール)という名前の由来はプログラムソース中に多く使われる括弧「{}」のことをcurly brackets(カールした括弧)と呼ぶことに由来している。

 さて、この新顔である言語がさまざまなWebサービスやWebコンテンツをその名が示すとおり、クルクルと囲い込んでいくのであろうか?

 新しい言語がそんなすぐに台頭してくるはずがないと思われる方も多いかもしれない。けれどもほんの少し過去を振り返ってほしい。10年前はJavaなんて言語がこんなに世界中で使われるようになっているなんてだれも予想しなかったことなのだから。


[関連リンク]
Curl Corporation