【超メジャー言語】Javaプログラミングの仕事内容とは?
Javaプログラミングってどういう仕事内容なの?
プログラマーを目指そうと思ったことがある人は、一度はJavaという言葉を目にしたことがあるでしょう。
今回はプログラマーの中でも特にメジャーなJavaプログラミングの仕事内容について、分かりやすく解説いたします。
Javaプログラミングの開発できるものは多い!
私達の身近にあるシステムもJavaで開発されているものは多くあります。では、具体的にJavaでプログラミングされたシステムはどのようなものがあるでしょうか?
ブラウザで操作する商品管理システムや経費決済のワークフローシステム
コンビニで商品を発注して在庫を管理するシステムや、社内の経費決済を承認するワークフローシステムはほとんどJavaで開発されています。ブラウザで操作するシステムが該当することが多いです。ブラウザで操作する開発規模の大きなシステムには、他の言語よりもJavaを使うことが多いです。
クライアント側でアプリ画面が起動するアプレット
JavaをPC(クライアント)にインストールして、そのPC で動作するアプリをアプレットと言います。IODATAで外出先でも自宅のLANディスクのファイルにアクセスできるアプリがありますが、これはJavaで開発されています。Javaの特徴としてプラットフォームに依存せず、WindowsだけでなくMacでも動かすことができます。
Javaはクロスプラットフォームで動作する
先ほど述べたようにJavaは、Javaをインストールさえすればどのプラットフォームでも開発したアプリが動作します。Javaのプログラムは「Java仮想マシン」上で動作します。WindowsやMacの上にJava仮想マシンを乗せ、Java仮想マシン上でプログラムを動かすことでクロスプラットフォームを実現しています。
Androidアプリ
Android用アプリもJavaでプログラミングされています。以前はIDE(統合開発環境)にAndroidエミュレーターを入れて動作確認をしながら開発していました。
しかし、現在は「Android Studio」というGoogle公式のAndroid開発ツールで開発します。プログラミングにはJavaを使うので、「Java+Android」の知識が必要になります。
以上がJavaを使ったシステムの紹介になります。
Javaでのシステム開発は生産性が高く、障害発生時に原因究明のための仕組みも充実しています。では、具体的にJavaプラグラマーの仕事内容はどのようなものがあるか紹介していきましょう。
Javaプログラミングの具体的な仕事内容は?
JavaでプログラミングするだけがJavaプログラマーの仕事ではありません。Javaプログラマーの仕事については以下のとおりです。
仕様書に沿ってコードを書く
システムエンジニア(以下SE)が書いた仕様書に沿ってプログラミングをします。例えば「DBから会員IDが一致する会員を探して更新処理をする」といった内容が仕様書に書かれているとします。
仕様書の書き方もSEによってまちまちです。DBで検索するために必要な情報が事細かく書かれていることもあれば、「更新対象の会員を探す→見つかった場合会員情報を更新」くらいしか書かれていないこともあります。
仕様書で分からないところや矛盾点があったら確認する
作りたい仕様も分からないのにプログラミングをするのは不可能です。そのため、書かれている内容(特に用語や略語)が分からなかった場合はSEに確認しましょう。
また、仕様変更があった場合に書かれている内容に矛盾点が生じることがあります。
一人で判断せず仕様書を書いた人に判断を仰ぐこと
操作画面に追加された項目について、追加された項目へのチェック処理が書かれていないということは現場ではありがちです。追加することは間違いないと思いますが、この内容については必ず仕様書を書いた人やSEに確認してください。他の部分でも同じような部分があるかチームで共有ができ、開発効率を上げることに貢献ができます。
単体テストおよび結合テスト
コーディングしたものが仕様通りに動作するかテストをします。
一つの機能について行う「単体テスト」
先ほど例を挙げた会員情報の更新処理をする場合、以下の内容を行います
・更新対象の会員を会員IDから検索する
・会員IDが見つかった場合は更新処理をする
・更新するために入力された会員情報のパラメータが正しいかチェックする
・入力情報が正しいなら更新処理をする
上記では正常系のざっくりとした内容を挙げました。(パラメータチェックなど細かく挙げるとキリがありません…。)これらのそれぞれの機能について、テストすることを単体テストといいます。
ほとんどの場合は機能ごとにプログラムを分けて記述するので、1ファイルや1メソッドごとになるでしょう。
単体テストをクリアした内容を繋げて確認する「結合テスト」
単体テストをクリアしたら、今度は結合テストを行います。結合テストは「会員情報を更新して更新完了画面が表示する」といった1つの機能について行うことが多いです。
プログラマーが「それぞれ作ったプログラムは連携して動くよね?」と確認するためのテストだと考えるとイメージしやすいかなと思います。
システムテストや運用テストをプログラマーは行わない
ほとんどの場合、テスト工程でプログラマーは単体および結合テストまで担当します。システムテストはシステム全体の動作を確認するテストです。SEの方や専用のテスターが担当します。
運用テストはシステムテストを終わり、クライアント側に運用してもらうためのテストフェーズです。SEに加えてシステムを実際に使う部門(人事システムだったら、クライアント側の情報システム部と人事部)が担当します。
Androidアプリのテストについては、参加する可能性も
Androidに限りませんが、スマホアプリは開発サイクルが短いものが多いです。そのため、プログラマーもシステムテストや運用テストに参加することがあります。良いものを早く作るためには必要なフェーズなので、担当をお願いされた場合は責任を持ちましょう。
他言語で書かれたコードをJavaに移行
情報システムのリプレース(システムの入れ替え)をするときに、他の言語で書かれたシステムをJavaに移行するプロジェクトもあります。対象となる言語はC言語やCOBOLといった古い言語が多く、それらをJavaで作り直すことになります。
移行するシステムを忠実にJavaで再現する作業
言葉にすると簡単ですが、他の言語で作られたシステムをJavaで書き換えるのは容易ではありません。仕様書をあったとしても、元となる言語が読める必要があります。始めにJavaから勉強してC言語やCOBOLを見ると「メモリ確保やポインタがさっぱり分からない!」と思うでしょう。
特に「ポインタ」の概念は難しいです。少なくともシンプルに一言で語れる仕様ではありません。ポインタはJavaを使っていると考える必要のない部分を求められます。理解できればプログラマーとして考え方に幅ができますので、機会があったら覚えてみましょう。
以上がJavaプログラマーの仕事内容になります。実際、プログラミングをしている時間よりも仕様書を確認したり、テストをしたりする時間のほうが多いと思います。
Javaプログラミングするためのソフトは何があるの?
Javaでプログラミングするために必要なソフトは何があるか紹介していきましょう。Javaに限らずプログラミングを効率的に行うために「IDE(*)」があります。
IDE…Integrated Development Environment:統合開発環境。プログラミングを効率よく行うためにエディターやコンパイラー、デバッガーを含んでいることが多い。
IDEを使うことでプログラミングをする上で必要な作業をIDE上でできるようになります。IDEには以下のものがあります。
Eclipse
Javaで開発するのにほとんどの企業で利用しているでしょう。IDEで何を使ったらいいか迷ったらこの「Eclipse」を使って問題ありません。しかし、デフォルトが日本語環境ではないので、後述するEclipse派生のPleiadesを使うのが良いでしょう。
Pleiades
上記の「Eclipse」を日本語化して、JDK(Java Development Kit)も同封しているため、ダウンロードしたらクリックするだけで起動ができるお手軽さが魅力です。Javaで開発するときに「環境変数」の設定が必要なのですが、そういった手間も省くことができます。
Pleiades公式サイト
Java以外にもPHPやRuby、Pythonとメジャーな言語の開発にも使えます。IDEの機能を「プラグイン」で拡張することができ、操作画面のカスタマイズも可能ですほとんどの企業で使われているEclipseと互換性があるので、Pleiadesをベースに開発環境を構築している企業も多いです。
Javaプログラミングをする上で間違いなく使うことになるので、Eclipseの使い方もしっかり覚えておきましょう。
IntelliJ IDEA
最近、海外で人気のIDEです。Android用アプリを開発するための「Android Studio」のベースとなったIDEです。導入にはJDKのインストールや環境変数など、初心者にはちょっと敷居が高いからしれませんね。
Eclipseと比較すると
・コード補完(予測変換のような機能)
・テキスト編集(検索および置換)
・リファクタリング機能(コードをキレイにして読みやすくする)
といった部分が強いです。
日本ではJava開発においてEclipseのシェアが圧倒的なので、名前すら聞いたことない人もいると思います。難点は無償の「Community Edition」の場合、データベースやJava以外の言語に非対応なことでしょう。本格的に開発で使用するなら有償の「Ultimate Edition」を導入する必要があります。
動作的にはIntelliJ IDEAのほうがEclipseより早く、テキパキとプログラミングをする人や、海外での開発も視野にいれている人にはオススメのIDEになります。
Android Studio
Androidアプリ開発用のIDEです。こちらも導入にはJDKや環境変数の設定など初心者には敷居が高い部分がありますが、Androidアプリを開発するには必須のIDEです。先ほど紹介した「IntelliJ IDEA」をベースに作成されており、Android向けに特化したIDEと考えていいです。
Android Studioには「エミュレーター」が内蔵されており、Androidが手元になくてもアプリを動かす環境が用意されています。最終的なテストは実機でのテストが不可欠ですが、動作確認をPC上でできるのはとても重要です。
以上がJavaでプログラミングするためのソフトになります。まずはIDEの中でも日本語対応で即起動できる「Pleiades」とAndroidアプリ開発用に「Android Studio」はPCに入れておくことをオススメします。どちらも現場で使用されることも多く、使い方を覚えることは間違いなくプラスになります。
まとめ
今回はJavaプログラミングの仕事内容について、具体的な仕事内容と実際にJavaでプログラミングするために使っているソフト(IDE)について解説させていただきました。
プログラマーというと黙々とプログラミングをしているイメージがあるかもしれません。しかし、実際の業務はプログラミングよりもテストや仕様書の確認に時間がかかることが多いです。チームで開発するためのIDEの便利さもあり、Javaの生産性は高く今後もニーズは増えていくでしょう。
これを機に、みなさんもプログラミングの学習をしてみてくださいね。