支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Strutsとは?概要について詳しく

Strutsの概要

Javaは世界中で最も人気のあるプログラミング言語の一つであり、日本国内でも多くの プロジェクトにおいて導入されている技術であることは周知の通りです。 Javaの特徴は「オブジェクト指向」「プラットフォームに依存しない」「マルチスレッド」など 多くの利点を保有する優秀なプログラミング言語であると同時に生産性と保守性に優れている点も 高く評価されております。 JavaもしくはJava周辺の技術を理解することはWEBアプリケーションの開発を行うエンジニアにとっては必須と言ってもいいでしょう。 ここでは、JavaのフレームワークであるStrutsについて詳しく解説させていただきます。 プログラミングにおけるフレームワーク(ソフトウェアフレームワーク)とは、 アプリケーションの開発の骨組みのことであり、開発工程の生産性や効率性を向上させる機能を持ちます。 Strutsはフレームワークの中でも最も歴史の古い事で知られ、Javaの発展に大きく影響を与えてきました。 Strutsの特徴はMVCモデルと言われるModel(モデル)View(ビュー)Controller(コントローラー)の3つの機能ごとに開発を実行ソフトウェアアーキテクチャーが導入されている点にあります。 また、頻繁に利用されるプログラムコードをタグとして定義し、JSP内でプログラムを簡潔に記述することが 可能である点もStrutsの特徴として取り上げられます。 Strutsの最初のバージョンは、2001年にリリースが行われその後のJavaの普及と同時に大きく広がり、またたく間に業界のデファクトスタンダードとなりました。 ただし今日におけるまで様々な問題も生まれており、Strutsの抱える脆弱性が指摘され実際に大規模な情報漏洩などの問題が複数発生し、様々なメディアでも報道がされるなどの事件がありました。 また、近年においては新しいテクノロジーを使った様々なJavaフレームワークがリリースされていることもあり、Strutsは「古い」と認識されるケースが多いことは事実です。ただし現実問題として、Strutsは決して最新のテクノロジーではありませんがまだまだStrutsを導入して開発を行っている プロジェクトは多数存在しますし、これからも一定数存在するでしょう。 いずれにせよStrutsはMVCモデルの代表とも言えるフレームワークとなりますので、これからJavaを学ぶエンジニアは学習しておきたい知識であることは間違いありません。 以上が簡単ではありますがStrutsの概要となりますがさらに詳しく解説させていただきますので、参考にしていただけましたら幸いです。

 

Strutsの歴史

Strutsの歴史について説明させていただきます。 Strutsの歴史はJavaの歴史と共にあると言えますので、 StrutだけでなくJavaの歴史についても紹介させていただきます。 Javaが誕生する以前は、クラサバシステムと言われる形態・環境においてのVB(Microsoft Visual Basic)またはVC++(Microsoft Visual C++)またはDelphiなどの プログラミング言語による開発が主流でした。 Java(JDK)の登場はプログラミングを実行する際に高額なコストがかかる環境を準備する必要性がないことや、Java(JDK)のプログラミング言語としての優秀さなどから 業界の関係者から大きな評価を獲得し急速に普及する事となります。 その後2000年にApacheソフトウェア財団からStruts1.0がオープンソースとして公開され、こちらもまたたく間に大きな人気を獲得し、Servlet/JSPの使い分けや役割分担、洗練されたMVCモデルなどまさにオープンソース時代を代表するフレームワークとして有名になりました。 2007年にはWebWorkから統合したStruts2.0がリリースされ、アノテーションや設定より規約による設定ファイルの削減・依存性の注入 (DI)・POJOなどの改善が実行されました。 冒頭でも説明させていただいたように、Struts1.0およびStruts2.0におけるセキュリティーホールの多さは 様々な報道などで周知の通りとなっております。 ただしJavaの歴史の中でStrutsが担った役割は非常に大きく、様々な形で貢献していることは間違いありません。 その後Strutsから派生する形でSAStruts (Super Agile Struts)が生まれます。 「画面作成後の都度設定ファイルに書き加える必要がある」 「form-beanを修正しても設定ファイルを書き加える必要がある」 「新しい遷移先が増えた場合のおいても設定ファイルを書き加える」 「変更毎に設定ファイルもすべて見直す必要がある」などといった煩わしさをSAStrutsにおいては解決することを可能としました。 また、株式会社NTTデータが独自に開発を行った自社ブランドである「TERASOLUNA」もStrutsフレームワークをベースとして派生したフレームワークとなります。 以上が簡単ではありますが、Strutsの歴史の説明とさせていただきます。

Strutsの特徴について

Strutsの特徴について説明させていただきます。 ポイントを3つに絞り紹介させていただきますので、参考にしていただけましたら幸いです。

歴史

Strutsの特徴の一点目が歴史の長さとなります。 Strutsの歴史についてはすでに紹介させていただいた通りで、 Javaのプログラミング言語と共にオープンソースの歴史を作ってきたフレームワークと言えるでしょう。 Struts1.0が公開されたのが2000年ですので、20年以上の歴史を持つフレームワークとなり テクノジーの発展速度が速いIT業界において未だに多くの現場で利用されていることからその偉大さが理解いただけるでしょう。

MVCモデル

Strutsの特徴の二点目がMVCモデルとなります。 MVCモデルの考え方として、機能ごとに分類しコードを記述し処理することが特徴であり、 このように整理されることで「コードをわかりやすくなる」「開発者が機能ごとの実装に集中することができる」「作業効率が上がる」「保守性が担保させる」など様々なメリットが生まれます。 StrutsはMVCモデルの代表例としてプログラミングを学ぶ際に事例として出されるも多いです。

JSPカスタムタグ

Strutsの特徴の三点目がJSPカスタムタグとなります。 JSPカスタムタグを整備することにより、Javaソースコードを混在させることなく わかりやすいソースコードを実装することが可能となりました。

Strutsの脆弱性について

Strutsの脆弱性について実際に起きてしまった事例を説明させていただきます。 本文で述べたようにStrutsの脆弱性は多くの指摘を受けておりましたが、それが大きな問題に繋がってしまったケースとして参考にしてみてください。 2017年に起きたGMOペイメントゲートウェイ株式会社の個人情報漏洩は、Apache Struts2.0の脆弱性を 狙ったものとして極めて大きな問題となりました。 同事件は東京都の「都税クレジットカードお支払いサイト」と住宅金融支援機構の「団体信用生命保険特約料クレジットカード支払いサイト」のサイトからクレジットカード番号・有効期限・メールアドレスなどの個人情報が流出し、「都税クレジットカードお支払いサイト」では約67万件、「団体信用生命保険特約料クレジットカード支払いサイト」では約4万件の個人情報が流出しました。 上記のサイトの運営業務を受託しているGMOペイメントゲートウェイ(GMO-PG)は国際的なクレジット産業向けのデータセキュリティ基準(Payment Card Industry Data Security Standard)に準拠したセキュリティー対策を実行しておりました。 また、日本貿易振興機構(JETRO)も2017年に同団体が運営するサイト「相談利用者様登録ページ」が不正アクセスを受けて登録者のメールアドレス2万6000件以上が流出したと発表いたしました。 同団体の広報担当者はApache Struts2.0の脆弱性を悪用された可能性が高いとコメントしております。 また、同年2017年には日本郵便の運営するサイト「国際郵便マイページサービス」で不正アクセスと顧客情報の流出がありこちらについてもApache Struts2.0の脆弱性を利用されております。 また、直接情報流出に繋がらなかったものの、Apache Strutsの脆弱性によるセキュリティーの問題から 運営しているWEBサイトの閉鎖や運営休止となった例は数多く存在します。 例えば2014年情報処理推進機構(IPA)は同機構が運営するITパスポート試験の開催を決定しました。 同機構のおいては「試験申込システム」を運営しておりましたが、Apache Struts1.0の脆弱性が指摘され 情報漏洩やWEBサイトの改ざんなどのセキュリティーリスクが高いと判断し、急遽試験日の変更を実施いたしました。 また、同件はWEBサイトが乗っ取られるなど悪質なリスクが高い上早急な対応が難しいケースであり、 同事件をきっかけに同時期にWEBサイトを閉鎖する企業が増えるなど社会に対しても大きなインパクトを残す事件となりました。 以上がStrutsの脆弱性についての事例紹介と説明とさせていただきます。

まとめ

いかがでしたでしょうか? Strutsについて詳しく解説させていただきましたので、参考にしていただけましたら幸いです。