業務システムで使う
Spring Dynamic Modules
 -Springとモジュールの行方 by OSGi-


    Japan Spring User Group
          こんぴろ
自己紹介
今日のお話の対象者
• Modularityって、なんでうれしいのかいまいち
  よくわからない。
• Spring DMって出てきたけど、どう使うのかよ
  く分からない。




という方です。込み入った話は懇親会で☆
まずは
Spring Dynamic Modulesを
導入すると何がうれしいの?
Spring Dynamic Modulesを
        導入すると何がうれしいの?
                                                                Springを使っ
  ...
Spring Dynamic Modulesを
        導入すると何がうれしいの?
•   Increased Productivity(生産性の向上)
•   Superior User Experience(優れたUX)
•   I...
Spring Dynamic Modulesを
        導入すると何がうれしいの?
•   Increased Productivity(生産性の向上) Springの利点
•   Superior User Experience(優れ...
Spring Dynamic Modulesって何?
• OSGi用のSpringFramework
 • OSGiに載せてモジュール化を促進
 • 移行のためにはOSGiの知識が必要
 →でもSpring DMを使えば学習コストを削減
 →さ...
Spring Dynamic Modulesって何?
• OSGi用のSpringFramework
 • OSGiに載せてモジュール化を促進
 • 移行のためにはOSGiの知識が必要
 →でもSpring DMを使えば学習コストを削減
 →さ...
Spring Dynamic Modulesって何?
• OSGi用のSpringFramework
  • OSGiに載せてモジュール化を促進
 • 移行のためにはOSGiの知識が必要
 →でもSpring DMを使えば学習コストを削減
 →...
なぜModulesを
 Dynamicに
  なのか?
本日のポイント
• Modulesとは?
 – ライブラリは Modules の一つです
 – ソフトウェアをModulesにすると…
   – 構成を理解しやすく、保守しやすい
   – 分業しやすい
– Dynamicとは?
 – Modu...
2009年04月
Qcon Tokyoにて
Qcon Tokyoにて
Spring dm Serverは
未来への投資
By Rod Johnson氏

注:dmはDynamic Modulesの略
2009年08月
JSUG勉強会にて
JSUG勉強会にて
「Modularityを考える-複雑系のアーキテクチャ」




                  by熊澤 公平先生
氏(熊沢先生)
   曰く
モジュール化は
大変な仕事
ネジですら400年かかった
簡単にはできるわけがない
大変な仕事
 ネジですら400年かかった
簡単にはできるわけがない
それじゃ
自分達の開発の現場で
モジュール化は使えないのか?
否
自分達の現場で使う
  モジュール
それがRod氏の言う
 未来への投資
 だと思います。
熊沢さんも
モジュール化に対し大きく3点
   指摘していました。
現場でモジュール化を活用する
 なら、そのうち2つが大事
子(熊沢先生)
   曰く
モジュール化は
大変な仕事
   1.モジュールとして機能する
2.モジュールとして認められる(標準化)
大変な仕事
   1.モジュールとして機能する
2.モジュールとして認められる(標準化)
大変な仕事
   1.モジュールとして機能する
2.モジュールとして認められる(標準化)

      また、
モジュールを作るならば
モジュール間でイノベーションの差が
   激しいところで分割する
モジュールを作るならば
  イノベーションの差が
 激しいところで分割する
モジュール化についての私見
• モジュールとして機能する単位で
• モジュールはイノベーションの差が激しいとこ
  ろで分割する

• モジュールの標準化を目指さない
→(最初はプロジェクトに閉じる)

これならモジュール化が進められる
   ...
それじゃ、
そもそも
モジュール化って
 なんだっけ?
モジュール化とは?

オブジェクト指向をもう一歩進め、抽象的
 に物事を扱えるようにしたものです。(私見)


   歴史をひもとくと
   理解できます。
ソフトウェアの抽象化の歴史(1)
• ソフトウェアは何でできているか?
 – 極論すると0と1の2値で表現されます。
ソフトウェアの抽象化の歴史(2)
• ソフトウェアは何でできているか?
 – 極論すると0と1の2値で表現されます。
 – メモリに書き込む段階で2値表現は扱い辛いので
   16進値(01FF等)で扱われます。
ソフトウェアの抽象化の歴史(3)
• ソフトウェアは何でできているか?
 – 極論すると0と1の2値で表現されます。
 – メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で
   扱われます。
 – CPUの命令セットは16...
ソフトウェアの抽象化の歴史(4)
• ソフトウェアは何でできているか?
 – 極論すると0と1の2値で表現されます。
 – メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で扱われます。
 – CPUの命令セットは16進値に対...
ソフトウェアの抽象化の歴史(5)
• ソフトウェアは何でできているか?




ソフトウェアの抽象化とは、より大きなまとまりに
対して人が認識するために名前をつける。
Q.抽象化が必要な理由は何ですか?
• A.ソフトウェアで扱う概念や構造がどんどん
  大きくなっているから




                  By Phillip Capper
XML地獄という言葉がありました…。




XMLを適切な単位で分割できない…。
      でも今はそれももう過去の話です。
                 By karmablue
Q.なぜ分割できるとうれしいの?
A.人が認識できる大きさや量には限りがありま
  す。システムをモジュールに分割することでモ
  ジュール→パッケージ→クラス…と言うように
  探索しやすくしているのです。
オブジェクト指向の次の一歩
• システムを適当な大きさで分割して名前付け
 Left.tower   gate   wall    Right.tower




                            →それがモジュール化
例えば機能単位でまとめて再利用
• 機能を抽出し、配布
• 機能要件が同じ場合に利用




→これっていわゆるライブラリ?

                  By Auntie P
そうです。ライブラリは
モジュールの一種です。
ライブラリの利点
• ライブラリは開発を分離できる
→ライブラリが公開するIFの変更に気をつけれ
  ば開発速度を上げられる
• ライブラリは責任が明確
→物理的な境界があるので障害の切分けが楽
• ライブラリごとにバージョンを管理
→障害のラ...
ライブラリの利点は
そのままモジュールの利点です。
モジュールの利点
• モジュールごとに開発を分離できる
→モジュールが公開するIFの変更に気をつけ
  れば開発速度を上げられる
• モジュールごとの責任が明確
→物理的な境界があるので障害の切分けが楽
• モジュールごとにバージョンを管理
→...
実はSpringはModulesに分割済み
   これってライブラリでしょ?
•Spring-aop
•Spring-aspects
•Spring-beans
•Spring-context
•Spring-core
•…
•Spring-O...
FAQ.ModulesとComponent
      どう違うんですか?
A.大抵の場合、どちらもシステムを分割した構
  成要素とという、概念を指しています。




           言語仕様とかで定義された用語でなければ…
Q.なんでModulesをDynamicに
      する必要があるの?
• ライブラリの組み合わせでは新しいサービス
  を追加できない。
• 瓶を並べるだけじゃ機能の注入は難しい




• A.Modulesの追加でサービスを追加したい
Modulesの追加でサービスを追加と
        は?
例えば




追加するだけでサービスを増やせる
ModulesをDynamicにするとは?
 -SpringDMではどうなっているの?-


                   OSGiの場合、
                   Moduleを
                   B...
Spring DM対応の
         Bundleにするには
1. プロジェクトを適切な機能で分割
2. 依存関係をMANIFEST.MFに記述
 ×クラスパスでの解決
 ○Import-packageでの解決
3. applicatio...
MANIFEST.MFの例
Q.DynamicなModuleを組み合わせる
        と何ができるの?
A.モジュールの組み合わせで新製品開発




       夢のようですが、現実★です。
ゆえに
DynamicなModuleの構成は、
  アプリケーションのSOAと
  言われることもあります。
OSGiの補足
• モダンな商用APサーバは大抵OSGiをサポ
  ートしてます。
• Oracle WebLogic
• Remoteのモジュールを読み込むr-OSGiと言
  う仕様もあります。
• RMI等とは違って特殊な例外を使わない、...
まとめ
Modulesとは?

• ライブラリは Modules の一つ
• ソフトウェアをModulesに分割すると…
 – 構成を理解しやすい
 – 保守しやすい
 – 分業しやすい
 – 機能追加しやすい
Dynamicとは?
• モジュール間を動的に接続
 • 起動している間のモジュールの追加/削除も
 • 新しいサービスを追加できる
 • サービスの更新もお手の物
• モジュールを組み合わせて新しいシステム
今日話さなかったこと
• Spring DMの仕様詳細
 • http://static.springsource.org/osgi/docs/1.2.0/reference/html/

• ソフトウェアモジュールの標準化
 • 仕様→実装(...
質問はございますか?

Does anyone have questions?
ご清聴ありがとうございました
ライセンスについて
•   JSUGマスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれを
    元にした派生作品)の複製・頒布・表示・上演を認めます。

•   非商用目的に限り、本作品(またそれを元にした派生作品...
Upcoming SlideShare
Loading in …5
×

業務システムで使うSpring Dynamic Modules

2,478 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,478
On SlideShare
0
From Embeds
0
Number of Embeds
262
Actions
Shares
0
Downloads
25
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

業務システムで使うSpring Dynamic Modules

  1. 1. 業務システムで使う Spring Dynamic Modules -Springとモジュールの行方 by OSGi- Japan Spring User Group こんぴろ
  2. 2. 自己紹介
  3. 3. 今日のお話の対象者 • Modularityって、なんでうれしいのかいまいち よくわからない。 • Spring DMって出てきたけど、どう使うのかよ く分からない。 という方です。込み入った話は懇親会で☆
  4. 4. まずは
  5. 5. Spring Dynamic Modulesを 導入すると何がうれしいの?
  6. 6. Spring Dynamic Modulesを 導入すると何がうれしいの? Springを使っ て開発 へのSpringの導入レポートより http://www.springsource.com/files/uploads/datasheets/Linkedin-Case-Study.pdf
  7. 7. Spring Dynamic Modulesを 導入すると何がうれしいの? • Increased Productivity(生産性の向上) • Superior User Experience(優れたUX) • Improved Application Quality(品質の改善) • Focus on Business Logic(ビジネスロジックに注力) • Easier Migration to OSGi(OSGiへの移行が簡単) へのSpringの導入レポートより http://www.springsource.com/files/uploads/datasheets/Linkedin-Case-Study.pdf
  8. 8. Spring Dynamic Modulesを 導入すると何がうれしいの? • Increased Productivity(生産性の向上) Springの利点 • Superior User Experience(優れたUX) • Improved Application Quality(品質の改善) • Focus on Business Logic(ビジネスロジックに注力) • Easier Migration to OSGi(OSGiへの移行が簡単) SpringDM の利点 へのSpringの導入レポートより http://www.springsource.com/files/uploads/datasheets/Linkedin-Case-Study.pdf
  9. 9. Spring Dynamic Modulesって何? • OSGi用のSpringFramework • OSGiに載せてモジュール化を促進 • 移行のためにはOSGiの知識が必要 →でもSpring DMを使えば学習コストを削減 →さらにPOJOを保てるのでテストしやすい →とLinkedInのレポートに書かれてました。
  10. 10. Spring Dynamic Modulesって何? • OSGi用のSpringFramework • OSGiに載せてモジュール化を促進 • 移行のためにはOSGiの知識が必要 →でもSpring DMを使えば学習コストを削減 →さらにPOJOを保てるのでテストしやすい →とLinkedInのレポートに書かれてました。
  11. 11. Spring Dynamic Modulesって何? • OSGi用のSpringFramework • OSGiに載せてモジュール化を促進 • 移行のためにはOSGiの知識が必要 →でもSpring DMを使えば学習コストを削減 →さらにPOJOを保てるのでテストしやすい →とLinkedInのレポートに書かれてました
  12. 12. なぜModulesを Dynamicに なのか?
  13. 13. 本日のポイント • Modulesとは? – ライブラリは Modules の一つです – ソフトウェアをModulesにすると… – 構成を理解しやすく、保守しやすい – 分業しやすい – Dynamicとは? – Modules間を動的に接続すること – ModulesをDynamicにすると… サービスをModulesから動的に注入できます
  14. 14. 2009年04月 Qcon Tokyoにて
  15. 15. Qcon Tokyoにて Spring dm Serverは 未来への投資 By Rod Johnson氏 注:dmはDynamic Modulesの略
  16. 16. 2009年08月 JSUG勉強会にて
  17. 17. JSUG勉強会にて 「Modularityを考える-複雑系のアーキテクチャ」 by熊澤 公平先生
  18. 18. 氏(熊沢先生) 曰く
  19. 19. モジュール化は
  20. 20. 大変な仕事 ネジですら400年かかった 簡単にはできるわけがない
  21. 21. 大変な仕事 ネジですら400年かかった 簡単にはできるわけがない
  22. 22. それじゃ
  23. 23. 自分達の開発の現場で モジュール化は使えないのか?
  24. 24.
  25. 25. 自分達の現場で使う モジュール
  26. 26. それがRod氏の言う 未来への投資 だと思います。
  27. 27. 熊沢さんも モジュール化に対し大きく3点 指摘していました。
  28. 28. 現場でモジュール化を活用する なら、そのうち2つが大事
  29. 29. 子(熊沢先生) 曰く
  30. 30. モジュール化は
  31. 31. 大変な仕事 1.モジュールとして機能する 2.モジュールとして認められる(標準化)
  32. 32. 大変な仕事 1.モジュールとして機能する 2.モジュールとして認められる(標準化)
  33. 33. 大変な仕事 1.モジュールとして機能する 2.モジュールとして認められる(標準化) また、
  34. 34. モジュールを作るならば モジュール間でイノベーションの差が 激しいところで分割する
  35. 35. モジュールを作るならば イノベーションの差が 激しいところで分割する
  36. 36. モジュール化についての私見 • モジュールとして機能する単位で • モジュールはイノベーションの差が激しいとこ ろで分割する • モジュールの標準化を目指さない →(最初はプロジェクトに閉じる) これならモジュール化が進められる と僕は思ったのです。
  37. 37. それじゃ、
  38. 38. そもそも モジュール化って なんだっけ?
  39. 39. モジュール化とは? オブジェクト指向をもう一歩進め、抽象的 に物事を扱えるようにしたものです。(私見) 歴史をひもとくと 理解できます。
  40. 40. ソフトウェアの抽象化の歴史(1) • ソフトウェアは何でできているか? – 極論すると0と1の2値で表現されます。
  41. 41. ソフトウェアの抽象化の歴史(2) • ソフトウェアは何でできているか? – 極論すると0と1の2値で表現されます。 – メモリに書き込む段階で2値表現は扱い辛いので 16進値(01FF等)で扱われます。
  42. 42. ソフトウェアの抽象化の歴史(3) • ソフトウェアは何でできているか? – 極論すると0と1の2値で表現されます。 – メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で 扱われます。 – CPUの命令セットは16進値に対応し、より人が扱 いやすいアセンブラ(機械語)で扱われます。
  43. 43. ソフトウェアの抽象化の歴史(4) • ソフトウェアは何でできているか? – 極論すると0と1の2値で表現されます。 – メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で扱われます。 – CPUの命令セットは16進値に対応し、より人が扱いやすいアセンブラ(機械語)で扱わ れます。 – アセンブラのまとまった処理やアドレスに対し、ラベルをつけ、関数や変数として扱う高 級言語が登場。 – パッケージやクラス(オブジェクト指向)は、概念を 認識しやすくするために登場したものです。
  44. 44. ソフトウェアの抽象化の歴史(5) • ソフトウェアは何でできているか? ソフトウェアの抽象化とは、より大きなまとまりに 対して人が認識するために名前をつける。
  45. 45. Q.抽象化が必要な理由は何ですか? • A.ソフトウェアで扱う概念や構造がどんどん 大きくなっているから By Phillip Capper
  46. 46. XML地獄という言葉がありました…。 XMLを適切な単位で分割できない…。 でも今はそれももう過去の話です。 By karmablue
  47. 47. Q.なぜ分割できるとうれしいの? A.人が認識できる大きさや量には限りがありま す。システムをモジュールに分割することでモ ジュール→パッケージ→クラス…と言うように 探索しやすくしているのです。
  48. 48. オブジェクト指向の次の一歩 • システムを適当な大きさで分割して名前付け Left.tower gate wall Right.tower →それがモジュール化
  49. 49. 例えば機能単位でまとめて再利用 • 機能を抽出し、配布 • 機能要件が同じ場合に利用 →これっていわゆるライブラリ? By Auntie P
  50. 50. そうです。ライブラリは モジュールの一種です。
  51. 51. ライブラリの利点 • ライブラリは開発を分離できる →ライブラリが公開するIFの変更に気をつけれ ば開発速度を上げられる • ライブラリは責任が明確 →物理的な境界があるので障害の切分けが楽 • ライブラリごとにバージョンを管理 →障害のライフサイクルをバージョンで管理
  52. 52. ライブラリの利点は そのままモジュールの利点です。
  53. 53. モジュールの利点 • モジュールごとに開発を分離できる →モジュールが公開するIFの変更に気をつけ れば開発速度を上げられる • モジュールごとの責任が明確 →物理的な境界があるので障害の切分けが楽 • モジュールごとにバージョンを管理 →障害のライフサイクルも管理
  54. 54. 実はSpringはModulesに分割済み これってライブラリでしょ? •Spring-aop •Spring-aspects •Spring-beans •Spring-context •Spring-core •… •Spring-ORM •Spring-MVC JAR:プロジェクトが1:1
  55. 55. FAQ.ModulesとComponent どう違うんですか? A.大抵の場合、どちらもシステムを分割した構 成要素とという、概念を指しています。 言語仕様とかで定義された用語でなければ…
  56. 56. Q.なんでModulesをDynamicに する必要があるの? • ライブラリの組み合わせでは新しいサービス を追加できない。 • 瓶を並べるだけじゃ機能の注入は難しい • A.Modulesの追加でサービスを追加したい
  57. 57. Modulesの追加でサービスを追加と は? 例えば 追加するだけでサービスを増やせる
  58. 58. ModulesをDynamicにするとは? -SpringDMではどうなっているの?- OSGiの場合、 Moduleを Bundleと呼びます
  59. 59. Spring DM対応の Bundleにするには 1. プロジェクトを適切な機能で分割 2. 依存関係をMANIFEST.MFに記述 ×クラスパスでの解決 ○Import-packageでの解決 3. application-context.xmlを分割 4. 分割したXMLをMETA-INFに配置 1. 名前での明示(springで始まる か *.xml) 2. ヘッダーにSpring-Contextと明示
  60. 60. MANIFEST.MFの例
  61. 61. Q.DynamicなModuleを組み合わせる と何ができるの? A.モジュールの組み合わせで新製品開発 夢のようですが、現実★です。
  62. 62. ゆえに
  63. 63. DynamicなModuleの構成は、 アプリケーションのSOAと 言われることもあります。
  64. 64. OSGiの補足 • モダンな商用APサーバは大抵OSGiをサポ ートしてます。 • Oracle WebLogic • Remoteのモジュールを読み込むr-OSGiと言 う仕様もあります。 • RMI等とは違って特殊な例外を使わない、 POJOスタイルを保てます。
  65. 65. まとめ
  66. 66. Modulesとは? • ライブラリは Modules の一つ • ソフトウェアをModulesに分割すると… – 構成を理解しやすい – 保守しやすい – 分業しやすい – 機能追加しやすい
  67. 67. Dynamicとは? • モジュール間を動的に接続 • 起動している間のモジュールの追加/削除も • 新しいサービスを追加できる • サービスの更新もお手の物 • モジュールを組み合わせて新しいシステム
  68. 68. 今日話さなかったこと • Spring DMの仕様詳細 • http://static.springsource.org/osgi/docs/1.2.0/reference/html/ • ソフトウェアモジュールの標準化 • 仕様→実装(JSR等)、実装→仕様 (Spring→blueprint spec) • モジュールを統合したテスト手法
  69. 69. 質問はございますか? Does anyone have questions?
  70. 70. ご清聴ありがとうございました
  71. 71. ライセンスについて • JSUGマスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれを 元にした派生作品)の複製・頒布・表示・上演を認めます。 • 非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・上演を認 めます。 • 本作品のライセンスを遵守する限り、派生作品を頒布することを許可します。 Qcon Tokyoでの写真は櫻庭祐一さんによるものです。

×