Rubyでファイル読み込みを行う方法とは?|手順を詳しく解説!
- SE
- Rubyでファイル読み込みを行う方法ってどんな方法ですか?
- PM
- Rubyにあるメソッドを使って行う方法です。この記事で詳しく見ていきましょう。
この記事でわかること
Rubyでファイルを読み込む方法とは?
Rubyを使い、ファイルの読み込みを行いたいときのコードを紹介します。今回はRubyに標準搭載されているターミナルを使った読み込み方法です。
Macのパソコンが必要になるので注意してください。まずは全体の流れを把握しましょう。
Rubyでテキストファイルを読み込む手順
テキストファイルを読み込むには、下記の手順で進めていきます。初めてRubyを勉強する人、これから勉強をしようと考えている人は、ぜひ試してみてください。
まず、Desktopに読み込みたいテキストファイルを用意します。次に、ターミナルを開いてDesktopに移動し、irbコマンドを入力します。
そして、ファイルを開く(読み込む)Rubyコードを入力し、読み込みたいテキストファイルが表示されたことを確認します。
Desktopに読み込みたいテキストファイルを用意する
拡張子が.txtのテキストファイルを作成します。自分の使いやすいエディタで構いません。Macの標準テキストエディタで作る場合は、そのまま保存すると拡張子が.rtfというリッチファイルテキストになってしまうので注意しましょう。
標準テキストエディタの場合は、メニューバーの中の「フォーマットタブ」から「標準テキストにする」を選択してから保存すると良いでしょう。
ファイルの内容とファイル名は任意のもので構いませんが、ファイル名はコード入力時に必要になるので覚えておきましょう。
ちなみに解説では、ファイルの内容は、ファイル・読み込み・テストとなっており、ファイル名は「test.txt」となっている場合を想定していきます。
ターミナルを開いてDesktopに移動する
ターミナル アプリを開いてDesktopに移動しましょう。
最初は「ユーザー名$」というホームディレクトリにいるのでcd Desktop
と入力し、Desktopに移動します。表示が「Desktop ユーザー名$」となったら成功です。
irbコマンドを打つ
ターミナル上でirb
と打ってください。irbの正式名称は、「Interactive Ruby」と呼ばれ、ターミナル上で対話的にプログラムを実行することができます。
入力し、irb(main):001:0>
と表示されていることを確認できたら成功です。ここから先は、Rubyのコードを入力していきます。
irbモードを終了したい場合はexit
と入力してください。ただし、事前にRubyで入力したコードによって、何らかのプログラムが実行中の場合はexit
が効きません。その場合は、キーボードのcontrol + C
、もしくはcontrol + D
を押しましょう。
ファイルを開く(読み込む)Rubyコードを打つ
ファイルを読み込むために必要なコードは全部で5行です。手順のサンプルを下記で紹介するので、1行ずつ実行してみてください。
イメージとしては、テキストファイルを指定してファイルを開き、中身を読み込み、中身を取り出して表示する、という流れになります。
1
2
3
4
5
|
1.File.open('test.txt') do |file|
2.file.each_line do |subject|
3.puts subject
4.end
5.end
|
File.open(‘test.txt’) do |file| の解説
1行目は、irb(main):001:0> File.open('test.txt') do |file|
となります。
前半のFile.open
は、Rubyのファイルクラスのopenメソッド を使う、ということです。
つまり、Rubyのファイルというカテゴリには、ファイルを開くためのopenというコマンドが最初から用意されている、という意味になります。
真ん中の('test.txt')
は、カッコとシングルクォーテーションで囲われたファイルを指定する、というRubyのコードです。ファイル名を変更している場合は、test.txtではなく、変更した名称を入力してください。
後半の do |file|
は、開いたファイルデータをfile
という変数に格納する、というRubyのコードです。
「file」は変数のため任意の名前でも構いません。do
の前後には半角スペースが入ります。よく全角スペースと間違えて入力するミスがありますので、十分に注意しましょう。
file.each_line do |subject| の解説
2行目は、irb(main):002:1* box.each_line do |subject|
となります。
前半のfile.each_line
は、fileという変数に入ったデータを1行ずつ読み込みをする、というコードです。fileは変数なので、1行目で設定した変数名になります。変更した場合は、この部分も変更しなければいけません。
ちなみに読み込むコードはeach_line
だけではなく、1文字ずつ読み込むeach_char
もあります。読み込みたい条件によって、使えるメソッドはたくさんあるので幅広い表現が可能です。
まずは、1行ずつ読み込みをするeach_line
で基本文法を覚えると良いでしょう。
後半の do |subject|
は、subjectという変数に1行ずつ読み込みをしたテキストデータを格納するコードです。この「subject」も変数のため、任意の名称でも構いません。また、do
の前後は半角スペースが入りますので注意しましょう。
puts subject の解説
3行目は、irb(main):003:2* puts subject
となります。puts subject
は、「subject」という変数の中にあるデータをputsメソッドを使って表示する、というコードです。
putsメソッドはRuby特有のコードで、変数の中身を取り出すというイメージを持つと理解しやすいでしょう。このputs
を使うことで、ターミナル上にファイルの中身が表示されます。
「puts」と「subject」の間は半角スペースです。プログラミングでは半角スペースが基本になっており、全角スペースはエラーの原因になるため、基本的な文法を学んでいくのと同時に慣れていくと良いでしょう。
end の解説
4行目はirb(main):004:2> end
になり、5行目もirb(main):005:1> end
になります。5行目のendを入力し、enterを押せば、ファイルの中身が表示されます。4、5行目は同じなので、一緒に解説します。
プログラミングコードの中には、3行目のputsメソッド のように、1行だけで実行ができるコードもありますが、open
やeach_line
のようにend
で範囲を締めくくってから実行できるコードがあります。
irbのような対話式の書き方だとわかりづらいかもしれませんが、今まで入力した5行のコードは、以下のような構造になっており、このように見ると「end」がどこに掛かっているか理解しやすくなります。
1
2
3
4
5
|
File.open('test.txt') do |file|
file.each_line do |subject|
puts subject
end
end
|
読み込みたいテキストファイルが表示されたことを確認する
5行目の次に表示された内容が、テキストファイルと同じであれば成功です。もしエラーになってしまったら、入力ミスがないか、半角スペースが抜けていないか、全角スペースになっていないか、など落ち着いて確認してみましょう。
irbでは一度実行してしまったら、戻って編集することはできません。もう一度最初から入力しましょう。
ちなみに便利な機能として、十字キーの上下を押すと今まで入力した履歴を選ぶことができます。その機能を使い、変数名だけを変更して再度実行をするなど、入力する量を少しでも減らしながらコーディングができるので、活用してみてください。
- SE
- Rubyのメソッドには多くのコードがあるのですね。
- PM
- このコードを使うことで、さまざまなアプリの機能に応用することができるようになります。
ファイルの読み込みを応用してみよう
以上が、Rubyでファイルの読み込みをする基本的なコードになります。
この基本構造を理解していれば、画像や他の拡張子の読み込みをしたり、1文字ずつ後ろにスペースを足して読み込みをしたりと、自分が作りたいアプリの機能に応用できます。
今回紹介したメソッド以外にも、Rubyには便利なメソッドがたくさん用意されています。irbは起動も終了も簡単で、手軽に楽しみながらRubyのコードを試すことができます。気になるメソッドがあったら気軽に試してみてはいかがでしょうか。
Search キーワード検索
Popular 人気の記事
-
【VB.NET入門】DataGridViewの使い方まとめ
公開: 更新:
reccomended おすすめ記事
-
【.NETが統合】.NET 5の概要と今後のリリース予定
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
RedmineプラグインおよびWEB開発/Ruby/東京都中央区/【WEB面談可】/在宅勤務
月給65万~65万円東京都中央区(新富町駅) -
Webアプリケーション運用保守/Ruby/東京都江東区/【WEB面談可】
月給50万~60万円東京都江東区(亀戸駅) -
Webアプリケーション開発(既存機能改修)のテスター/Ruby/東京都江東区/【WEB面談可】
月給25万~35万円東京都江東区(亀戸駅) -
Webアプリケーション開発(既存機能改修)/Ruby/東京都江東区/【WEB面談可】
月給45万~60万円東京都江東区(亀戸駅) -
Ansibelの自動構築/Ruby/東京都台東区/【WEB面談可】/テレワーク
月給46万~48万円東京都台東区(浅草駅) -
会計ワークフローの開発/Ruby/東京都新宿区/【WEB面談可】/フルリモート
月給46万~48万円東京都新宿区(新宿駅)