Javaが実践で使えるレベルとは?
Javaは昔から安定した需要があります。そしてその需要は今後も安定して見込めるでしょう。
Python等も人気が最近急上昇していますが、Javaも高い人気を相変わらず維持しています。実際、Javaエンジニアになりたいという人は沢山います。そしてJavaエンジニア自体も勿論沢山います。
では、Javaが実践、つまり業務で使用できるとは具体的には何がどの位出来れば良いのでしょうか?
今回はJavaが実践で使用できるレベルについて解説していきたいと思います。
業務で求められるレベル
プログラミングスクールはプログラミングの様々な知識を教えてくれますが、何を知っていれば業務でも大丈夫、という事はなかなか教えてくれません。
現場で使用しているツールやその人自身のキャラクターなどにもよって求められるプログラミングのレベルは異なるとはいえ、ITエンジニアを志している人が最も知りたいのはそこです。
まずはプログラマーがプログラミングで求められるレベルについてざっくり書いていきたいと思います。
コードが書ける
プログラマーなのでコードは書けなければいけないのですが、実際の所、一人でガリガリ何行も処理を書ける程でなくても良いです。
というのも、プログラマーとしての仕事の殆どは改修になります。(0から開発する案件もたまにありますが、はっきり言ってそこまで数は多くありません。)つまり、元々稼働しているシステムやアプリケーションのコードに手を加えるという案件が多いです。
よって、元々それなりのお手本がある上に、実際に手を加える箇所もそこまであるわけではありません。
では、全てコピペで良いのかと言われるとそういう訳では決してありません。
コードが読める
プログラマーとして仕事をする上で一番大切な能力は恐らくこれだと思います。。
先程も言ったとおり、プログラマーとしての仕事の殆どは既存のシステムやアプリケーションの改修です。つまり、現状のコードや仕様の把握をする必要があります。
またコードの意味も解らずコピペなどをした場合、後々保守が大きく低下する恐れもありますし、共通システム等手を加えてはいけない場所に不用意に手を加えて大事故や大量のバグを生んでしまう可能性もあります。
そして業務で使うプログラムのソースはスクールなどで使う教材とは違い、幾つもの処理やクラスが書いてあるので最初のうちは現状把握だけでもなかなか大変です。
プログラマーは新たに何かを作り出すよりも現状把握が正確に出来る事を求められます。
コードを調べられる
前任のプログラマーが高度な技術を使っていた、若しくは稚拙な技術だった、等の理由で自分の知識ではコードの解読が出来ない時があります。
そんな時はインターネットや書籍、若しくは社内FAQ等でコードについて調査する必要があります。また、自分が書きたい処理が出来るコードが思い浮かばない時もコードを調べる必要が出てくるでしょう。
この情報化時代、膨大な情報の中から最適な情報を探し出せる能力は仕事をする上で必須の能力です。
ログがわかる
ログ、と言うのは情報の宝庫です。
テストや少々環境でバグが発生した時の原因もこのログの中に紛れ込んでいますし、処理が遅い等のクレームが来た時もまずこのログを見てから次の行動を決めます。
ログを読めるか読めないかだけで業務効率は大幅に左右されます。
業務で求められる処理
では、具体的にはJavaで何が出来れば、若しくはどんな事を知っていれば業務で使えるようになるのでしょうか?
この章ではプログラミングという点に主眼を置いて、上記の件について詳しく解説していきたいと思います。
変数の型
改修の仕事でもメソッド内の変数を変更する処理や変数を宣言する処理は記述するので、変数の型の扱い方を知らなければ業務でプログラミングを使うのは難しいです。
また、int型の変数をString型に変更する、等の処理も多く使われるので変数の方についてわかっていないと現状の処理の把握もままなりません。
当然変数の型が理解できないと、後述する配列について理解する事ははっきり言って不可能です。(詳しくは後述しますが、データの抽出等で配列はとても良く使われます。)
インスタンス
何でもかんでもクラスの中に変数やメソッドを書けばよい、と言う物ではありません。時には別のクラスのメソッドや変数も使う必要がありますが、この時にインスタンスと言う物を使います。
何でもかんでもクラスの中に変数やメソッドを書いた場合、保守性が著しく低くなりますし、処理スピードもかなり遅くなります。
別クラスのメソッドや変数を使う機会はかなり多いので、インスタンスをきちんと理解していないととても苦労します。
条件分岐
大概のシステムやアプリケーションは動的、つまり何らかの条件によって多かれ少なかれ表示や処理の内容を変えるものです。
そんな時、if文やswitch文によって変数を判定し、それぞれの処理内容を使い分けられるようにコードを書きます。
これがないと、誰がいつ何時見ても何も変わらない表示内容となり、最早ただの画像や文章の羅列と言っても過言ではありません。
配列の使い方
通常、データベースからデータを抽出する時は一つではなく複数個のデータを取り出します。複数個のデータを1つの変数に詰める時は配列を使用します。
また、名前はA、年齢は20歳、など異なる属性のデータを1つのデータに纏めて処理をする事も多くあります。大概のシステムやアプリケーションはデータベースからデータを抽出して、そのデータを基に処理を行うので、抽出したデータの入れ物である配列を勉強する事は非常に重要です。
この配列の使い方が仕事でJavaを使用するにあたって最も重要な知識と言っても過言ではないでしょう。
繰り返し
データベースから抽出したデータは配列や変数に詰めます。この時に繰り返し処理を使います。
データを抽出すると言っても1件や2件ではなく何百、何千ものの数です。馬鹿正直に書いていてはこの処理を書くだけで何日もかかります。
この繰り返し処理を使用すれば何百、何千のデータだろうが、配列に詰める処理のコードは10行以下の量になりますので、労力と時間、そしてファイルの重さをかなり節約出来ます。
nullと空文字の違い
nullと空白と言うのは最初は理解しにくいですが、これをきちんと理解しておかないと業務で痛い目を見ます。
nullとは、つまり無です。何も無いのです。大して空文字は空という存在はある、とでも言っておけば良いでしょうか。つまり定義だけはあります。
SQL分で言うと、nullはレコードをinsertする時に何も書きませんが、空文字の場合は「列=''」と言った感じで書きますので、存在自体はあります。
nullと空文字は一見すると全く同じなので紛らわしいですが、実態は全く違います。これを理解しておかないとデータベースから抽出したデータを判定にかける時に、思ったような処理が出来ません。
メソッドの呼び出し方
どのような値を渡して、どのような値を受け取るようにすればよいか。これを把握する事は業務で使用されているコードを理解するための第一歩です。
これがわかれば共通クラスや他クラスのメソッドを使えるようになるので、コーディングの量が減るだけでなく、現状の仕様についても理解しやすくなります。
例外の原因がわかる
例外の種類や原因について理解しておくと、ログを読む際に役立つので、バグの原因を見つける時にとても役に立ちます。
プログラマーの現場はアジャイル開発の現場はとても多いので、テスターも兼任する可能性があります。また、失敗の無い人間などいないので、テスト段階でバグを出す事は大いにあり得ます。
他人のコードのテストをしたリ、そのテストで発見したバグを修正するという役割を任せられることもあるので、例外の種類や原因について理解しておく必要があります。
知っていても役に立たない知識
以下に書く物は、プログラミングスクールや書籍等で必ず習いますが、業務上では大して必要としない技術や知識です。
勿論、知っていれば役に立つ局面が無いと言う訳ではないですが、はっきり言って知らないからと言ってどうという事は無い物です。
オブジェクト指向
Javaもそうですが、C言語などのサーバーサイド言語を勉強していると必ず一度は聞く知識ですが、これが分からないからと言って困ったという人は殆どいません。
大体の人はプログラムを触りながら、こんなもんか、とアバウトに把握するくらいです。
よく、哺乳類というクラスを継承した犬というクラスがあり、その中に鳴くとか食べるというメソッドがある、と教えられますが、こんな物、最初から理解するのは無理です。非常に抽象的な理屈なので、すんなり理解できないです。
ここで躓いてプログラミングを諦める人も珍しくないですが、はっきり言って勿体無さすぎます。
ラムダ式
中級以上のレベルですとほぼほぼこのラムダ式を習いますが、業務で使ってる現場は殆ど見たことがないです。
慣れれば理解は難しくはないとはいえ、やはりコードが多少なりとも複雑になり、保守性が落ちるのが原因と思われます。
難しくはないとはいえ、熟練者から見ても少々癖があるコードであるのは否めないようです。
また、業務経験が浅い新人に教える手間も使用頻度が少なくなる原因と思われます。
インターフェース
プログラミングをやる上でインターフェースの理解は必要ではありますが、わからなくてもはっきり言ってそこまで業務に支障は出ません。
インターフェースはコードの根幹の部分をつかさどっているので、保守や運用レベルの現場ではインターフェースをいじる事はありません。
ただ、プログラミングを極めてゼロから何かのシステムを作るような現場に行く際は必須の能力になりますので、現場で業務をしながら覚えましょう。
実践で使えるレベルならば現場でチャレンジ!
上述したような知識についての理解があれば、プログラマーとして仕事が出来ると言えますので、挑戦してみる事をお勧めします。
もし業務経験を理由に断られている場合、資格等を取得して業務経歴を今よりも見栄えさせれば、入場の可能性はかなり上がります。
お悩みの人がいれば、是非一度ご相談頂ければと思います。