なんかしゃべれと言われたので、 Mitaka.rb #4 に参加してきました。フレンチうまうま。
るりまふぉん、という内容で話してきました。読んで字のごとくですが、るりま を iPhone から見れるようにする何かをつくったよ、という話です。
るりまふぉんのソースは こちら : github:mootoh/rurimaphone。
一昨日に、 Mitaka.rb の用意してないやん、そういえばさいきん Ruby さわってないやん、と気づいてあわててネタをひねりだし、昨日一日でプロトタイプをつくったかんじのものです。
スライドの余談のところにも書いてありますが、 Ruby で書いたコードはほんの少しで、ほとんどは Objective-C のコード。
Future Work に書いたことは割と本気で考えていることで、どこでもプログラミングできる環境というのができてきてると思っているのです。 iPhone だと、任意のコードを実行できるアプリはダメなんだけれど、あちら側にあるソースを、あちら側で実行して、あちら側にある実行結果を見るだけならば、別に問題なかろうと。クラウドとはいえないけれどそういうもの。それは gist と tryruby 的なものを組み合わせればできるんじゃなかろうかと。
もうひとつは、 サンプルコードを共有できるマニュアル という話。こっちの方が元からあったアイデア。
プログラミングをじっさいにやっていく中でだいじなのは、サンプルコードとコミュニケーションかなと。
マニュアル読んでて、じゃあじっさいにどういう風に書けばいいのん、という段になって困る、というのがよくあります。 Ruby だと、拡張ライブラリの rdoc ドキュメントを読んでるときによくそういう状態になったりする。
そんなとき、みんなが持ち寄ったコードを見ながら書き進められるといいんじゃないでしょうか。そのために、みんなでそのクラス、メソッドに対するサンプルコードを共有できるといいのではなかろうかと。 Wiki 的なアプローチというか。
んで、なんか困ったことがあったらビルトインの Twitter / IRC で質問を投げたりできると。
ちなみに iPhone はキーボードがないのでコード入力するには適さないよ、という意見もあるでしょうが、そこは補完入力とか音声認識とかいろいろやり方はあるはず。そろそろ外部機器も使えるようになるはずだし。
そんなこんなで、 iPhone で Ruby な何かをやりたい方は % git clone github:mootoh/rurimaphone してみたらいいんじゃないの、というお話でした。
フレンチおいしかったです。
RubyKaigi スタッフは、しごとしててけっきょくほとんどのセッションを見れてなかったよねー、とかいう話をしてて、じゃあちょちょっと集まって、みんなで録画された映像を見てはどうか、という話になっていた。
9月あたり立川でどうでしょうか。
コメントか @mootoh に返信ください。
RubyKaigi 2009 の2日目、 Beer bust 片付けを終えたあと。なんか無性にこの昂りをつたえたくて RejectKaigi キャンバスにふせんを貼っていた。

電波にあてられて、3日目の RejectKaigi 直前につくっていたスライドが以下のもの。 RubyKaigi スタッフになるのおすすめだよ! という勧誘でした。
終わってみると、ひたすら「ともだちほしいんです!」「ともだちできました!」と連呼する稚拙な発表になってしまい、72時間は自己嫌悪から抜けられませんでした… なんか自分の話ばっかりしてしまった。これはひどい。

たしかに、輪の中に入ろうよ! ということも伝えたかったことのひとつだったんだけれど、それよりももっと伝えたかったのは、こんな nice なチームがあるんだということを中に入って体験してほしい ということ。そして、あなたが RubyKaigi というこの場、Ruby という不思議な魅力をもつ何かのためにできることがここにもあるんだ 、ということです。
nice なチームといっしょに働くことは、自分が nice なチームをつくるための第一歩になるんじゃないかと思うのです。 nice であるというのはどういうことなのか、体験できる機会はなかなかない。 RubyKaigi スタッフとして活動するというのは、そういう貴重な機会に飛びこめるということなのです。
ん、RubyKaigi スタッフをやらせてもらって感じたことは、また別のエントリに書きます。
スタッフなのに2日連続で RejectKaigi でてしまってほんとすみません >< 来年はテクニカルなセッションでしゃべります >< 翻訳もがんばります ><
issue の add ができないことに気づいたので、 quick fix しておきました。気づかなかったとはうかつ…
lambda
以下、仕様もドキュメントも参照せずに、観測した現象だけをもとに書いてます。
Ruby 1.9 からは、lambda { ... } でつくった ラムダを call するとき引数の個数をチェックするようになったようですね。対して、 Proc.new { ... } したものを call する場合は引数の個数を見ていない様子。Ruby 1.8.6 では、どちらもチェックされていませんね。
ditz add してエラーになる原因は、この違いにあるようでした。
ということで、 s/lambda/Proc/ してしのいだという話でした。
Ditz という、ナイスな BTS があります。この Ditz を Ruby 1.9 で動くようにしてみました。本家に merge request 送付済み。
mootoh-clone on Gitorious
やったことはそんなになくて、以下の3つです。
これで Ruby 1.9 しか入っていないマシンでもぞんぶんにローカルバグ管理ができて、開発効率ウハウハですね。

自分が話したことについてはこちらに書いたので、二日間聴いていて胸に留まったことを。
処理系のはなし
MVMは本格始動しているのですね。1.9.xに入るとかアグレッシブすぎる。興味津々なのでウォッチしとかないと。JRubyはアプリ展開のくだりに説得力があった。
なによりMacRubyがすごかった。Objective-C 2.0をベースにしてるからGCもそっちにおまかせ、Cocoaのフレームワークもつかえるよ、とかいう。
そんなのを1人で片手間でやってるとかすごすぎる。Laurent++。
MacRubyは、JRubyと同じくらいのレイヤに位置するんだと思いました。JRubyがランタイムとしてJVMをつかってるのに対し、MacRubyはAppleのObjective-C実装に基づいてる。
これから先は、LLVMをつかって高速化するとかも考えてるらしい。うは。
ぼくは、「iPhoneでうごくの? (currently, NO)」 とか、「昨夜書いたというHotCocoaは何行くらいのコード? (300行くらい)」 とかいう質問を投げていました。
RubyCocoaに対する立場はどうなるんだろ、と懇親会でhisaさんに聞いたり、kimurawさんが質問したりしていましたが、RubyCocoaがなくなることはないそう。よかった (これまでの資産的な意味で)。
るりま
そうだ、やらなきゃ! 去年も同じようなことを感じてた。
下々にならねば。
LT
情熱的なトークっていいですね。伝えたいことがある、だからしゃべる。シンプルだ。
おもしろネタはもちろん楽しいし華を添えられるけれど、心をゆさぶる話を生で聴けるというのはすばらしい体験です。来てよかったと思った瞬間。
Re^2jectTalks
同じ会場でマイクなしで2つのセッションがあるとか、それなんて魚市場カオスwww
総じて、どのトークもレベルが高かった。面白いとかためになるとかすげえとか、ジャンルはちがうけどどれも質の良さが感じられる。しかも同じ系統ばかりじゃないから飽きない。プログラムの組み方がナイスでした。
ライブコーディングをしてるひとが何人かいて、会場からデバッグ的な声が飛んだりして、とっても双方向ライブ感を楽しめました。せっかくイベントでみんな集まってるんだかし、みんな参加できるなにかが素敵ですね。そういう意味で、PostItをみんなで書いて壁に貼るというのは敷居が低くてナイスだと思いました。

Ruby会議2008 1日目で、Folk Programming with Ruby という話をしてきました。あとで追記すると思いますが、とりあえず当日記憶がはっきりしているうちに書き留めておくメソッド。
5分前まで動いていたQuartzComposer Gainer Plugin が動かなくなってしまい、たいへん残念でgdgdなプレゼンになってしまいました >< すみません ><
2008.06.23 03:28 追記:
- あとで書く: なんかスライドにいい評価を頂けてるのでスライドのつくりかたを書く
- あとで書く: Ruby会議2008全体について書く
- あとで書く:
しゃべることについて書く → 書いた
言いたかったこと
Webアプリでなにかつくる、なんてみんなやってる。そんなコモディティ化されてることをやっててもおもしろくないんじゃない? もっと変てこりんなユーザインターフェイス (物理的なもの含め) を実験して遊びたくない?
ブラウザの外にも、おもしろいことはたくさんあるよ。
続きはWebで!

ここからは続きはWebでメソッド。
今日、話した内容のターゲットは、これからプログラミングを始めるひと、仕事のプログラミングばっかりしてて、個人的なプロジェクトがないひと、です。
Ruby会議に来ているようなひとたちは、そもそもこの範疇にあたらないので、この話をRuby会議でやるというのはいかがなものか、という意見はさておき。
これからプログラミングを始めるひとに:
たしかに、Webアプリのプログラミングは楽しいものです。コミュニケーションに基づいてる、迅速なフィードバック、etc etc。
でも、サーバサイドでデータベースをいじったり、ブラウザ内での表現を極めたりするのって仕事でもできそうじゃない?
あなたの目の前にあるコンピュータって、もっとなにかすごいことできそうじゃない?
仕事のプログラミングばっかりしてるひとに:
組織の中で生きていると、すごい技術をもってるひとというのは、どこにでもいるものだと思うものです。でも、そのひとたちはプログラミングを仕事としてしかやってない。趣味でなにかつくり、それをたとえば 1000speakers で発表するとか、見ない。
なんかそういうのってもったいなくない? あなたはこんなにすごいのに、埋もれてない?
ぼくが言いたかったのは、そういうことです。
つくった例を4つ出しましたが、そんなのは瑣末なことで、ここで書いたことだけが伝わればいいなとおもってました。
明日も楽しむぞ!
IRCのログはつづきにて。
Continue reading ‘Ruby会議2008でLTしてきた’
Ruby会議2008 の LTに申し込んだところ、ありがたいことに採択されたLT駆動開発者です。

最近つくってたいろいろをまとめて発表する形になる予定です。おてやわらかにどうぞ ><
Rubyリファレンスマニュアル刷新計画ですすめられている新リファレンスシステムを、Vimから引けるようにしてみました。
ダウンロード
コード
つかいかた
Rubyのファイルを編集中に、単語の上で K を押すと該当するリファレンスマニュアルのページに飛びます。
必要なもの
- Rubyリファレンスマニュアル → るりまWiki から
--enable-rubyinterp つきでコンパイルされたVim
準備
0: refe2.vimの一式をcheckout。
1: ダウンロードしたRubyリファレンスマニュアルにパッチをあてます。
% cd ruby-refm-1.9.0-dynamic
% patch -p0 < /tmp/refe2-vim/bitclust.patch
2: refe2.vim の中の s:bitclust_path に bitclustのパスを指定します。
3: refe2.vim を ~/.vim/ftplugin/ruby あたりにコピー。
ToDo
- 色付け
- 文脈に沿ったリファレンスの表示。 たとえば、
というコードがあったときに、 arr.first で検索してもちゃんと Array#first にひっかかるようにしたい。
Vimスクリプトの中のRubyインタプリタで周辺をevalしたらできたりしないだろうか。
その他
今回はじめてVim (+Ruby) スクリプトを書いてみました。
てんで荒削りな実装なので、コードの添削、書き換え、forkなど、どしどしやってもらえると幸せです。
Rubigraph を 0.1.0 にバージョンアップしました。
gem install rubigraph でアップグレードできます。
変更点
Ubigraph alpha-0.2.2 に対応
Rubigraph 0.0.1 だと、Ubigraph alpha-0.2.2 でうまく動きません。(XML-RPCの返り値が変わったため)
バージョンアップ推奨です。
Ubigraphの中の人と、ブログコメントやメールでのやりとりを行い、Ubigraph alpha-0.2.2 から、Rubigraph が含まれることになりました。やった!
証拠魚拓:

公式ドキュメントの中に、ちゃんとクレジットはいってます。
しょぼくてもいいから、とにかくなんかつくって素早く公開する、ということが大事ですね。最初からすごくなくてもいい。公開したあと、徐々に良いものにしていけばいい。