プログラミングとデザイン、スタートアップの話

プログラミングやデザイン、スタートアップ関連についての雑記

Rails初心者に読んで欲しい、サルでもわかるRubyとRuby on Railsの違い

Ruby on Railsを勉強したいと思っている初心者の人から「RailsとRubyは何が違うの?」という質問をよく聞く。たしかに初心者からすると「Ruby on Rails」の中に「Ruby」という単語が入っているし、混乱する気持ちはよくわかる。かつての私もそうだった。

本記事ではそんな人のためにできるだけ易しい言葉でRubyとRuby on Railsの違いを説明する。

Rubyはプログラミング言語、Railsはフレームワーク

RubyとRuby on Railsの違いは何?

Ruby on Railsはプログラミング言語ではない。初心者がよく間違えるので気をつけて覚えておこう。Rubyがプログラミング言語である

プログラミング言語は、他にはPHPやJava,C++などがある。
プログラミング言語とは、その名の通りプログラムを実装・実行するための言語であり、これらを用いてWebサービス開発やアプリ開発を行う(用途はWebサービス開発やアプリ開発だけにとどまらないが、今回は割愛)。
例えば、Rubyを使えば足し算や引き算などの計算、条件に合わせたプログラムの実行(条件分岐)、特定のグループの作成(配列)などができる。これに対して、フレームワークであるRailsは足し算などを行わない(行うのに適していない)

フレームワークとは何か?

Ruby on Railsはプログラミング言語ではなく、フレームワーク

Ruby on Railsはプログラミング言語ではなく、フレームワークだと言われてもそもそもフレームワークという言葉に馴染みがないだろう。

フレームワークを日本語に訳して「枠組み」と考えると、少しわかりやすくなる。
フレームワークとは、プログラミングを組むための枠組みである。

まだわかりにくいだろうか?もう少し具体的に説明する。
例えば、Webサービスを作る歳にはどんなWebサービスを作る場合にも共通するプログラムを書く作業が発生する。初心者向けにわかりやすく例を挙げると、会員登録フォームの入力チェックだ。どんなWebサービスでも多くの場合、フォームの内容が正しく入力されているのかをチェックする。これをバリデーションと呼ぶが、みんなこれを実装する。

ほとんどの場合にバリデーションを実装するのに、全員が一からバリデーションを実装することは非常に効率が悪いことは想像がつくだろうか?もしくは、あなたがWebサイトを3つ作る時にいちいち全てのバリデーションを一から実装するのは手間だと想像できるだろうか?

これは実際に非常に手間で、ほとんどのWebサービスに必須の機能であり、みんなが実装することがわかっているのであれば、それをフレームワーク(枠組み)として事前に用意してしまうわけだ。そうすることで、全員が同じ作業を一から組むという非効率な出来事を避けることが出来る。フレームワークがなければバリデーションの実装に1,000行のコードが必要な所を、フレームワークがあることによってあなたが書くコードは1行で済んでしまう、といった具合だ。

このような枠組みを提供しているのがRuby on Railsである。Webサービスの開発に必要な条件を踏まえ、それらを事前に組み込んでくれているわけだ。

RubyとRails、どっちを勉強すればいい?

RubyとRailsはどちらも勉強する必要がある

初心者がプログラミングを勉強していると言ってる場合、多くは「Ruby on Rails」を勉強していることを指すことが多い。Ruby on Railsというのは非常に便利で、フレームワークの使い方を覚えてしまえば簡単なWebサービスを完成させることができる。言い換えれば、Rubyの知識があまりなくともWebサービスを作れてしまうことが多い。

しかし、実際にはRubyの知識は一定以上必要となってくるため、RubyとRuby on Railsを共に勉強することをおすすめする。初心者のうちは違いがわからない場合が多いが、例えば「条件分岐」と言われる「Aの場合は◯◯をして、それ以外の時は××を実行する」のような条件を書くのは、Rubyの役割となる。

Rubyを知らなければそのような基本的な条件分岐などを使うことができなくなる。したがって、Rubyの勉強も結局必要となるわけだ。

RubyとRailsの勉强の配分は別記事に書こうと思う。

RubyとRailsを勉強するための方法

下記の記事を参考にされたい。 harv-tech.hatenablog.com

にほんブログ村 IT技術ブログへ
にほんブログ村 IT技術ブログ IT技術メモへ