行ってきた。以下セッションごとにメモと感想を箇条書きで。敬称略。
スタッフのみなさんお疲れ様でした。あと、PHPは元気なさすぎ。いじけてないでもっと出てきたらどうですか。
(注意)以下はk3cのメモを記憶に頼って起こしたものです。記録が正確でない、記憶が正確でない、内容を誤解しているなどの理由で、発言者の意図どおりの内容になっていない部分が多々あると思われますので、その程度の信頼度だと思って読んでください。
基調講演
- 生Larry Wall。参加費で招聘したとのこと。
- しばらくお待ちください、の間にキーボードのUnicode文字で笑わせるLarry
- Rules that are meant to be broken
- Perl 5 is a language
- Perl 6 are many languages …なんのこっちゃ?
- Perl5まではRegular Expressionを文字列として扱ってしまったのでparseが面倒なんだよね、という前フリから、Perl6の言語設計の深いところを色々と説明
- Perl6のRegexは気に入っているので、みんな(他の言語も)盗んで欲しい
- とかいいながらRubyのembedded source({})が入っていたりとか
- lexerに渡す言語定義はuser-definedになっている
(というあたりから話がだんだんdeepになって会場が置いていかれ始める)
- 演算子などの定義をユーザーが与えることができる
- Just-In-Time lexer per language
- 今まで拡張性(Extensibility)を真剣に考えた言語はなかった。Perl6ではそれができる
- Embrace and Extend
- ああ、"Perl 6 are many languages"ってそういうことか、と一人納得
- (会場)Perl6へ移行する際の注意事項は?
- やり方は2つ。P6内蔵のP5互換モードを使うか、コードをP6向けに書き直すか(P5→P6のtranslatorが2年前からある)
- LarryはPerl5を愛している。Perl5を使い続けてもいいんじゃないか。ソースコードもあるしメンテナンスも継続してる
感想
- プログラムに書いてあることと基調講演の内容が全然違っててワロタ
- Larry Wallにとってはプログラミング言語の未来とかどうでもよくてPerl6で頭いっぱいなのかもしれない(←この感想は次のパネルディスカッションで確信に近くなる)
- Perl6は確かにいろいろ試されて、数多のオレPerlが次第にいくつかのDSL的な最適解へ収束して行くだろうし、それがLarryの狙いなのだろうとも思うけど、そんな言語はオレは使いたくないな、Perl5でいいやと、現時点では思いました
LLで未来を予測する
- 司会:100年後のプログラミング言語はどうなっているか
- まつもと(Ruby):プログラムでインターフェアしてないんじゃないか。Googleクエリの進んだような形で、PCにこれをこうやってと自然言語で頼んで放っておけば結果が出てくるような。既にgeekでない人はそのように使っている
- 住井(MinCaml):おもむろにプレゼン開始。λ計算やクロージャは計算機のない1936年に論文発表されている。紀元前300年に発明されたユークリッドの互除法は今でも使われている。アイデアをきちんと記録に残しておけば、100年後それが役に立つのではないか
- 藤田(Ypsilon):人間は楽するのが好きな生物。サブルーチンとかループとか。メモリの確保開放、マルチプロセッサの制御などはLLがよしなにしてくれるようになって、プログラミング人口は増えるのではないか。CPUがGCやLLのコンパイル、マルチプロセッサ対応のスレッド管理などをネイティブサポートして、CやC++は絶滅するのではないか。抽象度の高い言語が高いパフォーマンスを示す時代が来るだろう
- ひげぽん(Mosh):言語の大統一理論が出てやっぱりみんなLispじゃん、ということでLispだけになる(場内拍手)というのはネタとして。コンピュータは空気のような存在になってブラックボックス化する。自然言語に近い言語で使うようになる。完全な自然言語では使えないが、少し習えば簡単に使えるようになる、自転車や自動車のような存在になっている
- Larry:予測不能。拡張性が高く、かつ表現力が豊かになるだろう。paradigm-neutralで、天才でなくても扱いやすく、教え込みやすく、動作が見えやすく、楽しくて、コミュニティベースで開発されるようになる
- 司会:いいものは残る、という話だが、現在いい言語はどれ?
- 住井:下手なこと言うと刺される(笑)いろいろ使ってみているが、慣れるとどれもいい。Larryの言うとおりparadigm-neutralに、お互いいいところを取り込んで、どれも同じようなものになっていくのではないか。
- まつもと:+、−などの演算子は好き。
- 住井:+、−は300年前に発明された。そんなに古いわけじゃないが、ずっと使われ続けている
- 司会:言語の未来に向けて、これまで何をしてきたか
- Larry:Perl6(笑)
- まつもと:…Ruby(笑)多様性重要。色んな言語が出て、消えていって、切磋琢磨があるということが、より良いものが生まれるために必要。言語イベントで1000人近く集まる日本という国の未来は明るい
- 住井:プログラミング言語理論の基礎研究をしてきた。周りには全く理解されず、テレビ壊れたから直してとか言われる(笑)
- 藤田:オレ規格のSchemeではなく、標準規格として広く使ってもらえる、ゲーム用DSLとして開発してきた
- ひげぽん:MoshはSICPに感銘を受けて開発してきた。MonaOSのユーザーデフォルトシェルとしていいものにしたい。括弧の自動補完機能とか(笑)
- 司会:言語の未来に向けて、これから何をするか
- 藤田:面白い仕様を実装したい。面白い仕様を考えた人は発表して欲しい
- 住井:面白そうなことを考えて記録に残す
- ひげぽん:思想の統一されたOSを作る
- まつもと:言語好きを増やす。Extensibilityをユーザーに開放するのはつらいと思う。バベルの塔の再来になる予感がする。オレ言語やオレDSLが増えすぎるのは困る。…10年経てばどっちが正しいか分かるだろう(笑)
- Larry:Perl6を出したら何もしないで、他の人がそれ(P6)で何かするのを見守りたい
- 司会:関数型言語のどこがいいのか?
- Larry:アイデアを盗みやすいところかな(笑)
- 住井:オブジェクトの状態を気にしないで書けること
- 司会:100年後にはプログラマはいなくなるのか?
- 住井:中がいじれるというのは貴重なこと。車も一般車を改造してピキピキにチューンするということが行われてきた。中をいじりたいという人は残っているのではないか
- Larry:Perl6が広くも深くも使われることを目指す
- 司会:深くまでいじれる(Extensibility)はバベルの塔の再来という意見についてはどう思うか?
- Larry:デフォルトを注意深く選ぶ必要がある。
- (会場)エラーメッセージをユーザーに分かりやすくして欲しい。長すぎる。
- まつもと:Rubyではあまり考えてこなかった。今後は重要ということについては同意
- Larry:必要なメッセージを出すということが、利便性の観点からは重要。でも長すぎるのはダメ
- (会場)ユーザーの時間を奪うような言語デザインにしないためにどのようなことが重要か?
- まつもと:文句があれば改善する。そのへんはlazyにやってきた。使われたもの勝ちという部分は、確かにある
- Larry:言語デザイナは大統領で、良かれと思ったことはやり遂げる。文句があれば直す。
- (会場、吉岡さんから喝)100年後の言語の話を全然してない。個人的にはコンピュータがノイマン型である限りCもGCCもなくならない。何も変わらないだろうという感想を持った。10年前まで言語の仕様は企画委員会がああだこうだとやっていた。今はコミュニティが仕様を決めるようになった。この会場にも800人集まるようになった。コミュニティベースのスタイルは変わらないと思う
- まつもと:言語のアーキテクチャがフラクタルになっていくのではないか。何がフラクタルといわれても思いつきなのでアレだが
- (会場)セキュリティという言葉が全く出てこないことに失望。言語とセキュリティは切り離せないものだと考えている。今後どうにかするつもりはあるのか
- Larry:セキュリティは言語ではなく
DML(?)レベルVMレイヤの問題 - まつもと:ノーアイデア。いいアイデアがあれば取り入れる。言語デザイナとセキュリティ専門家は特性が異なるのではないかと感じている
感想
- 100年後を予想するというテーマがそもそも無茶振りすぎたね
- ちょっとこれは一言言っておきたいが、司会進行がgdgdすぎ。話をどっちに持って行きたいかというビジョンを持って、むりやりにでも話をそっちへ向けていくという気構えが必要だと思う。
- そこをサクッと本来の話に戻してくれたid:hyoshiok++。
- まつもとさんの空気読む能力の高さは素晴らしい。あの瞬間、みんなが「Ruby」という答えを期待していた
- LarryさんはVimでプレゼンしていた。しかもカーソル移動だけで自分がどのトピックについてしゃべっているのか明示するというテクニック。これはすごい。盗もう。
- Larryさんの楽隠居構想は多分半分くらい本気なのだろう。P5を愛しているとも言っていたし、P6はすごいヘビーなことになってきて、正直疲れてきているのではないか。
サイコー!?フレームワーク
- 比嘉:Java嫌いな人挙手(1/3くらい?)アウェイ感たっぷり。Seasar2でもホットデプロイといって、ソースコードを保存するだけ、コンパイルなしですぐWebへ反映される機能が追加された。
- 瀧内:僕だけユーザー。RoRには明確な思想がある。フルスタックを提供している。開発が早い。自作するより待ったほうが早い。Ruby重要。Rubyをキメると気持ちいい
- 能登:モバゲータウンの検索エンジンを作っている。MobaSIF=Mobile SImple Framework。LAMPベースで、モバオク用のフレームワークとしてスタートしたものをオープンソースで公開した。ドキュメントはないが、ソースコードがシンプルで読みやすいので、みんな読んで理解して使っている。データベースのO/Rマッパがないので、DBに関する知識は必要。性能追求する部分はC(PerlXS経由)で実装した。フルスタックを提供するのではなく、サービスごとに足りないものを足したり、余計なものを削ったりして使えばいいのではないか
- 吉田:最初は独自フレームワークを使っていた。全体を把握できている。ユニーク。教育は大変。メンテナンスに不安
- 次にStrutsを使った。Strutsは使うのが面倒で、楽をするためのフレームワークで面倒というのは違うと思った。情報が本やネットにたくさんあるのはイイ
- Ruby on Rails。すごくいい。教育サービスも提供している。機能アップのためには互換性は多少犠牲にしていいという思想。プラグインは充実している
- Gauche on Railsを作った。昔のイベントのプレゼン用。Lispを使ってみたかった。RubyはLispぽいからできるのは当然。Lispの方がすっきり書けたという感触。でもGaucheでRailsは何か違うと思った
- フレームワーク=メタプログラミング。Lisp(Gauche)=メタプログラミング。Lispを使えば、アプリごとにフレームワークを作れるのではないか
- 比嘉:フレームワークに機能追加すると、それを憶える手間があり、ユーザーのコストになって開発速度を下げることになる。Seasar2はもう進化しない、枯れさせる方向で行く。
- 瀧内:RoRにも学習のコストはある。しかし学習に見合うゲインがある。
- 吉田:RoRの暗黒面(笑)進化が早すぎる。安定度とかドキュメントの陳腐化が早いとかが問題になる。
- 比嘉:フレームワークの作者としては機能追加したいが、安定して欲しいというユーザーの要求にもこたえる必要があるし応えるべき。
- 吉田:RoRまで来たら次はLisp(笑)Lispでのフレームワークに期待する。誰か作って
- 司会:Lispユーザーはどのくらいいる?仕事でやってる人は?ほとんど食えてないんですね…
- 能登:柔軟で安定したフレームワークを目指したい。そのためには多少の規則も必要かと思っている
- 比嘉:Seasar2はうちの会社で7年の商用サポートを提供している。自分も今の会社にいる限りはSeasar2をメンテしていく。
- 制約が多すぎるCoC(Convention over Configuration)はソースコードの可読性を損なう。いま新しいフレームワークを作っているが、それはそういう(=制約を多くしすぎない)方向で作っている
- (会場)設定ファイルに書いても結局ソースコードが分かりにくくなることは同じではないか?フレームワークの中でその設定がどう使われているかモニタできないとダメだろう
- 比嘉:Seasar2ではWebから視覚的に確認できる
- 吉田:Railsが素晴らしいと思ったのはエラーメッセージが素晴らしい
- 司会:JRuby on Railsとかどうか?
- 比嘉:Java上の多言語フレームワークはまだ実験的段階
- 瀧内:JRubyはちょっと試してみたい
- 比嘉:新しい技術を試す方法としてフレームワークを作ってみるのは非常にいい勉強になると思う
重要な感想
- 比嘉さんの「枯れさせる」というのはちょっとやっぱりJava文化だなと思った
- フレームワークってDSLだし、メタプログラミングだよね
- いろんな言語が出てきて、いろんなフレームワークが出てくるのは、みんなやっぱり既存のもののどこかに満足していないからなのだと思う
- 比嘉さん自身、Seasar2は保守モードで今は新しいフレームワークを作っていると発言していた
- 人はより良いものを求める生き物なのではないか
- 進化しないフレームワークは捨てられる、進化しない言語は捨てられる、ということじゃないか。FORTRANしかり、COBOLしかり。HTMLも、もうHTML自身としてはこれ以上進化しないだろう。いつかHTMLはWebの標準言語ではなくなるのではないか。SQLもそろそろ潮時か
- だから多分、100年後になっても、言語もフレームワークも機能追加したり新しいものが作られ続けるだろうと思いました
その他の感想
- Rubyに愛のない人はRuby on Railsを単に「Rails」と呼ぶ
- サービスごとに作ったらそれはサービスであってフレームワークじゃないでしょw
LLでアート
(あとで書…かない)
キミならどう書く?
- Code Golfの紹介と投稿の寸評
- 西尾:LL Ringでジャンケン通信対戦のPythonコードをワンライナで書いたらPythonが変態的言語のように言われるようになった。変態なのは言語ではなくプログラマ(笑)
- どう書く.orgを運営している。短いだけが価値ではなく、異なる言語で互いの価値を認め合うことに意味があると考えている
個人的には各言語の代表(Yuguiさん、西尾さん、松野tokuhiromさん)の解説よりはやはりShort Codingのエキスパート浜地さんのコメントが興味深かったので以下に列挙。
- Hole2:6bit目を落とせばASCIIでは大文字になる
- Hole7:ddとlsを使ってバイト数をHuman Readableにするシェルスクリプト。それは肝心の処理を自分でやってないだろ!w
- Hole8:Rubyの例。括弧ではなくメソッドコールを使う。マッチ対象を省略するとデフォルトで$_。組み込み変数は中括弧を省略してembedできる
a*(b+c) => a.*b+c /foo/=~$_ => /foo/ /#{$.}/ => /#$./
感想
- Yuguiさんがすごい切れ味で会場の笑いを独占していた。Yugui、恐ろしい子。
- shinh、恐ろしいゴルファー。Rubyのあんな仕様をどこで知るんでしょうか?と聞きたかったが空気読めてない質問だと思われたのでやめた
- Rubyにループカウンタがあるといいですよね?というのはそのとおりだと思った。
loop do |i| puts i end
とかね。
古い言語、新しい言語
- takesakoさんがお家芸のppencodeデモで笑いを取っていた。いつ見ても変態的
- Tamarin=ActionScript VM。Mozillaへの組み込みを目指してAdobeがオープンソースにした
- 古い言語は構文解析技術が未熟だったことと、計算機能力が低かったため、人間が機械に合わせることを要求して計算機にやさしい言語仕様だった
- orto=Java on JavaScript。JavaScriptはシングルスレッドなので、setTimeoutでOSに制御を渡してマルチスレッド化している
- Javaバイトコードを処理(圧縮とか)するJavaScript+末尾にバイトコード、というコードをブラウザに読み込ませて処理している
- 読み込み高速化のためにいろいろ工夫している
- バイトコードを1つずつswitch構文で処理している(!)
- 竹迫:GoogleのGWTとはどう違うのか
- GoogleのGWTはJavaのソースをJavaScriptに変換する。いろいろ制約がある
- iPhoneでortoを使ってテトリスが動いたというデモムービーが海外にある。でもキーボードがないのですぐゲームオーバー(笑)
- JSLogo、JSRubyの紹介。HTMLの中に埋め込んだソースをDOMで取得してparseしている
- HotRuby。YARV on JavaScript。YARVのバイトコードをJavaScriptで処理する。RubyからActionScriptのライブラリを呼んでFlashを動かすのをHotRuby上でデモ
- ECMAScriptはいろんな言語のパーサとしてブラウザ上で動いている。Webのマシン語という感じになってきている
- Adobe Openscriptプロジェクト。SWFファイルのプレイヤーを作ること、解析することが解禁された。→AIRで動くプレイヤーのデモ
- ActionScriptにはevalがないので、自分のソースを自分で実行できない。→ActionScript1を動かすActionScript2で作ったパーザのデモ。コンパイラコンパイラではなく、パーザを自作した
- LLVM。低水準命令セットのVM。各種アーキテクチャ用のプログラムを読み込み時から終了までライフサイクルを通じて最適化し、機械語を吐き出す仕組み。ブラウザへの応用の目もある。特定の言語に限らない可能性がある
- 例:Cのソース→LLVMバイトコード→ActionScriptバイトコードのように変換する。C言語をブラウザで利用することが可能。安全なSandBox上で実行できる。実のところ、最適化される分だけActionScriptで直に書くよりも実行速度が速い
- llvm-gccというものが既にある。VM用のバイトコード出力部分だけがオリジナルで、あとはまんまGCC。非常に楽ちん
- 竹迫:ブラウザで他の言語を動かして意味あるのか、未来が開けるのか?
- サーバとクライアントで同じ言語を使えばプロセス間通信などの可能性がある。
- Mozillaへ、従来の低速なSpiderMonkeyに代わるものとしてTamarinを移植しようとしていたが、Tamarinにも不足しているものがあり、そこはSpiderMonkeyから部品を取ってきて繋ごうとしていた。しかしそれらの部品の他との結合が強く難しいことが分かってきて、いっそSpiderMonkeyにないJITの部分だけTamarinからとって来ようということになり、現在はTraceMonkeyとして実装されている。その成果としてMozilla Firefox3.1からはJavaScriptが従来より早くなる予定
- C→LLVM→JavaScriptということも可能。バイトコードを経由するため元のCソースよりもJavaScriptの処理が回りくどくなるが、LLVMで最適化することによってCとほぼ同等のJavaScriptコードになる。
- VMでデバイスの制約を開放して、自由なプログラミング環境を実現しよう
感想
- takesakoさんが自分でしゃべりすぎたため、パネリスト全員アウェイ感が漂っていた
- いっそ1時間半全部takesakoさんがしゃべってもよかったのでは
- HotRubyのテストはすげえ変態的だと思った。最初からActionScriptで組むほうが開発効率よさそう…そこでLLVMですか。なるほど
ライトニングトーク
- オブジェクト倶楽部からドラを借りたら、kakutaniさんがドラ娘も一緒に輸出しましょうかと言ってくれた。kakutani++
- twitterで人工無能。twitterは一言だけでいいので人間と誤解されやすい。なるほど。
- dashmark。client side database storage。自分ひとりしかDB使わないので好き放題。いや、SQLite使ってる時点で好き放題ですって。…あ、この人がt_traceの中の人なんですね。ふーむ。分かりやすい資料で闊達にしゃべっていたが時間切れ
- RubyでNario。全てがオブジェクト。ダッシュにこだわる。肝心のデモで死にまくり。だんだん熱中してきて「よしよし!」を連発。場内大ウケ。しかし死ぬことを予想して発表時間に余裕を取ってあったのがさすがだと思いました
- Pit。アカウント管理ツール。ソフトウェアに使うテスト用とか本番用とかのユーザ名とパスワードを管理する。yoshioriさんのプレゼンを初めて生で見たと思うがすごい面白い。ダンコガイコガイダンとか、ユーザー名とパスワードを書き換えて、とか、言葉を繰り返すことによるおかしさをうまく利用して、しかも使いすぎない。うまい
- Unbabel。島根は鳥取の左。LLにLLを埋め込む。Unbabelプロトコルさえ実装すれば他の言語から使ってもらえる。Ruby-Scheme-RubyとかRuby1.8-Ruby1.9とか変態的なサンプルを連発。Brainf*ckをサポートしたいそうです(笑)プロトコルさえサポートすればどの言語とか気にしないでいい、というのはすごいなと思った。RubyからCPAN使えるようになるってことだよねつまり?
- 自走式Webサーバ。ThinkPadがラジコン四駆の上に載っていて、iPhoneをリモコン代わりにして走る。Ruby on RailsでチョロQ走らせてた人なのね。素晴らしい才能の無駄遣い。
- Grass。wWvの3文字だけで言語を実装。プログラミング言語の作り方のデモだったはずが徐々に有名になってしまった。formalismを推進してWebアプリに進出を狙う。がんばってください。具体的にどうformalismなのかはこのへんの下のほうにあり
- SciLab。MATLABのオープンソース版という理解でいいか?プログラミングコンテストが開催される。優勝商品はフランス旅行だが、去年の参加者は6人だった(笑)今年は10人くらいになるといいな
- NewtonScript。どうでもよさそうな細部の説明で時間切れになり、どこがどう「もう一つのプロトタイプ指向」なのか全然分からなかった。テーマと内容が違いすぎ
- Galinna。めんどり。OCamlライク、対話環境あり。言語内で静的検証が可能。証明が必要だが、それがあればテストは不要。OCaml、Schemeなどの関数を生成する機能がある
- 並列Haskell。説明が細かすぎて時間切れ。何も残らなかった。NewtonScriptもそうだが、何が言いたいのかよく考えてから資料作ったほうがよさげ
エンディング(感想)
- 抽選当たらなくて残念
- というか1階席の後ろ半分にはボールが全然飛ばなかった。来年は抽選方法を再考すべき
- Larry Wall筆のラッキーボールを引き当ててLarry Wallの直筆サイン入り「初めてのPerl」をLarry Wallその人から贈呈された、日本で一番羨ましいヒトがPHP使いというこの皮肉な現実。ちうか俺と代わってくれ!もしくは今すぐPerlに宗旨替えしてくれ!
- エンディングの最後に来年の開催場所告知があると期待してずっと待っている人が結構たくさんいて(俺もそうだが)ワロタ
- きちんと最後に告知を入れる運営スタッフも素敵
- でも場所は…ねえ。ちょっと意外性に欠ける気も
- まあ来年また満場にして次は武道館(無理