記載されている内容は2019年02月14日時点のものです。現在の情報と異なる可能性がありますので、ご了承ください。記事に記載されている情報は自己責任でご活用いただき、本記事の内容に関する事項については、専門家等に相談するようにしてください。Rubyには様々な変数があります。その変数の役割をしっかりと把握しているか不安な方も多いのではないでしょうか。この記事では、一般的にRubyで使用される変数についてソースコードを交わりながら説明します。変数の役割をしっかりと把握したい方は是非読んでみて下さい。シェアツイートはてブ目次Rubyの変数について理解しよう!Rubyの変数の種類グローバル変数についてその他のRubyの変数まとめRubyの変数について理解しよう!https://www.ruby-lang.org/ja/about/logo/Rubyの変数の種類Rubyには色々な種類の変数があります。・クラス変数などといった種類の変数が存在します。Rubyにおいてこの変数の役割を理解してソースコードを書くことは非常に重要なことです。処理の使用用途によって使用する変数の種類も変化するので変数の勉強はプログラミングを勉強していく上で最初に行う勉強です。この記事では以上の五種類の変数の役割を説明すると共にソースコードの書き方の例を交わらせて実践的に書き方も勉強していく形で進めて行きます。実際に自分でソースコードを書き込んで、実行して動作を確認しながらこの記事を読み進めるとより理解が深まります。それぞれの変数の役割をしっかりと把握してから実践的にRubyのソースコードを書いて行きましょう。グローバル変数についてグローバル変数の特徴グローバル変数とはどこでも使用できる変数のことです。Rubyで宣言したグローバル変数はメソッドやクラスを超えて値を参照することが可能です。値の変化や変数名の命名など気をつけることが大切です。Rubyでグローバル変数を宣言する時は頭に$と書きます。変数名の頭文字は小文字になるように命名しましょう。どの様な場合で使われるか1つの例としてRubyのソースコードを用いて説明します。以下のコードではグローバル変数に"Hello_1"という文字列を代入して出力させるコードです。#hello_1以上のコードではクラス内にグローバル変数を宣言しました。グローバル変数ではクラス内のどのメソッドでもその変数を書くと代入されたものが出力できます。加えて、クラス外でも出力することができます。メソッド内やメソッド外、クラス外でもどこでも出力することができるのがグローバル変数です。ローカル変数との違いグローバル変数と違い、ローカル変数では宣言したスコープ内でしか使うことが来ません。先ほどのグローバル変数のソースコードをローカル変数に置き換えてソースコードを追加して実行してみましょう。上記のソースコードではインスタンス化した変数を元にsayメソッドを処理しています。するとエラーが出てきます。このエラーは、sayメソッドにあるhello1という変数は宣言されていないという意味になります。同じClassスコープ内では出力できるのですが、違うスコープになると使用できなくなります。スコープの壁を乗り越えられないのがローカル変数です。組み込み変数とはRubyにおいて組み込み変数とは、Rubyが前もって用意している処理によって意味を与えられる変数です。定義する変数やクラスとはまた別として組み込み変数とついています。組み込み変数では普通の変数として使用が不可です。補足ですが組み込み変数とは別に組み込み定数というものがります。標準出力や、環境変数を返すことなど、色々なものがあります。これらのことを組み込み定数といいます。組み込み変数を覚えるついでに組み込み定数も覚えとけば勉強効率が上がり、勉強がし易いでしょう。その他のRubyの変数ローカル変数Rubyのローカル変数とは、宣言したスコープ内でしか使用できない変数です。宣言は小文字または_ではじめます。name宣言するときの変数名の頭文字は小文字で宣言して下さい。以下のソースコードではローカル変数を利用して"Hello_1"という文字列を出力する処理を書いたソースコードです。#Hello_1上記のコードではローカル変数を宣言したsayメソッド内では変数hello1が使用できていますが、sayメソッド外ではローカル変数なので使用できていません。エラーが出ている原因は、hello1という変数が定義されていないのでエラーが出ます。以上から、宣言したスコープ外では使用できなくなるのがローカル変数です。インスタンス変数インスタンス変数は、クラス内で全メソッドで共通して使用することができる変数です。インスタンス変数を初期化しないとインスタンス変数を参照した時の値はnilです。宣言時は頭に@をつけます。以下コードはインスタンス変数を利用した"Hello_1"という文字列を出力するコードです。#Hello_1以上から他のメソッドでもインスタンス変数は使用することができます。他のメソッドで宣言して、また他のメソッドでその変数を使って処理を行うといった形の処理を書くことができるのでインスタンス変数は大事です。クラス変数クラス変数とは、宣言したクラスやそこから生成されるインスタンスの中ならどこからでも参照可能な変数です。クラス変数は再代入可能で、サブクラスやインスタンスメソッドから参照・代入が可能です。宣言では変数名の頭に@@をつけます。以下のコードではインスタンス化した後にクラス変数を呼び出して出力をしているコードです。#Hello_1Hello_2まとめどのプログラミング言語にも言えますが、Rubyには多くの種類の変数があります。それぞれの変数によって用途が異なるのでしっかりと役割を把握してから使用するのが良いでしょう。変数名は自分で好きなものを命名できますが処理に合った名前にしましょう。グループ開発する際でも自分が書いたソースコードの中の変数を適切な変数名にしとくとソースコードの可読性を上げることができます。自分だけ理解していれば良いという考え方だとグループ開発の際に周りが大変な思いをすることになるので、変数名は処理に合った適切な変数名に命名しましょう。Rubyにおいてどこでも参照できる様な変数を使いすぎると変数の値の変化が把握しづらくなってしまい、思わぬエラーに繋がる可能性もあります。値の変化の把握や適切な変数名など開発する際には気を付けることがたくさんあります。どこでも参照できる様な変数を使用する際には気をつけて書いてください。file.2:営業マンとして活躍し、海外留学。file.4:独学よりもスクールで。他人と同じことはしない。