Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

LL魂の実況中継


今年も参加しています。適当に実況します。


(8/8 追記。id:SumiTomohikoさんがすばらしいまとめを作ってます。こちらもぜひ。)


10:30 基調講演 - ハッカー気質について / 和田英一さん

  • hackとは・・・playful 遊び心で
  • hackerとは・・・to be described as a hacker by others (他人にハッカーだと認めてもらう) が better
  • ハックは自己表現。チームで作る互いのものではない。四苦ハックして行う
  • 楕円を書くコンパス・・・円錐を斜めに切ると楕円になることを利用。影絵で説明(笑)。
  • ケルミンの積分機、兆候予測機、微分解析機*1
  • Niemanのトルク増幅器・・・Input軸の変位をモーターの力で増幅させる。牛の鼻輪を引くと、痛がって同じだけ牛が動くのと一緒(サーボモゥター)
  • flipflopで音階を出す・・・ビットシフトにかかるクロックがシフトする数で決まるので、それを利用。teletype にかかる200msを、1音の単位とできた
  • Willem van der Poel の PDP-8 Lisp のコーディングはすごいらしい。全部読んだそうです。
  • 質疑応答
    • 「二点を糸で結んで書く方法の方が優れているのでは?」「糸から鉛筆がはずれて難しい。でも、あの機械も難しい。」
    • ハッカーは使いにくいものを無理矢理使うもの??」「好きだから使う」
    • ハッカーになるには?」「人によって色々。」
  • 楕円を書くコンパスの先に、サーボメカニズムを入れると改良できます(笑)

11:35 Language Update

  • Perl / 小飼 弾さん
    • Perl 5.10 について (今のPerlは、5.8.8)
    • 今年のリリースは、 5.8.9 、 5.10 、 6.0
    • feature プラグマ use feature qw/say switch/; or use 5.10;
      • レキシカルで使える
      • // (||と似ているが、 defined な判定)
    • 時間切れでグダグダ・・・
  • Io / 浜地 慎一郎さん
    • プロトタイプベースのオブジェクト指向言語
    • 異様にシンプル。キーワード0(!)
    • ひな形をcloneしてオブジェクトを作る
    • クラスの継承とオブジェクト生成が同じ書き方ができる。
    • 余分な引き数は評価されないと言う仕様(!)を利用して、if文もメッセージにしている
    • 突然ガラッと変わる言語仕様
    • 多重継承可能
  • Clean / lethevertさん
    • 開発効率も実行効率もLightweight
    • 入出力はモナドではなく、一意型。一度しか実行できない
    • 動作が軽い。上位。
    • 最新版は Clean2.2 。 Intel Mac はまだサポートされてない。
    • コンパイル方式。WindowsにはFamkaと言う対話環境
    • 3000行でゲーム。Webアプリは? ・・・ iTask、CGI
    • プリプロセッサ・・・lethevertさんが個人的に開発しているCleanX。
  • PHP / Seiji Masugataさん
    • 4系と5系の開発が進んでいる。4系はほぼ集結。
    • 5.2.x → メモリマネージャの改善
    • PHP6 → 名前空間の拡張。
    • Zend Framework のプロダクションバージョン
    • PHPのバグ公開サイトや、PHP5への移行サイトの登場
    • 2の65乗問題
  • R / 樋口 千洋さん
  • Python / 柴田 淳さん
    • Sony Pictures Imageworks (CG会社)にて、Perlを抜いて利用されている
    • PIXARDREAMWORKSなど、CGの分野でPythonが作られている。PyQTによる、モデリングツールもある。
    • オールレンジ、業務で使える、10年使える、クリーンな言語仕様
    • 後方互換性が重視されている。ロードマップも明確
    • Python3.0 今年、α版がリリースされる。後方互換性が崩れる。
    • 2.6 は、3.0系の機能も実装される。2.9 くらいまでは出るだろう。2系から3系へ徐々にシフトさせる。
    • 勉強会やってるらしい。開発合宿・・・スキー場なのに誰も外に出ずorz
  • Lua / 上野 豊さん
    • World of Warcraftラグナロク・オンラインでも使われているらしい!? PSP関連も?
    • 小さいのが特徴
    • データ整理がしやすい。lua言語フォーマットのデータを作る。
    • Perlの@は難しい(笑)。Rubyはシンプルだが、仮装配列の取り扱いはLuaの方が簡単
  • Ruby / まつもとゆきひろさん
    • エンタープライズ。Matzサンタからクリスマスプレゼントがあるらしい。
    • 楽天フェロー、Rubyアソシエーション、Rubyビジネスコモンズ・・・エンタープライズ
    • Ruby2.0
      • 今年のクリスマス。YARV(高速VM。2〜500倍)、M17N(文字単位での操作。レガシーでの扱い)
      • ネイティブスレッド、マルチCPUのサポート
      • 複数VM
      • 遅延評価の導入
      • 名前空間関連の改良。バージョン違いのクラスなど
      • エラー検出。もしかして機能。
    • ここから笹田 耕一さん。
    • 松本さんは大嘘(笑)
    • 2.0じゃなく、次は1.9。2〜500倍は嘘。
    • 遅延評価なんてつかないw

12:50 ランチ

うなぎ(1600円)。久々に美味いうなぎを食べて大満足。

13:45 オレ様言語の作りかた

途中参加。昼が短過ぎると思う。。。

  • Xtal / 石橋さん
    • ライバルはLua
    • ゲーム向け言語? 途中参加だからようわからんが、プレゼンおもしろい。確信犯でしょw
  • Sukuna / 小原さん
    • Forth系。Joyの説明。簡潔さは力なり。
    • パッチのバグを修正しているうちに、楽しくなって言語作成(GikoForth)
    • Sukunaは、GCや無限リストをサポートしたForth
    • 実演。;; が多くて、かなり意味不明w
    • なぜ作る? 達成感、勉強、楽しい
  • crowbar, Diksam / 前橋さん
    • crowbarは、kmaebashi.comでのサンプル言語 (Perlのようなもの)
    • crowbarは開発休止中
    • Diksamは、kmaebashi.comでのサンプル言語(2)
    • バイトコードコンパイラはない(ベリファイアが難しい)
    • DVM(JVMのパクリ)
  • FizzBuzzの比較
    • cycle関数って面白いなあ
  • まつもとさんのコメント
    • Xtalイテレータ等がプリミティブに組み込まれている
    • C++OOPがかけるのはすごい
    • Sukunaのような無限イテレータはいい
    • crowbarやDiksamは、言語を学ぶって意味では良い
  • 名前の由来、なぜ作った、ポリシー
    • なでしこ / 花の名前、簡単な言語が作りたかった、手軽さ
    • Xtal / 宝石(eXTream Agile Languageとこじつけてる)、最新機能
    • Sukuna / 神話、Forthが好きだ
    • crowbar,Diksam / パールのような者,紅茶(javaに対抗)、車輪の再発明、Cに似せる
  • よかった部分、後悔してる部分
    • なでしこ / 日本語だから注目してもらえる。でも日本語。
    • Xtal / 最新機能なのに速く動く。悪い点はない。
    • Sukuna / 今回発表できた。悪い点はライブラリ。誰も使わないのにorz
    • crowbar,Diksam / 勉強になった。時間がかかる。作ると、使う時間がない。
  • まつもとさんのRubyの前の言語
    • 1989年。Rubyと関係ない
    • Classic というオブジェクト指向言語。「クラスっぽいC」
    • Pascalの様に、変数名の後に型
    • イテレータなどはすでにあった
    • Profile機能。privateなどの制限をかけられる。
    • Profile機能は使い物にならない。後のrubyに影響を与えている
  • 質疑応答
    • 「なでしこの"もし、そうならば"って?」「"そう"は$_です」
    • 「なでしこの表記ぶれへの対応は?自然言語への対応は?」「研究はしたいが、実用上完成しない。言語開発には妥協が必要。」
    • 大阪弁対応は?標準語は疲れる。秋田弁は?」「予約語を入れ替えるだけ。前向きに検討。」
  • これから言語を作りたい人へのメッセージ
    • なでしこ / 日本語言語を作って下さい。
    • Xtal / 馬鹿でも言語は作れるので・・・よろしくおねがいしまーーす!!
    • Sukuna / 自分の好きな言語を作って、絵のように見せ合えるといい
    • Diksam / できるだけ小さな言語を作り、拡張すべき
    • Matz / 使う人を思い浮かべて作ること。思うよりは簡単なので、やってみて欲しい。生き残った奴が世界に旅立っていく。

15:30 VM

  • LLを、 java .NETVM 上で動かす
  • Jython / 西尾さん
  • Rhino + Groovy / 鈴木さん
    • 1997 Javagator (JavaのPureブラウザ) 用の JavaScript エンジン
    • 1999 Mozilla から Rhino リリース
    • PureなJavaScriptエンジン
    • 注意: JavaJavaScriptのクラスは違う
    • 例: サーバとクライアントをJavaScriptにする
    • で、Groovy
    • JSR241 JavaSE7に含まれるかも? → JRuby に抜かれる
    • Ruby にインスパイアされている
    • MOP、マッピング
    • 問題点: クラスを呼ばないと、関数を実行できない
  • JRuby / 高井さん
  • IronPython / 荒井さん
  • Pnuts / 戸松さん
    • 9年くらいが経過。独りで開発
    • Luaがライバル(!)。JVMとの親和性とシンプルさ、速さ
    • Javaでできるものがメイン
    • なぜVM? ・・・ GC, JIT, Fast Locking, Security, 移植性の恩恵を受ける。
    • ただし、JVMとLLの間の仕様のミスマッチが起きうる
    • LLは生き物で、発生したり死んだりを繰り返す。新しいLLは古いLLのいいとこを取り込む。
  • LLを使いたいだけなら、VMは不要では?
    • RhinoJavaの機能を使いたかったから
    • PnutsJavaのテストツールとして始まった。main()関数を書くのは嫌だ。
    • JRubyRubyが好きだった。Javaに別のパラダイムをいれたかった。DSL等。
    • Jython。コンソールからJavaを読むのは面倒。javaの人にLLの良さを気がついて欲しい。
    • IronPythonコンパイルしない価値を、.NET上で表現できる。手軽に試して、不要なものを捨てられる
  • ネイティブのLLと比べると、どうなの?? バグは?
    • JRuby。オーバヘッドはある。が、初期化など、オーバヘッドの許容できる部分では実用的。
    • IronPython。ファーストクラスの環境になると思われる。ASP.NETの対応言語になっていくだろうと予想
    • Grooby。大人数でやるのならJavaはいい。一人でやるならLLは向いている。これらの共存をする。大きい根幹はJava、末端は一人でLL。
  • いびきがすごくなってきた(笑)
  • プロトタイピングについて
    • 鈴木さん「LLはプロトタイピング。方向性が決まったら、Javaで行く。昔のsmalltalkも?」
    • 高井さん「日本はRuby、インドでJava、ってのは暗い。Rubyでそのまま動けばいい」
  • Pnuts をビジネスで使いたいって話は??
    • サーバサイドや、ユーザから見えにくいところ。
  • Pnutsはどのくらい速いの??
    • JVMの有効活用により、速くしている。JRubyよりもちろん速い
  • IronPython は c-python より速い? ほんと??
  • IronPython .NET が駄目なことを証明するために作られたけど、速かった??
    • いろんな手段を試して、最速の方法を実装している。VM側にもフィードバックしていく。IronPythonのために.NETも進化する
  • Java陣営は? JVMはLLにあわせて進化するの??
    • 戸松さん「PnutsJVMのボクシング等の仕様の影響を受けて速度の制約を受けている。不便ではあるが、JVMの制約の元で色々考えている。JVMの仕様変更は難しい。利用範囲が大き過ぎる。」
    • 戸松さん「LLはどうしても動的なメソッド探索が必要で遅い。だが、JVMの命令に動的呼び出し命令を追加すると言う話があったが、反対した。実装でカバーできるので、JVMに命令を加えるのはいいアイディアではない」
  • JVMが突然ダイナミックになったりする?
    • 戸松さん「なったりしないことを願っている」
    • 高井さん「AOP等の、バイトコードエンジニアリングが発達している。その先の最適化で駄目な時に、初めてJVMの見直しが必要」
  • JVMと.NETのライバル心はあるのか??
    • 荒井さん「RoRIronRuby上で動かしたい。どんなプラットフォームでも動くべき。ただ、IronRubyのプレアルファ版は実装としてはまだまだ」
  • 開発者リソースの奪い合いをしているのが心配
  • 話ではGroovy だったのに、 Rhinoが入ってるのはなぜ??
    • 安全な実装が選ばれた。JavaScript1.5が動くのは魅力的だが、開発環境としては弱い。
  • JRubyは戦略的に流行らせようとされている??
    • Rubyと名前を出すと、資金が出やすい(笑)。熱意的な人がいる
  • Java7にJRubyはつく??
    • 鈴木さん「多分つかないでしょう。制約が厳しい。」
    • 高井さん「Rubyは実装と仕様が一緒になっている。JRubyの人も困っている」
  • 質疑応答
    • JRubyコンパイル手段として、ASMってのは本質的じゃないのでは?」「本質的ではないですが、最適化と言う面ではASMが原因な気がします」
    • IronRubyの実装はソースを見ないとできない。MicroSoftOSS のソースを読むと即解雇という噂がある。ほんとなら、どう実装しているのか」「Matzさんと制作者間で取り決めがある。そこから言語仕様を起こしている」
    • 「その言語仕様を公開すると言う話はないのか??」「話は未定だが、社員であれば見れる。存在することは証明する。公開できるかは不明。」
    • 「ほんとうにOSSを読むとクビ?MicroSoftでもOSSをやろうとしているのでは?」「ライセンスによっては問題ない。商用で販売するような製品のOSSは読むとまずい。知的財産の入り込みを防いでいる」
    • 「DLRを利用して、サーバ上とクライアント上で同じ言語を使うという方向性はあるのか」「やりたければなんでもできる。VM上でライフサイクルの長いものを動かすと、JITGCに悪い影響を与える可能性がある。色々試してから実施したい。」

17:30 キミならどう書く ?プレゼンソフトを作る?

  • OCaml / 小笠原さん
    • OCamlとは? ・・・ 静的な型チェック、型推論、関数型とオブジェクト指向の融合、コンパイラが高速コードを出力
    • どう書くか ・・・ Cairo を利用(gtkのバックエンド)、チャネルシステム? ロック不要のマルチスレッド(アニメーション用)
    • チャネル間でだけ情報をやりとりする
    • 質疑応答
      • 「絶対やりたかったことは?」「マルチスレッドと、ガベージコレクション。」
      • 「プレゼンは一般の人が使える??」「HTMLと似たものなので、利用可能でしょう」
      • 「スレッドはネイティブスレッド?」「内部ではネイティブスレッドだが、GCのせいで実際はそうではない」
      • 「オブジェクトの書き換えを、他のスレッドから見る時に排他制御が居るのでは?」「破壊的代入を行わないように組むとよい」
  • JavaScript / id:amachang
    • WEBでプレゼンを共有したい。KEYNOTE?PDF?
    • HTML + JavaScript ← SearchEngineに見つかりやすい、Crawlerが理解できる、セマンティックWeb
    • JS は重い。軽く作るのが重要
    • シンプルなHtmlを書く。JSONで動きを定義する
    • インデックス機能をプレゼンにて実装 ← すごい
    • X Browser、ブログパーツにできる
    • 諸々の高速化
    • src="//:" ・・・ IEでの高速化。バグ?
    • 質疑応答
      • 「いつ使える?」「そのうちブログで公開されると思います」
      • 「Peramalink はあるの?」「Cookie に どこまで見たかはあるが、Parmalinkはない。」
      • 「プレゼンのソースを見せて」 → divでページを書いてく感じ
  • XUL (ズール) / 下田さん
    • 高橋メソッド in XUL (既製品。今回の開発はなし。)
    • XUL の利点 ・・・ 気軽、豊富なウィジェット、実行環境がGeckoなので、独自拡張使いまくり
    • リロードしても、自動復帰
    • wikiっぽい文法 + CSS。文字サイズを自動調整
    • 英語、中国語、韓国語に翻訳されている
    • 質疑応答
      • 「影付き文字などに対応する予定は?」「対応してもいいです」
      • 「プレゼンのソースは?」「テキストファイル」
      • 「新作はどんなのにする予定だったのか?」「作らなければいけない理由を知らなかった」
      • 「入手先は?」「ダウンロードして下さい」
  • Java / 西本さん
    • 3D CMS を利用。プレゼン専用ソフトではない
    • 3Dコンテンツを簡単に扱えるCMSFlashJava Appletを利用
    • HTTP Comet による、遠隔プレゼン。3D機能もプレゼンから使える
    • 画像、音楽、3D画像の利用が可能
    • HTML Slidy を利用、Java Appletを利用
    • サーバはREST API により、ブラウザに返す
    • クライアントは、Page クラスだけ書けば通信や表示はライブラリがやる
    • JavaEoD関連の解説。
    • IDEがLL的な効果を持っている
    • 質疑応答
      • 「ヘビーウェイトでは?」「はい、そう思います。最終にはECMAで書くのが目標。」
      • 「どうやってプレゼンを書く?」「ブラウザから、wiki記法で」
      • トランジションは?」「未実装です」
  • Gaushe / 小黒さん
    • LISP の一種。
    • R-Slide
    • Gaushe のインストールが難しいので、WEBアプリで
    • かつてのOHPを目指す
    • 別画面(URL)から、スライドを操作する。
    • VNCプロトコルを利用している。FlashVNCクライアントを利用
    • 複数レイヤを持っている。c-wrapperでimagemMagickを利用
    • Slide上でSchemeも動かせる。
    • R-Slide にtelnetして、操作可能
    • Lingrのチャットも表示(笑)
    • 絵は、グラフィックファイルらしい。検索は全くできない
  • 一般の人が使えるプレゼンのアイディア
    • XML・記法で動きの定義は難しい。オーサリングツールが必要。
    • 期間が短くて無理
    • グラフィックは作りやすい。(OHP的な発想。)
  • かかった時間は?
  • 「高橋さんは高橋 in XULを使うのか」「評価はしたが、字が思ったより大きくならなかった」
  • 「スライド巡り以外のプレゼン手法はないか?」「JavaScript的には、逆に頑張ってスライドっぽくしている。」

19:20 Lightning Talk

  • PRaggerでピザが頼めるようになるまで / 斎藤さん
    • takesakoさんがまとめたらしい
    • Ever Quest2 /pizza コマンド
    • (1) WWW::Mechanize に利用 → 失敗
    • 原因。ピザハットのサイトが、パースできないほどひどいHTML
    • (2) ピザハットがその後、XHTML化された。 → 成功!
    • PRaggerはリリース間近
    • デモ。現在、ピザ宅配中w
  • 外付けwebフレームワークflowr / 中谷さん
    • JavaScriptで、機能をサイトに貼付ける
    • モノポリーごっこ。ブログをマスに見立てて、記事を購入。TBとは違うBlog間連携。
    • 続きはWebで・・・公開はまだ。DSLとか文字が見えたなー
  • オープンソースウィジェットエンジン「Mashed Potato」(を作ります><) / 大崎さん
  • WebDB開発特化型言語Alinous-Core / 飯塚さん
    • WebアプリのDB向けのDSL (オレ言語)
    • 4ヶ月で開発
    • Eclipse プラグイン
    • .htmlと.alnsファイルを用意する
    • HTMLのテキストマクロに埋め込む
    • Java実装も呼べる
  • __init__.php? 変態的国産PHPフレームワークrhaco / 露木さん
    • django-ja の人 スパム親分。
    • php のライブラリ
    • 諸々機能の紹介
    • id:rhaco が作っている。hentai++
    • rhacoはカエルの学名らしい
    • Python の機能を取り入れている。__init__.php や doctest、mix-in
    • 次回django勉強会 8/25 サイボウズラボにて!
    • 時間切れ
  • VM魂に入れて貰えなかったJavaFXScript / 庄司さん
  • Power of Scala / 水島さん
    • オブ言語、JVM上で動作
    • 静的だけど、ダックタイピングっぽいのが可能
    • match構文
    • 遅延評価
    • 暗黙型変換をユーザ定義
    • 正規表現
    • Scala is great
    • Onion という言語を作ってるそうです
  • Lispのオブジェクトシステムの概要 / 鈴木さん
    • WnnLisp版、eggの全身
    • Lispは楽しいけど、楽しい時期は終わってしまう
    • JavaとかUML ・・・ つまらないけど頑張ってます(笑)
    • Flavor の仕様。アイスクリームから来たらしい。基底はバニラクラス
    • Mix-inの語源もアイスクリーム
    • Rubyいらないのでは?w
    • 時間切れ
  • Coq 定理証明という選択肢 / 今井さん
    • Coq は、定理証明ツール。
    • プログラム開発 → 正しいことの証明 → プログラムの抽出
    • Coqは、大切なとこだけで使う
    • WEBアプリを作り、SQLインジェクションが起きないことを"証明する"*3
    • にわとり小屋でのプログラミング日記
  • D4R - DirectX for Ruby / 高野さん
    • ゲーム制作をしたいので、作成
    • DirectX以外のライブラリ不要。直接DirectXを呼ぶので高速
    • Window, Resource, Graphics, Input, Sound 等のクラスがある
    • 使い方の説明
    • デモ。今後ソース公開予定。マスコット募集
  • イメージファイト! / 竹迫さん
    • GIFの中にもPHPコードを埋め込める。HTMLかを見ていない。
    • IEは、画像ファイルでもタグっぽい文字があると実行してしまう
    • 対策(イメージファイト)。画像のサニタイジング
    • コメント削除、再エンコード
    • サニタイGIF ・・・ 攻撃者の意図を無効にする文字列を挿入
    • Apacheモジュールがあるっぽいです。聞き取れなかった。
  • Javaより速いLL用テンプレートエンジン / 桑田さん
    • Tenjin。Velocity よりも速い
    • 他言語で利用できる、LL向けのテンプレートエンジン
    • 言語に酔って、テンプレートの書式が違うっぽい
    • プリプロセッサ機能 ・・・ 毎回固定の文字列を、処理前に埋めておく
  • C++のためのx86 JITアセンブラ xbyak / 光成さん
  • じゃ、どう書く? / 西尾さん
    • こう書く課。こう書く機動隊。
    • ja.doukaku.org (抹茶ムース色)
    • コードを読んで、書くことが上達への道
    • お題を考えるのが大変
  • ピザ来た?? Mobile3.0?

20:25 今年もボールで抽選

  • はずれ。帰宅。おつかれさまでしたm(_ _)m
  • 来年の予告。場所も日程ももう決まってるみたい。

*1:原理はよくわからなかったorz

*2:コメントにもあるけど、これはこの説明だけ聞いた段階での感想であって、完全に誤解。IronPythonの話を聞くつもりが、DLRから.NETを含んだMSの未来の構想の話に膨らんでたので、そう聞こえてしまったんだと思います。最後までこのセッションを聞いて、MS陣営がOSSへ注力し始めてるのは素晴らしい流れだと感じました。

*3:その証明が大変(笑)