Lightweight Language Spirit 2007報告
2007年8月4日に、Lightweight Language Spirit 2007が開催されました。これは、その報告です。なお、以下では敬称は省略させていただきます。
概要
イベント名 | Lightweight Language Spirit 2007 |
---|---|
日付 | 2007年8月4日 |
場所 | 日本教育会館3階 一ツ橋ホール |
主催 | Lightweight Language Spirit実行委員会 |
タイムテーブル
以下は当初の予定ではなく、実際のタイムテーブルです。Language Updateの終了時刻が、予定より10分遅れました。
開始時刻 | 終了時刻 | プログラム名 |
---|---|---|
10時30分 | 11時30分 | 基調講演 |
11時30分 | 12時50分 | Language Update |
13時30分 | 15時00分 | オレ様言語の作りかた(パネル) |
15時30分 | 17時00分 | VM魂(パネル) |
17時30分 | 19時00分 | キミならどう書く 〜プレゼンソフトを作る〜 |
19時20分 | 20時20分 | Lightning Talk |
20時20分 | 20時30分 | 抽選会、エンディング |
書籍の販売と展示
会場外の通路には各出版社が書籍を販売しており、プログラムの合間の休憩時間に購入することができました。10%割り引きを行っていたり、特典をつけている出版社がありました。また、近日出版予定の本も含めて、様々な本が展示されていました。
基調講演「ハッカー気質について」和田英一(東京大学、株式会社インターネットイニシアティブ技術研究所)
- Lispがあれば充分
- ハッカーとは何か
- Steven Levy, "Hackers: Heroes of the Computer Revolution", Penguin USA
- MITの模型クラブ
- 1973年のMIT
- エレベータに乗ったらボタンをいじって9階まで止まらないようにしていた
- 帰る前にコンピュータでエレベータを呼んだ
- Gerald Jay Sussman, Julie Sussman, Harold Abelson, 「計算機プログラムの構造と解釈」、ピアソンエデュケーション
- コンサイス・オックスフォード英英辞典
- レンガを乾かす板など、不明
- Hacker's Dictionary
- hack
- 下手でも必要なものをすばやくつくれる
- 上手に必要なものをすばやくつくれる
- 遊び心 (playful)
- hacker
- 自分でハッカーだというのはよくない
- hack
- Hackに値する仕事
- Hackは個人の表現(「計算機プログラムの構造と解釈」)
- 四苦八苦
- Steven Levy, "Hackers: Heroes of the Computer Revolution", Penguin USA
- ハードウェア
- ソフトウェアハック
- 1959年
- PC-1(パラメトロンコンピュータNo1)
- flip flopを利用
- flip flopにスピーカーを接続する
- flip flopをsetすると、スピーカーのコーンを押す
- flip flopをresetすると、スピーカーのコーンを引く
- set, resetの時間を調整してドレミファソラシドを鳴らす
- PC-1(パラメトロンコンピュータNo1)
- hackerの例
- 1959年
質疑応答
- レオナルド・ダ・ヴィンチは、2つの点からの距離の和が等しいという、数学的に正しい楕円の引き方を知っていたか?
- その引き方は難しい。レオナルド・ダ・ヴィンチのコンパスも難しいのでは。
- ハッカーは使いにくいものを使うもの?
- 慣れ。やみつきになる。
- 1931年
- 最初の微分解析機
- お薦めのソースコードは?
Language Update
Perl "An Ordinary Perl 65.10 Guide" 小飼弾
- Perl 6 Makes You Extraordinary
- 今年の10月
- 2002年 5.8.0
- 2006年 5.8.8
- 今年
- 5.8.9
- 5.10
- 10月
- 6.0
- 仕様が今年決まる
- 5.10の新機能
- featureプラグマ
use feature qw/:5.10/
-
-
- レキシカルスコープ
- say
- putsより1バイト短い
- err
-
$c = defined($a) ? $a : $b;
-
-
- 下のようになる
-
$c = $a // $b;
-
- state変数
- given...when
- switch
- 正規表現
- trie最適化
- perldoc perl595delta
- http://www.dan.co.jp/~dankogai/llspirit2007/perl5.10.html
Io 浜地慎一郎
- Steve Dekorte
- シンプル
- 手続き型言語
- プロトタイプベース (JavaScript, Self)
- キーワードの数; 0
- なんでもメッセージ
- 不必要な引数は評価されない
- 例外
- ガラッと変わる言語仕様
- 膨大なアドオン
- 多重継承
- Concurrency
Clean lethevert
- Haskellとよく似ている
- オランダ、Rinus Plasmeijer
- モナドを使用しない
- 一意型
- 2回以上アクセスできない
- Language shootout (http://shootout.alioth.debian.org/) でトップクラス
- 実行効率がよい
- Clean 2.2が最新
- コンパイル方式
- Famkaという実験的シェル
- ゲームが3000行程度で書ける
- iTaskというClean
- 開発効率
- 自動カリー化
- 遅延評価
- プリプロセッサ
- CleanX
- 今なら何をやっても世界初
PHP Seiji Masugata (Japan PHP User Group)
- 3ヶ月ごとに定期リリース
- 2007年9月に5.2.4リリース予定
- 4.4.xは放置
- 5.2.x
- モジュール追加
- Filer
- JSON
- Zip
- モジュールアップデート
- メモリマネージャの改良
- モジュール追加
- PHP 6
- 名前空間
- 関数とクラス名のみ
- 名前空間
- Zend Framework
- Production Release
- 1.0.1
- the Month of PHP Bugs (http://www.php-security.org/)
- go PHP5.org
- 叩かれる宿命
- PHP Conference 2007
- 2の65乗
R 樋口千洋(大阪府立大学生命環境科学研究科)
- S言語とSchemeのセマンティクスの一部を融合
- 2.5.1が最新
- Linux, BSD, Mac, Windows
- http://www.r-project.org
- 対話環境
- 多数のパッケージ
- オープンソース
- バージョンアップが頻繁
- データはベクトルが基本
- 以下はベクトル
(a <- 1)
- オブジェクト指向
- 組み込みデータ
- データマイニング
- バイオインフォマティクス
- 内部ドキュメントを持つ
Python 柴田淳(Webcore株式会社、日本Pythonユーザ会)
- PYTHON CONFERENCE
企業で使用される頻度 ^
_____ __ Python |
__/ __/ |
__/ __/ ` Perl |
__/ |
__/ _______ |
/ / ` Ruby |
____/ |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- > 年
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- オールレンジ言語
- 実務に使える
- ロードマップ
| |2.5 | 2.6 | 2.7 | 2.x|---->+----------+----------+->------->| ユーザ|-----+- | | | | | `--------+ | | | | |`------ | | | | | 3.0 `->| 3.1 | 3.x|-----+----------+----------+->--------+-> | 2007 2008 2009 2010
-
-
-
- 2.6には3.0の機能の一部が含まれる
-
-
- 安心して使える
- 世界でメジャー
- 書籍
- コミュニティ
- 開発合宿(2007年3月)
- 勉強会
- 大規模イベント
Lua 上野豊(独立行政法人産業技術総合研究所)
- World of Warcraft
- ラグナロクオンライン
- Adobe Lightroom
- SciTEテキストエディタ
- LuaPlayer
- テーブル
- 小さい
- http://www.cbrc.jp/GUPPY
- マウスカーソルを円状に動かすとスクロールするデモ
- データファイルをLua言語で表現する
- 思想空間を実現する(昔のアスキー)
オレ様言語の作りかた(パネル)
パネラー
舞台に向かって左から、
言語 | 名前 |
---|---|
(司会) | 高橋征義(日本Rubyの会) |
Ruby | まつもとゆきひろ(株式会社ネットワーク応用通信研究所、楽天株式会社) |
Xtal | 石橋立宣 |
なでしこ | クジラ飛行机(ウノウ株式会社) |
Sukuna | 小原広之 |
crowbar, Diksam | 前橋和弥 |
議論
- 各言語について
30に5を足す
-
-
- 引数をスタックに積む
- インデントでブロックを表す
- 関西弁サポート
- GUI作成が簡単
- JavaScriptの無名関数
- プログラムの雛型
- 可読性が高い
- 敷居が下がる
- スーパー小学生
- スーパー定年退職
- 図書館の蔵書管理
- 英語だと作る気がしなかったが、日本語だから作る気になった
- 歯医者さん
- 小さなプログラムなら一番楽
- 葵
- Xtal(クリスタル)
- Sukuna
- Forth系
- Forthとは?
- Charles H. Moor(1970年)
- スタック系言語の祖
- 電波望遠鏡の制御
- 後置記法
- Joy(2001年)
- Manfred von Thun
- Concatenative言語
- 式の連結 = 関数の合成
- オレ様言語への道1
- Mops
- MacOS X移行時に不安定
- ライブラリを書く
- バグ
- 自分でつくった
- GikoForth(2001年)
- GCなし
- 型なし
- ポータビリティなし
- 遅い
- Mops
- オレ様言語への道2
- とくかくつくりたくなった
- BrainF*ckを参考に
- 2003年
- ほぼForth
- ブロッククロージャ
- MixIn
- 静的型チェック
- GC(保守的)
- ダメなところ
- Open Classじゃない
- ライブラリ貧弱
- コツコツつくる
- 小さな達成感
- やくにたたなくていいじゃない にんげんだもの
- crowbar, Diksam
-
- FizzBuzz
- まつもとからのコメント
- 言語を作る際のポリシーと名前の由来
- 満足しているところ、不満なところ
- なでしこ
- 満足しているところ
- 日本語であること
- 変わっている
- 注目される
- 不満なところ
- 日本語であること
- 満足しているところ
- Xtal
- 満足しているところ
- 速く動く
- 不満なところ
- ない
- 会場から拍手
- ない
- 満足しているところ
- Sukuna
- 満足しているところ
- 今日呼ばれたこと
- 不満なところ
- ライブラリを3回くらいつくり直した
- 満足しているところ
- crowbar, Diksam
- 満足しているところ
- 勉強になる
- 不満なところ
- 時間がかかる
- つくっていると使っている時間がない
- 満足しているところ
- なでしこ
- まつもとの日記
- まつもとの昔の言語
- 1989年
- Rubyの4年前
- Classic
- ClassっぽいC
- 1989年
main() { for (i: int = 1; i <= 100; i++) { if (i % 15 == 0) { print("FizzBuzz\n"); } else { :
for (i: int in array (1, 2, 3)) { }
a: array = array new(1, 2, 3);
-
- メソッド呼び出しの"."をスペースにできる
- "array new"は、"array.new"と同じ
- メソッド呼び出しの"."をスペースにできる
class foo: superFoo, superBar { bar(i: int): string { } }
質疑応答
VM魂(パネル)
パネラー
舞台に向かって左から、
実装 | 名前 |
---|---|
(司会) | 星暁雄(コモンズ・メディア株式会社) |
Jython | 西尾泰和(サイボウズ・ラボ株式会社) |
Rhino, Groovy | 鈴木雄介(アークランプ) |
JRuby | 高井直人 (recompile.net) |
IronPython, IronRuby | 荒井省三(マイクロソフト株式会社) |
Pnuts | 戸松豊和 |
議論
- JavaVMと.NETのVMを対象とする
- 昔
1960年から1980年 | 事務処理、COBOL |
1991年 | VisualBasic |
1993年 | クライアントサーバ |
1994年 | Netscape Navigator |
1995年 | Java |
年 | 出来事 |
---|---|
1995 | Java 1.0 |
1997 | JPython |
AspectJ | |
2001 | Jython 2.1 |
2003 | Jython 2.2α |
2005 | IronRuby. ライバル登場 |
2007 | Jython RC3 |
-
- 結論
- Jim Huguninすげー
- IronPythonがおすすめ
- ウィンドウを開くデモ
- 音を出すデモ
- フィボナッチ数を楽譜にするデモ
- 結論
- Rhino
- 名前の由来
- O'Raillyのサイ本から
- JavaのウェブブラウザJavagator
- 中止
- Rhinoを中止するのを忘れた
- 1.6R6
- 年1〜2回メンテナンス
- JavaScript 1.5
- DOM, alertなど、ウェブブラウザによる機能はない
- JavaのStringとJavaScriptのStringは違う
- lengthメソッドとlength属性
- 自分でScriptableをつくる
- 問題点
- サーバもクライアントもJavaScriptで、どちらを書いているのかわからなくなる
- Javaと連携しにくい
- 名前の由来
- Groovy
- JRuby
require "java"
-
- 3つのVMを備える
AST -+-> バイトコード (ASM) | +-> YARV中間コード | +-> Rubinius
Java -+ | +-> Javaバイトコード -> JVM | Ruby -+
+------------------------------+ |ManagedVB, MnagedJScript | |IronPython, IronRuby | +------------------------------+ |DLR (Dynamic Language Runtime)| +------------------------------+ |Frameworks | +------------------------------+ |CLR | +------------------------------+
-
- JavaScriptの環境でPythonのオブジェクトを使う
- 逆もあり
- Scriptingホスト
- ASP.NET
- Silverlight
- JavaScriptの環境でPythonのオブジェクトを使う
- Pnuts
- なぜVM上でLLなのか?
- Pythonに引き込む狙いは?
- 西尾
- Javaは軽くは使えない
- 西尾
- .NET上の動的言語とは?
- 荒井
- 2003年にIronPythonをみた
- コンパイルしない価値
- 試したいときに試せる
- 必要なら残す、不要なら捨てる
- .NETライブラリを自由に使える
- 必要最小限でビルドする
- 荒井
- Native LLのようにちゃんと動作するのか?
- 高井
- オーバーヘッドは発生する
- 実用化は近い
- 2年後くらい?
- 高井
- IronPythonはファーストクラスの言語になるのか?
- 荒井
- 公式アナウンスはない
- 個人的には、なると思う
- 次のVisual Studioに入るのではないか
- 荒井
- Groovyはどうなる?
- 鈴木
- 専門家には専門の言語が必要
- ようは使いどころ
- 鈴木
- 大きなシステムと共存できるのか?
- 鈴木
- した方がよい
- 小さな部分はLLで速く、大きな部分はJavaで
- 鈴木
- 大きなシステムをつくるのとハッキングは違うもの?
- 西尾
- 分業
- Javaは大きな象
- LLが先に立って、進むべき道を探る
- LLは斥候
- 西尾
- 1980年代にSmalltalkがそういわれていた
- インド人や中国人もRubyを使うのか?
- Pnutsをビジネスで使う?
- 戸松
- サーバーサイドで使う
- 戸松
- 速いというのは?
- 戸松
- 速さには理由がある
- JVMの特性を利用している
- 戸松
- JRubyより速い?
- 戸松
- もちろん
- 戸松
- IronPythonはCPythonより速い?
- 荒井
- 本当
- ただし、IronPythonには組み込みモジュールの10%しかない
- オープンソースで95%まで移植している
- 荒井
- IronPythonは当初、.NETでは遅いという仮定を証明したかったという話は?
- 荒井
- APIに専用のものを用意している
- 実験して最適なものをとる
- 荒井
- JVMは動的言語にあわせて進化するか?
- 命令を追加すれば、速くなるものではない?
- 戸松
- 型を持っているので、どのメソッドを呼び出すかはコンパイル時にわかる
- LLは動的で実行時にならないとわからない
- 命令の追加には反対
- 実装でカバーできる
- リフレクションとキャッシュでメソッド呼び出しを速くできる
- 戸松
- JVMが動的言語に対応しない?
- 戸松
- そう信じている
- 戸松
- JRubyはJava 1.4.2の仕様でやっている
- MicrosoftがIronRubyをやると、SunはMicrosoftに勝とうと思うか?
- Jythonが活発であるが、リソースの取り合いはないか?
- JavaのLLはJRuby? 開発者のマインドは?
- 高井
- JDK6にRhinoをいれた
- なぜ?
- 鈴木
- RhinoとGroovyは真面目さが違う
- Rhinoでの開発が行われることはない?
- 高井
- NetBeansにJRubyは入る?
- 高井
- Rubyというと予算がつく
- 高井
- Java 7でJRubyがつく?
質疑応答
- ASMはコードの質には影響しないが?
- 高井
- そう思う
- 計測すると違う
- 最適化の余地がある
- 高井
- IronRubyは仕様がない。ソースを見ないと実装できない。しかし、Microsoftではオープンソースのソースを読むと解雇されるという話があるが?
- Microsoftはオープンソースライセンスをつくろうとしているのか?
- Rhinoのように、DLRでサーバーもクライアントも開発できるか?
- 荒井
- (答えに詰まる)
- やりたかったらなんでもできる
- JITコンパイルされたコードでメソッドが入れ替わるようなコードが動かせるか?
- GCできるか?
- 長時間動かすような場合は確認が必要
- リクエストとレスポンスで終わるウェブアプリケーションのような短時間の場合は問題の可能性は低いが、よく確かめて欲しい
- 荒井
キミならどう書く 〜プレゼンソフトを作る〜
パネラー
舞台に向かって左から、
言語 | 名前 |
---|---|
(司会) | えんどうやすゆき |
Java | 西本圭佑(有限会社アイトレック) |
OCaml | 小笠原啓(有限会社ITプランニング) |
JavaScript | 天野仁史 (Shibuya.js) |
XUL | 下田洋志(株式会社クリアコード) |
Gauche | 小黒直樹(ウルシステムズ株式会社) |
議論
- 要件
- 一般の人が使えるプレゼンソフトをつくる
- どうやったら使えるか?
- やりたかったことはなにか?
- OCaml
- OCamlの特徴
- どう書くか?
- Lablgtk
- 本格的
- 標準のGraphicsライブラリ
- ちょっと力不足
- Cairo
- ちょうどいい
- Lablgtk
- アニメーションしたい
- マルチスレッド
- チャンネルスタイル
- チャンネル経由でしかやりとりできない
- ロックフリー
- チャンネルスタイル
- マルチスレッド
- Concarrent Programming
- スレッドがチャンネルを通じてやりとりする
- 共有メモリによるロックを心配しなくていい
- 質疑応答
- JavaScript
- Dynamicなものにしたい
- 背景
- プレゼンをウェブで共有したい
- PowerPoint?
- Keynote?
- PDF?
- HTMLとJavaScriptがいい
- Googleが理解できる
- クローラが理解できる
- Microformat
- プレゼンをウェブで共有したい
- JavaScript
- Bookmarklet
- Greasemonkey
- Extensions
- JavaScriptは重い
- 軽くすること
- プレゼンツールの紹介
- 軽い
- きれいなHTML
- 拡張性が高い
- インデックス(画面の一覧)をつくる
- エフェクト
- アクション
- クロスブラウザ
- 任意の要素に適用可能
- ブログパーツ
- ツールのソース
- クラス図による説明
- 質疑応答
- XUL
- XULとは
- XML User Interface
- Firefox, Thunderbird
- 重い
- Gecko
- 挙動はJavaScript
- 見た目はCSS
- 気軽
- 豊富なウィジェット
- Firefox専用のAjaxのライブラリ
- 逆に考えるんだ
- 複数のブラウザに対応する必要がない
- 高橋メソッド in XUL Returns
- 質疑応答
- テキストシャドウはつけられるか?
- できる
- ツールのソースを見せてほしい
- スクリプト
- プレゼンのデータはただのテキスト
- 隣にいるJavaScriptとの協業は?
- やるかも
- これ以外につくったものは?
- ない
- 今朝までつくらなければならないのを知らなかった
- 公開している場所は?
- テキストシャドウはつけられるか?
- XULとは
- Java
- 3D CMS
- 3Dコンテンツを扱えるCMS
- クライアントはAppletかFlashで3D表示
- 編集も可能
- HTTP Cometによる遠隔プレゼンも可能
- デモ
- 3Dのキャラクターが動く
- 質疑応答
- 今回の中ではHeavy Weightであるが?
- 確かに、LLではない
- 未踏でECMAScriptに対応させたい
- Javaのクラスを書かなくてもアニメーションさせる
- プレゼンのデータは?
- Wiki形式をHTMLに変換する
- トランジションやエフェクトは?
- ない
- 今回の中ではHeavy Weightであるが?
- 3D CMS
- Gauche
- 使えないプレゼンソフトはどんなか?
- インストールが面倒
- Gaucheのインストールは面倒
- ウェブアプリケーションにする
- インストールが面倒
- かつてのOHPをめざす
- 内部
- 使えないプレゼンソフトはどんなか?
スライド操作 サーバ スライド表示 +------------+ VNC +------+ VNC +------------+ |PC +-----+ +-----+PC | +------------+ +------+ +------------+
-
- スライドを操作側から入れ換え、表示側に反映させるデモ
- Schemeのコードを実行可能
- 質疑応答
- 発表中、「LL魂チャット (at Lingr)」(http://www.lingr.com/room/ll-spirit) の発言がプレゼンテーション中に表示されていた
質疑応答
- トランジションやエフェクトを使い易くするためのアイデアは?
- これだけは負けないものは?
- 製作日数は?
- Java
- 3日
- 3Dの部分は数ヵ月
- OCaml
- 2週間
- JavaScript
- 2ヶ月半くらい
- プロトタイプをつくってテストツールをつくった
- XUL
- 1週間から2週間
- Gauche
- 週末にだらだらつくって2ヶ月くらい
- Java
- 高橋は何を使っているのか?
- (会場でスタッフをしていた)高橋
- OpenOffice
- 300枚のプレゼンテーションを数ヵ月かけてつくった
- (会場でスタッフをしていた)高橋
- ツールは?
- 高橋
- 字が大きくできないのであきらめた
- 高橋
- 従来のOHP形式ではないプレゼンをみたかった
- JavaScript
- スライドっぽくするのに労力がかかった
- スライドとスライドの間のスクリプトを書かなくていいようにした
- JavaScript
Lightning Talk
「PRaggerでピザが頼めるようになるまで」齊藤ただし(筑波大学)
- Ever Quest II
- /pizzaコマンド
- その場でピザを注文した
「外付けwebフレームワークflowr」中谷秀洋(サイボウズ・ラボ株式会社)
- Wiki -> flowr -> Blog
- モノポリー
- http://labs.cybozu.co.jp/blog/nakatani/
「WebDB開発特化型言語Alinous-Core」飯塚友裕
「VM魂に入れて貰えなかったJavaFXScript(仮)」庄司嘉織
「Coq定理証明という選択肢」今井宜洋(有限会社ITプランニング)
- バグがない
- テストが必要なくなる
- http://d.hatena.ne.jp/yoshihiro503/
「イメージファイト!」竹迫良範 (Shibuya Perl Mongers)
- http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html
- Apacheのモジュールmod_imagefight
「じゃ、どう書く?」西尾泰和(サイボウズ・ラボ株式会社)
- スタンドプレイの結果生まれるチームプレイ
「PRaggerでピザが頼めるようになるまで」の結末
- バグがあって失敗した
- 携帯電話で注文した