Upload
java
View
3.354
Download
0
Embed Size (px)
Citation preview
Copyright © 2016 NTT DATA Corporation
株式会社NTTデータ 技術革新統括本部ソフトウェア工学推進センタ
倉元 貴一
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
Copyright © 2015 NTT DATA Corporation 2
INDEX
1. TERASOLUNA Frameworkとは
2. TERASOLUNA Frameworkが解決する諸問題
3. おわりに
Copyright © 2016 NTT DATA Corporation 3
1. TERASOLUNA Frameworkとは
4Copyright © 2016 NTT DATA Corporation
TERASOLUNAとは
Process
Environment
Support
数多くのシステム開発で培ったノウハウを盛り込んだ標準開発手順・管理手順
ソフトウェアを開発する際の雛形になるフレームワークと開発を支援するツール
蓄積されたノウハウを展開するための研修や教育サービス
標準手順
サポート
開発環境
数多くのシステム開発実績をもとにした「標準手順」「開発環境」「サポート」をトータルで提供しており、TERASOLUNAを活用することで、高品質なシステム開発が実現できます。
TERASOLUNAとは、NTTデータのシステム開発を支えるオープン系システム開発のための総合ソリューション
Copyright © 2015 NTT DATA Corporation 5
Javaフレームワーク年表
J2EE/Java EE
1999 2002 2005 2008 2011 2014
プレゼン層
ビジネスロジック層
O/Rマッピング
MVC
▲J2EE1.2
▲J2EE1.3
▲J2EE1.4 ▲JavaEE5 ▲JavaEE6 ▲JavaEE7
▲Spring0.9 ▲Spring2.5
▲Hib3rnate1.0
▲Hibernate2.1
▲JPA1.0 ▲JPA2.1
▲Struts1.0 ▲Struts1.2 ▲Struts1.3▲Struts2.0
▲Seaser2.0
▲JPA2.0
▲Seam1.0
▲Spring1.0 ▲Spring2.0 ▲Spring3.0▲Spring4.0
▲MyBatis3.0
▲Hibernate3.0
▲JSF1.0 ▲JSF1.2 ▲JSF2.0 ▲JSF2.2
▲Facelets1.0 ▲Facelets2.0
DI x AOP▲Seam2.0
▲SAStruts1.0
▲Seaser2.4
▲Hibernate4.0
▲iBatis2.3▲iBatis1.0
▲TopLink ▲EclipseLink
Copyright © 2015 NTT DATA Corporation 6
Javaフレームワークの動向と展望
• FWの必要性が認知され、
様々なJava FWが乱立• FWの利用に不慣れな開発者が
多く品質にばらつき発生
• JavaFWは「Spring」と「Java EE」の2強に
• FWのコモディティ化が進み
FWの活用が当たり前の時代に
VS
JVM
APサーバ
OS
FW
アプリケーション
JVM
APサーバ
OS
アプリケーション
■ソフトウェアスタック
FW
2000年頃(FW乱立期) 2015年頃(FW成熟期) 2030年頃
Java FWが多数乱立 SpringとJava EEの2強に
■ソフトウェアスタック
APサーバがFWを内包
2強時代の継続
Java EE時代の到来
Java時代の終焉
APサーバがFWの役割を吸収
?
Java EE
Java EEJ2EE
Java
Java EE
Copyright © 2015 NTT DATA Corporation 7
?
Javaフレームワークの動向と展望
• FWの必要性が認知され、
様々なJava FWが乱立• FWの利用に不慣れな開発者が
多く品質にばらつき発生
• JavaFWは「Spring」と「Java EE」の2強に
• FWのコモディティ化が進み
FWの活用が当たり前の時代に
VS
JVM
APサーバ
OS
FW
アプリケーション
JVM
APサーバ
OS
アプリケーション
■ソフトウェアスタック
FW
2000年頃(FW乱立期) 2015年頃(FW成熟期) 2030年頃
Java FWが多数乱立 SpringとJava EEの2強に
■ソフトウェアスタック
APサーバがFWを内包
2強時代の継続
Java EE時代の到来
Java時代の終焉
APサーバがFWの役割を吸収フレームワークの基本機能は
標準化(コモデティ化)へ
Java EE
Java EE
Java
Copyright © 2015 NTT DATA Corporation 8
Java
TERASOLUNA Frameworkの基本コンセプト
• FWの必要性が認知され、
様々なJavaFWが乱立• FWの利用に不慣れな開発者が
多く品質にばらつき発生
• JavaFWは「Spring」と「Java EE」の2強に
• FWのコモディティ化が進みFWの活用が当たり前の時代に
Spring
VSSpring
JVM
APサーバ
OS
FW
アプリケーション
JVM
APサーバ
OS
アプリケーション
■ソフトウェアスタック
FW
2000年頃(FW乱立期) 2015年頃(FW成熟期) 2030年頃
JavaFWが多数乱立 SpringとJava EEの2強に
■ソフトウェアスタック
APサーバがFWを内包
2強時代の継続
Java EE時代の到来
Java時代の終焉
Spring
APサーバがFWの役割を吸収
世の中のOSSを活用してエンタープライズ向けフレームワークを整備
Copyright © 2015 NTT DATA Corporation 9
これまでのTERASOLUNA Framework(FW2系)
独自のフレームワーク層
Enterprise Application
Application Server
以前は、OSSに独自の層を被せることで、OSSでは不足している機能や、
品質を保つための制約を追加していた。
Copyright © 2015 NTT DATA Corporation 10
2000年頃 2015年頃
FW自体に付加価値
FWがコモディティ化
Java FWが多数乱立
Java FWはSpringかJava EEの2強
業界動向
当社の取組
独自FWとして整備OSS(Spring)を最大限活用
これまでのTERASOLUNA (TERASOLUNA Server FW for Java 2)
新たなTERASOLUNA(TERASOLUNA Server FW for Java 5)
エンタープライズ適用に必要なサポートを提供
サポート提供と合わせてエンタープライズ適用に
必要なガイドラインの充実
新たなTERASOLUNA Frameworkのコンセプト
Copyright © 2015 NTT DATA Corporation 11
新たなTERASOLUNA Framework(FW5系)
業界の動向を考慮し構成要素を見直した新しいフレームワークの提供を開始
Enterprise Application
Application Server
Spring MVC
を最大限活用
Spring Data JPASpring
Security
12Copyright © 2016 NTT DATA Corporation
新たなTERASOLUNA Frameworkの構成要素
•Spring, MyBatisなどのOSSフレームワークソフトウェアフレームワーク
•エンタープライズ向けに必要な汎用的な部品共通ライブラリ
•OSSを利用したエンタープライズ向けアプリ開発に
おけるベストプラクティスドキュメントガイドライン
•基本的な開発方法を学ぶ学習教材チュートリアル
•基本的な機能を実装したサンプルアプリサンプルAP
•プロジェクト構成のひな形ブランクプロジェクト
13Copyright © 2016 NTT DATA Corporation
公開資材の一例
http://terasolunaorg.github.io/開発ガイドライン
ポータルサイト
資材提供
14Copyright © 2016 NTT DATA Corporation
ニュースリリース
2016/02/24 本格運用開始のニュースリリースhttp://www.nttdata.com/jp/ja/news/release/2016/022400.html
Copyright © 2015 NTT DATA Corporation 15
なぜSpringなのか?
Springは機能追加し続けており、今後も迅速な新規テクノロジーへの追従が期待できる
Java標準技術への追従も活発であり、SpringとJava EEを組み合わせたベストな選択をしやすい
当社ではSpringを10年以上活用しており、社内に適用実績、開発リソース、開発ノウハウが多く存在している
適用案件や開発者が多く、セキュリティ面の改善活動が活発に実施されている
Spring Security等のセキュリティ対策OSSの採用により、セキュリティ面への対応を強化できる
グローバル市場でのシェアNo.1であり、技術者や情報が豊富に存在するため、要員確保や書籍などによる情報収集が容易である
開発リソースの確保しやすさ
世の中の変化への対応
セキュリティ面の強化
社内に蓄積したノウハウ量
Copyright © 2015 NTT DATA Corporation 16
TERASOLUNA Frameworkの狙い
コモディティ化しつつある領域では仲間を増やし、業界貢献することが重要
お客様 競合他社 開発者 OSSコミュニティ
Copyright © 2015 NTT DATA Corporation 17
ガイドラインのねらい
目的 記載内容
品質向上• 検証済みで品質確保された開発方法のベストプラクティス• これまでの開発経験から得られた実践的な開発ノウハウ
工数削減
• 流用可能なコードサンプル• これまでPJ個別に実施しており、PJ間で重複していた事項
• 実現可能性検証の結果• 学習コンテンツ、など
ガイドラインの目的と記載内容
ガイドラインは、エンタープライズアプリケーション開発に必要となる知識やノウハウを網羅し、適用プロジェクトをサポート
Copyright © 2015 NTT DATA Corporation 18
ガイドラインのねらい
• 各機能の詳細解説
• チュートリアル(学習コンテンツ)
理解しやすいように、図を多数記載
• コードサンプル
• 検証済みで品質確保された開発方法のベストプラクティス
流用して開発できるようにコードサンプルを多数記載
コードサンプルの解説も記載
• コードサンプル• エンタープライズ向けの実践的な開発ノウハウ
・・・
各機能の拡張方法も記載 Note、Tip、Warning、Hintなど、実践的な開発ノウハウを多数記載
実装方法とその根底にある考え方も記載
①基本知識の習得、AP基盤の検討
③FWの拡張方針検討 ④AP基盤の設計・製造
②実現性検証
アーキテクトの作業におけるガイドライン活用例
19Copyright © 2016 NTT DATA Corporation
TERASOLUNA FrameworkのOSSスタック
20Copyright © 2016 NTT DATA Corporation
新たなTERASOLUNA Frameworkの提供機能
21Copyright © 2016 NTT DATA Corporation
Server FW for Java 5.1.0の提供機能
画面連携
入力チェック
メッセージ管理/国際化
ページネーション
アップロード/ダウンロード
二重送信防止
コードリスト
システム間連携
SOAPサーバ/クライアント
RESTサーバ/クライアント
Email送信
DBアクセス(MyBatis/JPA)
トランザクション/排他制御
データ連携
セキュリティ
認証・認可
CSRF/XSS対策
暗号化
ユーティリティ
ロギング
例外ハンドリング
セッション管理
日付・文字列操作
22Copyright © 2016 NTT DATA Corporation
(参考)TERASOLUNAの導入実績
5 26 52 79 130230
371
540646
765877
999
0
200
400
600
800
1000
1200
2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
新規導入プロジェクト数
累計
TERASOLUNAは、オープン系の標準として業種業態問わず、小規模から大規模まで幅広く導入
※NTTデータおよびNTTデータグループ内の導入実績(2014年3月末時点)
23Copyright © 2016 NTT DATA Corporation
(参考)ガイドラインへのアクセス数
公開から24万ユーザ以上にアクセスされ毎日4000ページビュー以上閲覧されている
2/24 ニュースリリース
Copyright © 2016 NTT DATA Corporation 24
2. TERASOLUNA Frameworkが解決する諸問題
25Copyright © 2016 NTT DATA Corporation
エンタープライズシステム開発での課題
26Copyright © 2016 NTT DATA Corporation
1. 膨大なJarや設定ファイルの組み合わせ
2. プロジェクト構成・アプリケーションのレイヤ化
1. 膨大なJarや設定ファイルの組み合わせ
4. セキュリティ対策
3.ソースの品質向上・品質維持
27Copyright © 2016 NTT DATA Corporation
1. 膨大なJarや設定ファイルの組み合わせ
Jarのバージョン…食い違ってない?
設定ファイル多すぎて辛い…
環境依存してないかこれ…
そんなときは…
28Copyright © 2016 NTT DATA Corporation
1. 膨大なJarや設定ファイルの組み合わせhttp://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/ImplementationAtEachLayer/CreateWebApplicationProject.html
29Copyright © 2016 NTT DATA Corporation
1. 膨大なJarや設定ファイルの組み合わせ
• エンタープライズ開発に必要な各種設定・ライブラリ依存関係が設定済
• Spring IO Platformをベースに、TERASOLUNAで検証済みのライブラリを独自に追加
エンタープライズ開発に必要なノウハウを詰め込んだプロジェクト構成の雛形「ブランクプロジェクト」を提供
30Copyright © 2016 NTT DATA Corporation
ブランクプロジェクトの構成
エンタープライズ開発時に必要になる設定が定義済みのブランクプロジェクトのarchetypeを提供
環境依存する資材を集約するプロジェクト
アプリケーションレイヤのプロジェクト
ドメイン・インフラレイヤのプロジェクト
「4.1.1. 開発プロジェクトの作成」からご覧ください。
31Copyright © 2016 NTT DATA Corporation
依存関係
TERASOLUNA FWが依存・推奨する
ライブラリが定義済
32Copyright © 2016 NTT DATA Corporation
(参考)Spring IO Platformとは?
https://spring.io/platform
33Copyright © 2016 NTT DATA Corporation
(参考)Spring IO Platformとは?
http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions
34Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化
2. プロジェクト構成・アプリケーションのレイヤ化
1. 膨大なJarや設定ファイルの組み合わせ
4. セキュリティ対策
3.ソースの品質向上・品質維持
35Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化
アプリケーションのレイヤリングって、どうすればいいん
だろう
あー…なんでこのクラスここにいるんだ
よくみたら循環参照してるけど今更…
そんなときは…
36Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Overview/ApplicationLayering.html
37Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化
クラスの種類を3層に分類し、依存関係を規定
38Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化
39Copyright © 2016 NTT DATA Corporation
レイヤの依存関係
Domain Layer
Application Layer
誤ったレイヤ間の依存関係を早期に検出できる
40Copyright © 2016 NTT DATA Corporation
ブランクプロジェクトの内部構成
Domain Layer
Infrastructure Layer
41Copyright © 2016 NTT DATA Corporation
ブランクプロジェクトの内部構成
Application Layer
42Copyright © 2016 NTT DATA Corporation
ブランクプロジェクトの内部構成
ログ出力設定やデータソース定義など、ステージング環境によって異なる設定を本プロジェクトに集約することで、設定値の置換を容易にしている
43Copyright © 2016 NTT DATA Corporation
3. ソースの品質向上・品質維持
2. プロジェクト構成・アプリケーションのレイヤ化
1. 膨大なJarや設定ファイルの組み合わせ
4. セキュリティ対策
3.ソースの品質向上・品質維持
44Copyright © 2016 NTT DATA Corporation
3. ソースの品質向上・品質維持
このコード、Webにのってるやつコピったな…危険すぎる…
DBアクセスも入力チェックも、いつも考えるけどノウハウまとまって
ないなぁ…
似たようなことを前にやったけど、時間経ちすぎてる
しなぁ… そんなときは…
45Copyright © 2016 NTT DATA Corporation
3. ソースの品質向上・品質維持http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/ArchitectureInDetail/index.html
46Copyright © 2016 NTT DATA Corporation
提供機能
エンタープライズ開発で必要となる機能を網羅的に解説
47Copyright © 2016 NTT DATA Corporation
解説例
使い方/拡張方法をコードを交えて解説
Copyright © 2015 NTT DATA Corporation 48
ガイドラインの品質確保
エンタープライズ開発で活用してもらうにはガイドラインの品質を確保し続けることが重要
例:ガイドラインのサンプルコードの品質確保
頻繁に更新されるガイドラインやプラットフォームに合わせて
コード品質の確認が必要となる
様々なOS/Java/ミドルの構成に対して700シナリオ以上の機能テストを日次で実行する
後方互換の問題を検知し改善フレームワーク更新の影響として
速やかに周知する
ガイドライン更新 テスト自動実行 テスト結果確認
JMeter
Gitbucket Selenium
Jenkins
Vagrant
開発ガイドライン
テスト一覧
Test1
Test2
Test3
Test4
OK
OK
OK
NG
DB
AP
ServerJDK
Copyright © 2015 NTT DATA Corporation 49
OSSの品質貢献(Springの場合)
Spring Framework (49) Spring Security (13) Spring Data (4)SPR-13520SPR-13518SPR-13503SPR-13443 (Resolved)SPR-13426SPR-13418SPR-13406SPR-13402SPR-13379 (Resolved)SPR-13359 (Resolved)SPR-13350 (Resolved)SPR-13136 (Resolved)SPR-13124 (Resolved)SPR-13103 (Resolved)SPR-13102 (Resolved)SPR-13086SPR-13041 (Resolved)SPR-13038 (Resolved)SPR-13025 (Resolved)SPR-13000 (Resolved)SPR-12994 (Resolved)SPR-12993 (Resolved)SPR-12992 (Resolved)SPR-12991 (Resolved)SPR-12990 (Resolved)
SPR-12988 (Resolved)SPR-12987 (Resolved)SPR-12985 (Resolved)SPR-12981 (Resolved)SPR-12980 (Resolved)SPR-12979 (Resolved)SPR-12954SPR-12853SPR-12819 (Resolved)SPR-12792 (Resolved)SPR-12743 (Resolved)SPR-12510 (Resolved)SPR-12509 (Resolved)SPR-12442 (Resolved)SPR-12354 (Resolved)SPR-12265 (Resolved)SPR-12229 (Resolved)SPR-11970 (Resolved)SPR-11826SPR-11821 (Resolved)SPR-11810 (Resolved)SPR-11670 (Resolved)SPR-11669SPR-11074 (Resolved)
SEC-3105SEC-3003 (Resolved)SEC-2910SEC-2905SEC-2903SEC-2880 (Resolved)SEC-2840 (Resolved)SEC-2836SEC-2835 (Resolved)SEC-2834 (Resolved)SEC-2826 (Resolved)SEC-2422 (Resolved)SEC-2403
DATAJPA-473 (Resolved)DATACMSN-379 (Resolved)DATACMNS-408 (Resolved)DATACMNS-377 (Resolved)
バグレポート(2015年9月30日時点)
OSSのバグをコミュニティや開発元に報告しOSSの品質改善に貢献
50Copyright © 2016 NTT DATA Corporation
4. セキュリティ対策
2. プロジェクト構成・アプリケーションのレイヤ化
1. 膨大なJarや設定ファイルの組み合わせ
4. セキュリティ対策
3.ソースの品質向上・品質維持
51Copyright © 2016 NTT DATA Corporation
4. セキュリティ対策
ここ最近、脆弱性のニュースよく聞くし適当にはできないよ
なぁ…
セキュリティ機能ってどうつくればいいかわからないよ…
非機能も含めてセキュリティ対策できてるのかな…
そんなときは…
52Copyright © 2016 NTT DATA Corporation
セキュリティ対策
機能/非機能を意識したセキュリティ対策方法の提供
http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Security/index.html
53Copyright © 2016 NTT DATA Corporation
セキュリティ機能の使い方
セキュリティ機能の使い方を解説http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Security/Authentication.html
54Copyright © 2016 NTT DATA Corporation
機能面からのセキュリティ対策
機能面から見た代表的な要件の実現方法について解説
http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Security/SecureLoginDemo.html
55Copyright © 2016 NTT DATA Corporation
非機能面から見た代表的な要件の実現方法について解説
非機能面からのセキュリティ対策
http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Introduction/CriteriaBasedMapping.html
Copyright © 2016 NTT DATA Corporation 56
おわりに
Copyright © 2015 NTT DATA Corporation 57
TERASOLUNA Server Framework for Java (5.x) Development Guideline
http://terasolunaorg.github.io/guideline/
Copyright © 2015 NTT DATA Corporation 58
2000page over !!
多種多様なノウハウ集であり、Springの教科書でもあり、辞典でもある
59Copyright © 2016 NTT DATA Corporation
最後に
TERASOLUNA Frameworkに興味がある方は下記までご連絡ください
TERASOLUNA窓口E-mail: [email protected]
NTTデータは今後もJavaアプリケーション開発のベストプラクティスをOSSで提供し続けます
エンタープライズJavaシステム開発で積極的に活用し、情報交換やコミュニティ活動を活発化してさらなるJavaの発展、繁栄に向けて共に歩んでいきましょう。
Copyright © 2011 NTT DATA Corporation
Copyright © 2016 NTT DATA Corporation
「TERASOLUNA」及びそのロゴは、日本及びその他の国おける株式会社NTTデータの商標または登録商標です。その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商標です。