Java
Ruby
PHP

【初心者向け】Ruby、ルビーって言われるけど実際どうなの?

Ateam Hikkoshi Samurai Inc. Advent Calendar 2017 20日目です。
本日はエイチームコネクトの中途2年目、お菓子大好き中年Webエンジニアの@taka999が担当します。

背景

ここ最近周りでRubyでの開発が更に活発になってきた。
Rubyでナニナニ、Rubyでナニナニって、、、PHPではいかんのかと。。。
何も知らずに文句を垂れるのは芸がないので、WEBエンジニア初心者ながらルビーってのを調べてみることに。

はじめに

自分自身が『ど初心者』なので、あまりソースコードで説明は出来ないし、参考サイトもソースコードで説明されてないサイトを選んでいます。

まずはありきたりなのですが「Rubyとは」で検索
・すべてオブジェクト指向
・インタプリタ方式
・構文の自由度が高い

なるほど!
プログラミングをやった事がある者には多少分かるが、知らない人には優しくないお言葉。

特徴1:オブジェクト指向

これを上手く説明できるひとってどれだけいるのだろうか。。。
という自分も何となくでしか理解できていないため以下を参考に。
5分で絶対に分かるオブジェクト指向
オブジェクト指向とは何か?わかりやすい例で説明してみた。

オブジェクト(物)は継承でき、基本となる物を作れば、それを元に別のものを簡単に作れ応用も聞く。
ゲームで言うと1つの基本キャラを作り、こいつを元に色と強さを変えたキャラを作っていく感じ。
無題.png

特徴2:インタプリタ方式

プログラミング言語の命令を一つずつ機械語に解釈し実行するから、ソース書いて即実行できるよって方式。

■メリット
プログラム開発途中にちょいちょい実行させながら確認ができるので、プログラムが作りやすくデバッグも容易。

■デメリット
都度一つずつ解釈するため、変数にアクセスする際も識別子とメモリ上の位置のマッピングを確認しながら実行していくので実行速度が遅くなる。

特徴3:構文の自由度が高い

構文と言われるとコードを見るしか無いのでちょっと記載。

■整数型の変数を定義

Javaの場合
int var = 123;
Rubyの場合
var = 123

■繰り返し

Javaの場合
for (int i = 0; i < 10; i++) {
    System.out.println(i);
}
Rubyの場合
10.times do |i|
  puts i
end

■switch(case)文

Javaの場合
switch(num){
   case 1:
        System.out.println("a");
        break;
   case 2:
   case 3:
   case 4:
        System.out.println("b");
        break;
}
Rubyの場合
case num
when 1
  puts 'a'
when 2..4
  puts 'b'
end

コード量が少なくて済むので楽だね~
文法に制限が少ない分、個々の好みがモロに反映されそう

フレームワーク

Ruby on Rails、Sinatra、HANAMIなど色々あり。
Ruby on Railsだけじゃない!Rubyフレームワーク6選

今までの歴史と人気からみても『Ruby on Rails』一択で良さそう。

その他

Ruby用のライブラリは『gem』と呼ばれていて、かなりの数のgemがあるらしい。
Rubyで使われるライブラリを、Gemと呼ばれる形式でパッケージ化された物が多数あるらしい。
イチからわざわざ作らなくても、欲しい機能を探せばヒットする可能性は高く開発が楽ちんになる。
※ライブラリとは、共通的な処理や便利な機能をまとめた外部プログラム
作業効率が上がる!Rubyの開発で知っておくと便利なgem10選

まとめ

かいつまんだレベルなので決めつけれないが、PHP含め他の言語でも同じような特徴であるものの、フレームワーク選択に迷わないしライブラリ(gem)も豊富でコードも短く書けちゃうとくれば、開発のしやすそうなRubyから始めるのも有りかと思う。
ただ、既に別の言語(PHPやperlなど)で開発していて困っている事がなければ、わざわざRubyに変更する必要もないかな。
この言語だと開発しやすいとかで選ぶ事もあるけれど、やりたいことを実現させるにはこの言語!って選定していくことが大事だと思う。

最後に

Ateam Hikkoshi Samurai Inc. Advent Calendar 2017 20日目いかがでしたでしょうか。
明日はエイチーム引越し侍の一時期心理学にハマったフロントエンジニア@hashimoto-1202
『vue-rooterを使ってSPAv(シングルページアプリケーション)を作成してみた』
を書いてくれますのでお楽しみに。

追伸

エイチームグループでは、一緒にWebサービス・技術の向上、そして未来を創造していく仲間を募集しています。
30代後半で業務系システムエンジニアからWEBエンジニアに変更した私も、新たな挑戦をしながら進んでいますので、今まで一歩を踏み出せなかったエンジニアも、エイチームグループに興味がある方も是非、以下のリンクから応募してください。
皆様からのご応募、お待ちしております!!

エイチームグループ採用サイト(Web開発エンジニア職)