現在フリーランスとして働いている方の中には、Sturtsの案件をよく目にする方もいらっしゃるのではないでしょうか。
この記事では、Strutsとは何か、どのようなメリットがあるのか、またインストール方法などについて丁寧に解説していきます。

エージェントサービス「エンジニアファクトリー」では、ITフリーランスエンジニアの案件・求人の紹介を行っています。掲載中の案件は7,000件以上。紹介する案件の平均年商は810万円(※2023年4月 首都圏近郊のITエンジニア対象)となっており、スキルや言語によって高条件の案件と出会うことができます。
氏名やメールアドレス・使用できる言語を入力するだけで、簡単60秒ですぐにサポートを開始できます。案件にお困りのITフリーランスの方やより高条件の案件と巡り合いたいと考えている方は、ぜひご登録ください。
Strutsとは?
Strutsとは、Javaを用いてwebアプリケーションを効率的に開発するために使用されるフレームワークです。正式名称はApache Struts(アパッチストラッツ)ですが、一般的にはStrutsと呼ばれています。
Strutsは、ソフトウェアの挙動をXMLベースの設定ファイルに記述できるため、Javaのコーディング時間の手間や負担を減らすことができます。
Struts1は2001年にリリースされ、当時複雑化していたJ2EEベースのWebアプリケーション開発を容易にしたため注目を浴びました。その後、2005年頃にStrutsはデファクトスタンダードとも言われるほど定番のフレームワークとなりました。
しかし、技術的な欠点が見つかり2007年にStruts2がリリースされました。Struts1はJakarta Projectベースですが、2ではWebWork2ベースに置き換えられたため、大きく仕様が異なり2つの間に互換性がありません。
現在の新規Webアプリケーション開発でStrutsが使われることは滅多にありませんが、過去にStrutsで開発されたシステムが今も稼働し続けている事例は多くあります。
Strutsの特徴
この記事ではStruts2の仕組みや特徴について解説していきます。
Struts2はWebWork2をベースにしていて、Struts1と比べると最近のトレンドを取り入れたモダンな構造となっています。Struts2の特徴は以下の通りです。
・MVCシステムデザインに基づいた設計
・入力値の値をチェックするバリデーション機能
・独自のタグライブラリ機能
StrutsはMVCシステムデザインを推奨しているため、生産性が高くなることが特徴のひとつです。また、独自のタグライブラリが用意されているため、ロジックやUI表示などを一から構築する必要がない点もStrutsの特徴です。
Strutsの利用メリット
Strutsを取り入れる最大のメリットは、大規模なシステムやチームでの開発が効率よく行えるようになることです。Strutsのメリットは以下の3点です。
・フレームワークを活用することで開発の工数やコストを抑えることができる
・機能ごとの独立性が高いので、他の部分と干渉しにくい
・開発者のスキルレベルによらず均質な開発を行える
Strutsに限った話ではないですが、フレームワークを導入することで、実装したい機能やUIをゼロからコードを記述する必要がなくなり、開発の工数やコストを抑えることができます。
また、Strutsには独自のタグライブラリが用意されているため、コードを書く人のスキルレベルによらず、均等に質のいい開発を行うことができる点もメリットのひとつです。
MVCシステムデザインとは
MVCシステムデザインは、JavaのフレームワークだけでなくPHPやRubyなどさまざまな言語のフレームワークとして取り入れられています。ここからは、MVCシステムデザインについて解説していきます。
MVCシステムデザインは
- Model(データや関数、ロジック)
- View(画面の表示)
- Controller(全体の制御)
この3つの「Model」「View」「Controller」の頭文字を取ってMVCと呼ばれています。
MVCという考え方が生まれた背景は、プログラムの書き方に統一性を持たせ、誰が書いたコードに対しても追加や修正をしやすくすることにあります。
また、MVCシステムデザインを取り入れることで、「Model」「View」「Controller」のそれぞれを独立して開発することが可能になります。例えばViewに何らかの変更を加えたとしても、ModelやControllerにはほとんど影響が出ないなど、保守性を高めることがMVCを取り入れるメリットとなります。
Strutsのタグライブラリの種類
Strutsには独自のタグライブラリが用意されているため、ロジックやUI表示などを一から構築する必要がないことは解説してきました。
ここからは実際に使用されるタグライブラリの種類について紹介していきます。
HTML | テキストボックスやボタンなど、HTMLを生成するタグ |
Bean | JavaBeansの操作を行うためのタグ |
Logic | 条件分岐や繰り返しなどの制御構造を作成するためのタグ |
Nested | 階層されたプロパティに効率的にアクセスするためのタグ |
Tiles | 複数のJSPで共通に使用できるテンプレート機能を提供するタグ |
それぞれのタグライブラリには複数のタグが用意されています。HTMLタグでは例えば、テキストフィールドを作成する「<html:text>」、チェックボックスを作成する「<html:checkbox>」など用途によってタグを使い分けたり、複数のタグを組み合わせたりすることで簡単に画面の設計をすることができます。
StrutsとSpring、JSFの違い
Javaの代表的なフレームワークとして、Apache Struts以外にもSpring FrameworkやJSFが挙げられます。これらのフレームワークは、Javaアプリケーションの開発や管理を効率化し、柔軟性や拡張性に優れています。ここからは、StrutsとSpring、JSFの違いについて解説していきます。
Spring Frameworkとは

Spring Frameworkとは、Strutsと同様にJavaのWEBフレームワークです。
StrutsはWeb層に特化したMVCフレームワークですが、Spring FrameworkはAOPとDIで構築されていること、「Spring MVC Test」という専用のテストプログラムがあることが特徴的です。
AOPとは「Aspect Orientation Programming」の略です。システム内に共通する処理を抜き出し、ひとつにまとめて管理する手法のことでプログラムをシンプルにまとめることができます。
DIとは「Dependency Injection」の略です。プログラムの依存関係を解消し、ひとつひとつのプログラムを独立させシステムの開発や改修が簡単にできるようになります。
Spring MVC Testでは、結合テストが実行可能で、バグを最小限に抑えることができます。
JSFとは
JSFはStrutsと同様にJavaのWEBフレームワークのひとつであり、またどちらもMVCモデルを採用しています。
JSFには以下の機能が備わっています。
UIコンポーネント機能 | フォーム入力欄を簡単に作成できる |
バリデーション機能 | 入力ミスのチェックができる |
ステート管理機能 | エラー発生後にユーザーの再入力の手間を省く |
ナビゲーション機能 | ページ遷移が簡単にできる |
国際化機能 | 他言語への切り替えができる |
データコンバージョン機能 | 入力された値をJavaの型に変換できる |
JSFはこのようなツールによって作成されることを意識しており、簡単にWebアプリケーションを開発することができます。Strutsと比較すると、JSFは複雑で様々な知識を必要とするWebアプリケーションの開発をより簡単に行えることがわかります。
Strutsが初心者におすすめの理由は?
Strutsは依然として人気が高く、今もなお多くの学習者がいます。ここからはStrutsが初心者におすすめの理由について、以下の4点を中心に解説していきます。
・Strutsはシンプルなフレームワークであり、学習コストが低いため
・JavaでのWeb開発の基本を学ぶことができるため
・Struts以外のフレームワークの習得にも役立つため
・エンジニアとしてのキャリアアップをする上で役立つため
StrutsはJavaフレームワークの中でも長い歴史を持ち、デファクトスタンダードとも呼ばれるまでに浸透したフレームワークです。そしてStrutsをベースに様々なフレームワークが開発されたので、初心者がStrutsを学ぶことはJavaでのWeb開発の歴史を学べると同時に基本を学ぶこともできます。
また、StrutsはMVCモデルと呼ばれるデザインパターンで構成されています。MVCモデルは他のフレームワークでも利用されているので、Strutsを学ぶことでStruts以外のフレームワークの習得にも役立ちます。
Strutsの脆弱性について
現在Javaのフレームワークとして多く利用されているのは、Strutsではなく先ほど紹介したSpring Frameworkです。 Spring Frameworkはプログラムをシンプルに書け使いやすいこと、2014年にStrutsに深刻な脆弱性が見つかったことから、Strutsの利用数が減ったと考えられます。
Struts1は日本の大手企業や公的機関でも利用されていたフレームワークのため、この脆弱性をついた攻撃により多数の企業から情報が流出するなど多くの被害が生まれました。
脆弱性をもつStrutsのバージョンは、Apache Struts1系とApache Struts2.0.0から2.3.16.1です。この脆弱性が悪用されると、以下のような操作が行われる可能性があります。
・情報の窃取、ファイルの不正な操作が行われる
・Webアプリケーションを使用不能にされる
・サーバ上で不正なJavaコードが実行される
Strutsの需要や将来性
Strutsは将来性があまり高いとは言えません。先ほど解説した深刻な脆弱性が見つかったため、情報処理推進機構(IPA)でも注意喚起が行われています。
そのため、現在の人気はSpring Frameworkの方が高くなっており、このように他のフレームワークへの移行をする企業が増えているため、これからStrutsを学ぶメリットは少なくなっています。
ただし、Strutsは過去にデファクトスタンダードとも呼ばれるまでに浸透したフレームワークであり、多くの企業で移行が進んでおらず案件は多くあります。案件の多くは、システム改修やデザインの変更などです。また、Strutsから別のフレームワークへの移行を進める案件もあります。
新しいバージョン「Struts2」の脆弱性について
Struts1の新しいバージョンであるStruts2でも脆弱性が見つかっています。Struts1ではサポートが終了していますが、Struts2では脆弱性への対策がされたプログラムが配布されています。ソフトウェアの更新を行う際は、システムの影響を適切に検討した上で行うようにしてください。
また、一点注意しておきたいのは、Struts1とStruts2では大きく仕様が異なり、別のフレームワークから作られている点です。Struts1とStruts2はどちらもMVCシステムを採用していますが、Struts2はアノテーションやDIが導入されていて、より自由度が高くなっています。
Strutsフレームワークのインストール方法
ここからはStrutsのインストール方法について解説します。手順は以下の通りです。
- JDK(Java Development Kit)をインストール
- Tomcatのインストール
- IDE(統合開発環境)を用意する
- Strutsをインストール
手順1では、Javaの開発に必要なソフトウェアをまとめたパッケージであるJDKをインストールする必要があります。
手順はOracle社の公式ページに記載されています。

手順2ではTomcatのインストールを行います。Tomcatとは、Javaで作られたWebアプリケーションを動かすためのServletコンテナです。

手順3では、IDEを用意します。IDEにはコードの入力補完や文法エラー、チーム開発用の機能があるため効率よく開発を進めることができます。JavaのIDEではEclipseが有名です。
最後にStruts公式サイトから適切なバージョンのStrutsをインストールしましょう。ここまでのインストールが完了したら、StrutsでのWebアプリケーション開発ができるようになります。

プログラミングを早く習得するには

初心者の方が早くプログラミングを習得するには、日々の努力が欠かせません。効率よくプログラミングを習得するコツは、プログラミングを学ぶ目的と学習スケジュールを立て、計画に従ってコツコツと勉強を進めていくことです。自分が何を作りたいのかを明確化させることで、HTMLやCSSやバックエンドなど何を勉強したらいいのかが見えてくるはずです。
また、漠然と参考書を読むだけではコードを書く技術は身につけられません。参考書を読みながら実際に自分でコードを書いて実行してみることも大切です。
フレームワークの選び方
フレームワークの選び方で気をつけることは以下の2点です。
・比較的新しいフレームワークを選ぶ
・開発環境の相性から選ぶ
古いフレームワークはサポートが終了していたり、参考資料が少なかったりと開発をする上での弊害が多くなります。そのため将来性のある比較的新しいフレームワークを選ぶことがおすすめです。
また、開発するアプリによって最適なフレームワークが異なるので、必要な機能のあるフレームワークを選ぶようにしてください。
Strutsの求人ならエンジニアファクトリー

Strutsの案件を探されている方は、業界トップクラスの案件紹介数を誇るエンジニアファクトリーがおすすめです。希望する業界、単価、就業環境をエンジニアファクトリーのコンサルタントがフリーエンジニアの気持ちに寄り添いヒアリングをします。
実務経験が1年以上であれば、年齢不問で案件の紹介を受けることができます。
また、案件を探す際も、「インフラエンジニア」や「Webエンジニア」といった職種、「Python」や「Ruby」といったプログラミング言語から、自分の経験に合った案件に応募できますので、ぜひ登録してみてください。
まとめ
この記事では、Strutsの特徴やメリット、他のフレームワークとの違いについてご紹介してきました。
Strutsは脆弱性が指摘されてからは案件が大きく減ってしまいましたが、それでも過去には長い歴史を持ちデファクトスタンダードとも呼ばれるまでに浸透したフレームワークです。そのため、Strutsを扱えるエンジニアの需要は多くみられます。
ITエンジニアがStrutsを学ぶことで、MVCモデルやJavaでのweb開発の基礎を身につけることができるため、価値のあるスキルと言えるでしょう。