こんにちは。グラムでエンジニアをしている渡邉です。
今回は、PHPエンジニアだった僕が、グラムの主な開発言語であるRubyを意のままに操れるようになるまでの、紆余曲折をご紹介します。
PHPとRubyの特徴(私見)
PHPとRuby、どちらもWebアプリケーションの開発に使われている開発言語です。
もちろんJavaなども広く用いられていますが、PHPとRubyは、比較的低コストで、初心者でも入りやすい言語という点で共通しているイメージです。
実際、僕も社会人数年目のころ、実務どころかマジで未経験なところからPHPエンジニアになりましたし、今はRubyのフレームワークであるRuby on Railsにも元気に向き合っています。
正直なところ、はじめてWebアプリケーション開発に取り組むなら、どちらから入ってもいいと思います。
PHP, Rubyの記述方法の違い
「PHPエンジニアがRubyで書くときに、どうするの?」という視点で、それぞれの記述方法の違いを挙げていきます。
一部、Ruby on Rails限定なところもありますが、グラムにジョインしたときには必要になる知識なので、まぁいっかと思って書いちゃいます。
行末にセミコロンいらない
■PHP
echo string;
■Ruby
p string
両方つかっていると、間違えてつけたり、つけ忘れたりします。
出力
一番使う、出力。何はなくとも、出力。
■PHP
echo string;
print_r(array);
var_dump(string);
■Ruby
p string
p array
p string
pで、文字列も配列もハッシュもいける。ラクチン。ちなみに、ppとすると、配列やハッシュを改行して出力してくれる。便利。
条件分岐 「でない場合」という概念
Rubyでは、`unless`という条件文があります。意味は、「でない場合」。`if`の逆ですね。
たとえば、変数の値が1以外の場合に実行する処理の場合。
■PHP
if($i !== 1)
{
// hogehoge
}
■Ruby
unless i === 1
// hogehoge
end
使いどころを間違えると、逆にわかりづらくなりそうですが、複数条件以外のみの処理なんかは、スッキリと書けそう。
ループの記述
ループの記述も、PHPとRubyでは異なります。
ここではPHPのforeachを例に挙げますが、for文の記述や、mapなど、ループ周りはRailsのほうが柔軟性に飛んでいる印象がありました。ちなみに、jsに慣れていれば、そんなに違和感なく使えそうです。
■PHP
$list = [
'a' => 1,
'b' => 2,
];
foreach($list as $key => $value)
{
echo "{$key}: {$value}";
}
■Ruby
list = {
a: 1,
b: 2,
}
list.each do |key, value|
p "#{key}: #{value}"
end
テンプレートエンジン slim の存在
Ruby on Rails には、slimというテンプレートエンジンが存在します。
PHPにもSmartyやTwigといったテンプレートエンジンがありますが、それのRuby on Rails版ですね。
HTMLタグの親子はインデントで表現
HTMLのタグの親子関係は、slimではインデントで表現されます。
<div id="sample1" class="sample2 sample3"><span>hoge</span></div>
これを、slimで記述すると、以下になります。
div#sample1.sample2.sample3
span
'hoge'
最初は違和感ありますが、慣れるととても楽ですし、何よりも見た目がわかりやすい!
閉じタグ不要
前述のサンプルからも分かる通り、閉じタグが不要です。「divの閉じタグ忘れた!」みたいなことも解消されますね。ありがたい。
おわりに
PHPからRubyに転向するにあたって、序盤のハードルになりそうなことの一部を挙げてみました。
PHPに限らず、すでにプログラミング言語を活用されている方であれば、さほど違和感なくRubyに馴染むことができるはずです。実際に僕も、グラムにジョインするまではプログラミング言語はほとんどPHPしか触れていませんでしたが、一ヶ月もしないうちに(多分)使いこなすことができました。
グラムでは、多言語経験のみでRuby経験なしのエンジニアも歓迎していますので、「RubyやRuby on Railsに興味はあるけど、実務経験ないし...…」というエンジニアの方は、ぜひ応募してみてください!