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

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

Web Camp【業界最安値】1ヶ月集中してプログラミングスキルを身につけられるスクール
1ヶ月通い放題・メンター常駐の教室環境でWebサービス等作りたい方
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp業界最大級!教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WebCampPro転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアを3ヶ月で目指すプログラミングスクールです。
9月生募集中!当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
8月受入枠は満員となっております。9月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!
Rubyの配列は、基本的にArrayオブジェクトで表現されています。

今回はそのArrayオブジェクトについて実例も交えながら丁寧に解説していきます。

Ruby配列について解説

Rubyの配列は、Arrayオブジェクトで表現されています。

おそらく、この記事を読まれている多くの人がすでに目にしており、無意識に使っているものです。

特に、forやeachのような繰り返し処理を学習した人であれば、配列を使わない学習というのは、片手落ちとも言えるでしょう。

例えば、以下のようなプログラムです。

fruits = ["apple", "orange", "banana"]

for fr in fruits
  puts fr
end

このプログラムは、forの解説記事「【Ruby入門説明書】繰り返し、forについて解説から」抜き出してきたものです。この中の、変数fruitsが、Arrayオブジェクトなのです。

ここからは、このArrayオブジェクト(配列)について、詳しく解説していきます。

配列とは

Rubyの配列の詳細に入る前に、配列について解説します。

プログラムというのは、データを処理するのが主な仕事です。

そして、そのデータというのは、ほとんどの場合「決まったフォーマットで集められた」数値や文字の固まりです。

この、データの固まりを、プログラムでは「配列」という形で表して扱います。

イメージとしては、横に並べた変数をひとかたまりとして扱いやすくしたようなものです。

具体的にどうまとめるのか、果物の名前を表示するプログラムを使って紹介します。

まず、3つの果物の名前を表示するプログラムを変数だけ使って実現しましょう。

# 3つの変数を宣言する
fruits1 = "apple"
fruits2 = "orange"
fruits3 = "banana"

# 表示する
puts(fruits1)
puts(fruits2)
puts(fruits3)

(結果)

apple
orange
banana

正しく表示されました。

しかし、この果物が100種類に増えたら、どうすれば良いでしょうか?

名前を定義するところはまだしも、表示するのにputs()を100個も並べるのでしょうか?

仮にそうした(puts()を100個)として、その後printに変更することになったら、どうすれば良いでしょうか?

これらの問題を解決するため、果物の名前が格納された変数(fruits1,fruits2,fruits3)を連結して配列にするわけです。

fruits = ["apple", "orange", "banana"]

for fr in fruits
  puts fr
end

そうすれば、forなどの繰り返しでまとめて処理することができ、前述した数の問題やメソッド変更の問題にたやすく対処することができるでしょう。

本格的なプログラムでは数千、数万のデータを扱うことも珍しくありません。

しかし、どれだけ巨大になっても、この方法であれば、なんの問題もありません。putsがprintになったとしても、1行変更するだけです。

また、Rubyの「配列」であるArrayオブジェクトは、数あるプログラムの中でも、機能が充実しており、とても扱いやすいのが特徴です。変更や追加に強いだけではありませんので、お楽しみにしておいてください。

[]演算子(メソッド)

配列にしたため、個別の要素にアクセスする方法が別途必要になります。

そのために使用するのが、[]演算子(メソッド)です。

実際に果物の名前の配列(fruits )の各要素にアクセスしてみましょう。

fruits = ["apple", "orange", "banana"]

# 表示する
puts(fruits[0])
puts(fruits[1])
puts(fruits[2])

(結果)

apple
orange
banana

このように、配列の各要素には0からインデックスが付けられていますので、[]演算子(メソッド)を使って、アクセスすることが可能になっています。
※Rubyの場合、[]は演算子ではなくメソッドです

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

Rubyの配列(Array)

配列の説明が終わりましたので、ここから本格的にRubyの配列(Array)についての説明です。

Arrayオブジェクトは、他のプログラム言語でいうところの配列を実現するオブジェクトですが。そのため、いろいろなプログラム言語の配列が持つ便利な機能を併せ持ったものになっています。

そんなArrayの特徴的な特徴を3つ紹介します。

1. 1つの配列の中に、いろいろな型のデータを格納できる

多くのプログラム言語では、整数であれば整数だけ、文字列であれば文字列だけ、など特定の種類のデータだけを格納できるのが一般的です。

しかし、Arrayオブジェクトには、整数でも小数でも文字列でも、どんな種類のデータなのかは関係なく格納することが可能になっているのです。

2. 空(要素数0)の配列を宣言したあとに、要素を追加・削除できる

いくつかのプログラム言語では、配列を宣言するときに1つ以上の要素が必要で、その後の変更ができない、もしくは手間のかかるものが少なくありません。

しかし、Arrayであれば、要素のない配列を事前に作っておいて、その後の処理の中で要素を追加したり、削除したりできます。

3. 配列内を検索、並べ替えできる

多くのプログラムでは、配列はただの変数の塊ですので、データというだけで代入するくらいしか機能はありません。そのため、検索するのであれば、改めてプログラムを作る必要があります。

しかし、Arrayオブジェクトには様々なメソッドがすでに存在していますので、検索や並べ替え、重複削除など配列操作については、改めてプログラムを作る必要がありません。

このあとは、上記の2つめと3つめの特徴について、リファレンス形式で説明していきましょう。

配列での初期化

Arrayの初期化というのは、宣言してプログラムの中でArrayを使えるようにすることです。このとき、前述のように空の配列を作っても良いですし、最初からデータを格納しておいたり、決められた数の空箱の配列を作ったりすることができます。

[]での初期化

本記事で最初に紹介したプログラムでも使っている、もっとも一般的な初期化の方法です。

以下のように使用します。

配列名 = [要素,要素,要素,要素,要素]

前述のとおり、要素がない場合は、要素数0の空の配列になります。また、数値や文字列が混在していてもかまいません。

newメソッドで初期化

専門的に描くと、「Arrayクラスからインスタンスを作る」方法です。

newメソッドを使うことで、任意の数の空要素の配列を作ることができます。

じつは、他の多くのプログラム言語で、配列の宣言がこの形になっています。(配列の名前と数だけ宣言してデータはあとから格納する)

使い方は以下のようにします。

配列名 = Array.new(要素数)

これで、要素数の空の要素を持った配列ができます。

配列の要素数が決まっており、その後にデータを格納する場合は、この方法を使ったほうが余計なメソッド(あとで紹介する要素を追加するメソッド)を使う必要がないので、プログラムコードがすっきりするかもしれません。

3つの空の要素を持つ配列arrの宣言は、以下のようになります。

arr = Array.new(3)

print(arr)

(結果)

[nil, nil, nil]

※nilは空であることを表すオブジェクトです

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

Arrayオブジェクトのメソッド

配列の初期化の次は、いよいよ配列の操作です。

配列を操作するArrayのメソッドは多数ありますので、その中でもよく使うものや特徴的なものを抜粋して紹介しましょう。

要素の参照

すでに説明していますが、配列の要素を参照するには、[]メソッドを使用します。

複数の要素を参照することもできますので、プログラムを使って確認しておきましょう。

alphabets = ["a", "b", "c", "d", "e", "f"]

print("alphabets[1] : 前から2つめの要素 ---> ", alphabets[1], "\n")
print("alphabets[-2]: 後ろから2つめの要素 -> ", alphabets[-2], "\n")
print("alphabets[1, 2] : 前から2つめからの要素2つ ---> ", alphabets[1, 2], "\n")
print("alphabets[-2, 2]: 後ろから2つめからの要素2つ -> ", alphabets[-2, 2], "\n")

(結果)

alphabets[1] : 前から2つめの要素 ---> b
alphabets[-2]: 後ろから2つめの要素 -> e
alphabets[1, 2] : 前から2つめからの要素2つ ---> ["b", "c"]
alphabets[-2, 2]: 後ろから2つめからの要素2つ -> ["e", "f"]

なお、範囲指定する場合は、[位置,数]と指定します。

要素の置換(代入)

任意の要素を書き換えるには、[]=メソッドを利用します。

要素の指定方法によって、複数の要素をまとめて書き換えるなど、自在に変更できます。

具体的な例を見て確認しましょう。

alphabets = ["a", "b", "c", "d", "e", "f"]

alphabets[1] = 2
print("alphabets[1] : 前から2つめの要素を変更 -------> ", alphabets, "\n")

alphabets[-2] = -2
print("alphabets[-2]: 後ろから2つめの要素 -----------> ", alphabets, "\n")

alphabets[1, 2] = [5, 6]
print("alphabets[1, 2] : 前から2つめからの要素2つ ---> ", alphabets, "\n")

alphabets[-2, 2] = [7, 8]
print("alphabets[-2, 2]: 後ろから2つめからの要素2つ -> ", alphabets, "\n")

(結果)

alphabets[1] : 前から2つめの要素を変更 -------> ["a", 2, "c", "d", "e", "f"]
alphabets[-2]: 後ろから2つめの要素 -----------> ["a", 2, "c", "d", -2, "f"]
alphabets[1, 2] : 前から2つめからの要素2つ ---> ["a", 5, 6, "d", -2, "f"]
alphabets[-2, 2]: 後ろから2つめからの要素2つ -> ["a", 5, 6, "d", 7, 8]

参照と同じく、代入(置換)についても、範囲指定する場合は、[位置,数]と指定します。

配列の比較

配列同士を比較するというのは、実際の処理でそれほど多くありませんが、Rubyの配列の特徴的な機能の1つです。

他のプログラム言語では面倒な配列の比較も、Rubyでは==メソッドを使って直感的に実装できます。

arr1 = ["a", "b", "c", "d", "e", "f"]

arr2 = ["a", "b", "c", "d", "e", "f"]

if arr1 == arr2 then
  print("arr1とarr2は同じです")
else
  print("arr1とarr2は違います")
end

(結果)

arr1とarr2は同じです

要素の追加

要素の追加を行うメソッドは、以下の3種類です。

なお、これらのメソッドは、元のArrayオブジェクトの内容を書き換えますので、戻り値と元の配列は同じものになります。

メソッド 動作
push 配列の末尾に要素を追加する
<< 配列の末尾に要素を追加する
unshift 配列の先頭に要素を追加する

pushメソッドと<<メソッドは同じものですので、プログラムの可読性を考慮して使い分ければ良いでしょう。

実際にプログラムコードを動かしてみましょう。

fruits = ["apple", "orange", "banana"]

print(fruits, "\n")
print('push("peach") ---------&gt; ', fruits.push("peach"), "\n")
print('&lt;&lt; "melon" ------------&gt; ', fruits &lt;&lt; "melon", "\n")
print('unshift("strawberry") -&gt; ', fruits.unshift("strawberry"), "\n")

(結果)

["apple", "orange", "banana"]
push("peach") ---------&gt; ["apple", "orange", "banana", "peach"]
&lt;&lt; "melon" ------------&gt; ["apple", "orange", "banana", "peach", "melon"]
unshift("strawberry") -&gt; ["strawberry", "apple", "orange", "banana", "peach", "melon"]

要素の削除

要素の削除については、以下の2種類のメソッドがあります。

これらのメソッドは元の配列を操作してしまいますので、注意が必要です。

メソッド 動作
pop 配列の末尾から任意の数の要素を削除して、削除した要素を返す
shift 配列の先頭の要素を削除して返す

削除についても実際にプログラムコードを作って動かしてみましょう。

fruits = ["strawberry", "apple", "orange", "banana", "peach", "melon"]

print(fruits, "\n")
print('pop(2) ----&gt; ', fruits.pop(2), "\n")
print(fruits, "\n")
print('shift() ---&gt; ', fruits.shift(), "\n")
print(fruits, "\n")

(結果)

["strawberry", "apple", "orange", "banana", "peach", "melon"]
pop(2) ----&gt; ["peach", "melon"]
["strawberry", "apple", "orange", "banana"]
shift() ---&gt; strawberry
["apple", "orange", "banana"]

要素の結合

最後に、配列同士をつなげるメソッドを紹介しましょう。

他のプログラム言語では、結合する配列の長さ分の配列を新たに宣言し、そこにコピーするようなプログラムを作らなければならないようなものもあります。

しかしRubyの場合は、+メソッドを使って直感的に実装できるようになっているのです。

alphabets = ["a", "b", "c", "d", "e", "f"]
numbers = [1, 2, 3, 4, 5]

arr = alphabets + numbers
print(arr)

(結果)

["a", "b", "c", "d", "e", "f", 1, 2, 3, 4, 5]

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

まとめ

Rubyの配列について説明しました。

配列を使いこなすことができれば、複雑な処理を効率よくこなすことができます。

習うより慣れろという言葉もありますので、ぜひ紹介したメソッドを使っていろいろなプログラムを作っていってください。


・配列は変数をひとまとまりとして扱えるようにしたもの。[]演算子で要素のインデックスを指定して要素にアクセスできる
・初期化することで、要素を持たせることも、空の要素を持たせることも、要素なしもできる
・インデックスを指定することで、要素を参照したり、代入したりできる。
・マイナスのインデックスを指定することで、後ろから数えた要素にアクセスできる
・複数の要素をまとめて参照したり書き換えたりできる。
・配列の先頭や後ろに要素を追加できる
・配列の先頭や後ろの要素の削除できる
・直感的に比較や結合ができる

WebCamp・WebCamp Proについて

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

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

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

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

▼未経験から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入門説明書】クラスの継承について解説
  • 【Ruby入門説明書】インスタンスと変数について説明
  • 【Ruby入門説明書】メソッドの基本から応用までの全体像、一覧表について解説
  • 【Ruby入門説明書】クラスの定義について解説
  • 【Ruby入門説明書】ハッシュについて解説
  • 【Ruby入門説明書】arrayについて解説

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

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

おすすめポイント

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

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

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

2位 レバテックキャリア

おすすめポイント

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

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

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

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

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

 3位 type転職エージェント

おすすめポイント

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

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

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

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

おすすめの記事