icon
icon

RubyでCSVファイルを操作する方法を現役エンジニアが解説【初心者向け】

初心者向けにRubyでCSVファイルを操作する方法について現役エンジニアが解説しています。CSVファイルとは何かの文字や空白で区切られてた文字列のファイルのことです。カンマ,が良く使われます。RubyではあらかじめCSV形式のファイルを読み込むメソッドなどが用意されています。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

RubyでCSVファイルを操作する方法について解説します。

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

RubyでCSVファイルを操作する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

CSVファイルとは

CSVファイルとは、カンマ「,」で区切られたテキストファイルのことを指します。

sample.csvなどのファイル名で保存されており、以下のような形式で書かれます。

分類,名前,値段,
野菜,トマト,100,
野菜,レタス,250,
果物,りんご,200,
飲料,コーヒー,120,

 

RubyのCSVクラスとは

Rubyには、CSVファイルを扱うためにCSVクラスが用意されています。これを使用することで、CSVファイルを読み込んだり、書き出したりすることができます。

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

CSVファイルを操作するための主なメソッド

CSVを読み込むメソッドとして、一度で読み込む「read」と1行づつ読み込む「foreach」があります。どちらもCSVファイルの存在するパスを引数にとります。

CSVを書き出すメソッドには、「open」があり、csvファイルに追記したり、新しく作成することができます。

 

実際に書いてみよう

では、実際に書いてみましょう。まず、下準備にsample.csvファイルを作成して、以下のCSVをコピーしてして貼り付けてみてください。

分類,名前,値段,
野菜,トマト,100,
野菜,レタス,250,
果物,りんご,200,
飲料,コーヒー,120,

そして、同じディレクトリに今回使用するmain.rbを作成してください。以下のような構成になるはずです。

-main.rb
-sample.csv

 

それでは読み込みからやります。

require 'csv'
# sample.csvを読み込む
csv_data = CSV.read("sample.csv")
# 返り値は2次元の配列になるので、以下のようにアクセスできる
puts csv_data[0][0] # => 分類
puts csv_data[1][1] # => トマト

# headersをtrueにすると、1行目の値をindexの代わりに割り当てられる
csv_data_with_header = CSV.read("sample.csv", headers: true)
puts csv_data_with_header["分類"].join(",")
puts csv_data_with_header["名前"][3] # => コーヒー

# foreachでcsvファイルを1行づつ読み込める
CSV.foreach("sample.csv") do |row|
    puts row.join(",")
end

 

実行結果は、以下の通りです。

 

分類
トマト
野菜,野菜,果物,飲料
コーヒー
分類,名前,値段
野菜,トマト,100
野菜,レタス,250
果物,りんご,200
飲料,コーヒー,120

 

次に書き込みです。

# openで"w"を引数にすることで書き込みモードでCSVを開く
CSV.open("sample2.csv","w")do |csv|
    csv << ["分類","名前","値段"]
    csv << ["肉", "牛ひき肉","500"]
end

 

sample2.csvが作成できていれば、成功です。

以上で、解説を終わります。csvはよく使うので、ぜひマスターしましょう。

 

筆者プロフィール

メンター金成さん

フリーランスエンジニア。
Railsの案件を中心に、様々なアプリケーションを開発してます。

使える言語は、ruby python go 。最近はgoにハマってます。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。