電柱日報

日々の由無し事

Ruby/AWSその後

Ruby/AWSのデータ構造が独特、という話は昨日も書きましたが、ようやく全体像が見えてきました。
AWSObjectがXMLのノードと対応しているらしいことはすぐに判ったんですが、AWSObjectがプロパティとしてAWSArrayを持ち、AWSArrayに別のAWSObjectが収まっている、というAWSObjectとAWSArrayによる入れ子構造になっていて、パッと見は非常に見通しが悪いんですよねぇ。
AWSObjectをXMLの要素とすると、AWSArrayは子要素に相当するんですが、子要素の実態はAWSArrayの中にあるAWSObjectですので、AWSArrayは同種のXML要素を取りまとめるだけのために存在しています。XMLだと同じ階層に同じ種類の要素が複数存在することが許されますんで、こうした仕組みでも用意しないと、データ構造が再現できないんでしょうね。
AWSのレスポンスでは、同じ階層に出てくるXML要素は1種類1つずつなことが多いですので、多くの場合AWSArrayの中身はAWSObjectが1つだけ、という事が多いのですが、そうした場合の利便性も考慮してある辺り、よくよく考えられてるなぁと思いますねぇ。