« [Ruby] Vim 7.2 と Ruby 1.9.1 on Cygwin | トップページ | [Ruby] RubyKaigi 2009 3日目 »

2009年7月18日 (土)

[Ruby] RubyKaigi 2009 2日目

1日目は参加できなかったので、2日目が最初。 メモを一切取ってなくて記憶を頼りに書くので、内容に誤りがあるかも知れません。

去年に続いてCOMMITERとして参加させていただきました。

朝、早目に会場に到着。 私が名乗る前にスタッフの方が顔と名前を識別してくださり、関係者受付の方に案内していただく。

ショッカー軍団の団長、じゃなくてRubyKaigi2009のスポンサーになってくださったクリアコード代表取締役の須藤さんと会う。 英語の講演を聴くつもりだと私が話すといろいろと突っ込まれる。

artonさんと会う。 Win32OLEがいろいろ変わっているよねと言われてちょっと戸惑う。 最近、手を加えた記憶がなかったので、1.8との違いってことかと納得する。 それはともかく、記憶があやふやになってしまって申し訳ないのですが、arton さんが欲しい機能ってこんな感じのことですか?

#-*- encoding:utf-8 -*-
require 'win32ole'
a = WIN32OLE_VARIANT.new('あいうえおかきくけこ') # UTF-8 の String から VARIANT を生成。
WIN32OLE.codepage = 932
s1 = a.value # s1 は Windows-31J の String
WIN32OLE.codepage = WIN32OLE::CP_UTF8
s2 = a.value # s2 は UTF-8 の String

2F中会議場で Sequel、Sinatra、Ramaze の順で話を聴く。タイムテーブルとは順番が違ってしまったけど、この順番の方がかえって良かったんじゃないかと思う。怪我の巧妙。

Sequelの話。全く英語がわからなくて、自分の英語力の無さにへこむ。 わからないなりに、SequelのSQLの扱い方は、.NET の LINQ と似ているなと思ったりする。 ちなみに最後の方で最近の話題として取り上げていた CTE は、ちゃんとこのサイトでもトピックとして扱ってます

Sinatraの話。やっぱり英語がわからなくてさらにへこむ。 トップレベルに get とか定義するんじゃなくて、class の中で、get とか書けるようになったらしい。 Sinatra は、ほんのちょっとだけ試したけど vegasは知らなかった。 Vegasを使えば、既存アプリを簡単にWebブラウザからアクセスできるようにインターフェースを変えられるらしい。 でもWebブラウザからのアクセスって便利かなあ。 Vegasの応用である、gemboxはこのサイトでも取り上げたことがあります。

Ramazeの話。もちろん日本語の部分は理解できたが、英語が速くてやっぱり聴き取れなくてへこむ。 3人の中では一番わかりやすい英語だと思ったけどスピードが速くてついていけない。 コーディングを見ていて、REST 対応が簡単そうだと思った。 ちなみに、Ramazeもほんのちょっぴり試してました

昼休み。 Ruby256本極道編の第2刷の現物を初めて見た。

Ruby 1.9 での Rails の運用は、まだまだ実績がないらしい。 てっきりtaiyakingが1.9で開発しているのかと勘違いしていた。

OLEの話を聞かれる。 OLEみたいなもので、OpenOffice に UNO というのがあるので、Ruby バインディング作りませんか、OLEと同じくらい苦労しますよ、 と変な勧められ方をする。 調べてみたら、やっている人がいました

コミュニティアピールは遅刻して聴き損ねました。ごめんなさい。

まつもとさんの基調講演。ブロックのローカル変数のスコープが変わるのは、一見、便利そうだけど、やっぱり気持ち悪いと思う。

Lightning Talks。RomanticRuby!の左端が欠けていたのが計算だとするとすごいと思った。 計算でなくても偶然を逆手に取ったプレゼンは面白かった。 仕事柄、個人的には、「Rubyでの(力技)でのネットワーク運用」というのが印象に残った。

スポンサー枠を聴く。 睡魔に襲われる。 意外だったのは、CakePHP よりも Ruby on Rails の方がパフォーマンスが良かったという結果。 結局、最後にボトルネックとなるのは、データベースなのか。 Rails関連の話が多いなか、一般向けの内容だけど、コアな須藤さんの話は異彩を放っていた。さすが。 全体的に、もう少し、Railsのコアな話とか聴けると期待していたんだけどな。

Beer bust。 須藤さんのパシリ、じゃなくて、須藤さんがブースを離れられないとのことなので、 コンビニで自分の分と須藤さんの分を適当に買ってくる。

この時間になって初めてささださんと遭遇し挨拶する。

うささんから ruby-core のメールもフォローしてWin32OLEの対応してくれているので何も文句はないとお褒めの言葉を頂戴する。 実際のところ、OLEをフォローする程度のことしか私にはできないのです。

前田さんにVim の Ruby バインディングのメンテナンスはしてないのかと聞いてみたら、してないと言われる。 Encodingのところまで実装しようとすると面倒ですよねと言われる。 その辺を実装してくれているんじゃないかと期待して前田さんに質問したんだけど、逆に先手を打たれてしまった。

|

« [Ruby] Vim 7.2 と Ruby 1.9.1 on Cygwin | トップページ | [Ruby] RubyKaigi 2009 3日目 »

コメント

異彩!!!

パシリ、じゃなくて、おにぎりありがとうございました!助かりました!
(あ、おにぎり代忘れた。。。)


3日目の午後はせっかく少し離れたところからブースの様子をうかがってくれていたのに、あんまりお話できなくて残念でした。
また、次の機会を楽しみにしています!

投稿: kou | 2009年7月20日 (月) 22時23分

スポンサー様ですから、おにぎり代くらいどうってことありませんよ。
また次の機会に。

投稿: suke | 2009年7月20日 (月) 23時11分

どちらかというと、次のようなAPIを考えていました。
[dispid(10)] HRESULT getString([out, retval]BSTR* pRet);
に対して、s = win32oleobj.getString() で、sがBSTRからそのスクリプトのデフォルトのエンコーディングに変わるというようなものです。
つまり、実際には上の呼び出しは、
s = WIN32OLE.bstrToString(win32oleobj.__invoke__(10)) に等しくて、ASRは、生でCOMを呼んだ結果のBSTRを、rb_funcall(rb_intern("bstrToString")...)して、STRINGに変えられると楽だなぁ、ということです。

投稿: arton | 2009年7月22日 (水) 21時38分

すいません。なんとなくわかってきたのですが、もう少し教えてください。

これってCレベルのAPIが欲しいということでしょうか?

あと、「スクリプトのデフォルトのエンコーディング」というのは、
__ENCODING__ 、Encoding.default_external、Encoding.default_internal
のうちどれでしょうか?

ちなみに、現状では、以下のスクリプトを実行したとき、
ruby の -Eオプションの指定の仕方で結果が異なります。
-Eオプションが utf-8 だと s は utf-8のStringですし
Windows-31J であれば s は Windows-31J の Stringになります。
(sに「...\デスクトップ」の文字列が入る場合)

require 'win32ole'
sh = WIN32OLE.new("WScript.Shell")
s = sh.SpecialFolders("Desktop")
p s.unpack("C*")
puts s.encoding

投稿: suke | 2009年7月22日 (水) 23時07分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [Ruby] RubyKaigi 2009 2日目:

« [Ruby] Vim 7.2 と Ruby 1.9.1 on Cygwin | トップページ | [Ruby] RubyKaigi 2009 3日目 »