
世の中にはたくさんのプログラミング言語がありますから、初心者にはどれから手を付けるのが良いか、迷うところだと思います。
せっかく勉強するのですから、しっかり身に付けて、将来的に役に立つ言語が良いですよね。
今回は、自分の経験をもとに、JavaとRubyにフォーカスして、どっちを学習するのがオススメか お答えしたいと思います。

私は、大手企業のシステム開発部門で社内システムを開発しています。
社内ユーザーに対して、ブラウザからアクセスして業務を行うためのシステムを提供しています。
プログラミング言語は、Javaを3年、それからRubyを3年ほどWebアプリケーションの開発業務で使ってきた経験があります。
目次
JavaとRubyの特徴


Java? Ruby?
聞いたことはありそうだけど、どんな言語なの?

まずは、両者の特徴について、簡単に触れておきましょう。
Javaの特徴

Javaは、1995年に登場した、サン・マイクロシステムズ(現在はオラクルに吸収合併)によって開発されたプログラミング言語です。
作成したプログラムを実行するには、「コンパイル」という「プログラミング言語をコンピュータが理解できる形に翻訳する」作業が必要です。
コンパイルを必要とするC言語などの言語では、コンパイルを行ったプログラムは特定のオペレーティングシステムやCPUでしか動作しませんでした。
しかし、Javaの場合は、Javaで書かれたプログラムを実行するための環境があれば、オペレーティングシステムやCPUを問わず、あらゆる環境で動作するという点が大きな特徴です。
そのため、Javaは、基幹業務システムから、Androidスマートフォンのアプリまで、幅広く利用されています。
Rubyの特徴

Rubyは、Javaと同じく1995年に登場した、まつもとゆきひろ氏によって開発されたスクリプト言語です。
スクリプト言語で書かれたプログラムは、Javaのようにコンパイルという作業を行わなくても、書いたらすぐに動かすことができます。
また、2004年頃に、「Ruby on Rails」という、アプリケーションを簡単に作成するための枠組みが登場してから、Webアプリケーションの開発を中心に急速に利用されるようになりました。

Ruby on Railsのような枠組みは、「フレームワーク(Famework)」と呼ばれています。
参考までに、こちらのサイトに説明があります。
JavaとRubyの共通の特徴


JavaとRubyって、いろいろ違いがあるようですね?

ところが、全く違うプログラミング言語というわけではないんです。
今度は、両者の共通点について見ていきましょう。
JavaとRubyは、いずれも「オブジェクト指向」プログラミング言語です。
プログラミングに興味があるなら、オブジェクト指向プログラミング(Object-Oriented Programming)という言葉は聞いたことはあるかもしれません。
オブジェクト指向プログラミングとは、あえて一言で言うならば
プログラムの機能を「オブジェクト」という「モノ」に見立てて、機能ごとにグループ化してプログラムを組み立てていく
というプログラミングの考え方です。
JavaもRubyも、この考え方に基づいて、言語の仕様が設計されています。
また、Rubyには、「Ruby on Rails」というアプリケーションを簡単に作るための「フレームワーク」がありますが、JavaにもWebアプリケーションを開発するいろいろなフレームワークがあります。
ですので、JavaでもRubyと同じようにWebアプリケーションを作ることは可能です。
結論から言えば…

これから、プログラミングをしっかり学んでいきたいのであれば…
私なら、Javaをオススメします。
Javaをオススメする3つの理由

では、私がJavaをオススメする3つの理由について、順番に見ていきましょう。
1. プログラミングを効率的に学べる

Javaは、プログラミングする上で従わなければならないルールが厳しいです。
ちょっとでもルールから外れたプログラムを書くと、コンパイル作業の時に「エラー」として厳しく突き返されます。
一方、Rubyは、Javaに比べるとルールの幅が広く、さまざまなプログラムの書き方が許されます。
例えて言うなら、Javaは算数のように正解がひとつしかないのに対して、Rubyは英語のように表現方法が異なっていても文法や内容が正しければ正解となるようなものです。
Rubyのように、正解が複数あるプログラミング言語では、エラー(不正解)で突き返される率が低くなりますから

なんだ、プログラミングって簡単じゃん!
と、最初のうちは思うかもしれません。
しかし、プログラミングを勉強するにつれて、インターネットや参考書などで他人の書いたプログラムを参考にすることもあるでしょう。
そのプログラムが、自分が覚えているものとは違ったルールで書かれていたら、どうでしょうか?

えー!こんな書き方、知らないよ・・・
となると思います。
結局は、さまざまなルールを覚えなければならない羽目になります。
だったら、はじめから正解がひとつの方が、結果的に効率的に学習できると思います。

プログラム開発の現場では、複数のプログラマーでチームを組んでプログラミングするケースが大半です。
私が、Rubyでのプログラミングを行ったときに、他のメンバーのプログラムを見て「何だ、この書き方は?」と感じた経験があります。
書き方が統一されていないと、チームでの開発効率が下がるため、現場では書き方を統一するか、他の書き方を学ぶかといった対応が必要でした。
2. 「オブジェクト指向」がしっかり身につく

Javaは、オブジェクト指向の考え方が身についていないと、プログラミングすることができません。
一方で、Rubyはオブジェクト指向を知らなくても、なんとなくプログラムを書くことはできます。

オブジェクト指向?
なんだかよくわからないから、知らなくてもプログラミングできるRubyの方がいいな…
最初のうちは、そうかもしれません。
しかし、他の人がオブジェクト指向の考え方にしたがって書いたプログラムを見たりすると、壁にぶち当たることになります。
また、アプリケーションを開発するためのフレームワークは、ほぼすべてがオブジェクト指向で設計され、オブジェクト指向プログラミングをすることが求められます。
プログラミングの入門書にある、メッセージを表示させたり、数値を計算結果を表示させたりといった知識だけでは、アプリケーションは作れません。
何かしらのフレームワークを使ってアプリケーションを作るには、オブジェクト指向の考え方は基礎知識として知っておく必要があります。
いずれ必要になるのであれば、学習の初期段階でオブジェクト指向プログラミングができるようになっている方が、長い目で見ると得です。

私はJava EE、Ruby on Railsといったフレームワークを実務で使ってきました。
アプリケーションの開発現場では、ほとんどの開発案件で何らかのフレームワークが使われています。
ゼロからプログラムを書いていくより、すでに出来上がっている枠組みを利用するほうが開発効率も良く、品質の高い開発ができるからです。
ですので、オブジェクト指向プログラミングのスキルは実務では必須と考えてよいでしょう。
3. プログラマーとして重宝される

Javaを学ぶことで、オブジェクト指向の考え方も身につくということは、前に述べたとおりです。
オブジェクト指向の概念を知っているプログラマーは、フレームワークを利用してプログラミングするための基礎的な知識があるものとして、現場では重宝されます。
Javaでオブジェクト指向を学んでおけば、C言語など他のオブジェクト指向プログラミング言語ではない言語でもプログラムを作れます。
それも、オブジェクト指向の概念を活かせば、汎用的で再利用が可能な「使えるプログラム」を作れるようになります。
しかし、その逆は難しいです。
Rubyで簡単なプログラムを書けるようになったからといって、現場で使えるとは限りません。
「プログラミングの実務を行うにあたってより有利なのが、オブジェクト指向を理解しているJavaプログラマーです。

私はJavaを実務で使えるレベルまで学習するのに、約3年間かかりました。
その後、Rubyを学習しましたが、約1年で実務で使えるレベルまでなりました。
このように、Javaプログラマーが他の言語を覚えるのは比較的容易と思われます。
Javaを学ぶ上での2つの注意点

Javaを学ぶ上で、注意すべき点もあります。
どんなことに注意すべきか、順を追って見ていきましょう。
1. 学習のハードルが高い

Javaは、マスターすれば非常に有益なプログラミング言語です。
しかし、Javaは、オブジェクト指向など学ばなければならない知識が多く、初心者にはハードルの高いプログラミング言語です。
そのため、途中で学習に挫折してしまう人も多いです。
Rubyの方が初心者にはとっつきやすく、人気があるかもしれません。
スクリプト言語ですので、コンパイルせずともプログラムをサクサク動かせますし、柔軟にプログラムが書けることから、初心者向けのプログラミング言語と言えるかもしれません。
とはいえ、RubyプログラマーがRuby on Railsを使えるようになるには、オブジェクト指向をはじめフレームワークのプログラミングルールなど、さまざまなことを学ばなければなりません。

オブジェクト指向がわからない。どうしよう…
という人は、たくさんいると思います。
でも、Javaをあきらめないで、頑張って学習してみることをおすすめします。
頑張ってマスターしたことは、きっとあなたの財産になります。
2. 就職・転職先で使われる言語を覚えなければならない

就職・転職先で、必ずしも学習したプログラミング言語が使われるとは限りません。
たとえば

我が社は、Ruby on RailsでWebサービスを提供する。
と言われたら、それに従わざるを得ません。
結局は、Ruby、それからRuby on Railsも覚えることになります。
そんな場合に、要求される言語やフレームワークに柔軟に対応できるプログラマーが重宝されるのは確実です。
今後も、いろいろな新しい技術や環境、プログラミング言語やフレームワークが誕生し、世に出てくると予想されます。
そのためにも、基本をしっかり学んでおいて、応用力を発揮できるようにしておくのは重要です。

プログラマーは、日々勉強が必要です。
まとめ

以上の理由から、これから学ぶのであれば、Javaからスタートするのが良いでしょう。
ただ、私はJavaをオススメしましたが、今はRubyやPHP、Pythonといったスクリプト言語が台頭していますので、それらのプログラミング言語ができるプログラマーもニーズがあります。
Javaを覚えたら、可能な範囲で他のプラグラミング言語も勉強してみるのもオススメです。
また、RubyもJavaも、どちらかといえばWebアプリケーションのサーバー側で動作する、バックエンドのプログラミング言語です。
ですので、HTMLやCSS、JavaScriptといった、ブラウザ側で動作するフロントエンドのプログラミング言語もセットで覚えておけば、間違いありません。
そうすればきっと、現場で使える実践的なプログラマーになれるでしょう。

プログラミング初心者だけど、これから勉強するならどんなプログラミング言語がいいんだろう…?