« rubyによるAmazon EC2のインスタンスのセットアップ | トップページ | MongoDBをアプリで使う時に気をつける点 »

2011年11月15日 (火)

第14回 yokohama.rbに参加しました。

退職したため、求人サイトをチェックしていると、
18:00ぐらいにTwitterで"I'm at 神奈川地区
センター"とあり、これは、yokohama.rbが開催
されるのでは?とATNDをチェックすると、BINGO。
土曜日は仕事が入っていたので、スルーしていた。
久しぶりに参加できるので、これは楽しみと思い、
妻に時間がないから車で送ってくれないかとお願い
したところ、韓流のDVDがいいところのようで、
かなりいやそうだった。

「勉強会に出ているメンバーで、自分の会社に開発者
を募集しているとか、知り合いの勤めている会社が
募集しているよという話が聞けるかも知れないよ?」と
妻を説得し、急いで妻に車で送ってもらった。

開始18:30前に到着。
本来は18:00ごろに来て設営等の準備を手伝うべきと
ころだが、今回は許してくだしぁ。

自己紹介が始まり、仕事募集中をアピール。
Rubyのコミッターの方がいたり、プログラマを目指して
上京してきた方がいたり、これからRubyを学習したり
する方がいたりと層が幅広い。

@nagachicaさんから、Macのruby-coreaudioという
ライブラリのセッションが開かれたが、私はWindows
なため、不参加。

隣りに座っていた@u16suzuさんと仕事の話をしていた
ら、自社に問い合わせてくださることになった。本当あ
りがとうございます。

せっかくプログラマの方達といるので、ペアプロをした
いなと相手を探していたら、@u16suzuさんはモクモク
作業ですることを決めていたようなので、前に座っていた
@publichtmlさんに声をかけて、ペアプロ開始。

仕事では、PHPを使っていて、rubyはかじった程度という
話でirbが立ち上がったのを見て、感動されていた。

お題は、Hashの値の比較を文字列でもSymbolでも同じ
綴りだと同値だと見なすようなHashが欲しいというもの。
キーの場合は、HashWithIndifferentAccessという
ActiveSupportのクラスがある。
今回はキーではなく、値で同じことをしようという目論見。
最近は値にSymbolにするのはやめて、文字列に統一する
ようにしているが、''の2文字より:の一文字が楽だなぁと。

ペアプロしていて、クラス変数やインスタンス変数という
用語が通じず戸惑ったが、 説明すると、 あっJavaでいう
static変数のことですねやメンバ変数のことですねとすぐに
理解された。@publichtmlさんは、仕事はPHPをされている
そうだが、最近テストも書いているとおっしゃるだけあって、
飲み込みが早い。

実装案として、Hashクラスを継承するのではなく、内部で
hashを持ち、代入時に値がSymbolだったら、文字列にして
格納して、==で見るときに比較する値がSymobolだったら
文字列にすればと提案を受け、なるほどと思いその線でいく
ことになった。

initializeで渡って来たHashの値のsymbolを文字列に格納する
ところまではTestを書いて通るところまで実装できた。
比較の処理のところで、[]の返却値と比較するから、比較する
値がSymobolだったら文字列にする戦略は無理では?と指摘を
うけたが、[]=を[]==と勘違いしてこのメソッドでいけると嘘を
答えてしまった。正しい指摘だったのに、ごめんなさい。
そんなのはないです。
大丈夫と経験者が言ってしまったら、初心者の方はそういうもの
かと思ってしまうので、本当に気をつけなければと思う。

結局、Hashを継承するのではなく、持っている関係なので、Hash
関連のメソッドをdelegateしないと駄目だよねとなって、delegate
の仕方を調査しているところでTimeUP。

その後家に帰って、続きを実装してみたのをgistにあげた。
実装
スペック
delegateの実装と、 []やvaluesで取り出した値にSymbolがあれば、
SimboledStringなる新たなStringクラスに変換し、そのクラスは==で
比較対象がSymbolだったら文字列に変換して比較するようにした。

ペアプロすると学ぶことが多くて勉強会向きな気がした。

|

« rubyによるAmazon EC2のインスタンスのセットアップ | トップページ | MongoDBをアプリで使う時に気をつける点 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/68673/53247802

この記事へのトラックバック一覧です: 第14回 yokohama.rbに参加しました。:

« rubyによるAmazon EC2のインスタンスのセットアップ | トップページ | MongoDBをアプリで使う時に気をつける点 »