Hatena::ブログ(Diary)

UEI shi3zの日記 RSSフィード

2014-01-23

これがプログラミングの神髄だ! ファイナルファンタジーのプログラマーが明かす秘密とLispトークバトル!

http://peatix.com.new.s3.amazonaws.com/event/27688/Kazuyuki_photo02.jpg

 ファイナルファンタジーがその超美麗なグラフィックスで世界を驚嘆させたのは、まぎれも無くFinalFantasyVII、つまりスクウェアのPlayStation参入第一弾タイトルなんだけど、その裏ではなんとあの関数型言語の元祖Lisp(リスプ)が活躍していることを知っている人は少ない。

 関数型言語のLispは、FORTRANに次ぐ古い言語でありながら、その後、PythonRubyそして今はJavaScriptに思想を引き継がれている超万能プログラミング言語なのだ。


 何を隠そう、スクウェアの研究開発担当執行役員まで上り詰めた橋本和幸さんは生粋のLisperで、前職は泣く子も黙るLisp専業会社Symbolics(シンボリクス)。そしてシンボリクスはLispを直接実行するハードウェアの名前でもある。


 橋本さんとは西田先生のご紹介で偶然お会いした。

 というのも、現在、橋本さんはnVidiaでシニアディレクター・エンタテインメント テクノロジーという肩書きで、nVidiaでチーフサイエンティストを勤め、現在はフェローとなったデビッド・カークの補佐として活躍。デビッド・カークはGPUを飛躍的に向上させた功績を認められてSIGGRAPHから表彰されている人物。いわば現世代のゲーム機が超リアルな画像表現を可能にしているのは彼のおかげなのだ。


 もともとはnVidiaの最新GPUについて教えて欲しい、ということでお会いしたんだけど、しかしその話が面白いのなんのって、Lispにまつわるプログラミングの話、ファイナルファンタジーの話、そしてハワイで立ち上げたベンチャー企業、BlueMarsの話、そしてnVidiaにおけるGPUやクラウドゲーミングの話、などなど、次から次へと話が盛り上がってしまい、これを僕だけが聞いているのは勿体ない、と思うようになってしまった。



 そこで、毎月やってるゲンロンカフェのイベントに来てくださいよ、と誘うと、「じゃあシンボリクス持って行こうか」と超乗り気だったので出会ったその場でブッキングが決まるという超スピードでこのイベントが決まった。

[ハッカーズカフェ]橋本和幸×清水亮「関数言語ナイト! 記号処理、オブジェクト指向、幻のLISPマシンSymbolics!」PODCAST アキバ系!電脳空間カウボーイズ公開収録 @shi3z | Peatix

http://peatix.com/event/27688


 でね、このLispマシン、シンボリクスってのが何が凄いのか、僕みたいなオッサンですらもはやシンボリクスは伝説的なコンピュータとしてしか知らないから、たいていの読者にはサッパリなのではないかと思うんだけれども、まずLispがどう凄いのかというところから軽く説明しよう。


 Lispは前述のように、FORTRANに次いで古い言語なんだけれども、FORTRAN系言語が、その後、BASIC、PASCAL、C、C++Objective-CC#Javaと直系進化していったのに対し、Lisp系言語は長らくLispがそのまま使われるか、Lispの方言として実装されていったわけだ。


 パーソナルコンピュータの産みの親、アラン・ケイをして「これまでに設計された最も偉大なプログラミング言語」と言わしめたLisp。Rubyの開発者であるMatzことまつもとゆきひろ氏もLispプログラマーであり、RubyはLispの強い影響を受けていると公言している。

まつもとゆきひろのハッカーズライフ:第11回 Let’s Talk Lisp (1/2) - ITmedia エンタープライズ

http://www.itmedia.co.jp/enterprise/articles/0801/29/news010.html


 つまり世界の偉大な才能が最も高く評価しているプログラミング言語、それがLispなんだけれども、C++やJavaに比べるといまいち普及していないのにはいろいろな理由がある(その理由は上記の記事でまつもとさんが書いている)。


 うまい焼き鳥屋を探す秘訣は、自分が美味いと思う焼き鳥屋さんでその店の店主が美味いと思う焼き鳥屋さんを聞くこと。


 同じように、プログラミング言語の神髄を知りたければ、偉大な人の原典をあたるのが最適なのである。


 そのLispを過激なまでに推進していた会社がSymbolicsなのだ。

 もともとSymbolicsはマサチューセッツ工科大学(MIT)の人工知能研究所(AI Lab)からのスピンオフ企業であり、MITでうまれたハッカー文化に深く根ざした企業だった。


 当時、極めて高度な機能を簡単に実現できるLispは、特に人工知能の分野で重宝されていて、たとえばLispを使うとプログラムを生命に模倣させてプログラムを突然変異させたり、進化・淘汰させつつ最適な方法を自分自身で見つけ出す、遺伝的プログラミング遺伝的アルゴリズムといった高度なプログラミングが簡単に実現できた。


 Lispは超強力な言語だったが、そのかわり、動作させるためにはマシンパワーが必要になった。


 そのためLispの実行に特化したマシンはハッカーたちの夢になった。

 その夢を実現するためにうまれた企業が、Symbolicsであり、LispマシンSymbolicsである、というわけだ。


 Symbolicsでは極めて高度かつ極端なオブジェクト指向が実現されている。


 例えば、Symbolicsでは全てのオブジェクトが等価に扱われているため、テキストエディタが動いてるとして、グラフィックス(表示)を扱うオブジェクトと、テキストデータを扱うオブジェクトと、それを制御するためのオブジェクトが存在しているとき、グラフィックスのオブジェクトがバグで暴走し、強制終了させたあと、再び再起動すると、なんとテキストデータを扱うオブジェクトはメモリ空間上でまだ生きており、そこで再接続されることにより、なにもしなくてもテキストエディタのデータが復活する。


 アプリケーションがハングしたらデータごと吹っ飛ぶ昨今のOSからしてみたら、まるで夢のような機能だが、そんなことがいとも簡単に実現されていたのが、どうもこのSymbolicsというマシンの神髄らしいのだ。


 ゲームとLispの関わりは現在も続いており、たとえばプレステのゲーム、クラッシュバンディクーはLispで書かれている(http://all-things-andy-gavin.com/2011/03/12/making-crash-bandicoot-gool-part-9/を参照)。


 また、クラッシュバンディクーの開発もとNaughty Dog社は独自のLispベーススクリプトエンジンを持っており、最新作のUncharted(アンチャーテッド)シリーズでも採用している。

↓このスライドに詳細が載ってる。実際よむと本当にLispでゲームスクリプトが書かれている

State-Based Scripting in Uncharted 2: Among Thieves

http://www.slideshare.net/naughty_dog/statebased-scripting-in-uncharted-2-among-thieves



 また、UNIXの標準的なエディタのひとつ、Emacsも拡張のためのスクリプト言語はEmacs-lispである。また、Emacsの完全なLisp実装であるZmacsも存在する。


 Lispがいかに強力な言語であるかは、アメリカで注目されているベンチャーキャピタリスト、Yコンビネータポール・グレアムがたくさん語っている(リンクはshiroさんによる和訳)。

Revenge of the Nerds

http://practical-scheme.net/trans/icad-j.html

 Yコンビネータはシリコンバレーにあるベンチャーキャピタルで、出資先はDropboxAirbnb、Herokuなど。ポール・グレアム自身がLispハッカーとして作った会社をYahooに売却した経験を元にこれらの素晴らしい企業を生み出している。


 僕は自分がLispプログラマーと名乗れるほどはLispを使いこなせないヘタレではあるんだけど、Lispに対する強い憧れがある。enchant.jsで扱うJavaScriptがLispの影響をかなり強く受けているため、Lispの構造に興味があるという程度。


 JavaScriptは近年急激に高速化していて、家庭用ゲーム機向けゲームエンジンUnrealEngine3が移植されてもちゃんと動くほど。これもLispの末裔だ。もともとJavaScriptはLispの方言であるschemeをベースとして開発されたわけだからね。

404

http://www.unrealengine.com/html5/

 司会役のシン石丸はLispが全く解らない。


 そんなにわかLisperの二人がガチのLisp至上主義企業、Symbolics出身の橋本さんと繰り広げるアツいトークバトルは、たぶん電脳空間カウボーイ史上もっともカオスな空間になると思う。


 ゲームが好きな人、関数型言語が好きな人、コンピュータグラフィックスが好きな人、とにかくオッサン達が夢中になって盛り上がってるのを見るのが好きな人、必見です


[ハッカーズカフェ]橋本和幸×清水亮「関数言語ナイト! 記号処理、オブジェクト指向、幻のLISPマシンSymbolics!」PODCAST アキバ系!電脳空間カウボーイズ公開収録 @shi3z | Peatix

http://peatix.com/event/27688