データの加工
ではRubyを使った実用的な処理の題材としてカンマ区切りのデータを加工してみましょう。
ヒアドキュメント
Rubyには複数行にわたる文字列データを簡潔に記述できる「ヒアドキュメント」という文字列定数の書き方があります。ヒアドキュメントはまとまったデータをスクリプトの中に埋め込みたいときに使います。
リスト2は、改行を含んだ文字列をCSV_DATA定数に格納しています。「<<EOS」がヒアドキュメントの開始で、次に出てくる終端の「EOS」までが文字列定数となります。「EOS」には好きな文字列を識別子として使うことができます。「<<LABEL」や「<<EOF」でもかまいません。必ず開始と終端で同じ識別子を使います。慣例的にヒアドキュメントの識別子には英大文字を使うことが多いです。また、例のようなヒアドキュメントでは、終端の「EOS」をインデントせずに行頭から記述する必要があります。
まずはじめにリスト2のデータを1行ずつ表示してみましょう。これは「第2回:Rubyを動かそう!」で解説したブロックを使った繰り返し処理が使えます。リスト2に続いてリスト3を入力し、csv_print.rbというファイル名で保存して実行してみましょう。図2のような画面が表示されたでしょうか。
リスト2:ヒアドキュメントの例(番号,名前,mail,身長)
CSV_DATA = <<EOS
01,太郎,taro@foo.com,156
02,花子,hanako@foo.com,155
03,次郎,jiro@foo.com,164
04,三郎,saburo@foo.com,142
05,二郎,saburo@foo.com,180
EOS
リスト3:cvs_print.rb
CSV_DATA.each_line do |line|
puts line
end
![csv_print.rb実行結果](/images/article/0709/25/3/2.gif)
図2:csv_print.rb実行結果
(画像をクリックすると別ウィンドウに拡大図を表示します)
実習1
リスト3を変更して2行目以降を表示したり3行目だけを表示してみましょう。Rubyリファレンスマニュアルの制御構造やStringクラスの項を参照しながら変更してみてください。
次にデータの並べ替えをしてみましょう。
次のページ