メイン

イベント アーカイブ

2007年02月19日

ちらっとデブサミ

ほとぼりが冷めた頃に、ちらっとデブサミのことを書いてみる。
ということで、2/14 にデブサミの「出張 Shibuya イベント」に行ってきました。
なお、会場となった目黒雅叙園は引っ越し前の家の近所だったこともあり、かなり真剣に結婚式会場として検討していたこともあったなあだとか、普段の華やかで穏やかな雅叙園と全く違う様相(椅子があればそこに男子が数名集まり、ノートPCつついて談義してればそりゃー雰囲気も変わるわ)に思わずげらげら笑ってしまい、すれ違った女性に変な目で見られたことなどはナイショ。

宮川さんのトークや、id:brazil さんと ma.la さんのDISカッションはみなさん色々書かれていると思うので、まあいいかな。一つだけあげるなら、ma.la さんが最後に言ってはった「みんなPCを使うなら、プログラムとか書けた方がもっとハッピー」に激しく同意(記憶で書いているので言葉そのままではないが、ニュアンスはこんな感じだったはず)。

Plaggerインスパイアなツールがこんなにたくさんあるとは、寡聞にもこのライトニングトークを聞くまで知りませんでした。
「プラガブルなアグリゲーター」は理屈では「万能ツール(プラグインさえ作れば)」であるはずなんですが、それがプラグインを作る方だけではなく、フォロワーツールを作らせる方向にも力学が働くというのは、Plagger というツールの筋の良さを示しているんでしょうか。
もともと良いものだからこそ、(わずかに我慢すれば Plagger でも十分担えるのにもかかわらず)それをより部分最適したものが欲しくなるとか。
いや実のところはきっと「自分も作ってみたくなった」ということだとは思うんですが(笑)。

おみやげは nagayama さんにいただいた「はてなガム」(シナモン味?)。

2007年03月22日

Mash Up Award 2nd で PlaceEngine 賞

これは個人の blog の方に書かせていただいた内容なのですが、 Sun と RECRUIT が中心となって開催された Mash Up Award 2nd にて、中谷の作った作品が PlaceEngine 賞をいただいてしまいました。
細かいことは繰り返しになってしまうので、もしご興味あれば http://d.hatena.ne.jp/n_shuyo/20070321/mashup を参照してやってください。

で、昨日授賞式があって参加してきたのですが、想像していた以上に受賞者&関係者の方が多くて、ごく一部の方としかお話しできなかったというに、あっという間に名刺売り切れ……。
名刺をお渡しできなかったけれど、中谷を探してここにたどり着いた方がもしもいらっしゃったらば、 nakatani at labs.cybozu.co.jp にご連絡してやってくださいまし。あいすいませんが、よろしくお願いします。

2007年03月26日

Javascript で既存関数にエラー処理を追加 (Shibuya.es #3)

Shibuya.es、じゃなかった、Shibuya.es #3 行ってきました。
デブサミでの Shibuya.* はやっぱり場所柄からか少々おしとやかやってんなあ……

どの話もおもしろかったんですが、nazoking さんの "WiiでSAGOOL" が個人的にプチツボだったので、ちょっぴり検証してみました。
一般化すると「元のソースをできるだけ汚染しないで、関数にエラー処理を追加する」ということですから、いわゆるアスペクト指向うんぬんが得意としている領域ですよね。
確か nazoking さんの方法は(以下、記憶で書いているので間違ってたらすいません)、エラー処理を行うラッパーを用意し、関数呼び出しをそのラッパー経由で行うよう、呼び出し側を自動的に書き換えるというもの。
これにより外部参照しているスクリプトについては書き換えることなくエラー処理が追加される。一方 html 内に記述されているスクリプト、特に onClick などのイベントに直書きされているものについては手動で書き換える必要あり。

この「直書きされていると書き換える必要あり」をなんとかしたいかも。
定義されている関数全てに自動的にエラー処理を追加する方法はちと思いつかなかったんですが、関数名を指定して狙い打ちならなんとかなりそう。
<html><head>
<script type='text/javascript'><!--
function push_button(message) {
    alert(message);
    aaa();
}

function Test(){}
Test.prototype.push_button2 = function(message){
    alert(message);
    bbb();
}
var test = new Test();
--></script>
</head><body>
<input type='button' value='おして' onClick='javascript:push_button("クリックしました");' />
<input type='button' value='おして2' onClick='javascript:test.push_button2("クリックしました2");' />
</body></html>
こんな html を書いて「おして」や「おして2」をクリックしても単純にエラーになりますが、</head> の前に下記を追加すると、エラーがダイアログで表示されるようになりました。ばんざい。
<script type='text/javascript'><!--
// 指定された関数にエラー処理を追加する。
// オブジェクトに定義されている関数の場合は、2つめの引数にオブジェクトを指定
insertLogger = function(funcname) {
    if (arguments.length>1) {
        // オブジェクトの指定がある場合
        obj=arguments[1];
        obj["__"+funcname] = obj[funcname];
        obj[funcname] = function(){ try{ obj["__"+funcname].apply(obj, arguments); }catch(ex){alert(ex);} };
    } else {
        // オブジェクトの指定がない場合
        eval( "__"+funcname+"="+funcname+";" );
        eval( funcname +"=function(){ try{ __"+funcname+".apply(window, arguments); }catch(ex){alert(ex);} };" );
    }
}

// エラー処理を追加する関数を指定
insertLogger("push_button");
insertLogger("push_button2", test);
--></script>
alert(ex); のところを、エラー内容をサーバに GET で送り込みつつ、throw するようにすれば、nazoking さんの発表内容に近づくかな。

プレフィックスが "__" でいいのかとか、なんか勝手に bind されちゃうんですけどもーとか、ツッコミどころは……
まあ、"javascript aop" とか "javascript アスペクト" あたりでぐぐってみれば、より一般的にあれこれ挑戦してみた方の情報が出てくるから、そっちでいいかなあ、などと(苦笑)。

2007年04月05日

YAPC::Asia 2007 フラクタルな1日目

Perlの人でもないのに YAPC::Asia 2007 行ってきた! アウェイ気味だが、まあそれは新鮮な話がいっぱい聞けると言うこと。

とりあえず一番印象に残ったのは、Audrey Tang さんのセッションで、「Perl はバージョンアップごとに C と shell のそれぞれの得意分野を覆うように発展してきたよ~(だんだん Perl の覆う面積が大きくなっていくスライド)。そして Perl6 になると、ほら!」と全面を覆う図形で Perl が全ての領域を奪ったように見せつつ、実はその図形は体積0のフラクタル図形。つまりスカスカ。
謙遜なのか皮肉なのか、はたまた戒め? って、丸一日おって一番印象に残ったの技術の話じゃないんかい!( ̄∇ ̄)ノ"

2007年04月06日

YAPC::Asia 2007 円周率な2日目

YAPC::Asia 2007 2日目。
とっても楽しかった。関係者&スピーカーの皆様、本当にお疲れ様でした。

「歴史の証人」の一人になれたのはいいのだが、正規表現を見るとサスペンダーの幻覚がちらつくようになってしまい、これは労災おりるのかなあと厚労省のサイトを調べながら、今日一番印象に残ったのは何だったろうと記憶を探ると、Mark Jason Dominus さんの「全てのプログラムを含むプログラム」がひっかかる。そうそう、円周率も こんなネタ あったよなあ。今度ラボの内装(リフレッシュコーナーの壁は古今東西の名言で埋めつくされている)を換えることがあったら、Dominusさんのプログラム(30MBくらいだっけ?)か円周率のどちらかを印刷するってのはどうだろう。バベルの図書館とサルとタイプライターもゲスト出演で……って、今日もまた Perl 関係ないやんか orz

2007年08月04日

LL魂のライトニングトークで話します

title.png

本日の LL魂(Lightweight Language Spirit) のライトニングトークでしゃべります。
資料はたった今できました(苦笑)。ほぼ寝てません(苦笑)。
ネットで直接配布できない形式で作ってしまったので、とりあえずタイトルの1枚だけ。
後で flv とかなにかで配布できるようにするつもりです。

(追伸)
4分ぴったりで無事完了。ほっとした。5分と4分の差は大きい。
プレゼン資料は IronPython で手作りしたので、そのまま配布ができないんですね……。しばらくお待ちください。

2007年08月06日

LL魂 参加! VM魂 感想!

というわけで LL魂 参加してまいりました。発表資料はこちら

基本「同じ○○なら踊りゃな損」な人なのですが、実はこの手のイベントにまともに参加するのは初めて。
といってもライトニングトークのスピーカーという最も気楽な立場なので(もしも受けなかったとしても、金返せと罵倒されるリスクが最も少ないw)、内輪気取りするのはちと恥ずかしいんですが、控え室でプチたむろったり、スタッフの方とおしゃべりしながらまだ完成していなかったプレゼンを仕上げたりできて、なかなか楽しかったです。
閉会の時に来年の開催のアナウンスがありましたが、こういったボランティアベースの千人規模のイベントで、来年の予定を早々と決めることが出来るというのは実はものすごいことですよね。頭が下がります。
本当に運営に携わられた方々はお疲れ様でした~。

もちろん、他のセッションを聞かせてもいただいたので、こちらで感想などを。

一番印象に残ったのは VM 魂
緩やかな構図としては「Java 対 .NET」「Ruby 対 Python」(PnutsやRhinoを忘れているわけではありませぬ。念のため)だったわけですが、しばらく以前から感じていた「Java = カッチリだけど展開遅め、.NET = 意外と野心的&攻撃的」というのが透けて見えたなあ、と。
それはやっぱり規格ドリブンと人間ドリブンの違いなんだと個人的には思っていて、つまるところ西尾さんも言っていたように「Jim Hugunin スゲー!」であり、でも Sun もそれを学んでいて、JRuby では同じ失敗( Jython の……とは言わないでおこうw)を繰り返さないようになってきている(人間ドリブン寄りに軌道修正)、けれど全体が規格ドリブンなので、ちらほら齟齬が見え隠れしている(JRuby が Java7 に入るの? とか。外野の感覚では入らないわけがないと思えるのだけど、それが決まってないとか)、などなどなど。
逆に、「Ruby 対 Python」という対立軸はほとんど顕在化しなかった。唯一、Pnuts の戸松さんが言語の特徴を主張されていたけど、そのレイヤーに土俵が存在していなかったので、そもそも対戦相手がいない。
「VM魂」というセッションのタイトルを聞いたとき、「VMの話じゃなくて言語の話をするんちゃうん?」といぶかしんだのだが、実はタイトルの通り、VM(を含むフレームワーク)のレイヤーの違いの方が要素としてはるかに大きくて、その上で動くのは Ruby でも Python でもどっちでもええよ的なことになってしまっているのか。それはそれでちょっとさみしいかも。
まあ、「Jython vs JRuby」は JRuby の不戦勝(Python2.1 相当じゃ……)、「IronPython vs IronRuby」は IronPython の不戦勝(IronRuby はまだまだまともには動かない)と、そっちの勝負はまだ始まってもいないせいなのかもしれませんけどね。

あと、ちょっとだけ自分のプレゼンの裏話。

中谷のプレゼン「外付け Web フレームワーク - flowr」は、当初「生デモ+オーバーレイプレゼン」という構成だったのですが、前日ラボ内で練習させてもらったら全然時間が足りず。「字が小さい」「関西人のくせにネタが少ない。そんなんでお笑い界を目指すつもりか」などのツッコミももらい(注:一部脚色有り)、全面的に構成を変更。生デモを無くした代わりに、少し凝った動きに。
また最初、プレゼンツールは「ニコニコメソッドプレゼン」などにも使った Yahoo! Widgets を使って実装していました。が、IronRuby を試していたときに「 WPF おもしれーよ!」と目覚めて、直前に「よーし IronPython/WPF で作っちゃうぞ!」という大冒険を敢行(一応 Rubist の端くれのつもりなので、IronRuby と行きたいところでしたが、まだまだ全然使えないので……)。
我ながら無茶するなあと思いますが、Yahoo! Widgets ではあのプレゼンの動き(実はリアルタイムレンダリング)は出せなかったので、結果オーライ♪
WPF はなかなか良くて、プレゼンを動画キャプチャするのでも、元の全画面サイズだと動画が馬鹿でかくなってしまって最初悩んでいました。が、全体を1つの Canvas オブジェクトに載せていることを思い出し、大きさを半分にする ScaleTransform を一番親の Canvas にかませたところ、動きそのままで全体の表示サイズが半分に! これがフォーム部品などが載っていても行えてしまえるあたり、DLR の今後の動きも含めてなかなかわくわくさせてくれます。

About イベント

ブログ「nakatani @ cybozu labs」のカテゴリ「イベント」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはjsrubyです。

次のカテゴリはツールです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。