【Ruby入門】CSVファイルの読み込み・書き込み

どうも、フリーエンジニアの長瀬です。

CSVファイルは開発をする上でよく使われるデータ形式で、さまざまなプログラミング言語でデータの取得や書き込みをするときに利用されています。

今回はRubyでのcsvの扱い方について解説していきます。

この記事ではそんなCSVについて

【基礎】そもそもcsvとは
【基礎】csvの読み込み
【基礎】csvの書き込み
【発展】tableメソッドの使い方
【発展】generateメソッドの使い方

の章に分けて基礎からしっかり解説を行っていきます。

それでは行ってみましょう!

そもそもcsvとは

shutterstock_229910752
それでは「csvってなんやねん!!」という方のためにcsvについて解説していきたいと思います。

csvとはざっくり言うと「データがカンマ(,)で区切られていて拡張子が.csv」のファイルです。

というのも、CSVはComma Separated Value(カンマで分けられた値)の略だからです。
なんのひねりもありません。

例えば、

「ruby,python,java,php,c++」

というファイルがあり、それの拡張子が.csvならそれはcsvファイルです。

あまり難しく考えず

  • カンマで区切られている
  • 拡張子が.csv

という二点をクリアしていればcsvと認識して大丈夫です!

Rubyでcsvを扱う際はcsvというライブラリをrequireすることで操作がとても簡単になるので覚えておくようにしましょう。

また今回は以下のようなsample.csvを用いて解説を行っていきます。

csvの読み込み

shutterstock_422892943

一行ずつ読み込む(foreach)

まずはcsvを一行ずつ読み込む方法について解説していきます。

一行ずつ読み込むためには「foreachメソッド」を使用します。

[実行結果]

上のようにブロック内で一行ずつ配列としてcsvが読み込まれていることがわかります。

配列なので、要素を指定することも当然できます。

例えば一列目だけ取り出したい場合は[0]をつけて

[実行結果]

このように取り出せます。

文字列のcsvを読み込む(parse)

文字列のcsvを読み込む場合は「parseメソッド」を使います。

[実行結果]

このようにparseメソッドで、文字列のcsvが読み込めます。

全体を読み込む(read)

次にcsv全体を読み込む方法です。
csvを全体で読み込むためには「readメソッド」を使用します。

[実行結果]

上のように二次元配列に値が格納されていることがわかります。

二次元配列なので例えば以下のように要素を取り出すことができます。

[実行結果]

csvの書き込み

shutterstock_443233585

次にcsvの書き込みについて見ていきましょう!

csvの書き込みには「openメソッド」を使用します。

openメソッドで、

・第一引数に書き込むファイルを指定
・第二引数に書き込みモード「w」を指定

これでwrite-sample.csvというファイルが作成され、配列の内容が入力されます。

[書き込まれたwrite-sample.csv]

応用的な使い方

tableメソッド

csvのメソッドで便利ですが、あまり知られていないメソッドがあります。

それが「tableメソッド」です。

tableメソッドには三つの便利な機能があります。

  • ヘッダーの取得
  • 列の取得
  • 行の取得

それではサンプルコードを見ていきましょう。

[実行結果]

このように上記に挙げた値が取得できていることがわかります。

csv形式に変換する(generate)

「generateメソッド」を使うと、簡単にcsv形式のデータを生成することができます。

[実行結果]

このようにヘッダーと行をそれぞれ直感的にcsvデータ化できました。

注意すべき点は変換したデータをファイルに保存しているわけではないということです。

generateメソッドは純粋な変換メソッドなのです。

まとめ

今回はRubyのcsvの扱い方について解説していきました。
csvライブラリをrequireすることでとても簡単にcsvを扱えることがわかりました!

まとめると

・csvを読み込むなら、foreach、parse、read、table
・csvを書き込むなら、open
・csvデータに変換するならgenerate

となります。

それぞれに使い所があるので、適材適所使えるようになりましょう。

この記事を参考に是非csvマスターになってください!

Rubyカリキュラム無料公開中!

この記事はRuby入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Ruby学習に必要な情報を一つにまとめていますので効率よくRubyを学ぶことが出来ます。この機会に是非活用していただければと思います。

【Ruby入門ガイド】アプリ開発で知っておくべき知識を総ざらい
更新日 : 2018年11月23日

Rubyを最短で習得したい方へ

近年では様々なWEBサービスが流通するようになりました。

WEBサービスの普及が進むにつれて、それらを素早く開発するのに長けたRubyの人気は今後さらに増し、Rubyエンジニアの需要も自ずと増えることは間違いなしでしょう。

元々ITリテラシーの高い方や他言語を習得している方であれば、独学でRubyを習得することが可能です。

ただし、プログラミング学習をしている方の多くは

「自分に合った教材が見つけられずに挫折してしまった」
「勉強のための勉強になってしまい、ゴールが見えない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決するのに何日もかかってしまう」

このような悩みを抱えたまま挫折してしまうのが現実となっています。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
  • WEBアプリケーション開発までしっかりサポートして欲しい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、初心者の方がつまづきがちな、「CookPad」、「Wantedly」、「食べログ」のようなWEBアプリケーション開発方法もスムーズに学習することできます。

実際にオリジナルWEBアプリを開発し、成果物として認められて仕事獲得に成功した塾生は数多くいます。

このように、オリジナルアプリ開発から仕事獲得まで徹底的にサポートすることでプログラミング初心者の方でも安心して基礎学習に取り組むことができます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

Rubyならではの学習方法や、現役フリーランスRubyエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像から弊社サービス内容をご確認ください。

ruby_a2
LINEで送る
Pocket

書いた人

長瀬来

長瀬来

Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。

経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど

言語が好きで、英語や中国、ドイツ語を勉強しました。
将来的には海外で生活したいです。

現在はRuby on Rails5やCocos2dxの勉強を主にしています。

ライターとしては
できるだけ初心者にわかりやすい文章になるように心がけています。

趣味は語学、読書です。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説