{"id":79867,"date":"2024-03-23T12:09:53","date_gmt":"2024-03-23T03:09:53","guid":{"rendered":"https://freelance.indieverse.co.jp/media/?p=79867"},"modified":"2025-11-01T16:34:55","modified_gmt":"2025-11-01T07:34:55","slug":"ruby-array","status":"publish","type":"post","link":"https://freelance.indieverse.co.jp/media/programming/ruby/ruby-array","title":{"rendered":"Rubyの配列操作完全マニュアル | 追加 / 更新 / 削除 / 繰り返しの方法について現役エンジニアが解説"},"content":{"rendered":"<p>この記事では、</p>\n<ul>\n<li>Rubyで配列をどのように作るか知りたい</li>\n<li>配列から特定の要素をどうやって取り出すのか知りたい</li>\n<li>配列に新しい要素を追加する方法を学びたいがどうしたらいい？</li>\n<li>配列内の要素を削除する正しい方法は？</li>\n<li>配列を使って繰り返し処理を行う方法は？</li>\n</ul>\n<p>という悩みを抱えている向けに、</p>\n<ul>\n<li>Rubyの配列の基本的な作り方と操作方法</li>\n<li>配列を操作する具体的なコードの書き方</li>\n<li>効率良く配列を利用するための高度なテクニック</li>\n</ul>\n<p>について、現役Railsエンジニアである私が解説していきたいと思います。</p>\n<p>Rubyに関して言うと、配列の知識はないとほぼエンジニアとして一人前とは呼べないほど必須の知識です。マストで使えた方がよいメソッドになるので、ぜひ使えるようになりましょう。</p>\n<p><strong>著者：河合大</strong></p>\n\n\t<div class='balloon5'>\n\t\t<div class='faceicon'>\n\t\t\t<img src='https://pbs.twimg.com/profile_images/1230103371664613376/PHLMWlPU_400x400.jpg'>\n\t\t\t<div style='text-align:center'>DAI</div>\n\t\t</div>\n\t\t<div class='chatting'>\n\t\t\t<div class='says'>\n<a href=\"https://www.worksap.co.jp/\">株式会社ワークスアプリケーションズ</a>にてQAエンジニア→<a href=\"https://aidemy.co.jp/\">株式会社Aidemy</a>にてAIプログラミングスクールのマーケティングを担当→キャリアコーチングサービスのパイオニアである<a href=\"https://www.posiwill.co.jp/\">ポジウィル株式会社</a>にCMO就任→<a href=\"https://indieverse.jp/\">株式会社インディバース</a>を創業。<br />\nIT系キャリアに関して情報発信している<a href=\"https://freelance.indieverse.co.jp/media/\">DAINOTE</a>を運営。自身も自社プロダクトである<a href=\"https://media-analytics.jp/\">Media Analytics</a>の開発をRuby on Railsで行うWebエンジニアである。本業はWebマーケター。最近は生成AI系の開発にどハマり中。著書は<a href=\"https://www.amazon.co.jp/%E7%8B%AC%E5%AD%A6%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEAI%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8B%E6%9C%AC-%E6%B2%B3%E5%90%88-%E5%A4%A7/dp/4046040076\">独学プログラマーのためのAIアプリ開発がわかる本 </a>。詳細は<a href=\"https://freelance.indieverse.co.jp/media/company\">運営者情報</a>をご覧ください。 <a href=\"https://twitter.com/never_be_a_pm\">@never_be_a_pm</a><br />\n</div>\n\t\t</div>\n\t</div>\n\t\n<h2 id=\"ruby-\">Ruby配列の基礎知識</h2>\n<h3 id=\"-\">配列の初期化と基本形</h3>\n<p>Rubyで配列を作成する基本は非常にシンプルです。比較的直感的な記述で、複数の値をまとめて扱うことが可能になります。配列を初期化する際には、以下のように書くことができます。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\"><span class=\"hljs-comment\"># 配列を初期化する</span>\r\n<span class=\"hljs-attribute\">fruits</span> = [<span class=\"hljs-string\">\"apple\"</span>, <span class=\"hljs-string\">\"banana\"</span>, <span class=\"hljs-string\">\"cherry\"</span>]\r\nputs fruits</code></code></pre>\n</div>\n<p>このコードを実行すると、配列内の各要素が順に出力されます。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>apple\r\nbanana\r\ncherry\r\n</code></pre>\n</div>\n<pre><code><span class=\"hljs-symbol\"></span></code></pre>\n<p>配列内の要素には、同じ型のデータだけでなく、異なる型のデータを混在させることが可能です。例えば、文字列と数値を一つの配列に格納することもできます。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>mixed_array = [\"Tokyo\", 100, \"Osaka\", 200]\r\nputs mixed_array\r\n</code></pre>\n</div>\n<p>このように、Rubyの配列は非常に柔軟に扱うことが可能で、プログラム内で多種多様なデータを管理する際に大変役立ちます。</p>\n<h2 id=\"ruby-\">Ruby配列でできること</h2>\n<h3 id=\"-\">配列の要素の取得方法</h3>\n<p>Rubyで配列から特定の要素を取り出すには、インデックスを使用します。インデックスは、配列内の各要素の位置を示す数値で、0から始まります。以下のようにして、特定のインデックスにある要素を取得できます。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">fruits = [<span class=\"hljs-string\">\"apple\"</span>, <span class=\"hljs-string\">\"banana\"</span>, <span class=\"hljs-string\">\"cherry\"</span>]\r\nputs fruits[<span class=\"hljs-number\">1</span>]</code></code></pre>\n</div>\n<p>このコードを実行すると、<code>banana</code>が出力されます。これは、<code>fruits</code>配列のインデックス1に<code>banana</code>が格納されているからです。</p>\n<h3 id=\"-\">配列の要素の変更方法</h3>\n<p>配列の特定の要素を変更するには、その要素のインデックスを指定して新しい値を代入します。以下のコードでは、<code>fruits</code>配列の第1要素を<code>orange</code>に変更しています。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">fruits = [<span class=\"hljs-string\">\"apple\"</span>, <span class=\"hljs-string\">\"banana\"</span>, <span class=\"hljs-string\">\"cherry\"</span>]\r\nfruits[<span class=\"hljs-number\">1</span>] = <span class=\"hljs-string\">\"orange\"</span>\r\nputs fruits</code></code></pre>\n</div>\n<p>実行結果：</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><span class=\"hljs-attribute\">apple\r\norange\r\ncherry</span></code></pre>\n</div>\n<p>このように、インデックスを利用して簡単に配列の要素を変更することができます。</p>\n<h3 id=\"-\">配列に新しい要素を追加する方法</h3>\n<p>配列の末尾に新しい要素を追加するには、<code>push</code>メソッドを使うか、<code>&lt;&lt;</code>演算子を使用します。次の例では、<code>fruits</code>配列に<code>mango</code>を追加しています。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">fruits = [<span class=\"hljs-string\">\"apple\"</span>, <span class=\"hljs-string\">\"banana\"</span>, <span class=\"hljs-string\">\"cherry\"</span>]\r\nfruits.push(<span class=\"hljs-string\">\"mango\"</span>)\r\n# あるいは fruits &lt;&lt; <span class=\"hljs-string\">\"mango\"</span> とも書ける\r\n<span class=\"hljs-built_in\">puts</span> fruits</code></code></pre>\n</div>\n<p>実行結果は次のようになります。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><span class=\"hljs-symbol\">apple</span>\r\n<span class=\"hljs-keyword\">banana\r\n</span><span class=\"hljs-symbol\">cherry</span>\r\n<span class=\"hljs-symbol\">mango</span></code></pre>\n</div>\n<h3 id=\"-\">配列の要素を削除する方法</h3>\n<p>配列から要素を削除するには、<code>delete_at</code>メソッドを使用します。このメソッドには、削除したい要素のインデックスを指定します。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">fruits = [<span class=\"hljs-string\">\"apple\"</span>, <span class=\"hljs-string\">\"banana\"</span>, <span class=\"hljs-string\">\"cherry\"</span>]\r\nfruits.delete_at(<span class=\"hljs-number\">1</span>)\r\n<span class=\"hljs-built_in\">puts</span> fruits</code></code></pre>\n</div>\n<p>このコードを実行すると、インデックス1の<code>banana</code>が削除されるため、以下のように表示されます。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><span class=\"hljs-attribute\">apple\r\ncherry</span></code></pre>\n</div>\n<p>このようにRubyでは、配列の要素の管理が非常に簡単に行えます。次のセクションでは、より高度な配列の操作について学んでいきましょう。</p>\n<h2 id=\"ruby-\">Ruby配列の高度な操作</h2>\n<h3 id=\"-\">配列の要素を逆順にする方法</h3>\n<p>配列の要素の順番を逆にしたい場合、<code>reverse</code>メソッドを使用します。このメソッドは新しい配列を返すため、元の配列は変更されません。以下の例では、<code>fruits</code>配列の要素を逆順にしています。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\"><span class=\"hljs-symbol\">fruits</span> = [<span class=\"hljs-string\">\"apple\"</span>, <span class=\"hljs-string\">\"banana\"</span>, <span class=\"hljs-string\">\"cherry\"</span>]\r\n<span class=\"hljs-keyword\">reversed_fruits </span>= fruits.<span class=\"hljs-keyword\">reverse\r\n</span><span class=\"hljs-symbol\">puts</span> <span class=\"hljs-keyword\">reversed_fruits</span></code></code></pre>\n</div>\n<p>実行結果：</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><span class=\"hljs-symbol\">cherry</span>\r\n<span class=\"hljs-keyword\">banana\r\n</span><span class=\"hljs-symbol\">apple</span></code></pre>\n</div>\n<p>この操作は、配列の内容を逆順で表示したいときや、特定の順序で処理したい場合に便利です。</p>\n<h3 id=\"-\">配列の要素を並べ替える方法</h3>\n<p>配列の要素を並べ替えたい場合は、<code>sort</code>メソッドを使います。このメソッドは、デフォルトで昇順（小さい順）に要素をソートします。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">numbers = [<span class=\"hljs-number\">5</span>, <span class=\"hljs-number\">3</span>, <span class=\"hljs-number\">8</span>, <span class=\"hljs-number\">4</span>]\r\nsorted_numbers = numbers.sort\r\nputs sorted_numbers</code></code></pre>\n</div>\n<p>実行結果</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><span class=\"hljs-number\">3</span>\r\n<span class=\"hljs-number\">4</span>\r\n<span class=\"hljs-number\">5</span>\r\n<span class=\"hljs-number\">8</span>\r\n</code></pre>\n</div>\n<p>さらに、ブロックを渡すことでソートの基準をカスタマイズできます。たとえば、次の例では降順（大きい順）にソートしています。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>sorted_numbers_desc = numbers.sort { |a, b| b &lt;=&gt; a }\r\nputs sorted_numbers_desc<span style=\"font-family: Consolas, Monaco, monospace; background-color: #ffffff; color: #333333; font-size: 16px;\"></span></code></pre>\n</div>\n<p>実行結果</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><span class=\"hljs-number\">8</span>\r\n<span class=\"hljs-number\">5</span>\r\n<span class=\"hljs-number\">4</span>\r\n<span class=\"hljs-number\">3</span></code></pre>\n</div>\n<h3 id=\"-\">配列の結合</h3>\n<p>2つの配列を結合する場合、<code>+</code>演算子または<code>concat</code>メソッドを使用します。これにより、新しい配列が作成されます。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">array1 = [<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">3</span>]\r\narray2 = [<span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">5</span>, <span class=\"hljs-number\">6</span>]\r\ncombined_array = array1 + array2\r\n# あるいは array1.concat(array2)\r\nputs combined_array</code></code></pre>\n</div>\n<p>実行結果：</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><span class=\"hljs-number\">1</span>\r\n<span class=\"hljs-number\">2</span>\r\n<span class=\"hljs-number\">3</span>\r\n<span class=\"hljs-number\">4</span>\r\n<span class=\"hljs-number\">5</span>\r\n<span class=\"hljs-number\">6</span></code></pre>\n</div>\n<p>こうして、複数の配列を合わせて1つの配列にすることができるため、データの集合を管理する際に便利です。</p>\n<h2 id=\"ruby-\">Ruby配列の便利なメソッド</h2>\n<p>Rubyには配列をより便利に扱うための多くのメソッドがあります。ここでは、その中から特に役立つメソッドをいくつか紹介します。</p>\n<h3 id=\"each-\">eachメソッド：要素の繰り返し</h3>\n<p><code>each</code>メソッドを使うと、配列の各要素に対してブロック内の処理を繰り返し実行できます。例えば、配列の要素を1つずつ出力したい場合は次のようにします。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">fruits = [<span class=\"hljs-string\">\"apple\"</span>, <span class=\"hljs-string\">\"banana\"</span>, <span class=\"hljs-string\">\"cherry\"</span>]\r\nfruits.each <span class=\"hljs-built_in\">do</span> |<span class=\"hljs-type\">fruit</span>|\r\n  <span class=\"hljs-type\">puts</span> fruit\r\n<span class=\"hljs-keyword\">end</span></code></code></pre>\n</div>\n<p>これにより、配列の要素が順番に出力されます。</p>\n<h3 id=\"-\">配列の長さを調べるメソッド</h3>\n<p>配列の長さ（要素の数）を知りたい場合は、<code>length</code>メソッドまたは<code>size</code>メソッドを使用します。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">fruits = [<span class=\"hljs-string\">\"apple\"</span>, <span class=\"hljs-string\">\"banana\"</span>, <span class=\"hljs-string\">\"cherry\"</span>]\r\nputs fruits.<span class=\"hljs-built_in\">length</span></code></code></pre>\n</div>\n<p>このコードの実行結果は<code>3</code>となります。どちらのメソッドも同じ結果を返すため、好みで選択してください。</p>\n<h3 id=\"-\">配列が空かどうか調べる方法</h3>\n<p>配列が空かどうかを確認するには、<code>empty?</code>メソッドを使用します。このメソッドは、配列が空（要素が0個）の場合に<code>true</code>を、そうでない場合に<code>false</code>を返します。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">fruits = <span class=\"hljs-string\">[]</span>\r\nputs fruits.empty?</code></code></pre>\n</div>\n<p>上記のコードでは、<code>fruits</code>配列は空なので、<code>true</code>が出力されます。</p>\n<h3 id=\"-\">配列内の特定の要素を探す方法</h3>\n<p>配列内に特定の要素が存在するかどうかを調べるには、<code>include?</code>メソッドを使用します。このメソッドは、指定された要素が配列内に存在する場合に<code>true</code>を、存在しない場合に<code>false</code>を返します。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">fruits = [<span class=\"hljs-string\">\"apple\"</span>, <span class=\"hljs-string\">\"banana\"</span>, <span class=\"hljs-string\">\"cherry\"</span>]\r\n<span class=\"hljs-built_in\">puts</span> fruits.include?(<span class=\"hljs-string\">\"banana\"</span>)</code></code></pre>\n</div>\n<p>実行結果は<code>true</code>です。このように、<code>include?</code>メソッドを活用することで、配列内のデータの存在チェックを簡単に行うことができます。</p>\n<h3 id=\"-\">配列内の要素が全てある条件を満たすか調べる方法</h3>\n<p>配列の全ての要素が特定の条件を満たしているかどうかを調べるには、<code>all?</code>メソッドを使用します。例えば、全ての要素が数値であるかどうかをチェックするコードは次のとおりです。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code><code class=\"lang-ruby\">numbers = [<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">3</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">5</span>]\r\nputs numbers.all? { |number| number.is_a?(Integer) }</code></code></pre>\n</div>\n<p>このコードの実行結果は<code>true</code>となります。<code>all?</code>メソッドは、配列の要素全体に対する検証作業を効率的に行うのに適しています。</p>\n<h2 id=\"-\">まとめ</h2>\n<p>Rubyでの配列の扱い方について、基本的な操作から高度なテクニックまで幅広く解説しました。配列はRubyにおいて非常に重要なデータ構造であり、プログラミングにおける多くの問題を解決する際に使われます。本記事で取り上げた内容は以下の通りです。</p>\n<ul>\n<li>配列の初期化や基本形、要素の取得や変更、新しい要素の追加、要素の削除などの基本操作</li>\n<li>配列の要素を逆順にする、要素を並べ替える、配列の結合などの高度な操作</li>\n<li><code>each</code>メソッドでの要素の繰り返し処理、配列の長さの確認、配列が空かどうかのチェック、配列内の特定の要素を探す方法、配列内の要素が全てある条件を満たすか調べる方法などの便利なメソッド</li>\n</ul>\n<p>これらの基礎を身につけることで、Rubyでのプログラミングがより一層楽しく、かつ効率的なものになるはずです。プログラミングを学習している方や、日々の開発作業でRubyを扱っている方は、是非これらの配列操作のテクニックを実践に取り入れてみてください。</p>\n","protected":false},"excerpt":{"rendered":"<p>Rubyの配列操作を基礎から解説。作成・取得・追加・更新・削除・繰り返しの書き方や、reverse・sort・concatなど応用テクも現役エンジニアが実践コードで丁寧に紹介します。</p>\n","protected":false},"author":1,"featured_media":78788,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[190],"tags":[286],"class_list":["post-79867","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ruby","tag-ruby"],"aioseo_notices":[],"meta_description":"Rubyの配列操作を基礎から解説。作成・取得・追加・更新・削除・繰り返しの書き方や、reverse・sort・concatなど応用テクも現役エンジニアが実践コードで丁寧に紹介しま...","_links":{"self":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts/79867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts"}],"about":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/types/post"}],"author":[{"embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/users/1"}],"replies":[{"embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/comments?post=79867"}],"version-history":[{"count":4,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts/79867/revisions"}],"predecessor-version":[{"id":93453,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts/79867/revisions/93453"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/media/78788"}],"wp:attachment":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/media?parent=79867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/categories?post=79867"},{"taxonomy":"post_tag","embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/tags?post=79867"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}}