RubyでCSVとスプレッド操作
CSV操作の基礎
Ruby実践でデータを扱う際、CSVファイルは最も手軽に入出力できるフォーマットです。require 'csv' を先頭に書くことで、標準ライブラリのCSVモジュールを利用できます。CSVは行単位でパース(解析)され、配列やハッシュとして扱えるため、データの整形や検索が簡単に行えます。
CSV操作の基本は「パース」と「書き出し」です。パースはファイルを読み込み、内部構造に変換する作業。書き出しはその構造を再びCSV文字列に変換し、ファイルへ保存します。これらを組み合わせることで、データの抽出・加工・再保存が一連の流れとして実装できます。
CSV.read と CSV.foreach の使い方
最も頻繁に使われるメソッドは CSV.read と CSV.foreach です。CSV.read('data.csv') はファイル全体を読み込み、配列の配列として返します。ヘッダー行を自動でハッシュ化したい場合は headers: true オプションを付けると便利です。
require 'csv'
rows = CSV.read('data.csv', headers: true)
rows.each do |row|
puts row['名前']
end
一方、CSV.foreach は行ごとにブロックを実行し、メモリ使用量を抑えつつ大きなファイルを処理できます。例えば、特定の列だけを抽出して別ファイルへ書き出す場合に有効です。
CSV.generate とスプレッドシート連携
データを外部に渡す際、CSV.generate を使って文字列として生成し、HTTPレスポンスやメール添付に利用できます。以下は簡単な例です。
require 'csv'
csv_string = CSV.generate do |csv|
csv << ['名前', '年齢', 'メール']
csv << ['田中', 28, 'tanaka@example.com']
end
puts csv_string
生成したCSVはGoogle スプレッドシートやMicrosoft Excel へインポート可能です。Google Apps Script で DriveApp.createFile を使えば、生成した文字列を直接ファイルとして保存し、スプレッドシートにリンクすることもできます。こうした連携により、Ruby で加工したデータをスプレッドシートで可視化・共有するワークフローが構築できます。
コメント
コメントを投稿