マーリンアームズ サポート   翻訳   コンサル   講座   アプリ   コラム

iPhone 3D プログラミング Philip Rideout著 安藤幸央監訳 阿部和也+武舎広幸訳

監訳者まえがき

私は今、Appleにまた訪れる歴史的瞬間に、自宅の机に向かってこのまえがきを書いています。今日、2011年1月24日は、AppleのApp Storeから100億本目のアプリがダウンロードされた日なのです。 100億本目にダウンロードされたアプリはPaper Gliderという、紙飛行機を飛ばして遊ぶ無料ゲームでした。

万有引力で知られるニュートンは「もし私が他の人よりも遠くを見ているとしたら、それは巨人の肩の上に立っているからだ」という言葉を残しています。これはさまざまな技術や研究などが先人の功績の上に成り立っていることを意味し、よく論文発表などの際に「巨人の肩の上に立つ」と引用されます。

iPhoneで使われ、本書で解説しているOpenGL ESもまさに、その「巨人の肩」の上に立ったテクノロジーです。

OpenGLの歴史をたどると1990年代にさかのぼります。もともとはSilicon Graphics社( のちにSGI)のグラフィックスハードウェアを最大限に利用するためのライブラリであるIRIS GLを由来としています。IRIS GLは、のちにさまざまなプラットフォームで動作するOpenGLとなりました。IRIS GLもOpenGLもグラフィックスハードウェアの仕組みと密接に関係しており、一見小難しいように見える関数群も、実はハードウェアの性能を存分に引き出せるよう、細かいところまで考えられたものです。そのOpenGLがより広い活躍の場として携帯端末や組み込み用途向けにより洗練された形で再構築されたのがOpenGL ES(Embedded System)です。現在OpenGL ESは、iPhoneやiPadのみならず数多くの携帯電話、Androidスマートフォン、家庭用ゲーム機や携帯ゲーム機、カーナビなどにも使われています。OpenGLの厳格なコンフォーマンステスト(適合性テスト)のおかげで、多様な環境があったとしても一度培ったOpenGLの技術は、他のプラットフォームでも生かせます。現在Webブラウザ上で三次元グラフィックスを表現する技術としてWebGLが広がりつつありますが、このWebGLもOpenGL ESの関数をベースとしているのです。

今日のOpenGLの活躍には多くの立役者がいました。IRIS GLをOpenGLとしてオープンな形に広めたKurt Akeley氏、OpenGL学んだ人なら誰もが手にした赤本『OpenGLプログラミングガイド』の著者の一人Mason Woo氏、OpenGLを手軽に学びやすくしたツールキットGLUTの作者Marki Kilgard氏、OpenGLをさらに三次元のオブジェクト指向構造にまで進化させたPaul Isaacs氏とRikk Carey氏、David Frerichs氏、彼らは今もさまざまなところで活躍を続けています。

私が初めて三次元コンピュータグラフィックスの魅力に取り付かれたのは1980年代はじめでした。映画『トロン』、『ラストスターファイター』やPixarの短編『Luxo Jr.』の時代です。当時のパソコンでは、チェック柄の床に球体が数個浮いているような、それも現在の携帯電話の画面サイズ程度のものを計算するのに、まるまる一晩以上時間がかかっていたものです。当時一晩かかって描いていたような三次元CG画像も、OpenGLなら一瞬です。その時代から考えると、iPhoneは価格も性能も夢のようなデバイスです。しかし、描きたいものを実現するのにかかる時間は今もなぜか変わりません。表現したいものがますます膨らんでくるのです。

OpenGLは一見わかりづらく、何をするにも複数の関数を組み合わせなければいけないことに最初は戸惑うかもしれません。なぜ、三角1つ書くのに、これだけ面倒な手順を踏まないときちんと表示できないのかと不思議に思うこともあるかもしれません。しかし、気長にいろいろなことを調べながらプログラムを組んでいると、OpenGLのハードウェア上でどのようにデータが移動し、どのように描画されているのかが手に取るようにわかる瞬間があります。そうなった時に初めて、なぜOpenGLの関数がこのような仕組みや名前を持っていて、どのような考えのもとに創られたテクノロジーなのかがはっきりとわかるのです。

OpenGLの歴史的な背景を考えると、現在のOpenGL ESにも余計な関数や不可思議な関数が残っています。ES 2.0になって、いくぶん整理され洗練されましたが、IRIS GLの名残もかすかにかいま見られます。OpenGLやグラフィックスハードウェアはブラックボックスのように思えますが、調べれば調べるほどその構造がわかり、実はとても効率よく、ある思想をもって設計されていることがわかります。OpenGLの由来であるIRIS GLはFuturist Programmingという考えに基づいていました。それは、素早く動き、小さく、バグもなく、メンテナンスも必要とせず、ドキュメントを読まなくても理解でき、管理者など必要とせず、ユーザーが使いやすく、目的を達することができるものでした。Futurist Programmingの心がけを保ち続ければ、グラフィックスプログラミングの際も、後からチューニングするのではなくグラフィックスハードウェアの気持ちになって最初から計画して速いプログラムを作るようになれるでしょう。

新しい技術に取り組む際、ブラックボックスの中身を理解する能力は重要です。真のブラックボックスの中身はわからないなりに中を予想したり考えたりすることはできます。ブラックボックスを知ると自分の手でコントロールしている感覚を得ることができます。単にコードを書くだけではなく、複数のレイヤを乗りこなすことができるのです。ハードウェア、ソフトウェア、アルゴリズム、アプリケーション、ユーザーインタフェース、ユーザーエクスペリエンス、モデリング、テクスチャリング、アニメーション、ストーリーテリング。学ぶことはたくさんあり、どれも奥深いものばかりです。その上、OpenGLでは「巨人の肩の上に立つ」ことができます。何かにつまずいたときは検索してOpenGLの英知を探せばよいのです。

パソコン黎明期とは違い、大規模なゲームやツールは1人では作れないほど複雑になってしまいました。けれどもiPhone用であれば、少人数のチームでも、スキルさえあれば1人でも、面白いもの、便利で役立つものを作って世界中の人々に使ってもらえるのです。

10年後、20年後、それこそ現在想像もつかないようなテクノロジーや環境が存在しているかもしれません。プログラミングやデバッグといった苦労はなくなっているかもしれませんが、人が何かを創るという苦しくもあり楽しくもある事柄は、きっとなくならないでしょう。

最後に。PixarのJohn Lasseter監督の言葉で締めくくりたいと思います。

The Art challenges the Technology, and the Technology inspires the Art.
(アートはテクノロジーに挑戦し、テクノロジーはアートにひらめきを与える)

皆さんもこの本をきっかけに、手のひらに載るiPhoneアプリというテクノロジーとアートにひらめいて、挑戦していたければ幸いです。

2011年1月24日
安藤 幸央