• WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCampPro_インタビュー
    未経験から上京し、テレビでも話題のIT企業に転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20

▼当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

金王冠Web Camp【業界最安値】1ヶ月集中してプログラミングスキルを身につけられるスクール
1ヶ月通い放題・メンター常駐の教室環境でWebサービス等作りたい方
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
銅王冠Tech Camp業界最大級!教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
びっくりマークWebCampPro転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアを3ヶ月で目指すプログラミングスクールです。
7月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
6月受入枠は満員となっております。7月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!
※プログラミングを学んでみたいけど、時間がなくて全文の記事が読めない!という方は、WebCampの無料説明会(毎日開催)に参加してみてください!

 

Rubyはオブジェクト指向言語

Rubyはすべてオブジェクトでできている「オブジェクト指向言語」です。

Rubyについて語られるときに良く聞く言葉ですが、初心者の人にとっては「?」しか出てこない魔法の言葉ではないでしょうか?

そんな「オブジェクト」や「オブジェクト指向」について、詳しく説明します。

Rubyはすべてオブジェクト

「オブジェクト」というのは、いったい何のことでしょうか?

日本語に直訳すると「もの」や「物体」ということですが、プログラムの中にものや物体があるとでもいうのか、良く分かりません。

しかし、「Rubyはすべてオブジェクトである」といろいろな参考書などで言い切っていますので、そういうものなのです。

“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
2017-10-04 10:26
今回の記事では、未経験からWebCampを1ヶ月受講し、その後エンジニアとして転職をした喜田さんにお話を伺いました。 <プロフィール> 喜田 大介 さん (28歳) 大学時代はプ...

オブジェクトとは

オブジェクトがどんなものかを説明するには、その性質を挙げた方が分かりやすいでしょう。

以下が、オブジェクトが持っている性質です。

・内部状態を持つ(値などを保持できる)
・メッセージをやりとりできる(情報のインプットとアウトプットができる)
・アイデンティティを持つ(自分と他を区別できる何かを持っている)

これらの内容が、プログラムとどう関わっているのか分かりづらいかもしれませんが、順を追って説明しましょう。

Rubyのオブジェクトというのが、何のことを指しているのかは、じつは簡単です。

例えば、次のプログラムをもとに説明しましょう。

msg = "Ruby"
len = msg.length
num = 10

このプログラムには、オブジェクトが3つあるように見えます。具体的に挙げると、以下の8つです。

「変数msg」
「変数num」
「変数len」

内部状態を持つ

上で挙げたオブジェクト8つは、すべて何らかの値を持つ(持つことになる)ものであることは分かるでしょう。

つまり、内部状態を保持することができるわけです。

これらに比べて、オブジェクトとして挙げていない「length」、「=」などの、メソッドは、与えられたものに対して処理をするだけで、保持することはありません。

メッセージをやりとりできる

この点も明確です。

msgやnumは、宣言時に値を渡され、その後、length」によって自分の内部状態をアウトプットしています。

メッセージと書くとややこしいですが、他のオブジェクトやメソッドと情報をやりとりしているわけです。

ここでポイントなのは、外部とのやりとりを行うのに、メソッドを使うということです。
※「len = msg.length」がもっとも分かりやすい例でしょう

つまり、「オブジェクトはメソッドを持つことができる」ということになります。

アイデンティティを持つ

変数であれば、固有の名前を持つことでアイデンティティを保つように思えますが、その点は注意です。なぜなら、変数は、どこかに同じ名前の変数が存在できるからです。

この「アイデンティティ」の確認には、少し工夫が必要です。

Rubyのオブジェクトは、必ず固有のidを与えられており、それがアイデンティティと言えます。

この確認には、「object_id」メソッドを利用します。

上の例のオブジェクトidを確認しましょう。

msg = "Ruby"
len = msg.length
num = 10

print("msg id: ", msg.object_id, "\n")
print("len id: ", len.object_id, "\n")
print("num id: ", num.object_id, "\n")

結果は、以下のようになります(表示されるオブジェクトidは、環境によって違います)

msg id: 25918980
len id: 9
num id: 21

オブジェクトに対してこのメソッドを使うことで、このようにどんなオブジェクトでも固有のidを持っているということが分かります。
※逆に、idからオブジェクトを得ることができるメソッド(ObjectSpace._id2ref())もあります

代入は名札付け

じつは、オブジェクトidを確認することで、「代入」の真の動きが見えてきます。

少し複雑ですが、idを表示する仕組みを入れたプログラムをもとに、もう少し詳しく説明します。

#  msg = "Ruby"
string_id = "Ruby".object_id  # 文字列"Ruby."のid
msg = ObjectSpace._id2ref(string_id) # idからオブジェクトを取得してmsg = "Ruby"と同じことをする
msg_id = msg.object_id # 変数msgのid

# len = msg.length
len = msg.length
len_id = len.object_id # 数値10のid

# num = 10
num10_id = 10.object_id # 数値10のid
num = ObjectSpace._id2ref(num10_id) # idからオブジェクトを取得してnum = 10と同じことをする
num_id = num.object_id # 変数numのid

# numにlenを代入
num = len
num_id2 = num.object_id # 変数numのid(再確認)

# 結果出力(順番に)
print("\"Ruby\" id: ", string_id, "\n")
print("msg id: ", msg_id, "\n")
print("len id: ", len_id, "\n")
print("10 id: ", num10_id, "\n")
print("num id : ", num_id, "\n")
print("num id2: ", num_id2, "\n")

結果は、以下のようになります。

"Ruby" id: 24803560
msg id: 24803560
len id: 9
10 id: 21
num id : 21
num id2: 9

結果を見てみると、"Ruby"とmsg、10とnum、lenとlen代入後のnumが同じオブジェクトidになっています。

これでは、「アイデンティティ」としては成り立たない感じです。

しかし、そうではありません。

Rubyでは、実のところ、「変数に代入する」というのは、別のオブジェクトに値を入れるのではなく、ただ名札を付けているだけだからです。

つまり、以下のプログラムは、10というオブジェクトに、numという名札を付けていると解釈できます。

num = 10

上の例でいくと、msgは実体となるオブジェクト"Ruby"の名札、lenは"Ruby"の文字数である4の名札、numは10の名札でしたが、lenを代入されたことによって、lenと同じ"Ruby"の文字数である4の名札になったということです。

ただし、numとlenが同じオブジェクトの名札ということになれば、一方の値を変更すれば、もう一方も変わってしまうという懸念が生まれます。例えば、上記のプログラムに以下のような「numに2を加えたnumを自己代入するプログラム」を追記しましょう。

num += 2
num_id3 = num.object_id # 変数numのid(再々確認)
print("num = ", num, ": len = ", len, "\n")
print("num id3: ", num_id3, "\n")

追加した部分だけの結果を抜き出すと、以下のようになっています。

num = 8: len = 4
num id3: 17

していますが、lenの数値に変化はなく、numだけが2増えていますので、幸い懸念した動きにはなっていませんね。

また、numのオブジェクトidは違ったものになっています。これは、自己代入の処理の中で、もともとのnumに2を足した6のオブジェクトが生まれて、numはそのオブジェクトidの名札になったということなのです。

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】
2018-03-22 23:28
今回の記事では、独学でPHPを1年半学習し、その後WebCampを受講して未経験からエンジニアへと転職された佐々木さんにお話を伺いました。 <プロフィール> 佐々木 祐樹 さん(2...

オブジェクト指向プログラミング

ここでは、Rubyはオブジェクトでできているということが、プログラム上どう便利なのかについて、説明しましょう。

Rubyだけではなく、JavaやC++など多くのプログラム言語で「オブジェクト指向プログラミング」ができるようになっており、推奨されています。

ただし、オブジェクト指向プログラミングは、難解で取得が難しいという意見も少なくありません。

しかし、そうではありません。「オブジェクトの特性」を理解していれば、オブジェクト指向プログラミングは、難しいどころか、とても楽ができるプログラミングなのです。

オブジェクトだから、楽ができる

オブジェクトには、以下の性質があると説明しました。

・内部状態を持つ(値などを保持できる)
・メッセージをやりとりできる(情報のインプットとアウトプットができる)
・アイデンティティを持つ(自分と他を区別できる何かを持っている)

これらを実際のプログラムで例えると、以下のようになります。

「ある固有の変数は、値を保持しており、その値を操作するメソッドを持っている」

例えば、ある文字列を1つ宣言します。

msg = "Ruby"

この瞬間、保持した文字列をいろいろと操作することができる固有のオブジェクトを1つ作ることができたことになります。

ほんの少し紹介すると、以下のようなものです。

msg = "Ruby"

print(msg.chr, "\n")              # 最初の文字を取り出す         => R
print(msg.concat(" Study"), "\n") # 文字列の追加                 => Ruby Study
print(msg.count("u"), "\n")       # 文字列中の特定の文字を数える => 2
print(msg.downcase!, "\n")        # 大文字を小文字にする         => ruby study
print(msg.split(" "), "\n")       # 文字列の分割                 => ["ruby", "study"]

他にも文字列にはいくつものメソッドが用意されており、直感的に文字列を操作できるようになっています。

同様に、数値やリストなどのオブジェクトにも数多くのメソッドが準備されています。

つまり、オブジェクト指向プログラミングを進めることで、既存のオブジェクトを巧みに組み合わせることができ、再利用できるオブジェクトを作ることができるようになっているということです。

ぜひ、恐れることなくオブジェクトを活用していき、いつの日にか、自分でオブジェクトを作ることができるようになってください。

時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
2018-01-26 13:03
今回の記事では、WebCampに1ヶ月間通い、未経験からエンジニアとして転職した星野さんにお話を伺いました。 <プロフィール> 星野 智洋 さん(25) 学生時代は日本大学芸術学部...

まとめ

Rubyは、すべてがオブジェクトのプログラム言語です。

つまり、オブジェクトはRubyの基本で、オブジェクトを理解できれば、Rubyの動きがどんなに奇々怪々であっても理解できるということになるでしょう。
もちろん、すぐにスッと理解できる人はそれほど多くはありません。画面上の文字での説明であればなおさらです。

なんとなく分かったような、分からないような、というきめ細やかな部分のフォローについては、フェイストゥフェイスの研修や講座にはかなわないところでしょう。

・Rubyで宣言する変数や直接記載する定数などは、すべてオブジェクト
・オブジェクトには、固有なidと値を保持する能力、値をやりとりするメソッドが必ずある
・オブジェクトを理解することで、Rubyをより理解できる
・オブジェクト指向プログラミングは、再利用できるオブジェクトを生み出し、組み合わせる方法

WebCamp・WebCamp Proについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。WebCamp Proは3ヶ月間で未経験から即戦力エンジニアを育成するプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

7月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
6月受入枠は満員となっております。7月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

 

【インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

ブラジルから帰国し技術をつけようとRubyエンジニアを目指してWebCampでRubyを学び、見事Webエンジニアとして転職を果たした田中さんにお話を伺いました。

Rubyの学習がしたい。基礎をしっかりと理解したい

転職のサポートがほしい

と考えている方はぜひお読み下さい。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
2018-01-15 13:23
今回の記事では、WebCampで1ヶ月間Rubyを学習し、Webエンジニアとして転職した卒業生の田中さんにお話を伺いました。 <プロフィール> 田中 デニス 昭彦さん(...
関連キーワード
Rubyの関連記事
  • 【Ruby 入門者説明書!】ifを使いこなすポイントはここ!解説
  • 【Ruby入門説明書】ruby caseについて解説
  • 【Ruby入門説明書】オブジェクトの理解について解説
  • 【Ruby入門説明書】変数と定数について解説
  • 【Ruby入門説明書】数値と四則計算について解説
  • 【Ruby入門説明書】日本語と文字列、コードについて解説

当サイトで人気のオススメ転職サービスTOP3

1位 マイナビエージェント×IT

おすすめポイント

・平日忙しい人も、土曜日開催の個別キャリア相談会に参加できる

・職種や仕事内容(要件定義、上流工程から携わる仕事など)の要望が細かくできる
・マイナビの規模を活かした豊富で幅広い求人数

マイナビエージェント×ITの登録はこちら

2位 レバテックキャリア

おすすめポイント

・求人登録数4,000件以上

・エンジニア未経験、経験者両方に対応

・有名企業の採用担当者インタビューがみれる

・一次面接NGからの内定実績もあるほど、内定率が高い

レバテックキャリアの登録はこちら

 3位 type転職エージェント

おすすめポイント

転職者の71%が年収アップ

・IT系企業、特にエンジニアに限らず営業職の求人も充実している

各職種専門の転職アドバイザーが援助

type転職エージェントの登録はこちら

おすすめの記事
キャリア
皆さんはIT業界について、どれだけご存知ですか? 10年前まではパソコンがなければ、ITに触れることが少なかったり、ITに興味がない方も多か...