LoginSignup
54
49

More than 5 years have passed since last update.

残りの人生もPHPに費やしたいか、それともRubyで世界を変えるか?

Last updated at Posted at 2015-08-31

みんな大好き「Ruby」についてまとめました。超弩級初心者向けです。

Ruby?なんやそら...

Rubyの歴史

開発者は日本人のまつもとゆきひろ氏。通称--Matz--。
1993年生まれ。2005年に誕生した「Ruby on Rails」(以下Rails)というWEBアプリケーション・フレームワークにより爆発的に普及。

Rubyのニーズ

ITのメッカ、シリコンバレーで働くエンジニアに調査したところ、最も人気が高い・最も年収の高いエンジニアの使う言語、共に「Ruby」が一位という結果が出ている。ちなみにごく普通のエンジニアで平均年収が1200万に達する。「Rails」は日本でも多くのIT企業で採用されている。(楽天・CookPad・Wantedly・カカクコム・Retty・リブセンス・クラウドワークス・など)

Rubyの通り名

真性オブジェクト指向言語
より良いPerl
動く擬似コード
ALGOLの皮を被ったLisp

...そもそも通り名の意味がわかりませんね。大丈夫です。スルーしましょう。

オブジェクト指向のオブジェクトってなんぞや

3つの特徴

  • アイデンティティーを持っている:すべてのオブジェクトはなんらかのclassに属する
  • メッセージを受け取る:メソッド呼び出し/メッセージ送信
  • 内部状態を持つ:オブジェクトは0個以上の内部状態を持つ

Rubyの特徴

Rubyは「楽しく」プログラミングすることを前提とする、その上で

  • インタプリタ言語
  • オブジェクト指向:数値も文字列もなにもかもオブジェクト
  • 正規表現。テキスト処理に適す
  • 簡潔で力強い表現
  • 言語内DSL。自分専用の言語を作る能力
  • メタプログラミング
  • ガベージ・コレクション
  • 高階関数
    • イテレータ
    • リソース自動管理
    • コールバック

という特徴がある。

え...これ日本語?って方

簡単にまとめると

  • オブジェクト指向:プログラムの強度が高く、仕様の変更に柔軟で、テストの時間を短縮できる!!
  • スクリプト言語:人間の言語に近く、直感的で処理の内容がわかりやすい!!!

ってことです。はい。

Ruby基礎編

Rubyを扱う際には絶対に知っておかなければいけない基本的な内容を記します。

出力する

puts

は処理を出力するための命令

文字列

" " # ダブルクォーテーション

は文字列と解釈されそのまま出力される

if文


x = 20
if x > 30
 puts "xは30より大きい" # 成り立たない
end
if x > 10
 puts "xは10より大きい" # 成り立つ
end

case文

if,elsifによる分岐が多く複雑な場合、case文で書き換えるとシンプルで読みやすいコードにできる。
caseの値とwhenの値が一致したとき、そのwhen節が実行される。whenのどれにも一致しなかった時、else節が実行される。


x = 1
case x
when 1
 puts "あ"
when 2
 puts "い"
when 3
 puts "う"
end

配列

Rubyでは、配列もオブジェクトになる。
なので、配列に対しても便利なメソッドを呼び出すことが可能。
配列の要素数を数えるsizeメソッドや、要素を末尾に追加するpushメソッドなどがある。


lessons = ["html", "php", "ruby"]
puts lessons.size # 配列の要素数を取得 # 答え3

lessons.push("css") # 要素を追加

ハッシュ

配列と同じく複数のデータをまとめて管理することが出来るオブジェクト。配列との違いは、個々の要素を管理するのにインデックス番号ではなく、キーと呼ばれる文字列などの値を指定することができる点


ハッシュ名 = {
    "key1" => "value1", # コンマで区切る
    "key2" => "value2", # コンマで区切る
    "key3" => "key3"
    }

for文

繰り返し処理を行うことができる。
以下のように、「in」の前に変数、「in」の後に繰り返す範囲を指定すると、その範囲の数値が順に変数に代入され、処理が繰り返し実行される。


for i in 1..100 do
    puts i
end

while文

for文と同様に、繰り返し処理の一つ。
条件式を指定し、それがtrueの間、処理が繰り返し実行される。


i = 1
while i <= 100 do
    puts i
    i += 1
end

eachメソッド

配列またはハッシュに対して、先頭のデータから順に繰り返し処理を行うためのメソッド。
以下の例では配列のデータを1つずつ取り出して|value|に代入し、出力を行っている。


data = ["サッカー","野球","テニス"]

data.each do |value|
    puts value
end 
 
 # 結果:サッカー 野球 テニス
 

Ruby応用編

class

オブジェクト指向では「クラス」というオブジェクトの設計図を作成し、設計図(クラス)を元に実体(オブジェクト)を生成する。
クラス(設計図)にはそのオブジェクト(実体)がもつ「データ」と「メソッド」の2つを定義する。


class Animal # 必ず大文字から始める

end

インスタンスメソッド

クラス(設計図)の中でメソッドを定義することで、そのクラスのインスタンス固有のメソッドを作ることができる。これを「インスタンスメソッド」といい、「インスタンス.インスタンスメソッド」とすることでそのメソッドを呼び出すことができる。


class Animl
 def cry
  puts "うほうほ"
 end
end

my_animal = Animal.new
my_animal.cry

# 結果:うほうほ

initializeメソッド

initializeという特別なメソッドを定義すると、newメソッドでインスタンスを生成するときに、同時にこのメソッドが呼ばれる。
newメソッドには引数をいれることができ、その引数はinitializeに渡されまる。

インスタンス変数

@で始まる変数はインスタンス変数と呼ばれ、そのインスタンスの持つ「データ」を表す。

attr_reader

インスタンス変数の値を取得するためのメソッド = ゲッターは「attr_reader」を用いると簡単に定義できる。以下のように一度に複数のゲッターを定義することも可能。


attr_reader :name, :color

attr_writer

インスタンス変数の値を変更するためのメソッド = セッターは「attr_writer」を用いると簡単に定義できる。

attr_accessor

ゲッターとセッターを同時に定義できる。

クラスメソッド

意味:「インスタンス.メソッド」で呼び出すインスタンスメソッドに対し、「クラス名.クラスメソッド」で呼び出すメソッドのことをクラスメソッドと呼ぶ。
用途:インスタンス変数と関係のないメソッドを作りたいときなどに使う。


Animal.data

クラス変数

個々のインスタンスがもつデータではなく、クラスから作成された「全て」のインスタンスで共有したい変数に用いる。


@@hogehoge

self(クラス)

特別な式。class定義の直下で使用すると、そのクラス名を指し示す。そのため、「self.クラスメソッド」のようにクラスメソッドを定義することができる。

self(インスタンス)

インスタンスメソッド内で使用すると、そのメソッドを呼び出しているインスタンスのことを指す。他のインスタンスメソッドを呼び出したいときにselfを使う。

継承

すでに定義されているクラスを拡張し、新しいクラスを作ることを「継承」という。


class BigAnimal < Animal

end

オーバーライド

スーパークラスで定義されているメソッドと同じ名前のメソッドをサブクラスで定義するとメソッドの中身を上書きすることができる。

super

superを呼び出している場所に、スーパークラスのメソッドの内容が展開される。オーバーライドの際に、スーパークラスのメソッドの内容を含んだまま追加の処理を書きたいときには、superを用いる。

まとめ

しっかり学べばRubyってすっごく楽しい!

らしいです。以上。

54
49
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
49