おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Tokyo Rubyist Meetup に参加した

Tokyo Rubyist Meetup (trbmeetup) seeks to help bridge the Japan and international ruby and ruby on rails community.

ということで、海外の技術者とミートアップできるコミュニティ Tokyo Rubyist Meetup に初参加しました!

今回のミートアップでは、ペアプロで、Ruby を使って用意されたお題を解いてゆきました。具体的には郵便番号と住所の対応が記載されているCSVファイルを使って、

  1. 入力された郵便番号から住所に変換するのをなるべく早く、メモリ消費少なく、依存関係少ない状態でする
  2. その逆で、入力された住所から郵便番号に変換するのを実装する

という二つの課題をやりました。課題のリポジトリはこちら。

tokyo-rubyist-meetup/pair-programming-2

課題1

課題1は二分探索を実装してそれなりにきちんと出来た…と思ったら、Ruby2.0 からは Array#bsearch なるものがあるとのこと。知らずにスクラッチで実装してしまいました><。「こんなメソッドないかなあ」と思ったらだいたい実装されているのが Ruby ですが、Array#bsearch については想定以上のおもてなし度だったため気づかず…。成果物はこちらです。

課題2

課題2は難儀しました。入力された住所を完全にパースするのはとても難しそうなので、都道府県までのパースにとどめ、

  1. CSV を都道府県で分割
  2. 入力した住所の都道府県をチェックし、該当するCSVをロードする
  3. CSVの住所情報と、入力した住所を正規表現でマッチさせて該当する郵便番号を得る

という戦略で進めました。しかし

  • 入力値が数値なのにCSV側が漢数字のケース
  • CSV側に(1〜4丁目)のような曖昧な入力がある

というレアケース対応をしていたらタイムアップしてしまいました。日本の住所の取り扱いマジむずい…。成果物(work in progress)はこちら

感想

お題を与えられてペアプロをするというのも大概大変なのですが、そこに「英語で」というのが入るとさらに難易度アップです。「これ英語でなんて説明しようか…」で脳のリソースの約半分が割かれてしまいます。そして残りの半分でペアプロをしないといけません。慣れていないと大分辛い…。

Tokyo Rubyist Meetup のミートアップに参加すると、かなり「英語をもっと頑張らないといけない!!!1」状態になるので、「明日から本気出す!」となりがちなおまいらにオススメなコミュニティだと思います。あとそんなあなたにenglish.rbもありますのでこちらもあわせて宜しくお願いいたします。