Rubyの長所を徹底分析!他言語との比較からわかるRubyの素晴らしさ


Rubyってなにが長所なんだろう?
他の言語と比較した場合のメリットを知りたい!

こんにちは。

プログラミング言語を新しく学ぶとき、知っておきたいのが「学ぼうとしている言語がほかと比べてどんな点が長所なのか?」という部分です。

他の言語と比較することで学ぶ理由や使い方が見えてきます。そして、比較元の言語を知っていればそれとの違いを意識した学習ができ、効率化が図れます。

そこで、この記事ではRubyについて、同系統のスクリプト言語同士の比較を行っていきます。

最後にRubyの長所をまとめた項を設けてあるので、手っ取り早くRubyの長所だけ知りたい方は目次からジャンプしてみてください。

さっそく行ってみましょう。

PerlとくらべたRubyの長所

画像:Shutterstock

まずはPerlとRubyの比較です。もしかしたらPerlについて知らない人もいるかも知れないので、簡単に説明をしておきます。

PerlはRuby開発当初の目標でもあった

Perlは1987年生まれのスクリプト言語です。もう生まれてから30年以上経つ言語ですが、記事執筆時点での最新バージョン5.28.2が2019年4月19日にリリースされており、まだまだ精力的に開発が進められています。

Perlというと、インターネットが爆発的に広まった2000年代後半にCGIで一世を風靡した言語でした。CGIはWebサーバ上でプログラムを処理した結果を表示させる機能の名称ですが、このプログラムを記述する言語としてPerlがよく使われたのです。

今ではすっかり下火な印象のPerlですが、なぜRubyの長所の説明でPerlが出てくるかというと、PerlはRuby開発時の当初の目標であったからです。Rubyの作者Matz氏によると、RubyはPerlを代替可能であることが初期の段階から重視されていたとのこと。

名前もPerl(真珠:6月の誕生石)とRuby(ルビー:7月の誕生石)でかなり意識しているのが見て取れますね。

決定的に異なる部分は?

Perlの多くの部分を踏襲したRubyでしたが、1点決定的に異なる部分があります。それがRubyが純粋なオブジェクト指向言語である、という点です。

今ではプログラミング手法の一大スタンダードであるオブジェクト指向プログラミングですが、本格的に流行し始めたのは1995年にJavaが誕生してからです。

時系列を確認すると、Perlの誕生は1987年、Rubyの誕生は1995年。Perlにとってオブジェクト指向に関する機能全般は完全な後付なのです。

対してRubyは最初から純粋なオブジェクト指向言語として設計されており、非常に素直にオブジェクト指向プログラミングを行うことができます。このため、Perlと比較した場合のRubyの長所は純粋なオブジェクト指向言語であるかどうか、という点でしょう。

PythonとくらべたRubyの長所

画像:Shutterstock

つづいて、Rubyの公式のライバルともいうべきPythonについて見ていきましょう。

Pythonの特徴

Ruby公式リファレンスの用語集に以下のような説明があるくらいには、RubyはPythonを意識しています。

Python

Rubyのライバル。「年を経た蛇」。matzがPythonに満足していれば Rubyは生まれなかったであろう。一番気になっているのは名前の長 さ(6文字)である。

引用:Ruby公式リファレンス 用語集

Pythonが生まれたのは1991年。Rubyよりも4年前に誕生しました。Zen of Pythonに象徴されるように「コードの読みやすさ」「効率性」「誰が書いても同じような記述で簡単にかける」という点を徹底的に重視したのがPythonの特徴です。

この点がRubyとPythonの対立ポイントとしてよく取り上げられます。

先に書いたとおり、RubyはPerlの多くを踏襲しています。そして、Perlが掲げていたポリシーにやり方はひとつじゃない(There's More Than One Way To Do It.)という物がありました。

これは、プログラミングをする人が書きやすい方法をできるだけ多く提供する、ということを意味し、結果として同じ内容の処理に対して多くの表現方法が発生する事態になりました。

たしかに、書き慣れた方法でコードが書けるのは気持ちいいし、自分にとっては読みやすいですが、大規模開発になるとこの自由さが往々にして足かせになります。

同じ処理なのに別の書き方が複数存在するため似たようなクラスが量産されてしまったり、自分の流儀と異なるので一見するとなにをやっているのかわからない処理が作られていたりと、多様性が必ずしもいい方向には働きませんでした。

そのため、Pythonでは徹底して同じ処理は同じ記述になるようにな調整がしてあります。

対するRubyのポリシーは

対するRubyは明示的にPerlからやり方はひとつじゃないポリシーを引き継いだとは言っていませんが、プログラミングの楽しさを追求した結果、同じ処理に別名がついていることがしばしばあります。

Rubyのは純粋に楽しみのために設計され、言語を作る人、使う人、学ぶ人すべてが楽しめることを目的としています
— まつもとゆきひろ、Ruby プログラミング入門 まえがき 監修者よりのページ

引用:Wikipedia Ruby 設計思想

上の文章に象徴されるようにRubyにとって、楽しさが最上位なのです。Perlほどやり方が多彩にあるわけではなく、非推奨な処理を増やすことでユーザー側に自粛を促していますが、Rubyにとって大事なのは楽しさなのです。

このポリシーに共感できるならばRubyの楽しさは大きな長所と言えるでしょう。

PHPとくらべたRubyの長所

さて、PHPとRubyの比較ですが、正直ライターとして気が重い項目です。この組み合わせの比較って大概炎上するんですよねぇ……

そもそもRuby製作者のMatz氏がPHP嫌いを公言している記事が10年ほど前にあって、それ以来どうにもそれぞれのユーザーの間に溝ができているようです。

参照:Matzにっき

まあ、この頃のPHPはIPAから名指しで使わないことがセキュリティ対策になると言われていたような時代なので、2019年の現在と比べると多分に問題をはらんでいたことは否めません。

とはいえ10年近く年月が過ぎ、PHPのバージョンが5から7に変わったにもかかわらず、Attacking PHPで指摘されている問題点はほとんど解決していなかったりします

===とかもはやPHPの顔と言えるぐらい有名なネタと化していますし、今後もMatz氏が指摘しているポイントはほとんど変わることがないのでしょう。それがPHPの個性とも言える部分ですから。

というわけで、PHPに対するRubyの明確な長所としてはAttacking PHPで指摘されるような点がRubyには含まれていない、ということでお茶を濁しておきます。

Rubyの長所まとめ

ここまでで出てきたRubyの長所をまとめると以下のようになります。

  • 純粋なオブジェクト指向言語である
  • 楽しさがポリシーとして最上位に存在する

そしてPHPの悪癖と切り離された言語設計であるということ(明確なfalseの区分、ハッシュやリストの区別、lamda(無名関数)がある命名に一貫性が有る、引数の順序が明確、HTMLとロジックが明確に分離されているなど)。

これにRuby特有の事情による長所を付け加えると、Rubyは日本製のプログラミング言語なので、日本語のコミュニティが活発です。Railsの流行も相まって、日本語の情報が非常に入手しやすいという点が長所といえます。

以上がRubyの目立った長所と言えるでしょう。

まとめ

いかがでしたか?

今回は他の言語と比較することでRubyの長所について見てきました。Ruby以外にもいろいろな個性のある言語があることもお伝えできたなら嬉しいです。

この記事で興味がわきましたら、ぜひ新しい言語にも挑戦してみてください!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

侍ブログ編集部

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習やキャリアのお悩み、お気軽にご相談ください。