Webエンジニアになるんだったら、よく名前を聞くJavaは必要だろう!
Javaってそもそもどんなもので、勉強の難易度とか未経験でもすぐ仕事もらえるのかな?
この記事を見たときに、次の悩みを持たれているのではないでしょうか?
Webエンジニアを目指そうとしたら、恐らく耳にするであろうキーワードがJava(ジャバ)。サンマイクロシステムが開発したプログラミング言語で、世界的に見ても使用されている言語、習得したい言語として1位を記録するほどに期待度の高い言語です。
そもそもJavaとはどういう言語で、現在の業界ではどういう状況なのか? あるいはこの言語の実際での仕事の案件数や求人、年収などはどのくらいなのかと疑問を持つのは当然です。
そこで、それらの疑問を解決すると共に、Javaについてあらゆる視点から分析し、Javaを使って開発できるものや、効率よい学習法を含めて紹介していきます。
WebエンジニアにJavaの現状
Webエンジニアとして利用する言語を見るとJavaのほかには、PHP、Perl、Ruby、Pythonなどの言語があります。この中で将来性が高く求人件数が多いのがJavaとPHP。学習しやすさで行けばPHPとPerlが簡単といわれます。
この結果、初心者から見ればJavaよりPHPです。しかしJavaは非常に汎用的で、大規模システムの開発向きです。Windows、Mac、Linuxいずれも問題なく対応します。
さらにWebだけでなく加えてスマホアプリの組み込みにも適しているので、より言語としての利用用途が広く、当然案件数も多くなります。
Web系のJava案件数
Javaのフリーランス求人・案件 都道府県別公開案件数(2019年10月現在)
- 1位:東京都 2849件
- 2位:神奈川県 202件
- 3位:大阪府 111件
- 4位:福岡県 109件
- 5位:埼玉県 45件
- 6位:愛知県 37件
- 7位:千葉県 32件
- 8位:北海道 21件
- 9位:京都府 15件
- 10位:栃木県 6件
Javaのフリーランス求人・案件 エージェント別公開案件数(2019年10月現在)
- 1位:フリエン 5175件
- 2位:at-engineer 606件
- 3位:techtree 518件
- 4位:グッドワークスエンジニア 468件
- 5位:FREE-DA 466件
- 6位:スキルコネクト 265件
- 7位:A-STAR 257件
- 8位:レバテックフリーランス 226件
- 9位:geechs job 217件
- 10位:PE-BANK 187件
Javaを扱う求人の平均年収(2019年10月現在)
- 平均単価:64.2万円
- 中央値単価: 60.0万円
- 最高単価 :145万円
- 最低単価 :25万円
Java案件で、仕事をする場合の給与や単価は、担当する業務内容に差が大きいです。週5日間常駐したとして月に140から180時間を働いた場合、50万円から90万円と開きがあります。
実はJavaの案件で多いのは、大手企業が依頼する大規模なシステム開発です。基本設計といった上流工程からコーディングの下流工程まで間に介在する企業がいくつかあり、案件が細かく分割されています。
担当する工程ごとに単価に大きな違いがあり、基本的には上流工程の方が高くなりますが、間に入る企業の数によっても左右されます。ちなみにフリーランスのエンジニアとしてJava開発未経験では、参画するのが難しいのが現在の状況です。
JavaはWebエンジニア向きの言語なのか?
JavaがWebエンジニア向きの言語なのかといわれれば、間違いなく向いている言語です。ここでは、より具体的にJava言語の概要や特徴を述べた後、実際の活用事例や具体例について紹介していきます。
Javaの特徴
Javaは1995年にサン・マイクロシステムズによって公開されました。当時はCOBOLなどの事務処理プログラム言語が全盛だった時代に、現在の主流であるオブジェクト指向言語として登場しました。
21世紀に入ってからは、Webの世界において現代にいたるまで非常に多く活用され、Javaの影響を受けたプログラム言語が多数開発されるまでになりました。常に仕様が変更され最新は2019年9月17日にリリースされたJava SE 13です。
そして、Webの世界だけにとどまらず、スマホなどの携帯電話や家電や乗用車などの幅広い環境に普及。COBOLにて開発したシステムを、Javaに移行する動きも加速化しています。
Javaで開発できるもの
Javaを使って開発できるものは本当に幅が広いです。ATMなど金融関係のアプリケーションに使われたり、あるいは信号機の制御にも使われたりと、日常生活を支える裏方として活躍しているプログラム言語です。
そして、豊富な実績とさまざまなツールがあるために、大企業が開発するような大規模アプリで採用されることが多く、かつてCOBOLにて開発したシステムをJavaに移行する動きもあるため、Javaの需要は絶えません。
またJavaは、Androidのスマホでのアプリ開発に使われることも多く、アプリの規模は大きくないものの需要がなくなる可能性は少ないでしょう。そのためJavaエンジニアは不足しています。
Javaの活用事例
Javaを具体的に採用している企業を見て行きましょう。Web関係でJavaを採用しているのは、Twitterやノートを保存するEvernote、あるいはGoogleのサービス一部や楽天でも採用しています。
特にTwitterは、当初Ruby on Railsという言語を採用していました。しかしJavaが高速に動作すると評価して移行します。その結果米国大統領選挙など爆発的に増えるツイートにも耐えられるようになりました。
このほかパソコンのアプリのOpenOffice、一太郎、業務システムの三菱東京UFJ銀行、そしてほとんどのAndroidアプリもJavaによって開発されています。
Javaを独学で習得するための3ステップ
Javaは、PHPあたりと比べると初心者にはやや難しい言語といわれています。しかしある程度Webの知識がある人や、他言語の知識のある経験者にとってはぜひ押さえておきたい言語です。
ここでは、Javaを独学で習得したい人が、書籍や学習サイトを中心に学ぶ際に、理解しておきたいる3つのステップを紹介します。
まずは基礎文法を学ぼう
最初Javaの基本文法です。ここはプログラミングの基本となる部分で、Javaだけでなく他の言語でも必要となる部分です。
変数とデータ型
最初に必要なのは、Javaでつかうデータの形式を定義すること。変数と呼ばれるデータの入れ物を宣言するのですが、数字や文字などのデータ形式を最初に決めておきます。
具体的なデータ型ですが、例えば数字でも整数型のほか長整数型、浮動小数点数型という形式があり、これは消費するメモリがそれぞれ異なり、利用できる数字の範囲も変わります。
文字型でも、通常のほか拡張タイプの文字列型。この他バイト型と呼ばれる最小単位(1バイト:-128から127)を扱うデータ型もあります。またブーリアン型という真・偽を定義する型もあります。
演算子、分岐、繰り返し
演算子とは、足し算やかけ算などの基本的なものをはじめ、「>」「=」などの比較用の物や「AND」「OR」などの条件演算子などがあります。
この他プログラミングでの処理の途中に発生する条件によって複数の方向に分岐させる条件分岐。またある条件が達成されるまで繰り返して作業する繰り返し処理などがあります。
また、同じデータ型を複数にまとめてグループ化したものを配列と呼び、これは複数の入れ物をひとまとめにしたものです。またプログラムのコードの意味がわかりやすく説明できるコメントの記述もできます。
こちらも参考にしてください。
オブジェクト指向について学ぼう
オブジェクト指向とは
次にオブジェクト指向について。Javaはオブジェクト指向言語なので、この考え方は理解する必要があります。
これは効率よく開発することに念頭を置いた考え方です。一言でいえばそれまで稼働しているのプログラムへの影響を最小限に抑えようというものです。
そこで
- 「プログラムの独立性(カプセル化)」
- 「プログラムの再利用性(継承)」
- 「プログラムの拡張性(ポリモーフィズム)」
の3つを重視しています。まずはこの特徴を理解しておきましょう。
Javaの独立性
異なるプログラムが依存している状態だと、ひとつのプログラムの一部を変更するだけで、他のプログラムにも影響が出てしまいます。そのため根本的なプログラムの作り直しという可能性があります。
そこで「プログラムの依存性を極力減らそう」というのが独立性です。Javaでは「クラス」という仕組みを使います。具体的には、プログラムの機能によって、クラス分けをして管理します。
クラスを定義してプログラムを分けておくことで、クラス同士の依存性がなく、変更や追加が生じてもそのクラス内ですべてが解決し、他のクラスには影響ありません。
Javaの再利用性
異なるひとつひとつのプログラムに同じような変更を加える必要があるときに、それをわざわざ行うのは大変です。そこで共通のプログラムをひとつ作っておいて、必要時にそのプログラムを呼び出すのが、再利用性です。
Javaではメソッドという考え方があります。これはプログラムを部品化することで、その部品を複数のプログラムが使うことで再利用を図ることです。このメソッドをクラスにまとめることもできます。
また、クラスの継承という考えがあり、クラスごとに制限を設けることでそのクラス専用のメソッドという定義が可能。これは再利用性を高めながら独立性を保つ方法です。
Javaの拡張性
拡張性とは、少し難しい考え方ですが、これは再利用をしながら、その内容を自由に変えていける性質を意味します。これは抽象化という、重要なものや共通の要素だけを取り出すことです。
共通になっている要素をひとつのプログラムとして抜き出して記述すれば、ここのプログラムはそれを参考にします。独自の記述が行えるということ。共通ですから変更を加えても問題ありません。
Javaではオーバーライドという仕組みを使い、継承元のプログラムを変更して上書きして使います。
こちらも参考にしてください。
Javaのフレームワークを学ぼう
Javaを学ぶ際にアプリ開発の際に土台として、あらかじめ完成しているプログラムを提供しているフレームワークというシステムを知ることが大切です。これを使えばスムーズなプログラミングの記述が可能です。
フレームワークを使うと多く人のがプロジェクトに参加しやすくなり、扱えるとフリーランスとしても仕事を取りやすいメリットがあります。
その反面Javaのコーディングスキルや深い理解が得ずらいデメリットがあり、脆弱性という問題もあります。
Javaではおすすめのフレームワークとして次のようなものがあります。Javaを学ぶ上では頭の片隅に意識しておく必要があるでしょう。
- Struts
- Spark Framework
- JSF(JavaServer Faces)
- Play Framework
- Spring Framework
こちらも参考にしてください。
【結論】JavaにはWeb系案件があるが未経験からは難しい
Javaは未経験者では学びにくく、そのスキルでは案件も少ない
ここまでJavaについて、いろんな角度から検証しましたが、Javaを未経験から学ぶのはあまりおすすめしません。Javaは初心者が学ぶには少し難しい言語だからです。
Webエンジニアを目指してJavaの勉強を始めても、途中で挫折する可能性が高いです。さらに、Javaの取得をしたとしても、実際の現場では未経験者をなかなか採用してくれない統計があります。
Javaの場合は特に経験者でないと顧客は認めてくれません。
PHPなどの簡単な物から取得し、そこから経験を積みながらJavaを学ぶ
そこでひとつの方法として先に簡単に学べるとされるPHPなどの他の言語から学ぶことをおすすめします。
いきなりJavaから行くと途中で挫折する可能性も高く、PHPの方が難易度においては低いので取得がしやすい。そしてそこでWebプログラミングの空気を理解できますから、それからJavaにチャレンジしても良いのです。
まずは、PHPのエンジニアとしてスタートして、それからJavaを学ぶ。そうすれば仕事の幅も広がり、複数言語を使いこなせる技術者としてスキルが高まりますから、より高単価の案件が狙えるでしょう。
まとめ
今回はWebエンジニアにとってJavaが必要かというテーマで解説しました。
Javaは1995年に発表されたオブジェクト指向言語。Webはもちろんのこと、スマホや汎用機のシステム開発にも採用され、あらゆる分野で活躍。大企業がJavaでのシステム案件を出してきます。
その一方で初心者にはやや難しく、実務経験がない未経験者にはなかなか仕事がもらえない現実があります。プログラミングの経験がない方は別の簡単な言語を学び、経験を積みながらJavaを学ぶのが得策です。
この記事がきっかけで、Javaの理解に近づくことができたなら幸いです。