Tokyo Rubyist Meetup (trbmeetup) seeks to help bridge the Japan and international ruby and ruby on rails community.
ということで、海外の技術者とミートアップできるコミュニティ Tokyo Rubyist Meetup に初参加しました!
今回のミートアップでは、ペアプロで、Ruby を使って用意されたお題を解いてゆきました。具体的には郵便番号と住所の対応が記載されているCSVファイルを使って、
- 入力された郵便番号から住所に変換するのをなるべく早く、メモリ消費少なく、依存関係少ない状態でする
- その逆で、入力された住所から郵便番号に変換するのを実装する
という二つの課題をやりました。課題のリポジトリはこちら。
tokyo-rubyist-meetup/pair-programming-2
課題1
課題1は二分探索を実装してそれなりにきちんと出来た…と思ったら、Ruby2.0 からは Array#bsearch
なるものがあるとのこと。知らずにスクラッチで実装してしまいました><。「こんなメソッドないかなあ」と思ったらだいたい実装されているのが Ruby ですが、Array#bsearch
については想定以上のおもてなし度だったため気づかず…。成果物はこちらです。
課題2
課題2は難儀しました。入力された住所を完全にパースするのはとても難しそうなので、都道府県までのパースにとどめ、
- CSV を都道府県で分割
- 入力した住所の都道府県をチェックし、該当するCSVをロードする
- CSVの住所情報と、入力した住所を正規表現でマッチさせて該当する郵便番号を得る
という戦略で進めました。しかし
- 入力値が数値なのにCSV側が漢数字のケース
- CSV側に(1〜4丁目)のような曖昧な入力がある
というレアケース対応をしていたらタイムアップしてしまいました。日本の住所の取り扱いマジむずい…。成果物(work in progress)はこちら。
感想
お題を与えられてペアプロをするというのも大概大変なのですが、そこに「英語で」というのが入るとさらに難易度アップです。「これ英語でなんて説明しようか…」で脳のリソースの約半分が割かれてしまいます。そして残りの半分でペアプロをしないといけません。慣れていないと大分辛い…。
Tokyo Rubyist Meetup のミートアップに参加すると、かなり「英語をもっと頑張らないといけない!!!1」状態になるので、「明日から本気出す!」となりがちなおまいらにオススメなコミュニティだと思います。あとそんなあなたにenglish.rbもありますのでこちらもあわせて宜しくお願いいたします。