1996年のJava Development Kit(JDK) 1.0の公開当初は、Javaはクライアントアプリケーション開発言語のような位置づけでした。しかし、その後のインターネットの普及とスマートフォンに代表されるコンピュータの多様化により、Java言語が使用されるセグメントは現在多岐にわたっています。今回は、現役Javaプログラマに、現在のJavaプログラマの仕事の内容とやりがいについて教えていただきました。
Javaプログラマの案件(仕事)内容
ご存知のように、Javaに限らず、開発標準は従来のウォーターフォールモデルに加えてアジャイルモデルが広まっている状況です。
開発標準がどのタイプであるかにかかわらず、Javaプログラマ案件は、局所的には、プログラミング(コードディング)及びテストです。
仕様書及びテスト項目票に従い、コーディングとテストを行います。開発する成果物の規模によっては、テストは専門のテスタが実施する場合もありますが、多くの案件ではプログラマはテスタを兼ねます。
また、同じく設計者がプログラマを兼ねることもあります。この状況は、Javaに限らず、他のC#やPHPなどでも同様です。よって、Javaプログラマだから開発標準において何か特別であるということはありません。
Javaプログラマ案件(仕事)での立ち位置
Javaプログラマは、案件内の立ち位置から3つの分類に分けられます。
クライアントサイドは、Javaアプレットまたはクライアントマシン上で動作するJavaアプリケーションです。
Javaアプレットは、Java黎明期からある技術で、ブラウザ上で動作します。
Javaプラグインを、ブラウザにインストールすることで、ビジュアルなJavaアプリケーションをエンドユーザは利用することができます。
しかし、Java技術を管理するOracleは、Java Development Kit 9 (JDK 9)から、Javaブラウザプラグインを廃止すると発表しました。
よって、今後Javaプログラマを目指す方は、アプレットを考慮する必要はありません。
Javaアプリケーションは、単純には、自分のパソコン上で”Hello World”を標準出力するだけのものです。
しかし、多くのオープンソース及び有償のJavaアプリケーションが存在します。
一例としては、Javaプログラマであれば、必須開発環境のEclipseやApache Open Officeです。
自分の会社や案件元が、クライアントサイドのアプリケーションを求めることは今後も十分考えられます。
例えば、Webのサービスの状況を監視したり、運用したりする際に、自身のPC上でビジュアルに行いたいと思うことが考えられます。
このような時、Javaプログラマは、クライアントサイド用のJavaアプリケーションを開発することになります。
そのためには、Java言語の知識はもとより、GUIツールキットのSwingの知識も必要となります。
また、多くの案件では、サーバサイドと連携することになると考えられます。ネットワークの知識も必要です。
Javaアプリケーションを実行するエンジンとなるJava仮想マシン(JVM)は、WindowsはもとよりLinuxなどでも動作します。
しかし、実際にはWindowsが使用されることがほとんどです。
現在サーバサイドにおいて、多くのJavaプログラムが動作しています。
これには、先にも述べたように、JVMがマルチプラットフォームであることが有利に働いています。
サーバとして、WindowsでもUNIX系でも使用できることは、それだけでシステムを購入していただくお客様を増やし、売り側及びサービス提供する側としてはOSの選択肢を増やします。
サーバサイドアプリケーションは、他の言語と同様にWebアプリケーションとWebサービスアプリケーションに分かれます。
ここでは明確にするため、Webアプリケーションは、ブラウザからのアクセスに対して、HTMLで画面情報を返すものとします。
Webサービスアプリケーションは、SOAPやRESTful、JSONなどのデータをブラウザまたはクライアントアプリケーションに返します。
サーバサイドのアプリケーションは、Javaサーブレットを基本とします。
現在では、Javaサーブレットから派生したJSP( Java Server Pages)や、各種フレームワークが存在します。
しかしながら、小規模な案件の場合、現在でもJavaサーブレットだけで要件を満たすことが多くあります。
規模が大きくなると、Javaサーブレットでコーディングとする負担が増加します。
その場合、Struts、Java EE、Spring Framework、Play Frameworkを利用します。これらのフレームワークを使用することにより、複雑な機能の実現を、簡素化することができます。Strutsは、隆盛しましたが、古いフレームワークのため、Struts以外が最近は利用されています。
会社や案件元は、クライアントアプリケーションより、サーバサイドのJavaアプリケーションを求めるでしょう。業務アプリケーションのWeb化を進めることはすでに常識となっており、そのためにサーバサイドのアプリケーションは必要です。これらのことから、サーバサイドにおいて、現在のJavaプログラマは、Java言語自体は、もとより各種フレームワークの知識も必要となります。
サーバサイドアプリケーションで、データベースと連携しないものはまず無いと考えてよいでしょう。
データベース技術者の方と共同で開発することは多々あります。従来からのJDBCによるデータベースアクセスだけでなく、Hibernate O/Rマッピングフレームワークなどを利用することもありますので、理解しておくとよいでしょう。
また、Hibernateも一例ですが、オープンソースの理解も重要です。
Apache Foundationなどが提供するプログラムを、ライセンスに適合した上で、開発要件にあった成果物を開発する際に流用することは、大きな工数の短縮になります。
ただし、オープンソースにもバグを含まれていますので、サーバサイドのアプリケーションをデバッグする技術とオープンソースを解析する能力が、Javaプログラマには求められます。
スマートフォンアプリは、実際にはAndroidスマートフォン、タブレットで動作するアプリのことです。
Androidのアプリケーションは、Java言語で開発します。Googleが提供する開発環境、例えばAndroid Studioなどを利用してAndroidアプリを開発します。Java言語を使用する点では、他のクライアントサイド、サーバサイドアプリケーションと同じですが、スマホの場合、スマホの技術の理解が求められます。
例えば、GUIを開発する場合、スマホのGUIとSwingのGUIは全く異なります。
つまり、スマートフォンアプリのJavaプログラマは、スマホの技術を理解し、Java言語を駆使して、要件にあったアプリを開発します。
Javaプログラマ案件(仕事)のやりがい
Java案件は、多くのプログラミング言語の中では、中年の部類です。
COBOLやFORTRANなどコンピュータ黎明期の言語より新しく、最近のGoやSwiftよりは古いものです。
プログラミング言語は、歴史的に見て、当たり外れがあります。その中で、Java言語は現在も第一線で活躍しているあたりくじの一つです。
特にAndroidで使用されていることにより、Javaプログラマは最先端の技術に触れることができます。サーバサイドのフレームワークも進化しています。
もし、困ったことがあってもJavaであれば多くの先達がいますので、助けてもらえますし、多くの情報をWebで得ることができます。
PHPなどのインタプリタ型言語のプログラム経験があれば、ぜひコンパイル型(正確に言えば中間言語へのコンパイルですが)のJavaにも挑戦してみて欲しいです。オブジェクト志向言語ですので、それほど違和感なく、習得できるはずです。
Java案件(仕事)の具体的な仕事内容や相場を知るなら、Java案件(仕事)が豊富なアサインナビを覗いてみて下さい。
直近の募集状況が分かるので、いまの相場感や仕事内容をつかむことができますよ。
キャリアの幅を広げるなら、他のプログラミングを学ぶのも
キャリアの幅を広げることを考えたら、興味のある言語のプログラミングを学んでみてはいかがでしょうか。
せっかく学ぶのであれば、仕事に繋がるスキルを身につけられる方法を選ぶのがベターです。
独学で学ぶ方法もありますが、全く経験がない場合はつまづいてしまう人も多いものです。
仕事につなげたいと考えている場合には、仕事として使えるレベルのスキルに近づけなければなりません。
現役エンジニアが講師を務めるマンツーマンレッスンなら、わからないところは質問できるだけでなく、学習内容をチェックしてもらえるため効率的にプログラミングを学ぶことができます。
仕事をしながら学ぶとなると、時間の確保が難しいですが、オンライン講座ならば通学の必要がなく、仕事をしながらでも隙間時間で進めやすい内容になっています。
そのカリキュラムの内容と教師のスキルで定評のある「コードキャンプ」が、ITビジネスマッチングを運営する「アサインナビ」と共同で開発したプログラムなら、無駄なくプログラミングを学べると評判です。
この共同プログラムは、98,000円という低価格でマンツーマンレッスンが受けられます。
▼Java案件を探す▼