Javaは初心者には難しいと聞いたけど、実際どうなんだろう。
逆に初心者こそJavaをやるべきだって言う人もいるし…
こんにちは。使える言語は公称8つ、今年はKotlinを習得予定のエンジニア・テックライターの平山です。
プログラミングを学び始める際の、最初の重大な意思決定として、どの言語を学ぼうか、というのがあります。
どの言語も魅力的で、でも、いろいろと調べるうちに悪い評判や初心者向けではないという話を見つけ、やる気ががっくり落ちることもよくある話です。
どの言語を選ぶのか、というのは、ある意味選ぶ人の主義主張・思想信条が絡んでくる部分なので絶対的なオススメというのは言いにくい部分があるも事実です。
ですが、今回は主にJavaをターゲットとして、オススメできる人できない人を紹介してみようと思います。
あなたは果たしてJavaに向いているのかどうか!?それは読んでのお楽しみ、ということで、早速行ってみましょう!
- 幅広い開発に使える言語を学ぶならJavaはおすすめ
- Javaは業務システムなどの大規模開発に適した言語
- Webサービスを開発するなら別言語を検討すべき
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フレームワークを習得するのが第一歩としてはオススメです。
おまじない的なよくわからない部分は少ないほうがいい
ここからは言語の仕様とか特性的な話になります。おまじないというのはプログラミング教育で出てくる方言のようなものです。たとえとして以下をご覧ください。
public class helloworld { public static void main(String[] args){ System.out.println("Hello world!"); } }
実行結果
Hello world!
これはJavaで書いた、Hello world!という文字列を出力するプログラムなのですが、結構分量がありますよね。
printlnの部分がなんとなく文字を出力するのかな?という当たりはつけられますが、それ以外の部分はほぼ意味不明でしょう。
こういった、プログラムを動かすのには必要なんだけど、初心者にはよくわからない部分のことをおまじないといいます。初心者のうちはおまじないを何も考えずに利用して、それ以外の部分を学習する、というのが一般的な学習スタイルです。
ちなみにpublicから始まる謎の文字列の意味がわかるのは、一般的な入門書の最後の方か、下手したら入門書を読み終わってもいまいちよくわからなかった、というケースもまま見かけます。
このようなおまじないがあることが気持ち悪くてしょうがない、という人も中にはいるでしょう。
そういった人は先程からなんども出てきている軽量言語を検討してみるべきです。
たとえば、Rubyで同じことをやろうとすると、次のようになります。
print "Hello world!"
実行結果
Hello world!
以上です。
これなら、文字列を表示するから、printなんだな!と自信をもって理解できますし、その理解は間違っていません。
そもそも、軽量言語は習得・学習・使用が容易な言語として作られてきた歴史があります。ある意味Javaよりも見た目が簡単になるのは当然といえます。
よくわからないおまじないが耐えきれない方は、Javaはオススメしにくいです。
気軽にトライ&エラーで学習を進めたい
プログラミング学習において気軽にトライ&エラーができるのは結構重要なファクターです。
プログラミングの習得は、自分で書いたソースのエラーを自力で解決することで少しずつ前進していく側面があります。そのため、気軽にトライできる、つまり実行の負担が少ないことは何度も繰り返すことができることに繋がり、ひいてはプログラミング力の向上に寄与するわけです。
ところで、Javaは実行の際にコンパイルという作業が必要です。
という流れになるわけですが、このコンパイル自体にもコンパイルエラーが起こる可能性があるので、ある意味2段階のチェックを通過しなければいけません。
逆に言うと、2段階のチェックがあるからこそ、Javaで書かれたプログラムは安全性が高いとも言えるわけです。ですが初心者にとって、何度もエラーが起こるのは嬉しいことではありません。むしろ心が折れます。
一方軽量言語はインタプリタ型といって、コンパイルせずにいきなり実行し、だめな場合はその時点でエラーを吐いて止まります。
軽量言語のエラー表記は比較的わかりやすいこともあり、Javaと比べると心が折れるポイントは少ないと言えるでしょう。
何度も気軽にトライ&エラーをしたい人には軽量言語の方が気楽さは高いと言えます。
まとめ
いかがでしたか?
今回はJavaを学ぶにあたって、オススメできる人、できない人、そして学ぶための心構え的な話を紹介しました。
プログラミング言語の選択は本当に迷うもので、筆者も何度もいろいろな言語を試した時期がありました。
ただ、迷っているだけでは、作りたいものが作れるようになるわけではないこともまた事実です。どこかで腹をくくって飛び出す勇気もまた必要というのがこの話の締めになるでしょうか。
皆様が最高の言語と出会えることを心より祈っています。
お相手はCから始まって、結局Javaに落ち着いたテックライターの平山でした。