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
VS
Spring
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 JPA
Spring
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 130
230
371
540
646
765
877
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
(参考)Spring IO Platformとは?
https://pivotal.io/agile/press-release/pivotal-releases-spring-io-platform より
“With a set of components all tested to work together, it saves
weeks of tedious developer efforts to build and test a stack of
compatible Spring and third-party technologies, thereby
helping enterprises bring new applications to market more
rapidly.”
Springや3rd-partyテクノロジ間の互換性の
ためのテストやビルドへ費やされていた
「何週間にも及ぶ退屈でつまらない労力」
が削減される
35Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化
2. プロジェクト構成・
アプリケーションのレイヤ化
1. 膨大なJarや設定ファイルの
組み合わせ
4. セキュリティ対策
3.ソースの品質向上・
品質維持
36Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化
アプリケーションの
レイヤリングって、
どうすればいいん
だろう
あー…
なんでこのクラス
ここにいるんだ
よくみたら
循環参照してる
けど今更…
そんなときは…
37Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化
http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Overview/ApplicationLayering.html
38Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化
クラスの種類を3層に分類し、依存関係を束縛
39Copyright © 2016 NTT DATA Corporation
2. プロジェクト構成・アプリケーションのレイヤ化
40Copyright © 2016 NTT DATA Corporation
レイヤの依存関係
Domain Layer
Application Layer
誤ったレイヤ間の依存関係を
早期に検出できる
41Copyright © 2016 NTT DATA Corporation
ブランクプロジェクトの内部構成
Domain Layer
Infrastructure Layer
42Copyright © 2016 NTT DATA Corporation
ブランクプロジェクトの内部構成
Application Layer
43Copyright © 2016 NTT DATA Corporation
ブランクプロジェクトの内部構成
ログ出力設定やデータソース定義など、
ステージング環境によって異なる設定を
本プロジェクトに集約することで、
設定値の置換を容易にしている
44Copyright © 2016 NTT DATA Corporation
3. ソースの品質向上・品質維持
2. プロジェクト構成・
アプリケーションのレイヤ化
1. 膨大なJarや設定ファイルの
組み合わせ
4. セキュリティ対策
3.ソースの品質向上・
品質維持
45Copyright © 2016 NTT DATA Corporation
3. ソースの品質向上・品質維持
このコード、
Webにのってる
やつコピったな…
危険すぎる…
DBアクセスも
入力チェックも、
いつも考えるけど
ノウハウまとまって
ないなぁ…
似たようなことを
前にやったけど、
時間経ちすぎてる
しなぁ… そんなときは…
46Copyright © 2016 NTT DATA Corporation
3. ソースの品質向上・品質維持
http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/ArchitectureInDetail/index.html
47Copyright © 2016 NTT DATA Corporation
提供機能
エンタープライズ開発で必要となる
機能を網羅的に解説
48Copyright © 2016 NTT DATA Corporation
解説例
使い方/拡張方法をコードを交えて解説
Copyright © 2015 NTT DATA Corporation 49
ガイドラインの品質確保
エンタープライズ開発で活用してもらうには
ガイドラインの品質を確保し続けることが重要
例:ガイドラインのサンプルコードの品質確保
頻繁に更新されるガイドラインや
プラットフォームに合わせて
コード品質の確認が必要となる
ツール(例:Selenium)を活用して
700シナリオ以上の
機能テストを日次で実行する
後方互換の問題を検知し改善
フレームワーク更新の影響として
速やかに周知する
ガイドライン更新 テスト自動実行 テスト結果確認
JMeter
Gitbucket Selenium
Jenkins
Vagrant
開発ガイドライン
テスト一覧
Test1
Test2
Test3
Test4
OK
OK
OK
NG
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: terasoluna@kits.nttdata.co.jp
電話: 050-5546-2482(平日10時〜18時)
NTTデータは今後もJavaアプリケーション開発の
ベストプラクティスをOSSで提供し続けます
エンタープライズJavaシステム開発で積極的に活用し、
情報交換やコミュニティ活動を活発化して
さらなるJavaの発展、繁栄に向けて共に歩んでいきましょう。
Copyright © 2011 NTT DATA Corporation
Copyright © 2016 NTT DATA Corporation
「TERASOLUNA」及びそのロゴは、日本及びその他の国おける株式会社NTTデータの商標または登録商標です。
その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商標です。

Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」

  • 1.
    Copyright © 2016NTT DATA Corporation 株式会社NTTデータ 技術革新統括本部 ソフトウェア工学推進センタ 倉元 貴一 Javaエンジニアに知ってほしい、Springの教科書 「TERASOLUNA」
  • 2.
    Copyright © 2015NTT DATA Corporation 2 INDEX 1. TERASOLUNA Frameworkとは 2. TERASOLUNA Frameworkが解決する諸問題 3. おわりに
  • 3.
    Copyright © 2016NTT DATA Corporation 3 1. TERASOLUNA Frameworkとは
  • 4.
    4Copyright © 2016NTT DATA Corporation TERASOLUNAとは Process Environment Support 数多くのシステム開発で 培ったノウハウを盛り込んだ 標準開発手順・管理手順 ソフトウェアを開発する際の 雛形になるフレームワーク と開発を支援するツール 蓄積されたノウハウ を展開するための 研修や教育サービス 標準手順 サポート 開発環境 数多くのシステム開発実績をもとにした「標準手順」「開発環境」「サポート」を トータルで提供しており、TERASOLUNAを活用することで、高品質な システム開発が実現できます。 TERASOLUNAとは、NTTデータのシステム開発を支える オープン系システム開発のための総合ソリューション
  • 5.
    Copyright © 2015NTT 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
  • 6.
    Copyright © 2015NTT 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
  • 7.
    Copyright © 2015NTT 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
  • 8.
    Copyright © 2015NTT DATA Corporation 8 Java TERASOLUNA Frameworkの基本コンセプト • FWの必要性が認知され、 様々なJavaFWが乱立 • FWの利用に不慣れな開発者が 多く品質にばらつき発生 • JavaFWは「Spring」と「Java EE」 の2強に • FWのコモディティ化が進みFWの 活用が当たり前の時代に Spring VS Spring 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を活用して エンタープライズ向け フレームワークを整備
  • 9.
    Copyright © 2015NTT DATA Corporation 9 これまでのTERASOLUNA Framework(FW2系) 独自のフレームワーク層 Enterprise Application Application Server 以前は、OSSに独自の層を被せることで、 OSSでは不足している機能や、 品質を保つための制約を追加していた。
  • 10.
    Copyright © 2015NTT 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のコンセプト
  • 11.
    Copyright © 2015NTT DATA Corporation 11 新たなTERASOLUNA Framework(FW5系) 業界の動向を考慮し構成要素を見直した 新しいフレームワークの提供を開始 Enterprise Application Application Server Spring MVC を 最大限活用 Spring Data JPA Spring Security
  • 12.
    12Copyright © 2016NTT DATA Corporation 新たなTERASOLUNA Frameworkの構成要素 •Spring, MyBatisなどのOSSフレームワークソフトウェアフレームワーク •エンタープライズ向けに必要な汎用的な部品共通ライブラリ •OSSを利用したエンタープライズ向けアプリ開発に おけるベストプラクティスドキュメントガイドライン •基本的な開発方法を学ぶ学習教材チュートリアル •基本的な機能を実装したサンプルアプリサンプルAP •プロジェクト構成のひな形ブランクプロジェクト
  • 13.
    13Copyright © 2016NTT DATA Corporation 公開資材の一例 http://terasolunaorg.github.io/ 開発ガイドライン ポータルサイト 資材提供
  • 14.
    14Copyright © 2016NTT DATA Corporation ニュースリリース 2016/02/24 本格運用開始のニュースリリース http://www.nttdata.com/jp/ja/news/release/2016/022400.html
  • 15.
    Copyright © 2015NTT DATA Corporation 15 なぜSpringなのか? Springは機能追加し続けており、 今後も迅速な新規テクノロジーへの追従が期待できる Java標準技術への追従も活発であり、SpringとJava EE を組み合わせたベストな選択をしやすい 当社ではSpringを10年以上活用しており、社内に 適用実績、開発リソース、開発ノウハウが多く 存在している 適用案件や開発者が多く、 セキュリティ面の改善活動が活発に実施されている Spring Security等のセキュリティ対策OSSの採用により、 セキュリティ面への対応を強化できる グローバル市場でのシェアNo.1であり、技術者や情報が 豊富に存在するため、要員確保や書籍などによる 情報収集が容易である 開発 リソースの 確保 しやすさ 世の中の 変化への 対応 セキュリ ティ面の 強化 社内に 蓄積した ノウハウ量
  • 16.
    Copyright © 2015NTT DATA Corporation 16 TERASOLUNA Frameworkの狙い コモディティ化しつつある領域では 仲間を増やし、業界貢献することが重要 お客様 競合他社 開発者 OSSコミュニティ
  • 17.
    Copyright © 2015NTT DATA Corporation 17 ガイドラインのねらい 目的 記載内容 品質向上 • 検証済みで品質確保された開発方法のベストプラクティス • これまでの開発経験から得られた実践的な開発ノウハウ 工数削減 • 流用可能なコードサンプル • これまでPJ個別に実施しており、PJ間で重複していた事項 • 実現可能性検証の結果 • 学習コンテンツ、など ガイドラインの目的と記載内容 ガイドラインは、エンタープライズアプリケーション開発に 必要となる知識やノウハウを網羅し、適用プロジェクトをサポート
  • 18.
    Copyright © 2015NTT DATA Corporation 18 ガイドラインのねらい • 各機能の詳細解説 • チュートリアル(学習コンテンツ) 理解しやすいよう に、図を多数記載 • コードサンプル • 検証済みで品質確保された開発方法のベストプラクティス 流用して開発できるように コードサンプルを多数記載 コードサンプルの解説 も記載 • コードサンプル • エンタープライズ向けの実践的な開発ノウハウ ・・・ 各機能の拡張方法も記載 Note、Tip、Warning、Hintなど、 実践的な開発ノウハウを多数記載 実装方法とその根底 にある考え方も記載 ①基本知識の習得、AP基盤の検討 ③FWの拡張方針検討 ④AP基盤の設計・製造 ②実現性検証  アーキテクトの作業におけるガイドライン活用例
  • 19.
    19Copyright © 2016NTT DATA Corporation TERASOLUNA FrameworkのOSSスタック
  • 20.
    20Copyright © 2016NTT DATA Corporation 新たなTERASOLUNA Frameworkの提供機能
  • 21.
    21Copyright © 2016NTT DATA Corporation Server FW for Java 5.1.0の提供機能 画面連携 入力チェック メッセージ管理/国際化 ページネーション アップロード/ダウンロード 二重送信防止 コードリスト システム間連携 SOAPサーバ/クライアント RESTサーバ/クライアント Email送信 DBアクセス(MyBatis/JPA) トランザクション/排他制御 データ連携 セキュリティ 認証・認可 CSRF/XSS対策 暗号化 ユーティリティ ロギング 例外ハンドリング セッション管理 日付・文字列操作
  • 22.
    22Copyright © 2016NTT DATA Corporation (参考)TERASOLUNAの導入実績 5 26 52 79 130 230 371 540 646 765 877 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月末時点)
  • 23.
    23Copyright © 2016NTT DATA Corporation (参考)ガイドラインへのアクセス数 公開から24万ユーザ以上にアクセスされ 毎日4000ページビュー以上閲覧されている 2/24 ニュースリリース
  • 24.
    Copyright © 2016NTT DATA Corporation 24 2. TERASOLUNA Frameworkが解決する諸問題
  • 25.
    25Copyright © 2016NTT DATA Corporation エンタープライズシステム開発での課題
  • 26.
    26Copyright © 2016NTT DATA Corporation 1. 膨大なJarや設定ファイルの組み合わせ 2. プロジェクト構成・ アプリケーションのレイヤ化 1. 膨大なJarや設定ファイルの 組み合わせ 4. セキュリティ対策 3.ソースの品質向上・ 品質維持
  • 27.
    27Copyright © 2016NTT DATA Corporation 1. 膨大なJarや設定ファイルの組み合わせ Jarのバージョン… 食い違ってない? 設定ファイル 多すぎて辛い… 環境依存して ないかこれ… そんなときは…
  • 28.
    28Copyright © 2016NTT DATA Corporation 1. 膨大なJarや設定ファイルの組み合わせ http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/ImplementationAtEachLayer/CreateWebApplicationProject.html
  • 29.
    29Copyright © 2016NTT DATA Corporation 1. 膨大なJarや設定ファイルの組み合わせ • エンタープライズ開発に必要な 各種設定・ライブラリ依存関係が設定済 • Spring IO Platformをベースに、 TERASOLUNAで検証済みのライブラリを 追加 エンタープライズ開発に必要なノウハウを 詰め込んだプロジェクト構成の雛形 「ブランクプロジェクト」を提供
  • 30.
    30Copyright © 2016NTT DATA Corporation ブランクプロジェクトの構成 エンタープライズ開発時に必要になる設定が定義済みの ブランクプロジェクトのarchetypeを提供 環境依存する資材を集約 するプロジェクト アプリケーションレイヤの プロジェクト ドメイン・インフラレイヤの プロジェクト 「4.1.1. 開発プロジェクトの作成」からご覧ください。
  • 31.
    31Copyright © 2016NTT DATA Corporation 依存関係 TERASOLUNA FWが 依存・推奨する ライブラリが定義済
  • 32.
    32Copyright © 2016NTT DATA Corporation (参考)Spring IO Platformとは? https://spring.io/platform
  • 33.
    33Copyright © 2016NTT DATA Corporation (参考)Spring IO Platformとは? http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions
  • 34.
    34Copyright © 2016NTT DATA Corporation (参考)Spring IO Platformとは? https://pivotal.io/agile/press-release/pivotal-releases-spring-io-platform より “With a set of components all tested to work together, it saves weeks of tedious developer efforts to build and test a stack of compatible Spring and third-party technologies, thereby helping enterprises bring new applications to market more rapidly.” Springや3rd-partyテクノロジ間の互換性の ためのテストやビルドへ費やされていた 「何週間にも及ぶ退屈でつまらない労力」 が削減される
  • 35.
    35Copyright © 2016NTT DATA Corporation 2. プロジェクト構成・アプリケーションのレイヤ化 2. プロジェクト構成・ アプリケーションのレイヤ化 1. 膨大なJarや設定ファイルの 組み合わせ 4. セキュリティ対策 3.ソースの品質向上・ 品質維持
  • 36.
    36Copyright © 2016NTT DATA Corporation 2. プロジェクト構成・アプリケーションのレイヤ化 アプリケーションの レイヤリングって、 どうすればいいん だろう あー… なんでこのクラス ここにいるんだ よくみたら 循環参照してる けど今更… そんなときは…
  • 37.
    37Copyright © 2016NTT DATA Corporation 2. プロジェクト構成・アプリケーションのレイヤ化 http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Overview/ApplicationLayering.html
  • 38.
    38Copyright © 2016NTT DATA Corporation 2. プロジェクト構成・アプリケーションのレイヤ化 クラスの種類を3層に分類し、依存関係を束縛
  • 39.
    39Copyright © 2016NTT DATA Corporation 2. プロジェクト構成・アプリケーションのレイヤ化
  • 40.
    40Copyright © 2016NTT DATA Corporation レイヤの依存関係 Domain Layer Application Layer 誤ったレイヤ間の依存関係を 早期に検出できる
  • 41.
    41Copyright © 2016NTT DATA Corporation ブランクプロジェクトの内部構成 Domain Layer Infrastructure Layer
  • 42.
    42Copyright © 2016NTT DATA Corporation ブランクプロジェクトの内部構成 Application Layer
  • 43.
    43Copyright © 2016NTT DATA Corporation ブランクプロジェクトの内部構成 ログ出力設定やデータソース定義など、 ステージング環境によって異なる設定を 本プロジェクトに集約することで、 設定値の置換を容易にしている
  • 44.
    44Copyright © 2016NTT DATA Corporation 3. ソースの品質向上・品質維持 2. プロジェクト構成・ アプリケーションのレイヤ化 1. 膨大なJarや設定ファイルの 組み合わせ 4. セキュリティ対策 3.ソースの品質向上・ 品質維持
  • 45.
    45Copyright © 2016NTT DATA Corporation 3. ソースの品質向上・品質維持 このコード、 Webにのってる やつコピったな… 危険すぎる… DBアクセスも 入力チェックも、 いつも考えるけど ノウハウまとまって ないなぁ… 似たようなことを 前にやったけど、 時間経ちすぎてる しなぁ… そんなときは…
  • 46.
    46Copyright © 2016NTT DATA Corporation 3. ソースの品質向上・品質維持 http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/ArchitectureInDetail/index.html
  • 47.
    47Copyright © 2016NTT DATA Corporation 提供機能 エンタープライズ開発で必要となる 機能を網羅的に解説
  • 48.
    48Copyright © 2016NTT DATA Corporation 解説例 使い方/拡張方法をコードを交えて解説
  • 49.
    Copyright © 2015NTT DATA Corporation 49 ガイドラインの品質確保 エンタープライズ開発で活用してもらうには ガイドラインの品質を確保し続けることが重要 例:ガイドラインのサンプルコードの品質確保 頻繁に更新されるガイドラインや プラットフォームに合わせて コード品質の確認が必要となる ツール(例:Selenium)を活用して 700シナリオ以上の 機能テストを日次で実行する 後方互換の問題を検知し改善 フレームワーク更新の影響として 速やかに周知する ガイドライン更新 テスト自動実行 テスト結果確認 JMeter Gitbucket Selenium Jenkins Vagrant 開発ガイドライン テスト一覧 Test1 Test2 Test3 Test4 OK OK OK NG
  • 50.
    50Copyright © 2016NTT DATA Corporation 4. セキュリティ対策 2. プロジェクト構成・ アプリケーションのレイヤ化 1. 膨大なJarや設定ファイルの 組み合わせ 4. セキュリティ対策 3.ソースの品質向上・ 品質維持
  • 51.
    51Copyright © 2016NTT DATA Corporation 4. セキュリティ対策 ここ最近、脆弱性の ニュースよく聞くし 適当にはできないよ なぁ… セキュリティ機能って どうつくればいいか わからないよ… 非機能も含めて セキュリティ対策 できてるのかな… そんなときは…
  • 52.
    52Copyright © 2016NTT DATA Corporation セキュリティ対策 機能/非機能を網羅した セキュリティ対策方法の提供 http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Security/index.html
  • 53.
    53Copyright © 2016NTT DATA Corporation セキュリティ機能の使い方 セキュリティ機能の使い方を解説 http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/ Security/Authentication.html
  • 54.
    54Copyright © 2016NTT DATA Corporation セキュリティ機能の実現方法 代表的な要件の実現方法についても解説 http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja /Security/SecureLoginDemo.html
  • 55.
    55Copyright © 2016NTT DATA Corporation 非機能面でのセキュリティ対策 http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Introduction/ CriteriaBasedMapping.html
  • 56.
    Copyright © 2016NTT DATA Corporation 56 おわりに
  • 57.
    Copyright © 2015NTT DATA Corporation 57 TERASOLUNA Server Framework for Java (5.x) Development Guideline http://terasolunaorg.github.io/guideline/
  • 58.
    Copyright © 2015NTT DATA Corporation 58 2000page over !! 多種多様なノウハウ集であり、 Springの教科書でもあり、辞典でもある
  • 59.
    59Copyright © 2016NTT DATA Corporation 最後に TERASOLUNA Frameworkに興味がある方は下記までご連絡ください TERASOLUNA窓口 E-mail: terasoluna@kits.nttdata.co.jp 電話: 050-5546-2482(平日10時〜18時) NTTデータは今後もJavaアプリケーション開発の ベストプラクティスをOSSで提供し続けます エンタープライズJavaシステム開発で積極的に活用し、 情報交換やコミュニティ活動を活発化して さらなるJavaの発展、繁栄に向けて共に歩んでいきましょう。
  • 60.
    Copyright © 2011NTT DATA Corporation Copyright © 2016 NTT DATA Corporation 「TERASOLUNA」及びそのロゴは、日本及びその他の国おける株式会社NTTデータの商標または登録商標です。 その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商標です。