日曜日, 3月 04, 2007

はじめてのRuby

私の最近の勉強のゴールは「WebサービスからXMLのデータを取ってきて
自由自在に加工するための周辺技術をマスターする」なのだが、Javaから
始めたところ、JAXPとかJAXBとかJWSとかAXISとか勉強する素材が
ゴロゴロ出てきてしまった・・・。

世に転がっているサンプルを適当に直して使えるようにするだけの知識なら
既に身に付いているとは思うのだが、そんな中途半端の状態で「作る」
作業に入ってしまうと、過去の経験から言うといたずらに時間を浪費してしまう。

それをなくすには「だいたい分かったぞ!」という、自分なりにテクノロジーを
俯瞰できるというか、隅々まで自分の言葉で説明できる程度に理解することが
必要なのだが、Webサービス関連は裾野が広すぎて、なかなかそこまでたどり
着かない。 が、コーディングやテクノロジーは実際に試すと理解がぐっと進むので、
座学ばかりではイケナイというジレンマがある。

そこで、「1回だけインターフェースを叩いてみる」等を気軽にできるようにPerlの
勉強を 始めたわけだが、確かに便利なものの、ハッシュを扱う際に必須である、
リファレンスがいまだに馴染みにくいと感じている。また、各種モジュールの
オブジェクトの初期化の仕方バラバラなのも何か抵抗感が・・・・。
XMLをなんだかんだするためにはハッシュは避けて通れないので、ここは
勉強を続けるつもりではある。

と、そんなことを考えているときに、たまたまRubyの作者のまつもとゆきひろ氏
のインタビュー記事を読む機会があった。Ruby on Rails の勢いは既に
色々なところで耳にするが、それ以外にRubyの「ロジックを考えることに集中
できるから楽しい」という、言語仕様のフレンドリーさも特色もよく耳にするので
気にはなっていた。

日本発の言語というと、国内で一時期使われてもやがてグローバル標準に飲まれて
しまい、せっかく習得しても活用する環境が整わないかも?という不安から、進んで
手を出す気になりにくいのだが、Rubyはその点は確実に超えてきた気がする。
記事の内容もそういった、海外での愛好者の増加に触れていた。

ということもあり、Rubyの本を買ってきた。

思ったこと

  • 配列・コレクション関連のメソッドがすごく充実しており、それらの扱いがラク
    という点ではPerl以上な気がする。配列とハッシュの区別がない、
    というか、「配列とは、自動採番でふられた数字が添え字になるハッシュ」
    という感覚が新鮮(実はJavaScriptもそうらしいが)。とにかく、ハッシュの
    中身を取り出したり、配列に変換したりするのが異様にラク。

  • 衝撃だったのは配列同士の差分が取れるということ。配列オブジェクトの
    a-b という演算で一発でできてしまうらしい。「IDが記録されているリストA
    のうち、リストBに含まれていないものだけを抽出する」というような場合に
    重宝しそう。

  • オブジェクトのプロパティのセットの仕方が斬新。JavaのBeansの setter,
    getter の仕様には無理やり感を感じ得ないのだが、Rubyの setter は

    Myobject.name = "名前だよ"

    という形。「メソッドじゃなくてこれはプロパティ代入じゃないか」と思って
    しまうが、 実は name=() という名前の setter メソッドなのだ。

    = という記号をメソッド名に使うということ自体も新鮮だが、Rubyの
    メソッドの引数を囲む () を省略できる、という仕様ならではと言うべきか。

    この仕様が、単に「打つ 字数が減るから書くのがラク」というだけでなく、
    こういった 活用法も視野に入れた上で決めた上だとしたら、考えた人は
    本当に凄いと思う。

あれもこれも手を出して、結局どれも極めていない、というようにならないように
留意する必要はあるけど、新しい言語・技術に触れると、そのたびに既知の
知識を俯瞰する際の視点がすこし豊かになった気になれる。