20代で転職を検討されている方へ


Javaフレームワークの光と影

 プログラミング言語でも、人気のあるJava。プログラマなら、一度は触ったことがあると思います。Javaは、最近ではAndroid開発やWeb開発でも使われるようになり、脚光を浴びている言語です。プログラミングを容易にするのに使われているのは各種のフレームワークです。勿論、人気言語のJavaにもあります。しかし、フレームワークの種類が多すぎて、どれを使いまた学習すべきなのか、悩んでしまいます。今回は、Javaのフレームワークとは何か、オススメフレームワーク、フレームワークを使うメリットとデメリット、初心者の方でもわかるフレームワークの使い方を、記載いたします。

1.     Javaフレームワークとは

 まず、「フレームワーク」とは、何でしょうか?フレームワークとは、プログラミングでアプリやシステムを開発する際、「土台」として提供されるものです。全てのコードを自分で書こうとすると、膨大な時間がかかってしまいます。そこで、アプリ開発する際、必要なものを纏めて提供してくれるのが「フレームワーク」なのです。

2.     フレームワークを使うメリット・デメリット

2.1.     メリット

 フレームワークを導入するメリットは何があるでしょうか?

1:開発期間の短縮

Javaを使った開発は、しっかりと時間をかけて開発する形態が中心となります。その際、フレームワークを使うことで、大部分のコードを用意する必要がなくなり、時間の短縮につながるのです。

2:多人数開発に参加しやすくなる

Javaは多機能言語ですので、同じ動作を記述するにしても様々なアプローチや書き方があります。フレームワークを使用することで、考え方を統一することができる為、チーム開発がスムーズになるのです。

3:フリーランスとしても仕事が取れるようになる

フレームワークはプログラミング言語とは別な知識となります。特定のフレームワークを使用した経験があれば、ノウハウが身に付き、即戦力となり、開発要員としての参加が容易になるのです。

2.2.     デメリット

 では、デメリットは何があるでしょうか?

1:コーディングスキルが比較的向上しない

Javaフレームワークを使うことにより、既にパッケージ化されたコードを使うことができ、効率よく開発ができます。一方、フレームワークに沿った書き方が要求されることになるので、開発を0から始めた方と比較するとスキルの向上が期待できません。

2:Javaの深い理解が得られづれあい

Javaフレームワークを使い開発すると、本質的な理解を得られづらくなります。フレームワークがあることで、理解がなく「こういうものだ」で片づけることができてしまうからです。そうして、「たまたま動いているだけ」という状況が、理解を遅くしてしまいます。

3:フレームワークによる脆弱性を避けることができない

一例として、Javaフレームワークの一つである「Apache Struts」で見つかった脆弱性が攻撃されたケースが増加したという報告が上がっています(トレンドマイクロ参照)。Apache Strutsを使うと、この脆弱性を免れることが出来なくなってしまいます。このように、フレームワークの脆弱性に振り回されることがあります。

3.     オススメのJavaフレームワーク

 では、オススメのフレームワークを3つ紹介します。

3.1.     JSF(Java Server Faces)

 JSFは、Java EEの環境で動作する、WebアプリケーションのUIを作成するためのアプリケーションフレームワークです。JSFJava EEに含まれています。新しくライブラリを追加する必要はありません。

 JSFを利用することで、Webアプリケーションのビジネスロジックとプレゼンテーションデザインを分離させることができます。また、プレゼンテーションコンポーネント(テキストフィールドやボタンなど)を、JSPカスタムタグライブラリで利用することにより、ステートの保持や値のチェック、型変換やイベントの処理、データモデルへのマッピングができることにあります。

3.2.     Play Framework

 Play Frameworkは、Java Scalaで書かれたフレームワークです。このフレームワークは、Ruby on RailsDjangoから大きな影響を受けました。このフレームワークは、開発の「スピード感」と、「変更に対する柔軟性」に優れています。 

 更に、Play Frameworkは、「動作が速い」という特徴もあり、Javaがもつ「堅牢性」といった特徴があり、バックエンドで使われることが多いです。

求人としては、アジャイル開発を中心としたベンチャー企業が多く採用しています。

3.3.     Spring Framework

 Spring Frameworkは、近代的なJavaの業務アプリの包括的な環境を提供します。カバー範囲がとても広い、万能型フレームワークです。

 世界的にも使われており、また伸びているため、すぐに使われなくなることはまずないです。また業務で導入されているとことが非常に多いです。その為、学べば仕事の獲得に非常に有利になります。学習コストは少し高いですが、おすすめのフレームワークです。

 フレームワーク選びに悩んだら、このSpring Frameworkを選んでみるのもよいでしょう。

 Spring Frameworkでは、Spring Tool Suiteという統合開発環境を用いて開発します。EclipseSpring Framework向けにカスタマイズしたものです。Eclipseにプラグインとして追加することもできますが、Spring Tool Suiteを使った方が高機能な為、便利です。

 Spring Frameworkの特徴として、アノテーションがあります。アノテーションを定義することによって、役割を明確に明示し、ふるまいを定義することができ、プログラムの構成単位が分かりやすくなるのです。