Computer

Javaがオワコンではなく学ぶ価値がある8つの理由

Javaというプログラミング言語は常に人気ランキングの上位にいるのに、IT業界で働いている人から

「いまさらJavaなんてやめた方がいいよ」

なんて意見を耳にしたかもしれません。

僕は外資系のIT企業に勤務しており、Javaベースの業務用のパッケージソフトのカスタマイズやシステム開発などの仕事に20年近く関わっていますが、僕は今でもJavaを学ぶ価値があると思っています

そこで今回は、プログラマになりたい人がJavaを選ぶべき理由、学ぶ価値がある理由を紹介したいと思います。

Javaはなんでもできる

Javaは30億以上のデバイスで使われているといわれています。パソコン、スマホ、タブレット、サーバー、組み込みデバイスなど、非常に多くの場所で使われています。

身近なところではAndroidのアプリはJavaで書かれています。日本のスマホシェアはiPhoneがかなり高いですが、世界的に見ればiPhoneよりもAndroidのシェアの方が圧倒的に高く、スマホのアプリ開発をするときにAndroidが無視されることはあり得ません。

次によく使われるのはサーバー側のシステムとしての用途です。ショッピングサイトや旅行会社の予約システムだったり、金融系のシステムといった大規模で複雑なシステムはJavaで書かれていることが多いでしょう。

また、BtoBのエリアでは特定業務に特化したパッケージソフトもJavaで書かれたものが多いでしょう。

またあまり目につかない部分でもJavaが活躍していたりします。たとえばHadoopをはじめとするビッグデータのシステム群もJavaで作られており、たとえばショッピングサイトの「〜を買った人はこれも買っています」みたいな推奨エンジンは、見えないところでビッグデータを統計処理して構築しています。フロント周りがPHPやPython、Ruby on Railsで作られていたとしても裏ではJavaを使っているシステムもかなり多いのです。

また数はそこまで多くはないですが、デスクトップアプリケーションもJavaで開発できます。昔はJavaで作ったデスクトップアプリって動作も重たくて見た目もダサいというイメージがあったのですが、今では大幅に改善されて自然な見た目で快適に使えます。例えば、僕が使用しているプログラミングの開発環境(IntelliJ)はJavaで書かれています。

あとは今後も普及が進むIoTデバイスなどでもJavaが使われることも多いようです。

もちろん用途はこれらに限られません。

僕個人の話で言うと、趣味でネット上からデータを自動収集して自分のデータベースに保存するようなツールをJavaで作って自分専用のサーバーで走らせています。収集したデータは定期的にメールで通知したり、ウェブのレポート画面で確認したりできます。こんな手軽な日曜プログラミング的な用途にも応えてくれるのがJavaの魅力でしょう。

万能で実績もある言語だからこそ、そう簡単に廃れてなくなることは考えづらいのです。

学習環境が整っている

Javaは難しい言語というイメージがあり、たしかにとっつくにくい部分はあるかもしれませんが、同時にこれほどまで学習環境が整っている言語はないと思うほどで、これは大きなメリットです。

たとえば無料で学べるチュートリアルやサンプルコードはそれこそ無数にありますし、書籍もたくさん出ています。またオンラインで学習できるトレーニングコースや座学式の講座なども多くあります。

オブジェクト指向である

充実した学習環境に加え、Javaが純粋なオブジェクト指向のプログラミング言語であることもおすすめポイントです。

オブジェクト指向を用いることによって複雑な要件に対応することができ、読みやすくメンテナンスもしやすく高品質なプログラムを書くためには欠かせない考え方です。

オブジェクト指向はすぐには理解しづらい考え方ですが、これを身につけることで、単に「動けばいい」プログラムを書くだけでなく設計などの考え方も身につきますし、他のオブジェクト指向言語への対応も容易になります。「動けばいい」だけのやっつけ仕事しかできないプログラマになってしまうと伸びしろも仕事の幅も大きく狭まってしまいます。

複雑なものなんかやりたくないという考えもありますが、単純な仕事は他の人もできるので報酬も安くなりますし、仕事の奪い合いになりかねません。

しかしJavaとオブジェクト指向の考えを身につけると、そうしたライバルはかなり減るでしょう。

そして複雑であるがゆえに、単にプログラムを書くだけでなく、アーキテクトなど技術のエキスパートとしてのキャリアパスの広がりが大きく、報酬アップも狙えます。

ちなみにデザインパターンとかソフトウェアのテストや設計といった本もJavaを使っているものが多いのも学習にあたってはメリットです。

企業で幅広く使われている

Javaは企業のシステムなどで幅広く使われています。

Javaはお堅い大企業のシステム顧客ばかりでつまらないといいますが、それは仕事が常にあるということなのでむしろいいことですし、Javaを使っているのはお堅い企業ばかりでもありません。

Java開発者を募集している企業やフリーランスの案件は多いので、ひとたびJavaを身につければさまざまな企業で働く機会を得られます。さらに英語力もつければ外資系企業に転職することもできます。シリコンバレーなど、外国のベンチャー企業で最先端の開発に関わることだって夢ではありません。

たとえば動画配信サービスで有名なNetflixはJavaベースでシステムを開発しており、多数の先進的なライブラリをオープンソースとしてコミュニティに提供しています。他にもGoogle、UberやGrabといった、社会のあり方そのものを変えるような先進的な企業でさえJavaの開発者を数多く募集しています。

活発なコミュニティ

Javaのすばらしいところはそのコミュニティの強さにあります。

日本で活発やQiitaや、英語圏で活発なStackOverflowをはじめとして、オンラインのフォーラムやコミュニティが活発なことも見逃せません。自分がつまづいた問題はすでに他の誰かもつまづいており、その解決策などのノウハウはコミュニティで共有されています。

またオープンソースのコミュニティも非常に活発です。

JavaはコアAPI(基本機能)だけでもなんでもできる言語なのですが、Javaコミュニティには膨大な数のオープンソースプロジェクトがあり、これらを組み合わせてより効率的に高品質なコードを書けるようになります。

代表的なプロジェクトとしてApache CommonsやSpring Frameworkがありますが、これらのライブラリはとにかく高品質で信頼性が高いのに無償で商用利用できるという、あり得ないことが起こっている世界です。

僕はSpring Frameworkを日々使っていますが、一体どんな天才たちが書いたんだろうと驚き、感謝しながら使わせてもらっています。

そしてオープンソースの魅力はタダで使うだけではありません。

興味と実力、そして情熱があれば自分自身のアイディアを形にしたり、好きなオープンソース開発に携わることもできます。オープンソースは無償が基本ですが、だからといって開発者も無償でやっているかといえば必ずしもそうではありません。多くの場合、企業がスポンサーについて資金援助をしていたり(企業が自社のエンジニアにやらせるケースも)、またはソフトウェア本体は無償で提供しつつ、企業向けの有償のサービス(コンサルティング、トレーニング、サポートなど)で利益を上げている会社もあります。

Javaは第二のCOBOL

COBOLは金融機関の基幹システムに使われている古い言語です。

今でも銀行などの古い基幹システムで使われているにも関わらずCOBOLを学ぶ人も減っているため、保守や改修に対応できる人材が不足し、今では古参のエンジニアがこれらの業務を行なっているという話があります。

そうした仕事をする人をコボラーと呼んで揶揄するような風潮がありますが、よく考えたら変化が激しいITの世界においてここまで「長く食えるスキル」があるでしょうか。

今後、「Javaが第二のCOBOL」になるという予測があります。これを悪いことだと考える人が多いのですが、僕はそうは思いません。

「第二のCOBOL」になれるのはそれだけ信頼性と実績のある言語という意味であり、僕は普通にメリットだと思っています。

そして将来、COBOLで起こったのと同じことがJavaでも起こると予想されます。つまり、20年30年後になって、Javaで書かれたシステムの保守や改修といった仕事がたくさん出てくるのです。にもかかわらずそれに対応できる人材が不足してエンジニア側に有利な状況が生まれるのです

そのときあなたももう古参エンジニアになっていて、

「バリバリの最前線で情熱も頭の柔らかさも若い人にはかなわないけど、Javaのメンテナンスの仕事ならまだまだあるし体力的にもできる」

なんて思うかもしれません。

人生100年時代で老後の不安なんていわれる中、将来の不安を軽くする選択肢は多いに越したことはないですよね。

JVM言語への移行が容易

冒頭でAndroidのアプリ開発はJavaと書きましたが、近年ではKotlinという言語への移行がトレンドになっています。

KotlinはJavaと互換性のある言語のためAndroidで実行できます。このような言語とJVM言語と呼びます。

Kotlin以外にもGroovy、ScalaなどがJVM言語として有名ですが、それ以外にもJavaScriptやPythonなどをJVM上で実行するインタープリタ(エンジン)も存在します。

Javaをマスターしておけば、これらのJVM言語への対応は非常に容易になりますし、いざとなったときにはその裏にあるJavaコードも読めるので、Kotlinしかできないようなエンジニアよりも有利になります。

今後はリモートワークも増える

近年はフリーランスやリモートワーク、ノマドといった働き方がますます増えていて、特にWeb系の開発などではノマド的な働き方とライフスタイルを実現できている人もいると聞きます。

一方Javaにおいては、規模の大きい案件が多いためチーム全体で集まるというイメージもあり、一人だけ南国のコンドミニアムのプールサイドでモヒートを飲みながら作業なんてわけにはいかないかもしれません。しかし僕自身が10年前からリモートワーク中心のプロジェクトなので、Javaだからリモートワークができないというのは事実ではありません。

2020年は新型コロナウィルスの影響で皮肉にもリモートワークへの本格的な移行のきっかけとなると思います。今までは「絶対にできない」と思い込んでいたリモートワークも、そのためのシステムとプロセスが整ってくれば、「いざやってみたら意外とできるじゃん」という声が増えてくると思います。そればかりか、リモートワークのメリットを認める会社も多く出てくると思います。

そうなると、今までは比較的「お堅い」といわれた企業でもリモートワークの文化が広まり、今は東京のオフィスにみんな集まってやっていた仕事も好きな場所からできる日が来て、現時点ではリモートワークは数ないJavaの仕事も今後は案件が増えるかもしれません。

まとめ

以上、2020年になってもまだJavaを学ぶべきだと思う理由を紹介しました。

  • スマホのアプリやサーバー側のシステムなどの幅広い用途。
  • 企業で使われているため仕事も多い。
  • オブジェクト指向が身に付く。
  • 古いシステムだけでなくグローバルなネット企業でも多く使われている。
  • 外資系、アーキテクトなどキャリアパスと収入アップのチャンスも多い。
  • 将来はCOBOLのように食い扶持になる可能性も。
  • オープンソース開発者など、ITの発展に寄与するチャンスもある。

などなど、人によっては魅力と感じる部分も多いかもしれません。僕はオープンソースに寄与するほどの情熱も実力もありませんでしたが、それ以外の部分ではJavaのメリットを大きく感じています。

もしこれらの点を共感できると感じるのであれば、Javaはオワコンだなんていう他人の意見は気にせず、一度挑戦してみてはいかがでしょうか。

【 5日でできる】はじめての Java プログラミング入門


-Computer