今月から連載を始めることになりました Java in the Boxの櫻庭です。
Javaを始めて早10年。Java SEを中心に新しい技術を追っかけてきました。この連載でもJava SEを中心に,時にはJava MEやJava EEに触れながら,Javaのいろいろな話題を紹介していきたいと思います。
今月のお題は次世代のデスクトップシステムであるProject Looking Glass,通称LG3Dです。
Project Looking Glass との出会い
![]() |
川原英哉氏 |
私が Project Looking Glassに初めて触れたのは,忘れもしない2004年の2月。ホテルニューオータニで行われたJava Technology Conference 2004のセッションでした。
このセッションはLG3Dの開発者である川原英哉氏が行ったもので,日本でのLG3Dのお披露目となったものです。
既存のウィンドウ・システムばかり見ていた筆者はその斬新な3Dのデスクトップ・システムを見たとたん電撃を受けたかのように感動したのでした。
セッション終了後,講演者の川原氏のところにおもむき,公開されたらぜひ使わせてくれと約束したのです。
このとき,川原氏がデモに使用したのは後に公開されたオープンソース版ではなく,Proof of Conceptバージョンと呼ばれるものでした。Proof of Conceptバージョンは以下のような機能を持っていました。
- 3D空間内で,既存の2Dアプリケーションを実行
- ウィンドウを画面の横に立てる
- モーダル・ダイアログをウィンドウの裏側に配置する
- ウィンドウの裏にメモを書く
- フォーカスが当たっていないウィンドウを半透明にする
- バーチャル・デスクトップ
- 3Dアプリケーションの実行
このバージョンのデモは米Sun MicrosystemsのLG3Dサイトにムービーやスクリーン・ショットがあるので,それをご覧になっていただくと,感じがおわかりになると思います。
これらの機能の中から主だったものについて簡単に紹介しましょう。
なお表示しているスクリーン・ショットはオープンソース版のRelease 0.7.1を使用しているため,Proof of Conceptバージョンとは表示が異なることをご了承ください。
![]() |
![]() |
![]() |
![]() |
3D空間内の2Dのアプリケーション
![]() |
2Dアプリケーション(Firefox,xterm) |
LG3Dでは画面に表示される全ての物体は3D空間内に配置され,3Dで表示されます。
既存のX Window Systemのネイティブ・アプリケーションは半透明の板状の物体の上に表示されます。ちょうど,アプリケーションのウィンドウをキャプチャして,板の上にペタッと貼ったような感じです。3D空間内に配置されたとしても,アプリケーションの使い方が変わるわけではありません。ごくごく普通に使うことができます。
このアプリケーション・ウィンドウを移動させてみると,ゆらゆらと揺れます。ブレーキをかけたときの揺れ戻しのような動きがウィンドウに対しても行われるのです。こういうちょっとしたギミックがLG3Dにはいろいろと取り入れられています。
お遊び的な要素にすぎないのですが,見ているだけでも楽しいですし,使っていても楽しいのです。このような遊び的な要素がLG3DをしてLG3Dたらしめている点だと思います。
Mac OS Xにも同じように遊びの要素が取りいれられています。たとえば,ドックにウィンドウが吸い込まれていくアニメーションなどがそうですね。使う人に愛着を持っていもらうためには,このような要素が必要なのでしょう。
ウィンドウを立てる
![]() |
![]() |
ウィンドウを立てた状態 | 通常ウィンドウと立てたウィンドウの混在 |
LG3Dといえばウィンドウを画面の横に立てておくという機能が紹介されることが多くあります。
JTC 2004の当時でも,すでに窓立てというユーティリティは知っていたので,ウィンドウを立てるということが目新しいわけではなかったはずです。それでも,擬似的な3Dではなく,本当に3D空間の中でウィンドウを操作できるのはまさに驚きでした。
窓立てではウィンドウの右上に並ぶ「閉じる」「最大/最小化」「アイコン化」の三つのボタンに加えて,窓を立てるためのボタンが加わります。それをクリックすることでウィンドウを立てることができます。
LG3Dではウィンドウを画面の端に移動すると立てることができます。また,画面上で何もウィンドウが表示されていない領域でマウスを右クリックすると,すべてのウィンドウをまとめて立てるということができます。
2Dのデスクトップでは,複数のウィンドウが存在する場合,後ろのウィンドウを完全に隠してしまうことがよくあります。アイコンで選択すれば最上面にウィンドウを表示することはできます。しかし,Windows XPは同種類のアプリケーションを複数起動した場合,デフォルトでは一つのアイコンで複数のアプリケーションを示すようになり,それらのうちの一つを選択するには最低2クリックが必要になります。
ここで,ウィンドウを3D空間の中に配置することを考えます。単にデスクトップを奥行き方向に並べただけでは2Dのデスクトップと変わることはありません。しかし,ウィンドウを立てる(つまり,y軸を中心にして90度回転させる)ことで,複数のウィンドウの中からあるウィンドウを容易に選択できるようになります。
また,立てることによって,斜めにはなりますが,ウィンドウで表示されている内容も何となく把握することができます。
Windowsでは文字だけで示されたアイコンからあるものを選ばなければならなかったのが,表示内容を確認しながら,それも1クリックで行えるのです。
ウィンドウの裏側を使用する
![]() |
![]() |
ウィンドウの表(xterm) | ウィンドウの裏(xterm) |
モーダルのダイアログが表示されているときに,親のウィンドウを操作してしまったことがありませんか?。もちろん,モーダルなので,親ウィンドウは操作できません。
これはモーダルの有無によらずダイアログの表示に差がないことに起因しています。
LG3Dではモーダルのダイアログをウィンドウの裏側に貼ることで,モーダルの有無がすぐにわかるようになっています。モーダルのダイアログを表示すると,ウィンドウが180度回転し,裏側を向きます。そして,ダイアログが表示されるというわけです。
これならばモーダルであるかどうかがすぐわかります。裏側のウィンドウを操作しようとする人はほとんどいないでしょう。
同じようにウィンドウの裏にメモを取るという機能もあります。この機能は付箋ユーティリティと同じような使い方ができると思います。また,Webブラウザであれば表示しているURLとメモを結びつけるなど,アプリケーションに応じたウィンドウの裏の使い方もできるはずです。
ただし,これらの機能はProof of Conceptバージョンでは実現できているものの,オープンソース版のLG3Dでは限定的にしか使用できません。オープンソース版も機能拡張が進んでおり,これらの機能をフルに使えるようになる日も近いはずです。
半透明
![]() |
![]() |
フォーカスが当たった状態 | フォーカスが外れた状態 |
半透明の使用もLG3Dを特徴付けるものです。
例えば,フォーカスが当たっていないウィンドウは半透明で表示されます。つまり,窓を立てていない状態で,複数のウィンドウが重なってしまっても,フォーカスを外すことで後ろのウィンドウを確認できます。
半透明はウィンドウのフォーカスの有無以外にも様々なところで使用されています。
タスクバーやメニュー,2Dアプリケーションが表示されるベースとなる板状の物体も半透明で表示されます。
半透明を使用することで,デスクトップの見やすさは格段に向上します。
おりしも,Windows Vistaはデスクトップに半透明を多用したデザインであると伝え聞きます。これが全てLG3Dの影響だとは思いませんが,何らかの影響を与えたのではないかと筆者は考えています。
3D アプリケーション
![]() |
3Dアプリケーション |
今までの機能はどちらかというと,既存の2Dアプリケーションを対象にしていた機能です。
しかし,LG3Dは2Dアプリケーションを動かすためだけのものではありません。もちろん,3Dのアプリケーションを動作させることも可能です。
LG3Dには 3Dアプリケーションを作成するためのAPIが公開されており,それを使用することで斬新な3Dアプリケーションを作成できます。
既存の2Dアプリケーションと,革新的な3Dのアプリケーションが同居できるのがLG3Dの大きな特徴といえるのです。
著者紹介 櫻庭祐一 横河電機の研究部門に勤務。同氏のJavaプログラマ向け情報ページ「Java in the Box」はあまりに有名 |