Java学習の方向性の決め方

この記事を書いた人
鈴木朝
システムエンジニア

■ 得意なプログラミング言語
・フロントエンド(HTML/CSS/Javascript)
・バックエンド(C/C++/Java/PHP/Python)
・その他(アセンブラとか・・・?)

プロダクトエンジニアとテクニカルサポートエンジニアのキャリアは合計4年です。
インフラ周りもそこそこ触っていました。

システムエンジニアとしてのキャリアは15年以上です。

Javaって何からやれば良いかわかんなーい。

仕事で使いたいから、趣味として、ゲーム作って名を馳せたい、などなど色々な目的があると思う。

だが、結局は何から手を付ければ良いかわからないのが現実だとも思う。

そんな迷える子羊に一筋の光を照らし、進むべき方向を示してあげましょう!

というのがこの記事の趣旨。

Javaの方向性一覧

第一線で活躍できる方向性を下記に整理する。

  • JSP/Serlvet
  • Androidアプリ
  • アプレット
  • Swing
  • 組み込みJava
  • その他

Javaの方向毎の説明

JSP/Servlet

システム開発の大型プロジェクトはだいたいこの形式のソフトウェア。

主に業務システムに使用される仕組み。

物流システムだったり、会計システムだったり、人事システムだったりと、企業のサービスを動かすためのもの。

長い工期が約束されているシステムで、数か月~数年ペース。

大きなバージョンアップも計画されることが多く、一度プロジェクトに参画すればそうやすやすとは解放されない。

つまり、仕事がなくなりにくいという分野。

単価も安定しているので、仕事を安定させたいと思っている人はこれを選ぶのが良い。

必要なスキルは下記のものだが、中でもWeb全般の知識量/発想力が試される。

  • Web全般の知識/発想力
  • Javaの知識/設計力
  • Javascriptの知識/設計力
  • XMLの知識
  • データベースの知識/設計力
  • Eclipseでの環境構築力
  • 現場固有のフレームワークを早期に吸収する力

Androidアプリ

Androidスマホやタブレットで動作するアプリを作る分野。

Androidの独自フレームワークを利用して設計/実装する能力が必要不可欠。

端末付属のボタンやセンサーも使いこなせないといけない。

ただ、ハードウェア操作のほとんどが比較的簡単なソースコードで提供されているため、開発難易度は高くはない。

一般人が手に取って動かすものを作りたい趣向の人に向いている。

とはいえ、そういう人は案外苦労するかもしれない。

なぜなら、工期が短かったりするからだ。

ゆっくり開発できる現場は少ないと聞く。

必要なスキルは下記の通り。

  • Android Studioの知識/テクニック
  • Javaの基本文法
  • オブジェクト指向のガチな知識
  • デザインパターンの知識
  • インターネット上でサンプルプログラムを探し当てる嗅覚

アプレット

Webブラウザ上でクライアントプログラムを動かす分野。

簡単なツールを作って動かすような感じで設計/実装していく。

これを専門にやってるプロジェクトを筆者はあまり知らない。

学習するに値しないレベル。

Oracle社もアプレット動かさなくしていく方針みたいだし。

必要なスキルは下記の通り。

  • Javaブラウザプラグインの知識/設計力
  • まだサポートしているブラウザの種類を知っておく

Swing

スウィングと読む。

単独で動作するJavaのGUIアプリ。

単独で動作するとはいえ、これで作ったものを製品として出しているメーカーはあまり多くない印象。

どちらかというと、社内ツールアプリ的な位置づけとなる。

社内SEとかでこういうのを使ってツールを作るのは良いかもしれない。

ただ・・・

これで作るくらいなら、他プログラミング言語でWindowsアプリやMacアプリを作った方が断然効率が良い。

もっというと、HTML5/Javascriptで作れば汎用性も出て良い。

必要なスキルは下記の通り。

  • Java Swingの知識/設計力

組み込みJava

IoT市場が活況のため、求人が増えてきている分野。

性能や電池管理など、高度な設計能力が必要となる。

また、アプリクラッシュ時の対処が一般的なアプリとは異なり、どんなに変な状態になっても動き続けなければならない。(再起動は基本的に許されない)

まだまだ成長していくマーケットであるため、オススメではある。

ただし、組み込みに関する知識が必要なので、難易度は高い。

必要なスキルは下記の通り。

  • Androidアプリと同じ知識
  • 組み込みソフトウェア開発のノウハウ
  • 安く早く作る匠の技

その他

IoTに絡んでくるけれども、AIもJavaで作れる。

作れるといっても、AIとJavaの相性はあまり良くない。

どうせならライブラリが豊富な Python に任せてしまった方が良い。

ただ、楽しさはあると思う。

もしかしたら、Python AI よりもずっと良いものを作れる可能性もある。

さいごに・・・

ここまで色々な分野について説明してきたけれども、どれかピンとくるものはあっただろうか?

リモートワークが望まれる時代なのでプログラミングに着手してみたいと思う人もいるだろう。

というか、そういう人が多いだろう。

そういう人にとっては Java はあまりオススメできない。

ほとんどの仕事が機密保持の関係でリモートワークできないからだ。

筆者の周囲でも Java 関連のプロジェクトメンバーはずっと出社している。

単価は高いので、出社してでもお金稼ぎたい人に対してはオススメできるプログラミング言語ではある。

そういうところを学習開始基準としてみるのも良いかと思う。

ここで語るべきではないが、リモートワークであえてオススメするなら、HTML5/Javascript で構築するWebシステムだろうか。

プロジェクトにもよるだろうけれども、少なくとも自社開発なら問題なくリモートワークできそうである。

現に、筆者はそれでリモートワークしている。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です