目次
フリーランス市場で最も案件数が多いプログラミング言語はJavaです。FAworksでは、2022年2月現在で約600件のJava案件を掲載しています。また、そのほとんどでフレームワークの経験が問われます。Javaはフレームワークやライブラリが充実している言語なので問われるフレームワークは多岐に渡ります。この記事では、Javaのフレームワークにはどのような種類があるのか、どのようなフレームワークの需要が高いのかについてエージェント目線で解説します。
Javaとは
Javaは、Web開発・アプリケーション開発(Android)・業務システム開発などさまざまな場面で使用できるプログラミング言語です。エンジニアの研修などで使用したことがある方も多いのではないでしょうか。Javaは、JVM(Java Virtual Machine)という仮想マシン上で動く言語であるため、JVMが動作する環境であればどこでも使用することができます。最近では、同じくJVM言語であるKotlinやScalaの注目度も高まっています。
Javaのフレームワークとは
フレームワークとは、プログラミング言語を使用し開発する際の骨組みになるものです。フレームワークは最低限の機能を提供してくれるため、時間とコストの削減やバグを減少させることができます。FAworksのJava案件では、フレームワークを使わない案件もありますが、多くの案件ではフレームワークを使用しています。
フレームワークとライブラリの違い
フレームワークは上記で説明した通り、システムを開発する際の骨組みになるものです。一方で、ライブラリは小さな機能のようなイメージです。フレームワークは全体の大きな枠で、その中の小さな機能をライブラリを使用して作るイメージです。
Javaフレームワークのメリット
Java案件ではフレームワークを使用することが多い訳ですが、Javaのフレームワークを使用するメリットはどのようなものなのでしょうか。
開発期間を短縮できる
フレームワークのメリットに開発期間が短縮できることがあります。フレームワークには必要な機能が揃っているので、その分機能開発のコストを削減することができます。
記述を統一化できる
多くのエンジニアが関わるプロジェクトの場合は記述方法が複数存在してしまいます。ですが、フレームワークを導入することである程度記述を統一化することができます。そのため、保守性が上がり結果的にコストを削減することも可能です。
Javaフレームワークのデメリット
Javaにはフレームワークを使用するメリットが複数存在しましたが、フレームワークを使用することで生じるデメリットについても解説します。
脆弱性がある(場合がある)
フレームワークは必要な機能が揃っていますが完璧ではありません。可能性は低いかもしれませんが、フレームワークに脆弱性が発見される場合もあります。過去には、JavaのStrutsというフレームワークに脆弱性が発見され、Strutsを採用しているシステムには大きな影響を与えました。
フレームワークのキャッチアップが必要
フレームワークを導入する場合、エンジニアもそのフレームワークに対応する必要があります。フレームワークの種類次第では、キャッチアップコストがかかるものもあります。また、外部からエンジニアの採用をする場合もあると思いますが、こちらもフレームワークの種類次第では、対応できる人材が少なく採用コストがかかったり、エンジニアの給与が高い場合があります。
Javaのフレームワーク7選
FAworksの案件で求められることが多いフレームワークを紹介します。
Play Framework
Play Frameworkは、JavaとScalaでできているフレームワークです。Ruby on rails(Ruby)やDjango(Python)からの影響も多いため、それらとの類似点もあります。Play Frameworkは軽量かつ動作が早いことが特徴で、静的型付け言語によるコンパイルの遅さも解消しています。
Spring Framework
Spring Frameworkは2004年にリリースされたオープンソースのフレームワークです。Spring Frameworkは、DI(Dependency Injection)を重要視しています。DI(Dependency Injection)はデザインパターンの1つで、オブジェクト間に生じる依存関係をオブジェクト内ではなく、外部からメソッドや引数を用いて与える手法です。また、Spring Ftameworkは多数の機能があるため幅広い開発ができる一方で機能を使い分けるのが難しいというデメリットもあります。
Spring Boot
Spring Frameworkにおける機能を使い分けるのが難しいというデメリットを解決するために開発されたフレームワークがSpring Bootです。Spring BootはあくまでもSpring Frameworkを構成している一部なので、Spring Frameworkの理解は必要です。
Struts
StrutsはMVCモデルを採用しているフレームワークです。Strutsは2001年に開発されたフレームワークであり、生産性の高さから多くの現場で使用されていましたが、脆弱性への指摘が多く2013年にサポートが終了しています。
Seasar2
Seasar2は、Spring Frameworkと同様にDIを重視しているフレームワークです。依存性を分離することで生産性の高い開発を可能にします。しかし、Seasar2は2016年でサポートが終了しているため現在使用している企業は少ないです。
JSF(Java Server Faces)
JavaにはWebアプリケーション開発に必要な機能をセットにしたJavaEEというものがありますが、そこに搭載されているのがJSF(Java Server Faces)です。JSFはUIコンポーネントやバリデーション機能もあるため、簡単にユーザーインターフェースを作成することができます。
JSP(Java Server Page)
JSPのベースはHTMLで記述され、タグを使いHTMLの中にJavaを埋め込みます。JavaはWebサーバ上で実行しますが、書いたままの内容を出力できるためフロントエンドとしても機能を発揮します。
需要が高いJavaフレームワーク
FAworksのデータ(2021年)をもとにフレームワーク別案件数をみていきます。
上記画像では、Spring Frameworksが半数以上を占めています。そして、Spring Bootが15%と続いています。Spring FrameworkやStrutsに関しては、過去に作ったシステムをフレームワークを移行せずにそのまま使用しているケースが多いため案件数としても多い状況です。一方で、新規サービスに関してはSpring BootやPlay Frameworkを使用することが多いため、今後はこの2つのフレームワークの比率が増えるでしょう。
Spring Bootの月額平均単価
フリーランス市場においてJavaエンジニアは多く存在しますが、Spring Bootを使用できるエンジニアはそれほど多くありません。そのため、高単価案件も多くSEとして上流工程から担当できるかつSpring Bootの経験がある場合は、月額で75〜80万円程度を手にすることもできるでしょう。
Play Frameworkの月額平均単価
Spring Bootと同様に、Play Frameworkも経験があるエンジニアが少ないため高単価案件が多いです。月額で75〜80万円、環境がScalaの場合はそれ以上も可能でしょう。Play FrameworkはJavaとScalaでできているフレームワークなのでScala環境で使用される場合も多く、JavaからScalaへのスキルチェンジもおすすめです。
まとめ
フリーランス市場では、Javaエンジニアでもフレームワークの経験で案件獲得の難易度や月額単価が大きく異なります。需要の移り変わりが激しい業界ではありますが、需要を先読みしキャリアプランの構築に活かしてみてください。