【知っ得言語】「Ruby」~特徴とその学ぶべき理由~
今やWebアプリケーション開発では欠かせない言語と言われているRuby。その特徴や”Ruby on Rails”という開発フレームワークがあるからこそ重宝されるその理由など、情シスの皆さんが業務に活かす為に最低限覚えておくべき内容を分かりやすく解説します。
この記事の目次
Rubyとは〜特徴と他の言語との違い
Rubyは日本で開発されたオブジェクト指向スクリプト言語で、今や多くのWebサイトやWebサービス開発に使われています。
“オブジェクト指向”などと聞くとプログラミングになれていない人は急に頭に入ってこなくなるかもしれませんが、これは「データや動作をひとまとめにした集合体を作り、その集合体を他の集合体と組み合わせてプログラムを構築していく技法」のことであり、この技法をサポートするプログラミング言語の総称をオブジェクト指向言語と言います。
オブジェクト指向言語には、Rubyの他にJavaやPerl、Python、PHPなどがあり、そして50年以上も使われ未だに現役というCOBOLもその一つです。
Rubyを知る前にオブジェクト指向を理解しましょう
オブジェクト指向の概念には3つあります。
・カプセル化……他の開発者が書き換えてはいけないデータを守る
・継承……作成したオブジェクトをソフトウェア内で再利用できる
・多態性(ポリモーフィズム)……同じ名前のオブジェクトを定義してデータによって処理を使い分けられる
カプセル化により他の開発者が変数を上書きすることを避けられます。そして継承を使うことでオブジェクトを再利用できることから生産性が高くなります。
そして、ポリモーフィズムは1つのオブジェクトを複数の処理で使い分けられるため、コードの複雑化を防ぎます。
Rubyは上記のオブジェクト指向の概念を採用しているからこそ、大規模なソフトウェア開発に向いているとも言え、Webサイトの動的コンテンツ作成を効率化します。
Rubyはすべてがオブジェクトで作られています
Rubyはすべてのコードがオブジェクトで記述されます。 オブジェクト指向言語にはPythonやC++などさまざまな言語がありますが、これらの言語はすべてがオブジェクトとして定義されているわけではありません。
しかしRubyはオブジェクトに対してできることは、コードで使用するすべての型や演算子、数字にまで適用できます。
以下のコードは「Hello 」という文字列を3回表示しますが、3という「数字にメソッド」が適用される点に注目してください。
3.times {
print ‘Hello ‘
}
timesメソッドは指定された回数{}内の処理を繰り返します。このコードでは処理が3回繰り返されます。
このように数までもオブジェクトとして設計されているように、Rubyは他の言語と比べると徹底的にオブジェクト指向にこだわった言語です。
Rubyの歴史
Rubyは日本人の“まつもとゆきひろ”氏によって開発され、1995年に一般公開されました。ご存じのように、フリーソフトウェアとして配布されており、無料かつコピーや変更、再配布も自由に行えます。
また日本発信のプログラミング言語のため、日本を起点としてコミュニティが拡がりました。
さらには2004年にはRubyを使ったWebアプリケーションフレームワーク「Ruby on Rails」の登場により、海外でも高い評価を得ることとなり、Rubyは成功を収めます。
ブームとなった証として、英語のRubyコミュニティ(メーリングリスト)は、2006年には1日平均200通のやり取りがされていたという逸話もあるほどです。
業界的なRubyエンジニアの需要
Rubyを扱えるエンジニアの需要は高くは、株式会社ビズリーチが2018年8月7日に発表したプレスリリース「プログラミング言語別年収中央値を発表、求人検索エンジン「スタンバイ」調べ」によれば、Rubyは7位にランキングしています。(参考:プログラミング言語別年収ランキング2018)
データ:求人検索エンジン「スタンバイ」
求人年収の中央値は550万円で、求人数は年収ベスト10の中で1位(11,676件)を獲得しており、Rubyはメジャーな言語としてこれからも活躍するでしょう。
Rubyでできること〜Webベースのシステム開発
Rubyがオブジェクト指向スクリプト言語であることは先に述べましたが、Webサイトにおける動的コンテンツの実装に向いているなどの理由からWebアプリケーション開発の現場で多く使われています。このようにオブジェクト指向という特徴を生かし、生産性やコードの可用性の高さによって、大規模Webサービスに向いているといえます。
Rubyを使ったWebサービスとしては、クラウドソーシングサービスの「クラウドワークス」やSNSを使った学習支援サービス「Studyplus」などが有名です。
その他の用途としては、Webの情報を取得して加工するスクレイピングや機械学習などにも使われています。しかしながら、機械学習の面では、すでにご紹介しましたが、ライブラリが充実しているPythonに分があるかもしれません。(参考:【知っ得言語】「Python」~特徴と学ぶべきその理由~)
Rubyの開発環境〜Ruby on Rails
Rubyが開発現場でもてはやされるようになった背景には、Ruby用のWebアプリケーション開発フレームワーク「Ruby on Rails」の影響が少なくありません。
開発フレームワークとは、Webアプリケーション開発に必要な機能を備えた開発環境のことで、頻繁に用いられる基本的な機能をあらかじめ備えたものです。開発を簡単に、よりスピーディーに行うための道具と覚えておけばよいでしょう。これにより、誰でもある程度の質が維持することができ、時間を短縮するためにあるものなのです。
Ruby on RailsとはRubyのフレームワークで、応用範囲が広く万能なフレームワークです。最近ではSNSだけでなく、オンラインゲーム開発、業務システムなどにも用いられており、様々な場所で利用されています。システム開発を効率化できることから、Webベースの業務システム開発でも重宝されており、情シスの皆さんにも大いに関係があるでしょう。
そして、この”Ruby on Railsを使えること”が、”Ruby”という言語を選択する大きな理由でもあります。
またRuby on Railsも日本で開発されたこともあり、公式ドキュメントやWeb上の技術解説記事が日本語で書かれているというメリットもあり、開発フレームワークを使い慣れていない人でもとっつきやすいことから、広く利用された一因ではないかと思います。
しかしながら、Rubyにもデメリットもあります。
Ruby自体に何らかの欠陥があるわけではありませんが、スクリプト型言語であることから、コンパイル型言語に比べると実行速度で劣ってしまいます。
また、プログラマによって異なる書き方でコーディングできてしまうこともあり、後から読みづらいコードになってしまうこともあります。
しかしながら、コードの可読性について、コーディング規約などシステム開発の際の運用ルールを決めておくことで回避できることなので、大きな問題にはならないでしょう。
情シスがRubyを習得する価値は…
RubyはWebアプリケーション開発に適した言語で、Ruby on Railsという優れた開発フレームワークが用意されています。 これにより、プログラミング初心者でも習得しやすい上、Webベースの業務システムやツール作成にも向いています。
プログラムが書けるまでの技術習得をしなくとも、業務システム開発を外注する際など、SIerさんとの会話の中でRubyが登場するかもしれません。
多くのWebアプリケーションで採用されている背景から考えても、情シスも知識として勉強する価値はあるでしょう。
オブジェクト指向スクリプト言語の基礎を学ぶ意味でも「知っ得」な言語です。
【執筆:編集Gp 恵良 信】