【Ruby入門】require(_relative)で外部ファイルを読み込もう!かい2017/8/12019/8/2こんにちは!フリーエンジニアとしてWebサイト制作などを主に行っております、かい@dikxs118です。プログラミングをしていると、外部ファイルを読み込みたいという場面は多々あります。自作のファイルを読み込んだり、モジュールを読み込んだりですね。今日はRubyで外部ファイルを読み込む方法を、requireメソッドを中心として説明していきます。・require_relativeとはなど応用的な内容について解説していきます。まとめ外部ファイルの読み込みとはでは実際の使い方に移る前に外部ファイルを読み込むとはどういうことのなのかということについて説明します。ファイルのコードが長くなりすぎてしまった場合や、使いまわす同じコードなどは別ファイルで管理したほうが楽ですよね。そんな別ファイルで管理させたものを実際の実行ファイルで読み込むときに外部ファイルを読み込む必要があります。外部ファイルを読み込みたいときは主に・Ruby標準のライブラリを読み込む・自作の外部ファイルを読み込む・誰かの作った便利な外部ファイルを読み込むの3つくらいですね。外部ファイルを読み込む関数には大きく2種類あるので、説明していきます。Rubyの標準ライブラリを読み込む時のみ、挙動が違ったりもしますので詳しくは以降の章で見ていきましょう!requireメソッドを使おうrequireメソッドはライブラリやファイルを読み込むために使用をします。requireメソッドの特徴ではまずはrequireメソッドの特徴からみていきましょう。・カレントディレクトリを示す./を付ける必要があるくらいでしょうか。最後のカレントディレクトリの部分のみわかりづらいと思うので実際にコードを見て説明します。カレントディレクトリとはファイルが今いるディレクトリのことをいいます。相対パスでは./と書きます。rubyディレクトリ(フォルダ)の中にa.rbとb.rbというファイルがあり、a.rbでb.rbを読み込みたいとしましょう。ファイルとディレクトリ(フォルダ)の関係は以下の図のようになります。ファイルとディレクトリの配置図また、ファイルの中身はそれぞれ以下のようであったとします。'b'とするとエラーとなってしまいます。requireメソッドはカレントディレクトリを起点とした相対パスでファイルを探すので、一度カレントディレクトリに戻ってから、b.rbを参照する形になります。'b'と書くだけではa.rbからは参照できなかったわけです。'./b'としてa.rbを実行してみると実行結果helloときちんとrequireしていることがわかりますね。最後に中級者以降向けの情報になりますが、requireメソッドは絶対パスでもファイルを取得することは可能です。環境ごとの違いが大きくなるため、本章では相対パスのみの説明に限定しました。requireメソッドを使ってみようではrequireメソッドの詳しい使い方についてみていきましょう。Ruby標準ライブラリを読み込むRubyの標準ライブラリを読み込むためには、requireの後にライブラリ名を入れることで読み込むことができます。ライブラリとはRuby側で用意されている、ある機能がまとまったもののことですね。日付を扱うクラスであるdateライブラリを使用するときは、以下のようにしてください。+0000外部/自作のファイルを読み込む次に外部/自作のファイルを読み込みたい時について見ていきましょう。長いファイルを分割したり、使いまわすコードをモジュール化したときなどによく使います。外部/自作ファイルを読み込む時は、「相対パス」でファイルを指定する必要があります。endendこのように、相対パスを使用することで、ファイルの読み込みを行うことができます。実行結果userです相対パスで指定せず、ファイル名だけで指定してしまうとエラーが出るので、気をつけるようにしましょう。(LoadError)require_relativeを使ってみよういちいち、カレントディレクトリを示す./をつけるのはめんどくさい、わかりにくいという人もいると思います。そんな人は、require_relativeを使いましょう。このメソッドを使用すれば、カレントディレクトリを指定しなくても、ファイルを読み込むことができます。endend実行結果userですこのようにファイル名を指定するだけで、ファイルを読み込めていることがわかります。requireメソッドはカレントディレクトリからの相対パスを指定する必要があり、require_relativeは呼び出し元ファイルが存在するディレクトリからの相対パスを記述します。loadメソッドもあるよそしてもう一つ外部ファイルを読み込むためのメソッドとして、loadメソッドがあります。通常ではloadメソッドは使われることがありません。requireメソッドは読み込み済みのライブラリを再読み込みしないため、実行スピードがloadよりも勝るということです。そのため、初学者の方は基本的にrequireメソッドを使用してライブラリを読み込むと考えて問題ありません。カレントディレクトリを示さなくても良いなどのメリットもあるので使い方をサクッと見ておきましょう。使い方と言ってもrequireをloadにするだけです。"hello"実行結果helloこうですね。Rubyを独学で頑張っているけど先が見えない方のために独学でRubyを頑張っているわけだけど、先が見えない・・・そんな方、実はいらっしゃるのではないでしょうか?いや、おれは違うぞ。先のキャリアもしっかり見えてるし、独学の成果も出てきているそんな方であれば、これから先の話は必要ないでしょう。ページの閉じるボタンを押しましょう。「先が見えない」と心の底では勘付いているそこの奥さん。この先を読み進めて、一緒に課題を深堀りしていきましょう。「先が見えない」という不安や悩みを抱えてしまうのかさて、「一寸先は闇だ・・・」とお悩みを抱えている方に、なぜ独学でRubyを勉強しているにもかかわらず、そのような現状を抱えてしまうのか、一緒に考えていきましょう。先が見えない現状を踏まえ、課題として考えられるものは以下のどれかに該当するでしょう。プログラミングの上達が見えないプログラミングを継続できない気がするプログラミングスキルを習得した姿がイメージできないプログラミングスキルを活かした仕事を獲得するイメージができないこれらのどれかに該当することによって、「なんとなくプログラミング学習をしている」という状態になってしまいます。これらの要因は、三日坊主になる理論と同じなんですが、「プログラミング学習をしなきゃ」とプログラミング学習を頑張ってしまっている状態になってしまっています。受験勉強をやった経験のある方なら頭がもげるほどに首を縦に振ってしまう方も多いのですが、「今日も5時間勉強するぞ」や「今日はこの章を終わらすぞ」というように、学習を進めることに意識が行き過ぎてしまうと、ある程度学習を継続した後に「先が見えない・・・」となってしまいます。未来に光を当て、プログラミング学習を「成果が出るもの」にするために先ほど、「なぜ先が見えないという悩みや不安を抱えてしまうのか」という疑問に対しての答えを示していきました。これらの課題というのは、独学をしていれば9割の方がぶつかってしまう壁だそうで、いわば、あるあるの現象なのです。独学をしていて、「なんか前に進めていないぞ」と感じるのはこのせいなんですね。甘く見がちですが、非常にやっかい。これがさらにやっかいさを極めているのは、上記に挙げた課題のほとんどが、1人で解決できないものばかりだからです。実は、これらのほとんどが経験者に助けてもらいながら解決しないと、すぐに違う方向へと流れてしまいます。言い切れるのは、以前の私もそうだったからです。エンジニアやプログラマー関連のキャリアに詳しい方や現役のエンジニアに相談しながら修正を加え、学習を実践して今があります。言っても、周りにそういう人がいないし・・・という方もいるでしょう。いう時にこそ、プログラミングスクールの無料体験レッスンを利用するのです。営業をかけられて時間の無駄に終わるでしょ?という考えに辿りついてしまいますよね。結論から言うと弊社では、そういった強引な営業等を行うことはありませんので、安心して受講できます。「プログラミング学習の先ある未来」を光で明るく照らすには、弊社の無料体験レッスンがぴったりだと断言できます。それくらい無料体験レッスンに自信を持っているのです。(非売品)効率的なオリジナル学習カリキュラム未経験の転職(フリーランス)を可能にするキャリアサポート上記の特典だけでも他のスクールにはないポイントだと自信を持っている無料体験レッスン特典です。プログラミング学習をする毎日から、ワクワクしながらプログラミング学習できる毎日に変える体験を一度でいいのでしてみませんか?無料体験レッスン予約はこちらまとめ本記事でrequireメソッドついて基本的な使い方、さらにはloadメソッドとの比較についてご紹介しました。外部ライブラリを読み込んで自前のソースに利用することはよくあるケースです。外部ライブラリの読み込み場所によって、requireメソッドとrequire_relativeメソッドを使い分けることができれば、コーディングミスを防ぎ読みやすいコードを作成することが可能です。今後requireメソッドで使い方に迷うことがあれば、ぜひこの記事を思い出して下さいね。TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。