DIVE INTO CODE

2019年04月27日
  • #RubyonRails
  • #Ruby
  • #C言語
  • #開発言語
  • #フレームワーク
  • #中間言語

【超初心者向け】RubyとRuby on Railsの違いとは

Aws4 request&x amz signedheaders=host&x amz signature=f7b154d87aa3dd72de0cb8422a60e66d6b798699f5655d01f81e1eb9c995a009

【こんな方におすすめ】
・これからRubyもしくはRuby on Railsを学ぼうとしている人
・RubyとRuby on Railsの違いについて知りたい人
・開発言語に興味がある人

【目次】
1.いきなり本題!RubyとRuby on Railsの違いってなに?
2.RubyとRuby on Railsはそれぞれ誰が作ったの?
3.開発言語は進化していくもの

■話し手
DIVE INTO CODE 代表 野呂 浩良
■聞き手
StartGate 永田 拓也

いきなり本題!RubyとRuby on Railsの違いってなに?

今回は超初心者向け。RubyとRuby on Railsの違いについて知りませんという方、世の中にたくさんいらっしゃると思いませんか?

そもそも別物なの?という人も多いんじゃないかなあと…

その辺からいっちゃいますか!まず、RubyとRuby on Railsの違いについて、最初に答えを言っちゃいますけど、Rubyは開発言語、Ruby on Railsはフレームワークというものです。Rubyは開発言語、というのはどういうことかと言いますと、コンピューターに命令を出すための言葉です。人間に理解できる言葉で、かつ、その言葉を書いてあげると機械の言葉(マシン語)に変換されて伝わるという中間言語です。
Rubyを使うとコンピューターと会話ができます。「おい、これやっとけ」と伝えられる専用の書き方があります。

なるほど。

英語やフランス語など第二言語を学んだ方は多いと思うのですけれど、それと同じような感じ。コンピューターと会話する。
Ruby on Railsとはなにかというと、Rubyですでに作られていて、Rubyで言葉が書かれているんです。「こういう風に動きなさい」というね、その塊なんですね。で、なんのために作られているかというと、インターネットにアクセスするシステムを作るためのWebサイトとか、ブログサイトとか、SNSとか、皆さんがスマホ片手に日々通勤しながら見てたり、暇なときに見てたりするWebサイトなどを作るために、ゼロから作るんじゃなくてもある程度できているもの、それをフレームワークというんですけど、それがRuby on Railsです。

ということは、機械と喋るために一つ言語があるということですね。例えば、サッカーしようぜ、サッカーってこういうルールだよね、みたいなものがフレームワークというイメージ。世界共通のルールみたいな。

そんなイメージです。例え話をするといろいろ出てくると思います。それはご自分の中で分かりやすいように、最初は認識していただけたらなと思います。ただ、これだけは間違えないでほしいというものがあって、「Ruby on Railsが言語で」とかね。そういうセリフが出てきてしまうと、明らかに知っている人からすると、なにこの人、ってなる。恥ずかしい。

絶対やっちゃダメ。

そうです。あと、Ruby on Railsを使いたいんだけれど、Pythonで書けない?というのもダメなんですよ。

ああ、そういうことか。Ruby on Rails上のものなのに、急にPythonがパッと出てきてしまうという。

フレームワークがRuby on Railsなんだけれど、開発言語にPythonを使いたいんだよね、というのも出てきたりするんですよね。

不思議な話ですよね。

そうなんです。不思議な話になってしまう。もうRubyで書かれちゃっているから、「Rubyで書かれているのに、なんでPythonでまた書くの?」になってしまいますし、話が噛み合わないんです。そういうことはやめましょう。なので、「Ruby on Railsで作る以上、Rubyで書きましょう」というのは必須だし、そういうエンジニアを探したいとか、そういうものを作りたいとか、そういう会社に入りたいと思ったら、Rubyを学ぶのが一番。

なるほど。では「言語を調べよう」と思ったらRubyで調べるべきだし、「Rubyで何を作ろうかな」とか「どういうことできるんだろう」と思ったらRuby on Railsで調べてみればいいんですね?

そうです。そんなイメージです。

RubyとRuby on Railsはそれぞれ誰が作ったの?

RubyとRuby on Rails、それぞれ作った人がいるんです。Rubyはまつもとゆきひろさんが作りました。Ruby on RailsはRubyができた後。Rubyができたのは1995年なんですけど、その後、2004年にRuby on Railsを作ったのが、デイヴィッド・ハイネマイヤー・ハンソン(David Heinemeier Hansson)さん。なので、Rubyが先にできて、その後にRuby on Railsが生まれている。

なるほど。区別がついていない人も中にはいそうですね。

そうですね。
例えば、まつもとゆきひろさんがRubyを作ったのなら、Ruby on Railsのこともよく知っていて、かつ作ったことあるんだろうなと思ってしまいそうですけれど、まつもとゆきひろさんはRubyの開発に専念しているので、Ruby on Railsの開発に携わることは基本ない。大元を作っている人です。Ruby on Railsを作っているデイヴィッド・ハイネマイヤー・ハンソンさんは、Rubyの開発に貢献することはあるだろうけれど、基本はRuby on Railsで新しい仕組みを考えてたりしているわけです。

なるほど。

開発言語は進化していくもの

「開発」という話が出ましたけど、Ruby言語の開発ってどういうことなんですか?

良いご質問ですね。Ruby言語の開発って、コンピュータ言語の開発ということなんですよ。コンピューターのマシン語になるように、かつ、人間が分かりやすく伝えられるような言葉を生み出すということなんですね。言語学に近いらしいです。

例えば辞書に新しい言葉を追加していくような。

皆さんが想像しやすいように例えると、新しい言葉を生み出す、俺たちの言葉、みたいな。

なるほど。「マジ卍」みたいな(笑)「マジ卍」という若者言葉が流行っていましたね。

もしかするとそっちの方が伝わりやすい感じですね。

まだ開発できてない言語ですけど(笑)

例えば、日常会話全部ではないけれども、言語学に近い。実はそのまつもとさんが最近とあるサイトに書き込まれた内容によると、人間のコミュニケーションに興味を持って、どうすれば伝わるかに興味を持ったというのが、最初のきっかけだったみたいです。

へえー。

そのときに、「人間とのコミュニケーションではなくて、機械とのコミュニケーションだったら明確なルールがあって、かつ、明らかだよね、揺らぐことがないよね」と。そこにすごく興味を惹かれて、そこからコンピューターとの対話というのを探求し始めたらしいです。

すごすぎるその観点。

だからコンピューターが好きというよりは、もちろんそれもあったでしょうけど、どちらかというと言語やコミュニケーションからみたいですね。そういうところに興味を持った。
で、言語を開発するといったら、コンピューターというのがあって、マシン語というのがあって…と。マシン語というのは中にICチップが入っていて、電気を通すとピーっと回路が流れるんですけど、「0(ゼロ)」と「1(イチ)」の数字とかで表されるんですよ。「0」と「1」では人間は会話はできない。覚えてられないし。001001010、はい、永田さん、私がなんて言ったか考えてみましょう!(笑)

何ですかーってなっちゃう(笑)

なっちゃうので、ちゃんと人間が「画面に表示しろ」って書けたら楽じゃないですか。「画面に表示しろ」って日本語だから、日本人しか分からないじゃないですか。あるいは、「表示してください」でも構わないですよ。でもどっちが良いの?って話にもなってしまいますよね。そういう扱いです。

なるほど。

もちろん、それを日本語だけで書ける言語というのは開発されているんですけど、そうやって書いたときに「0」と「1」の世界に翻訳される仕組みを作るっていうのが、開発言語の開発。

なるほどなるほど。

それはもちろん、Rubyのことです。で、もともとRubyは存在しないから、Rubyでコンピューターに対して命令するわけではなくて、もっと原始的な、コンピューターにより伝わる、もうすでにある他の言語で書くという。RubyはC言語で実装されています。

そうなんですね。Rubyの中にはC言語が。

そう、C言語が大元にはある。それが、コンピューターによる直接の命令になる。だから、Rubyの書き方というのは直感的になる。曖昧に書けるんですよ。厳格ではなくて、曖昧に書ける、そういう特徴があります。かつ、実行したらすぐに答えが返ってくる。すごく書きやすいんですけど、実は裏側にはもうちょっと小難しい原始的なC言語というのがあって、それを呼び出して使っているんです。そのC言語が、コンピューター内部でマシン語になるように、変換されて伝わるようになっているんです。

へえー。

そういう仕組みなんです。それがルールです。そのRubyを元に作られているのが、Ruby on Railsなんです。

そうなんだー。では、そもそも論になってしまいますけど、「C言語を使えば良いじゃん」とは思わないですか?

思いますね。C言語というのはすごく歴史のある言語なんですよ。書き方にすごく厳密性があって、直感的で曖昧に書けないので、学習するコストが非常に高いんですね。一人前になるには、10年以上かかるとざらに言われる言語なんです。

職人レベルですね。

そうです。なので、使いこなしても厳密性があるので、それをマスターするのには至難の業になりますね。手軽にできないわけですよ。もっと手軽に楽しくというのが難しいから、そういう現実を見たときに、「そんな風に自由に書けたら、もっとプログラマーにとってハッピーになるんじゃないか」ってまつもとさんは考えて、Rubyは作られたんです。

そういうことなんですね。それをするために言語開発されたと。

そういうことです。もしかすると、テクノロジーの進化という意味で考えると面白いのかもしれないんですけど。100年前の家事ってどうやっていたか想像してみてください。そのやり方で今やれって言われたらどうします?

いやですねえ。川で洗濯してきなって言われても、手間がかかるし…

今、便利になってるじゃないですか。便利になるために作っているんですよ。

良いことですね!

機械が自動でゴシゴシゴシゴシやるわけです!

なるほど。

ゴシゴシやってるけど、機械がやってるじゃないですか。人間はやらなくて良いじゃないですか。それと近いかもしれないですね、発想は。

確かに。今のはイメージつきました。

だから、あえて昔のやり方ではしないわけです。

そうですね。進化してるんだなあ。

そうなんです。そういう歴史の上に成り立っているから、開発言語だからといって毛嫌いせずに、進化しようとしているんだなあと思った方がいいんじゃないかなと思いますけどね。

なるほど。ありがとうございます。

【まとめ】

・Rubyは開発言語、Ruby on Railsはフレームワーク!
・Rubyはまつもとゆきひろさんが1995年に作り、そのRubyを元にデイヴィッド・ハイネマイヤー・ハンソンさんが2014年に作った!
・Rubyは誰にでも使いやすくするためにC言語から進化していった!

DIVE INTO CODEのことをもっと知ってみませんか?