Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

7,879 views

Published on

2016年5月21日(土)に実施したJJUG CCC 2016 Springでの講演 Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 の資料です。

Published in: Technology

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

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

×