Javaは最初に学ぶべき?プログラミング言語選択に悩んでいる人必見!

プログラミングの勉強始めたいけど、どの言語を選ぶべき?
Javaは初心者には難しいと聞いたけど、実際どうなんだろう。
逆に初心者こそJavaをやるべきだって言う人もいるし…

こんにちは。使える言語は公称8つ、今年はKotlinを習得予定のエンジニア・テックライターの平山です。

プログラミングを学び始める際の、最初の重大な意思決定として、どの言語を学ぼうか、というのがあります。

どの言語も魅力的で、でも、いろいろと調べるうちに悪い評判や初心者向けではないという話を見つけ、やる気ががっくり落ちることもよくある話です。

どの言語を選ぶのか、というのは、ある意味選ぶ人の主義主張・思想信条が絡んでくる部分なので絶対的なオススメというのは言いにくい部分があるも事実です。

ですが、今回は主にJavaをターゲットとして、オススメできる人できない人を紹介してみようと思います。

あなたは果たしてJavaに向いているのかどうか!?それは読んでのお楽しみ、ということで、早速行ってみましょう!

Javaを学ぶべき人とは

まずはJavaを学ぶべき、積極的にオススメできる人を紹介していきます。この項目に当てはまれば間違いなくJavaを学ぶべきと言えるでしょう。

学校のプログラミング実習の課題言語がJava

初っ端から身も蓋もない話ですが、専門学校やスクール・大学、最近は中学高校も含まれるでしょうか?ともかく、そういった教育機関でプログラミングの授業があり、その授業の指定言語がJavaである場合、嫌もおうもなくJavaを学ぶ必要があります。

というか、学ばざるを得ません。

ただ、Javaを学べる機会って結構貴重なので、授業を受ける側としてはいやいやかもしれませんが、積極的に学んでおくと将来とても役に立ちますよ。

将来就職したい会社のメインの言語がJava

これまたどうしようもない話ですが、就職希望の会社がJavaメインのところだった場合、Javaを習得するしかありません。

ただ、次の節にも絡みますが、Javaメインの会社ということは結構大規模なシステムを運用する可能性が高いです。そうすると、大規模なシステムに触れてみたい、という人にとっては嬉しい要素と言えます。

大企業の基幹システムを管理するような仕事に憧れる

昔に比べて大企業に対する神話は崩れてきましたが、それでもやはり就職できるならしたいのが大企業。安定感が違います。

そんな大企業に憧れがあるシステム系の人にとって、Javaは必須のスキルです。多くの銀行や官公庁、商用システムはJavaで構築されているため、Javaが使えることは商用システムを運用するための前提条件と言えるでしょう。

大企業で安定した暮らしをゲットしたい方は、真っ先にJavaを習得しましょう。

なんでも作れるようになりたい・最初からきっちりと学習を積み重ねたい

Javaという言語の特性の一つが、どこでも動く・何でも作れる、という点です。細かい話は端折りますが、JVMという仮想マシンのおかげで、Javaはプログラムが動くほとんどの環境で使うことができるはずです。

そのため、Javaが使えないジャンル、というものは原理的にほとんどありません。スマホアプリも作れますし、Webサービスもいけます。ゲームや組み込みも強みがありますし、デスクトップアプリは得意分野の一つでしょう。

そのため、何でも作れるような万能プログラマを目指すなら、Javaの習得は第一歩として非常にオススメです。

さらに、Javaは現在のプログラミングの基本思想であるオブジェクト指向を世の中に広めた実績のある言語です。Javaをきっちりと学習すれば、オブジェクト指向にも自然と対応できるだけの基礎力を身につけることができるでしょう。

最初から全部きっちりとやろうとすると、それなりにハードルは高くなります。ですが、プログラミングを極めたい、プログラミングで何でもできるようになりたい、という志の高い方には本当にオススメです。

Javaがはじめての言語におすすめできない人とは

この章では1章とは逆に、明確にJavaをオススメしにくい人を紹介していきます。

既に作りたいものが決まっている

まずオススメしにくい人として上げられるのが、既に作りたいものが以下のいずれかに決まっている人です。

  • Webサービス
  • スマホアプリ
  • ゲーム
  • 人工知能

1章でJavaは何でもできる、といいましたが、万能な道具は往々にして一点特化には勝ちにくいもの。上で紹介したものにはそれぞれ定番と言える言語が既に存在しています。

Webサービスの場合

Javaもできるにはできますが、Rubyを筆頭とした軽量言語はフレームワークが充実しており非常に作るのが簡単です。

また、Web業界の話でも出てきますが、Javaが得意とするWebサービスは個人で気軽に開発するよりも、組織としてしっかりと運用されることを前提にしたものです。そのため、気軽にWebサービスを展開してみる、という使い方にはあまり向きません。

スマホアプリの場合

AndroidアプリはJavaで開発するのが基本ですが、iPhoneアプリはSwiftを使う必要があり、両方の機種をカバーする場合2つの言語を取得しなければなりません。

ですが、最近はハイブリッドアプリといって、1つの言語で開発するだけで、Android、iPhoneどちらでも動かせるアプリを作れる仕組みが登場しています。Apache CordovaやXamarinというシステムを使う必要があり、それぞれ言語としてJavaScript、C#を使える必要があります。

複数種類の端末にリリースしたいなら、Java以外の選択肢もある、ということですね。

ゲームに関して

最近はプログラミング言語というよりもゲームエンジン、特にUnityを使えるようになることが重要です。Unityでの開発には複数のプログラミング言語が選べますが、C#が人気ですね。

また、ゲームを仕組みから理解したい場合、C/C++を習得する、という方法もあります。こちらもゲームプログラミングにおいては王道の路線ですが、C++の難易度が高いため、いきなりやると挫折する可能性も高い諸刃の剣です。

ただ、様々な理由から、あえてJavaで作られたゲームも存在します。MINECRAFTが特に有名ですね。

人工知能に関して

2019年4月現在はPythonの独壇場といっていいでしょう。Pythonには人工知能を作成したり分析するためのツールが非常に充実しており、これらのツールなしでは人工知能を作成できないレベルでどっぷり浸かっています。

最近は計算速度の向上を目的にC/C++も使える部分が増えてきていますし、Javaもディープラーニング用のライブラリがあったりと、できないことは無いですが、まず人工知能を試すならPythonから入るのが一般的ですね。

Web業界に就職したい

Web業界と一口でいってもかなりの幅がありますが、ここで指しているのはスタートアップやベンチャー、Webサービスを売りに新しくできた会社です。

こういった新しい会社のシステムは常に流動的で、ガンガン更新がかかるように、また、更新がかかっても大丈夫なように仕組みを作っています。

この仕組を支えるのが上でも出てきたRubyなどのフレームワーク、具体的にはRuby on Railsなどです。

JavaにもSpringというWebフレームワークがあるにはありますが、こちらは金融機関の基幹システムやオンライトレードシステムといった安定性・確実性が重視される場面で利用されています。

イメージとしては、大規模・重厚・安定性があるのがSpringフレームワークで、小回りが効いて状況に応じた変化に即応できるのがRuby on Railsなどのフレームワークと言えるでしょうか。

スタートアップ的なWeb企業でガンガンエンジニアとして働きたい、という野望をお持ちの方は、Ruby on RailsなどのWebフレームワークを習得するのが第一歩としてはオススメです。

おまじない的なよくわからない部分は少ないほうがいい

ここからは言語の仕様とか特性的な話になります。おまじないというのはプログラミング教育で出てくる方言のようなものです。たとえとして以下をご覧ください。

実行結果

これはJavaで書いた、Hello world!という文字列を出力するプログラムなのですが、結構分量がありますよね。

printlnの部分がなんとなく文字を出力するのかな?という当たりはつけられますが、それ以外の部分はほぼ意味不明でしょう。

こういった、プログラムを動かすのには必要なんだけど、初心者にはよくわからない部分のことをおまじないといいます。初心者のうちはおまじないを何も考えずに利用して、それ以外の部分を学習する、というのが一般的な学習スタイルです。

ちなみにpublicから始まる謎の文字列の意味がわかるのは、一般的な入門書の最後の方か、下手したら入門書を読み終わってもいまいちよくわからなかった、というケースもまま見かけます。

このようなおまじないがあることが気持ち悪くてしょうがない、という人も中にはいるでしょう。

そういった人は先程からなんども出てきている軽量言語を検討してみるべきです。

たとえば、Rubyで同じことをやろうとすると、次のようになります。

実行結果

以上です。

これなら、文字列を表示するから、printなんだな!と自信をもって理解できますし、その理解は間違っていません。

そもそも、軽量言語は習得・学習・使用が容易な言語として作られてきた歴史があります。ある意味Javaよりも見た目が簡単になるのは当然といえます。

よくわからないおまじないが耐えきれない方は、Javaはオススメしにくいです。

気軽にトライ&エラーで学習を進めたい

プログラミング学習において気軽にトライ&エラーができるのは結構重要なファクターです。

プログラミングの習得は、自分で書いたソースのエラーを自力で解決することで少しずつ前進していく側面があります。そのため、気軽にトライできる、つまり実行の負担が少ないことは何度も繰り返すことができることに繋がり、ひいてはプログラミング力の向上に寄与するわけです。

ところで、Javaは実行の際にコンパイルという作業が必要です。

コードを書く → コンパイル → 実行 →エラーが出る → コードを修正する → コンパイル →…

という流れになるわけですが、このコンパイル自体にもコンパイルエラーが起こる可能性があるので、ある意味2段階のチェックを通過しなければいけません。

逆に言うと、2段階のチェックがあるからこそ、Javaで書かれたプログラムは安全性が高いとも言えるわけです。ですが初心者にとって、何度もエラーが起こるのは嬉しいことではありません。むしろ心が折れます。

一方軽量言語はインタプリタ型といって、コンパイルせずにいきなり実行し、だめな場合はその時点でエラーを吐いて止まります。

コードを書く → 実行 → エラーが出る → コードを修正 → 実行 → …

軽量言語のエラー表記は比較的わかりやすいこともあり、Javaと比べると心が折れるポイントは少ないと言えるでしょう。

何度も気軽にトライ&エラーをしたい人には軽量言語の方が気楽さは高いと言えます。

Javaを学ぶべきではないのか?

1章2章で様々な点からオススメできる人、できない人を見てきました。

もしかしたら、自分にはJavaが向いていないんじゃないか…と不安に思った方もいるかも知れません。

では、Javaに向いていない人はJavaを学ぶべきでは無いのでしょうか?この点に関して、筆者は断固としてNO!という主張です。

結論:エンジニアならJavaに1度は触れるべき!!

たしかに、まったくのプログラミング初心者にとって、Javaはハードルの高い言語と言わざるを得ません。専門特化した言語に比べるとツールが充実していなかったり、人気の人工知能などにはあまり出番がないのは事実です。

ですが、Javaにはモダンなプログラミング言語の基礎となる様々な要素が詰まっています。オブジェクト指向しかり、コレクションしかり、最近ではラムダ式や関数型プログラミングの要素も入ってきました。

様々な要素が破綻せず、きっちりとした形でまとめて習得できるのはJavaの大きな強みの1つです。現在のJavaの基礎をしっかりと理解していれば、エンジニアとしての重要な基礎はかなり押さえていると言えます。

また、プログラミング入門段階ではイメージが湧きにくいかもしれませんが、プログラミングの学習は1つの言語が終わったらおしまい、というものではありません。

コンパイラ型のプログラミング言語を学習したら次はインタプリタ型、オブジェクト指向を使えるようになったら次は関数型、と同系統のジャンルの異なる思想のプログラミングに触れていくことで、エンジニアとしての実力は確実に高めていくことができます。

人にもよりますが、毎年1言語習得を進めているエンジニアもいるぐらいです。

これらのことから何が言えるかというと、エンジニアとして成長していきたいなら、いずれJavaに触れざるを得ない日が来る、ということです。

あえてネガティブな書き方をしましたが、ある程度地力が固まっている状態でJavaに取り組むと、初心者のときに感じていたほどの難しさは感じないはずです。ここまでくれば、喜んで自分からJavaの学習を進められる段階になっているかもしれません。

Javaを本当の意味で深く理解している、ということはプログラミングというスキルに一本大きな柱が通っている状態と言えます。この状況であれば、枝葉の部分の習得も容易でしょう。

なので、Javaという大樹を自分の中にいつ植えるかは学習者次第、というのが筆者の主張です。

最初から大樹を育てるつもりでJavaに挑戦するのも大いに結構です。逆に、軽量言語といった現実問題を解決できる周辺から固めていき、最終的にJavaに到達する、というルートも全然ありえます。

いずれにしても、いつかはJavaと向き合う日が来るはずです。いまは不向きと感じていても、他の言語を学んでいく中で必要性を感じることもあるはずです。

初心者の方ほど、焦らず自分に必要なものを着実に習得していただきたいところです。

まだ言語選択に迷いがある人へ

さて、ここまで読んでいただいて、Javaを学ぶことが自分に必要かどうか、ぼんやりと見えてきたのではないでしょうか。

逆に、いろいろな言語が出てきてますます悩みが深まった、という人もいるかも知れません。

もし、なにか判断に使える軸がほしいという方は、こちらの記事が参考になるかもしれません。作りたいもの別に言語を紹介している記事になります。

プログラミング言語選びの悩み解決!作りたいものからサクッと決まる
更新日 : 2019年6月6日

また、手前味噌ではありますが、弊社の学習プラン診断サービスを使うというのもひつの方法ではあります。出た結果を元に、学習プランを組み立てて、自分で独習していただくのでも全然構いませんので、興味のある方はお試しください。

今すぐ学習プラン診断をする

まとめ

いかがでしたか?

今回はJavaを学ぶにあたって、オススメできる人、できない人、そして学ぶための心構え的な話を紹介しました。

プログラミング言語の選択は本当に迷うもので、筆者も何度もいろいろな言語を試した時期がありました。

ただ、迷っているだけでは、作りたいものが作れるようになるわけではないこともまた事実です。どこかで腹をくくって飛び出す勇気もまた必要というのがこの話の締めになるでしょうか。

皆様が最高の言語と出会えることを心より祈っています。

お相手はCから始まって、結局Javaに落ち着いたテックライターの平山でした。

未来に繋がるプログラミング学習、できていますか?

エンジニアと一口にいっても、フロントエンド、サーバーサイド、アプリ開発、AI関連など様々な業界や職種があり、業務内容や働き方、年収は変わります。

どんな働き方をしたいのか、どのくらい年収が欲しいのかなど具体的なキャリアパスを考えて、それを達成できる学習カリキュラムを考えていかないと、希望する方向性とは違うエンジニアになってしまったり、遠回りの学習に時間を費やしてしまう可能性があります。

侍エンジニア塾では目的から逆算する形で、まずあなたの目指すキャリアをヒアリングさせて頂いてからそれを達成するためのオリジナルの学習カリキュラムを作成しています。

今学んでいることが理想のエンジニアになるために繋がっているか不安でしたら、下記の無料体験レッスン予約カレンダーよりお気軽にご相談ください。

LINEで送る
Pocket

書いた人

平山 晃

平山 晃

フリーのエンジニア・ライター。
プログラミング、ライティング、マーケティングなど、あらゆる手段を駆使して、
ハッピーなフルリモートワーカーを目指し中。

最近興味がある分野は深層強化学習。
積みゲー、積ん読がどんどん増加しているのがここ数年の悩み。
実は侍エンジニア塾の卒業生だったりします。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説