はじめに
IT業界には様々な職種がありますが、ITと言ってすぐに思い付く仕事の姿は、パソコン画面に向かってひたすらプログラムを打ち込んでいるイメージという人も多いことでしょう。
海外ドラマ等を見ていると、天才プログラマーやハッカーのような人が真っ黒な画面に向かって果てしない量のプログラムを打ち込んで、最終的に問題を解決するなんていうシーンが良くあります。
そういった仕事をするITの職種はプログラマーやエンジニア、あるいはホワイトハッカーが近いです。
プログラマーやエンジニアは未経験や中途採用から始める人がほとんどです。入社時こそ研修が用意されている企業もありますが、その後は資格勉強やインターネット上、先輩・同僚から情報を仕入れる等をして、ほぼ独学のような状態で実務をしながら少しずつ学んでいきます。
向き不向きはありますが、大抵のプログラマーは少しずつスキルを磨いて経験を積んでいきながら仕事をこなせるようになります。
また近年はシンプルでありながら優れたプログラミング言語がメインで使われていることも多く、未経験であってもプログラマーやエンジニアを目指しやすくなっている傾向にあります。
真っ新な状態からプログラムを組んでいくこともほとんどないので、実際テレビドラマ等で見られるような超高速タイピングでプログラミングを繰り広げるようなことは極めて稀です。
そんなシンプルなプログラミング言語の一つが、今回紹介するRubyです。
自分がプログラマーを目指すなんて考えられないと思っていた人も、Rubyを知ることで改めて検討するきっかけになる可能性もあるので、ぜひ読み進めてもらえると幸いです。
先にRubyエンジニアの求人情報のリンクを貼っておきます。Rubyエンジニアについて、どういう仕事や企業の求人があるのか、どの程度の年収相場なのかということが把握できるので、ぜひご覧ください。
Rubyってどんな言語なの?
Rubyの大きな特徴は、短いコードで完結できる、シンプルで読みやすい、オブジェクト指向であるという3点です。3つの特徴について詳しく紹介していきます。
短いコードで完結できる言語
すでに別の言語のプログラマーである場合はRubyのコードを見るだけでわかると思いますが、プログラミング自体未経験の場合は比較対象が必要となると予想されるため、今回はJavaで記述したプログラムとRubyを比べてみます。
よくプログラムを勉強し始める際に最初に作成することになる「Hello World」と出力するプログラムを以下に紹介します。
【Javaの記述】
public class hello
{
public static void main (String[ ] args )
{
System.out.println(“Hello World”);
}
}
【Rubyの記述】
puts “Hello World”
この比較だけで明確ですが、Javaでは7行必要な記述がRubyではたった1行で済みます。
Javaの記述についてはプログラムを見やすくするためのタブや改行を使ったインデントを付けているため書き方によっては4行ほどにまとめることも可能ですが、それでもRubyの4倍です。
なおJavaもRubyも同じオブジェクト指向の言語ですが、これだけの違いがあります。
シンプルで読みやすい言語
短いコードという特徴にも繋がってきますが、Rubyはシンプルなコーディングであるため、作成者以外の人が見ても作成者の意図や目的が理解しやすいというメリットがあります。
システム運用をずっと一人で続けていく場合は特に問題にならないですが、企業で運用をしているシステムはずっと同じ人が担当することはほとんどなく、部署異動や退社で引継ぎする場面が多く発生します。
その際に複雑なコーディングがされていたら解読に時間がかかるだけではなく、最悪の場合作り直しが発生してしまう場合もあります。Rubyは元々がシンプルなため、誰が記述しても同じようなコーディングになりやすく、そういったリスクを回避できる言語とも言えます。
Rubyは日本が発祥のプログラミング言語ですが、その開発者いわく、Rubyはシンプルというよりは自然なものにしようとしているとのことです。
Rubyの信念としてプログラミングを楽しむための言語ということが謳われているだけあって、直感的に作成できるという点を大切にしている特徴が伺えます。
またシンプルなコーディングの裏はとても複雑になっているとも言われています。
例として提示した「puts “Hello World”」というプログラム内の「puts」はデータを出力するメソッドですが、Rubyエンジニアは「puts」の構成要素を理解していなくても利用できます。
しかし「puts」には例えば「””(ダブルクォーテーション)」内の文字列を表示する、デフォルトで出力後に改行されるという仕様があり、これらは開発側がそのような仕様を持つ「puts」を裏で作り出しているという状況です。
利用者が望むような仕様を先回りして持たせていて、気配りが感じられる言語がRubyです。なお今回細かい説明は省きますが、Rubyはオープンソースであるため、カスタマイズを行えるという点も特徴の一つです。
オブジェクト指向
オブジェクト指向は、茶道で言うところの流派の一つです。茶道には表千家、裏千家、江戸千家と様々な流派がありますがそれぞれ作法や振る舞いが全く異なります。オブジェクト指向にもオブジェクト指向ならではの特徴があります。
またオブジェクトというだけあって、意味のあるプログラムのまとまりを一つのオブジェクト(物)として捉えます。これらのオブジェクトを組み合わせてシステムを構築していくのがオブジェクト指向です。ボディ、エンジン、マフラー、タイヤ等のパーツを組み合わせて最終的に車を作っていくイメージです。
オブジェクト指向の特徴として良く挙げられるのがカプセル化、継承、ポリモーフィズム(多様性)であり、これら3つがオブジェクト指向習得の要となります。
カプセル化はある意味でのブラックボックス化です。薬のカプセルを思い浮かべてください。カプセルの中に入っている薬の成分を詳しく知らなくても医者の言う通りに飲めば大抵の場合その効果を得られます。中身を知らなくても効き目があるということです。
パソコンでいえば、起動して、ブラウザでショッピングサイトにアクセスして買い物をするという行為は、パソコンやインターネットの構造、ショッピングシステムのプログラミングを知らなくてもできます。中身を知らなくても利用できるということになります。
中身のコーディングを詳しく知らなくても、カプセルに包まれたプログラムを利用すれば、目的のシステムが構築できるという概念がカプセル化です。
次に継承です。継承はいくつかのオブジェクトに共通する事柄を抽象化して別のオブジェクトとして作成しておき、必要な時にそのオブジェクトを引き継いで具体化するという仕組みです。
オブジェクト指向言語を学べる書籍には良く動物を例えに説明されています。「動物」と聞くと犬、猫、象、ライオンと様々思い浮かべられますが、「動物」という名前の動物はいないので「動物」という単体のものを思い浮かべられる人はいません。動物は概念や属性となります。
鳴く、食事を摂る、寝る等の動物に共通する特徴を一つのオブジェクトにまとめておき、犬、猫と動物の種類ごとのオブジェクトを作る際に「鳴き声はワン」「肉食である」「夜行性である」等の具体的な内容に落とし込んでいきます。
また概念のようなオブジェクトを具体化し、様々なオブジェクトで汎用的に利用できることをポリモーフィズム(多様性)と言います。
以下リンクのサイトではオブジェクト指向について図を用いて説明されていたので、より理解を深めたい人はぜひご覧ください。
Rubyエンジニアに将来性はあるの?
長い間主流であるJavaやPHPといった言語と比べるとRubyはやや新しい言語です。それでもRubyは初心者でも学びやすく、開発スピードも早いため、特にスピードが重視されるスタートアップやベンチャー企業を中心にWebシステムやゲーム、スマートフォンのアプリ等の分野で利用されています。
特にRubyのフレームワークの一つであるRuby on Railsの人気は高く、このフレームワークを利用したサービスはCookpad、クラウドワークス、海外ではHuluや、Github等の有名なものが挙がります。なおフレームワークは、よりRubyを簡単に利用できるようにした型や枠組みのことです。
言語別に見たRubyエンジニアの求人数は、まだまだJavaやPHP、JavaScript等に比べると少なく、常に増え続けているという状態ではありませんが、海外まで目を向けると人気の安定している言語の一つとなります。
誰でも学びやすく、開発の高速化が実現でき、バージョンアップや機能追加も頻繁に行われている言語なので、現状よりも今後に期待のできる言語と言えます。
RubyやRuby on Railsの導入事例が紹介された記事があったので、興味のある人は是非ご覧ください。
Ruby on Railsの事例まとめ(日本有名サイト編)
Ruby活用事例
Rubyエンジニアになって開発者の道を目指そう!
Rubyはフレームワークが充実していることもあって今後の発展に期待できるプログラミング言語ではありますが、決してその発展が確約されているような状況ではありません。
それでも学習サイトや書籍等の学習ツールも豊富なうえにコードがシンプルなため初心者が学びやすい言語なので、プログラミングを始めるには適しています。またオブジェクト指向の考え方は他の多くの言語にも役に立ちます。
今後長くプログラマーとして仕事をしていこうと考えている人は、ぜひRubyから始めてみてはいかがでしょうか。
Rubyを学ぶ際におすすめな学習サイトが紹介された記事があったため以下にリンクします。
エンジニア転職を検討するなら、マネたま転職で紹介されている転職エージェントを活用するのがおすすめそうです。