コンピューター技術者の文章って・・・(RailsでXML)

最近Ruby on RailsとかMacとかその他色々な技術を使ってみてるんですけど、その際に日本語のドキュメントってあんまりないんです。
なので、英語のドキュメントとかフォーラムへの投稿を検索して読むんですけど、さすがにマニュアルは専門用語のオンパレードで日本語でも英語でも読むのがしんどいんですが、それ以外のドキュメントを作っているアメリカ人のコンピューター技術者って、なぜか面白いことを書こうと必死になっているみたいです。
ちょっとくだけた(といっても大企業の公式サイト内ですが・・・)感じの開発技術者寄りのページに入ると、なんと言うかウィットに富んだ文章にあふれ返っているような気がします。


今日はRailsXMLを出力するにはどの方法が一番良いんだろうということを調べていたのですが、引っかかってきたのがIBM developerWorksでした。 ホントにIBMって何でもやってるんですねぇ。 てか、研究部門が習得した技術を外部に喜んで公開するなんて、IT業界くらいじゃないですか? ま、ソフトウェアの基礎技術にパテントなんて無いからかもしれませんが。

そこで見つけたのが、このドキュメントです。
https://www6.software.ibm.com/developerworks/education/x-rubyonrailsxml/x-rubyonrailsxml-a4.pdf

面白かった部分抜粋・・・

Now is where you start to see the real power of Ruby's method_missing callback, and how APIs can take advantage of it. Witness how to create the Food element in Listing 13.

# Listing 13. Creating the root element of your sample XML document with Builder
def generate_builder
  doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
  doc.Food
end

At this point, you might say something like - -"Wait a minute, there isn't a Food method in an XML API -- that's silly!" - and you'd be correct. What happens here is Ruby says "Whoa? I don't know about a Food method in this object, I will dispatch this call to method_missing, and let the API handle it if it wants too, if not, I'll raise an exception."


んで、僕が勝手に訳した内容

さぁ、Rubyの本当のパワー(つまり「メソッド無いぜ!」コールバック)のお披露目やで。 Builderはこいつを使ってるから、むっちゃスゲーぜ。
これがその証拠や。リスト13のFood要素の作り方を、まぁ見てみぃや。

# リスト13.BuilderでのXMLドキュメントのルート要素の作り方
def generate_builder
  doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
  doc.Food
end

これ見て、もしかしてお前こう言うんとちゃう?
「ちょい待ちや。XML APIにFoodメソッドなんて無いやんか。 アホちゃうん!?」
そう、お前は正しいよ。
何が起こってるか教えたろか? Rubyはこう言ってるんよ
「なんでやねん!このオブジェクト内にFoodメソッドなんか無いやん。 しゃーないからmethod_missingに割り当てるようにしといたろか。んで、必要やったらAPI呼び出しできるようにしといたるわ。ホンマに無かったら例外発生さすさかいな。」


ドキュメントを読むときはしんどいと思わずに、楽しみましょう。