Javaのスキルを活かして今後も活躍できるか不安に感じている方や、Webアプリケーションの開発に携わりたいエンジニアに向けてStrutsを紹介します。
Webアプリケーションの開発には、フレームワーク※が用いられていることが現在では主流となっています。Javaのフレームワークには多くの種類がありますが、Strutsは2005年頃MVCに基づいたアーキテクチャと高い生産性で、Javaフレームワークのデファクトスタンダードと呼ばれるほどの普及をみせました。今回は、エンジニアとしてStrutsのスキルを持っているとどんな仕事に携わっていけるかという観点で紹介していきます。
※ フレームワークとは、アプリ開発をする際に開発効率を上げるために便利な機能を集めたツールです。Webアプリケーションの開発において、フレームワークを使用することが現在の主流となっています。フレームワークを使用することによって、「フレームワークの規律に沿ったチーム開発が可能」「開発の効率が向上」といった多くのメリットがあります。
Strutsとは
Strutsとは、Java ServletやJSP の技術を用いて、Apacheソフトウェア財団によって開発されました。Webアプリケーションを構築する上で有用なオープンソースソフトウェア(OSS)として知られています。
Java ServletやJSPが登場した当初は、JavaでWebアプリケーションが開発できるようになったものの、複雑なアプリケーションの開発は困難でした。そこでStrutsがよく使用され、数ある問題を次々と解決していきました。
また、MVCモデル※ に基づいたアーキテクチャと高い生産性から、多くの企業がこぞってStrutsを使ってシステムを構築しました。そのため、StrutsはWebアプリケーションが主流となる時代に、Webフレームワークのデファクトスタンダードと呼ばれるほどの普及を見せていたのです。
※MVCとは「Model View Controller」の略称です。データの処理や管理を行う「Model」、Web画面上に表示を行う「View」、ユーザーからの入力を受け取りModelとViewに命令する「Controller」という概念で構成されています。各ブロックに分け、開発における役割を明確にすることで、以下の利点があります。
・デザイナー(View担当)とエンジニア(Model担当)の作業を明確化して対立を少なくできる。
・Viewからの細かい命令をModelで処理すると複雑になるため、細かい命令を受け取るControllerを用意することで処理の簡略化が行える。
このMVCの概念はWebアプリケーションを触れていく上で重要になります。
Strutsの案件の内容とは
それでは実際にStrutsの案件には、どのようなものがあるのでしょうか。エンジニア向けの案件を調べてみると、Webアプリケーションの機能維持やカスタマイズが主になり、旅行、勤怠管理、支払いシステムといった自社開発系の仕事が多いです。案件に参画する上で必要なスキルを見てみると
- 3年以上のJava開発経験
- 基本設計やMVCモデルの実務経験
などのJavaでWebアプリケーション開発に携わった経験が求められるケースがほとんどです。
ただ、「Strutsでの開発経験〇〇年」のようにStrutsを扱った経験を必要とする案件は多くありません。それよりも、Javaを扱った実務経験を要求されます。
利用者の声
実務未経験の分野でも、最高の案件を見つけてくれた
自分では使ったことあるけど、実務経験としてはやっていないAR/VRやSwift案件を希望したのですが、他のエージェントさんですと「実務経験が無いものは無理です」という雰囲気がアリアリと出ていてあまり真剣に聞いてくれず、流されていたんです。
そういう体験が複数の会社であったので、【エミリーエンジニア】では真剣に要望を聞いてくださったのが印象的でした。おかげさまで、私の希望にマッチするAR/VRの案件やSwift案件を探して提案してくださったことには感謝しております。
Strutsエンジニアの単価相場は?
次にStrutsの案件に参画する際の単価を見ていきましょう。エンジニア向けに提示されている金額としては、平均して月収60~80万程度になります。他のJavaフレームワークと比較しても見劣りしない金額が設定されています。エンジニアとしてStruts案件に参画することで、報酬としては十分な対価をもらえると考えてよいでしょう。
ただし、将来性については少し注意が必要です。単価だけを見れば十分稼げるスキルですが、将来性についてはよく吟味したうえでStrutsのスキルを伸ばしていくかを考えるべきです。
Struts案件の将来性はあるの?
Strutsは、正直将来性があまりないです。なぜかというと、下記にあげるような大きい脆弱性が見つかったからです。
- Webサーバー内の情報を盗み取られる
- 特定ファイルを操作される
- Webアプリケーションを一時的に使用不可になる
- 攻撃者が任意のコードが実行できる
これらの脆弱性が見つかっており情報処理推進機構(IPA)でも注意喚起が行われています。
システムの脆弱性を突かれたことによる事象も少なくありません。
- JETRO – メールアドレス2万件流出
- 日本郵便 – メールアドレス2万件流出
- ぴあ – クレジットカード番号3万件流出
- GMOペイメントゲートウェイ – クレジットカード番号36万件流出
オープンソースのフレームワークだったことから、この脆弱性への対応が遅れました。今後は他のフレームワークへの移行を検討している情勢もあることから、今から学ぶにはメリットが少ないです。
では、なぜ今でさえ案件がまだまだあるかというと、一時はデファクトスタンダートになるほど使用されていたフレームワークであり、多くの現場で移行ができていないのが実情だからです。
そのため、既存システムの改修やカスタマイズ、機能維持といった案件が多いです。また、案件によっては、Strutsから新しいフレームワークへの移行に際し、Strutsの知識が求められるものもあります。
今からStrutsを学ぶメリット
次にStrutsを学ぶメリットに関しても見てみましょう。
Strutsは、MVCを学ぶ上では適しているフレームワークです。そのため、まずは機能維持の案件に入って、MVCの知識と経験を付ける目的で学ぶのも良い選択肢になります。そこからのスキルチェンジを考えましょう。
スキルチェンジとして今後学ぶべきフレームワークとしては、以下の二つは抑えておくことをお勧めします。
- Spring Framework
- Play Framework
どちらも世界的にも普及しているフレームワークであります。ここでは概要だけ触れておきます。
「Spring Framework」は、Javaで大規模開発を行う現場で使われている「Webアプリケーションフレームワーク」で、国内外で広く利用されています。Springが人気な理由としては、システムの仕様変更のしやすさ、プログラムテストの行いやすさ、拡張性、システムの安定性などが評価されています。多用なモジュールがあるため、Webアプリケーションだけでなく、使い方次第でJavaプラットフォームで動作するさまざまなアプリケーションに適用することもできます。
「Play Framework」はRubyのフレームワークである「Ruby on Rails」、pythonのフレームワークである「Django」に大きく影響を受けたフレームワークであり、軽量さと高い生産性が特徴です。JavaのWebアプリケーション標準仕様であるJ2EEに準拠しておらず、ServletやJSPを使わずに新しいアプローチでのアプリケーション構築を行うことができます。
どちらもJavaのフレームワークとしては知名度が高く、今後も普及していくフレームワークです。Strutsを学んでいくとしても、一度は調べておくことをお勧めします。
まとめ
今回はStrutsの案件に関して紹介しました。案件の数としてはまだまだ多くあり、使いやすいフレームワークであるためすぐに消えることはないでしょう。一時期はJava フレームワークのデファクトスタンダードとして活躍していました。現在でも、現場でStrutsの知識を持っているエンジニアは貴重な存在として重宝されます。ただし、上述しているように将来性はどうしても見込みにくいフレームワークです。今後もStrutsのみで稼いでいこうと考えることはお勧めしません。短期的に見れば稼ぐことは可能かもしれませんが、長期的に考える場合はスキルチェンジとして他のフレームワークの知識を付けていく方をお薦めします。エンジニアとして活躍し続けていたくためには、常に新しい情報を取って今後トレンドになるようなスキルをいち早く身に付けていくことが求められます。Strutsに限った話ではありませんが、現状で良しとせずに新しいことを学び続けましょう。
現状の市場価値や具体的な案件傾向などを知りたい方は、まずはフリーランス専門の案件紹介エージェントに相談してみましょう。
まずは会員登録の上、お気軽にご相談ください。