SlideShare une entreprise Scribd logo
1  sur  83
Télécharger pour lire hors ligne
成長できるエンタープライズシ
ステムを目指して
OSGi によるモジュール型アーキテクチャの実現



 19-C-3                近藤寛喜
                       株式会社チェンジビジョン
                       開発部


        Developers Summit 2010
自己紹介
アジェンダ

•   システムを継続的に成長させるには?
•   OSGiとは?
•   Bundle設計の六個の勘どころ
•   デモ
•   OSGiがもたらす未来




         Developers Summit 2010
一.システムを持続的に
  成長させるには?




   Developers Summit 2010
システムはそもそも複雑なもの




    http://www.flickr.com/photos/adc/411821495/
複雑なシステムを
わかりやすく構築するには
 どうしたらよいですか?

    Developers Summit 2010
複雑なシステム
を構成するには
複雑性を軽減す
る仕組みが必要
オブジェクト指向も、構造化設計も
 複雑性を軽減させる仕組み




   http://www.flickr.com/photos/procsilas/392877509/
•例: Eclipse

高い成長性を維持




         Developers Summit 2010
Eclipseの成長の要因の一つは、

モジュール型アーキテクチャ
           にある




      Developers Summit 2010
モジュール型アーキテクチャ
    http://www.flickr.com/photos/37hz/1247083341/
スモールイズビューティフル




   http://www.flickr.com/photos/mdpettitt/2665598298/
スモールイズビューティフル

•   柔軟な構成を取れる
•   保守しやすい
•   理解が簡単
•   再利用しやすい
•   … 等々




         Developers Summit 2010
普通の Java だったら・・・
http://www.flickr.com/photos/morberg/3146874095/
Q.JARで
モジュールシステムを構成
   できないの?


    Developers Summit 2010
A.できないことはないです。
でもモジュールとして維持するのが
        大変。



     Developers Summit 2010
Java のクラスロードモデル
   依存         拡張                       ブート
            クラスローダ                   クラスローダ
  JAR


         アプリケーションクラスローダ

          A             B            C


                                         G
        D
                        E        F

        Developers Summit 2010
つまり・・・

 • JARをモジュールとして分離し、再利用
 • →必要なJARが無い
 • →ClassNotFoundExceptionでクラッシュ

 JARには暗黙的な依存関係が存在




          Developers Summit 2010
JARは依存する
JARの情報を持
っていません
アプリケーション
             クラスローダの中
http://www.flickr.com/photos/shareski/3481154470/
APPクラスロー
ダでは変更した
時の影響範囲が
分かりません
再利用の二つの軸



   空間軸
  ( 機能 : ライブラリ等 )




              時間軸
             Developers Summit 2010
成長するシステ
ムとは時間軸で
の再利用ができ
るシステムの事
新しい要件に対
応する度にシス
テムを全部更新
をしますよね?
規模が大きくな
るにつれ、どう
なっていきます
か?
システムを全部
更新する=影響
が分からないの
で全テスト
ごちゃごちゃのシステム




  http://www.flickr.com/photos/joiseyshowaa/2402764792/
見通しよく整理する




  http://www.flickr.com/photos/cheltenham/4100341188/
システムを分割
し、影響範囲を
限定するため独
立させたい
依存情報があれ
ば、依存情報か
らテスト範囲を
限定できます
どうやって?




   http://www.flickr.com/photos/oddwick/1765661986/
•Eclipse の例

プロジェクト間の独立性と
依存関係の整理がキー




        Developers Summit 2010
まとめ:
複雑なシステム
→小さく・独
立・組み合わせ
  Developers Summit 2010
モジュール型システムの問題

•   開発コスト
     –   意識しない時の3倍
          •   独立性の担保
          •   依存関係の整理
•   規模が小さい時は×
    →例:設計したら1モジュール


    使うべき場所を
    見誤らないように                            宮本武蔵・五輪書より
                                        武器や流派にこだわるな
               Developers Summit 2010
二.OSGiとは?




      Developers Summit 2010
OSGi とは

•   Open Service Gateway initiativeの略
•   「オープンなサービスゲートウェイの推進」
•   Dynamic Module Systems for Java
•   Javaのための動的なモジュールシステム




             Developers Summit 2010
OSGi とは




          黒船来航
増える OSGi の利用例




  •   King of Java Application's infrastructure
                      •        By Neil Bartlett
             Developers Summit 2010
どんなところで有効なの?

•   継続して成長させたいシステム
    –   ツール
    –   Webサービス
    –   エンタープライズシステム
•   お客さん毎に違う機能セットを提供したい
    –   パッケージのカスタム
•   プラグインシステムを提供したい

           Developers Summit 2010
OSGi の 3 大要素
モジュールシステム
サービス連携
動的 ( Dynamic )
      http://www.flickr.com/photos/yourdon/2921734152/
OSGi の 3 大要素
モジュールシステム
サービス連携
動的 (Dynamic)
     http://www.flickr.com/photos/yourdon/2921734152/
OSGiを使って
モジュールシステムを構築すると、
クラスローダの関係はこうなります。




     Developers Summit 2010
OSGi のクラスロードモデル
                               System         G




                 A                 B          C


JAR+メタデータ
• Bundle(バンドル)     D               E      F




                 Developers Summit 2010
利点

•   依存するBundleごと他のシステムへ
    –   →Eclipseのプラグインのインストール


•   依存の宣言がないBundle同士は分離
•   →Bundle内の変更が他に影響しにくい
•   →Bundleごとに独立できる


             Developers Summit 2010
Bundle =   JAR + メタデータ
今まで通りの環境でも使える



             Developers Summit 2010
欠点

•   独自のクラスロード構造
     –   Class.forName()が使えない
     –   →クラスローダが異なるクラスは読めない
     –   リソースが読めない
     –   →クラスローダが(同上)         System G
•   対処法:
                                       A   B       C
•   →クラスローダの入れ替え
                                       D   E   F
              Developers Summit 2010
OSGi のメタデータの
書き方一例
META-INF/MANIFEST.MFに記述
 シンボル名:Bundle-SymbolicName
 バージョン:Bundle-Version
 依存関係
  必要なパッケージ:Import-Package
  公開パッケージ:Export-Package


          Developers Summit 2010
OSGi メタデータの
一例




      Developers Summit 2010
メタデータがあるので・・・

•   パッケージによる公開・非公開の制御
•   JARに必要なパッケージの宣言
•   →パッケージを公開しているJAR必要
•   →依存関係を定義できる




         Developers Summit 2010
依存の定義方法

•   パッケージによる依存定義
    –   Import-Package
•   Bundleによる依存定義
    –   Require-Bundle
•   それぞれ依存するバージョンを範囲で指
    定



              Developers Summit 2010
バージョン (1)
定義方法
•   Mavenとはちょっと違うバージョン定義
•   メジャー.マイナー.パッチ.識別子
    –例:1.2.0.beta1
•   識別子には文字列が使える
    –ただし、識別子がついている方が上位として認識
    –例:1.2.0よりも、1.2.0.beta1の方が上位
•   定義されていない場合は0.0.0


               Developers Summit 2010
バージョン (2)
範囲指定
•   「開区間」、「閉区間」、「暗黙」の3種
•   [1.0.0, 2.0.0] → 1.0.0 ≦バージョン
    ≦2.0.0
•   [1.0.0, 2.0.0) → 1.0.0 ≦バージョン<
    2.0.0
•   バージョン “1.*” を指す
•   1 → [1.0.0, ∞)
•   未指定 → [0.0.0, ∞)
             Developers Summit 2010
バージョンの異なる
JAR への依存
•   java -cp a.jar b.jar c.jar a_v2.jar
•   (通常フラットなクラスパスの場合)

     app                  Ext                Boot




       a            b                    c      a2


先に宣言された JAR で解決 Developers Summit 2010
バージョンの異なる
Bundle への依存
 •   OSGi環境下の場合
System           app                     Ext        Boot



             a                          a2


         b                                      c

宣言された Bundle で解決
                       Developers Summit 2010
OSGi の 3 大要素
モジュールシステム
動的 (Dynamic)
サービス連携
     http://www.flickr.com/photos/yourdon/2921734152/
Declartive Service
( サービスの宣言 : 利用側 )
 •   一部抜粋




            Developers Summit 2010
Declartive Service
( サービスの宣言:提供側 )
 •   一部抜粋




            Developers Summit 2010
Declartive Service
( サービスの宣言 )
 •   Consumer(要求側)とProvider(供給側)
 •   Consumerは、必要なIFを宣言
 •   Providerは供給できるIFと、実装を宣言

 •   特別なIF、アノテーションは不要




            Developers Summit 2010
Declarative Service
( サービスの宣言 )
 •   実装間で相互運用可
     –   Declarative Service(XML/Annotation)
     –   Blueprint Service(Spring DM/Aries)
     –   Google Guice Peaberry
     –   iPOJO




               Developers Summit 2010
OSGi の 3 大要素
モジュールシステム
サービス連携
動的 (Dynamic)
     http://www.flickr.com/photos/yourdon/2921734152/
Dynamic

•   稼働中にBundleの構成を変更できる
•   →install,update,uninstall,start,stop,refresh
•   必要になったBundleを更新

•   →こんな事ができるのは、Bundleごとに独立
    してるからこそ。


                  Developers Summit 2010
四.Bundle設計の六つの勘どころ




      Developers Summit 2010
Bundle 設計の勘どころ
一 . 大きくしすぎない
•   大きくなったら分割を検討
•   →複数の役目を担当?
•   →新機能のためにライブラリ追加?
•   これらは大きくなる兆候です。




         Developers Summit 2010
Bundle 設計の勘どころ
二 . 登録サービスを限定
•   複数のサービスを登録
•   →Bundleが複数の責務を担っている
•   Bundleが大きくなる兆候
•   Bundleを小さくするために
•   →登録サービスは限定する




         Developers Summit 2010
Bundle 設計の勘どころ
三 . 役割を明確に
•   3種別のBundle(by うじょさん)
•   API Bundle → インタフェースのみ
•   Library Bundle → これまでのJAR
•   Service Bundle → サービス登録/利用

•   その他
     – Mock Bundle → API Bundleを空実装


             Developers Summit 2010
Bundle 設計の勘どころ
四 . 公開パッケージを限定する
•   他のBundle開発中の、間違えを防ぐ
    –   不要な依存を増やしやすい。
    –   依存が増える→独立性が悪化
    –   変更による影響を及ぼしやすくする。

非公開パッケージ名の規約として、パ
ッケージ名を”*.internal.*”と明示


           Developers Summit 2010
Bundle 設計の勘どころ
五 .Bundle= 独立したシステム
•    隣の芝生は青い
•    システムまたげばDRYは通用せず
    – 非公開クラスを利用
    – →コピーを検討
    – →別途Bundleにする
    – 良い垣根は良いお隣さんを育む
    – By Jeff Mcaffer

          Developers Summit 2010
Bundle 設計の勘どころ
六 .Bundle をまたいだ継承、
静的参照は ×
•   期待した通りに動作しない事が多いです。
•   →デモ作成でハマりました。
•   →思い返すといい思い出がありません。
     – →publicなのに、参照できず落ちる
•   →やろうと思えばやれる=バッドノウハウ




          Developers Summit 2010
Bundle 設計の勘どころ
まとめ
•   一.大きくしすぎない
•   二.登録サービスを限定                   小さい
•   三.種別毎に分割する
•   四.公開パッケージを限定
•   五.Bundle=独立したシステム
                                  独立
•   六.不要な継承、静的参照はしない


         Developers Summit 2010
まとめ:
複雑なシステム
→小さく・独
立・組み合わせ
  Developers Summit 2010
四.デモ
 Developers Summit 2010
こんぴろ書店 ( デブサミ支店 )
•     書籍登録
•     書籍検索
•     それぞれ別々のBundleで開発


    動的に切り替えます。Bundleが
    独立している事を実感してください。
    (開発環境:Spring DM(1.2.1)+Maven)
    http://github.com/kompiro/osgi-demo-bookstore.git
                        Developers Summit 2010
初期構成
                            web.
  books.                             web
                           admin
  domain



           books

                                           依存
books
mock                                       サービス
                        System             提供



            Developers Summit 2010
一 .mock から impl に
                                web.
   books.                                web
                               admin
   domain



 books      books     books
 mock                   2
                                               依存
 books
                                               サービス
  impl                      System             提供



                Developers Summit 2010
二 .mock と impl を共存
( システムの一部が旧バージョン )
                                web.
   books.                                web
                               admin
   domain



 books      books     books
 mock                   2
                                               依存
 books
                                               サービス
  impl                      System             提供



                Developers Summit 2010
五.OSGiがもたらす未来




   Developers Summit 2010
Polyglot( 多言語 )OSGi
                      System          G




        A                 B           C



        JRuby          Scala     Groovy




        Developers Summit 2010
必要なサービスを必要な時に




   システムが能動的に取得
     Developers Summit 2010
参考文献




       Developers Summit 2010
本日盛り込まなかった内容

•   標準化
•   スクリプト言語との対応
•   実装毎の細かな差異
•   具体的なテスト方法(UnitTest等)




           Developers Summit 2010
まとめ:
複雑なシステム
→小さく・独
立・組み合わせ
  Developers Summit 2010
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-

Contenu connexe

Tendances

1st step LogicFlow
1st step LogicFlow1st step LogicFlow
1st step LogicFlowTomoyuki Obi
 
Windows Server Community Meetup#1 : Windows Server 2019 networking update
Windows Server Community Meetup#1 : Windows Server 2019 networking updateWindows Server Community Meetup#1 : Windows Server 2019 networking update
Windows Server Community Meetup#1 : Windows Server 2019 networking updatewind06106
 
XPagesジャンプスタート
XPagesジャンプスタートXPagesジャンプスタート
XPagesジャンプスタートMitsuru Katoh
 
N211 sc12 sp1概要_osamut_公開版
N211 sc12 sp1概要_osamut_公開版N211 sc12 sp1概要_osamut_公開版
N211 sc12 sp1概要_osamut_公開版Osamu Takazoe
 
Windows Server 2008 / R2とWindows Admin CenterとAzure Site Recovery
Windows Server 2008 / R2とWindows Admin CenterとAzure Site RecoveryWindows Server 2008 / R2とWindows Admin CenterとAzure Site Recovery
Windows Server 2008 / R2とWindows Admin CenterとAzure Site RecoveryNorio Sashizaki
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-guestc4549
 
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021Norio Sashizaki
 
Flex開発を加速するFlash Builder 4新機能紹介
Flex開発を加速するFlash Builder 4新機能紹介Flex開発を加速するFlash Builder 4新機能紹介
Flex開発を加速するFlash Builder 4新機能紹介Keisuke Todoroki
 
Interact 2019:Microsoft SDN v2 よもやま話
Interact 2019:Microsoft SDN v2 よもやま話Interact 2019:Microsoft SDN v2 よもやま話
Interact 2019:Microsoft SDN v2 よもやま話wind06106
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflowTomoyuki Obi
 
Nano Server First Step
Nano Server First StepNano Server First Step
Nano Server First StepKazuki Takai
 
Windows Admin Center 2103.2 and Windows Admin Center on Azure
Windows Admin Center 2103.2 and Windows Admin Center on AzureWindows Admin Center 2103.2 and Windows Admin Center on Azure
Windows Admin Center 2103.2 and Windows Admin Center on AzureNorio Sashizaki
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1hideaki honda
 
XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!Atsushi Sato
 
Windows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 Story
Windows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 StoryWindows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 Story
Windows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 StoryNorio Sashizaki
 
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成Takashi Kanai
 
これぞ最強!? Windows Virtual Desktop の使い方
これぞ最強!? Windows Virtual Desktop の使い方これぞ最強!? Windows Virtual Desktop の使い方
これぞ最強!? Windows Virtual Desktop の使い方Takashi Ushigami
 
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験するIBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験するMasaya Fujita
 
Windows Admin Center -Project Honolulu改め-
Windows Admin Center -Project Honolulu改め-Windows Admin Center -Project Honolulu改め-
Windows Admin Center -Project Honolulu改め-Norio Sashizaki
 

Tendances (20)

1st step LogicFlow
1st step LogicFlow1st step LogicFlow
1st step LogicFlow
 
Windows Server Community Meetup#1 : Windows Server 2019 networking update
Windows Server Community Meetup#1 : Windows Server 2019 networking updateWindows Server Community Meetup#1 : Windows Server 2019 networking update
Windows Server Community Meetup#1 : Windows Server 2019 networking update
 
XPagesジャンプスタート
XPagesジャンプスタートXPagesジャンプスタート
XPagesジャンプスタート
 
N211 sc12 sp1概要_osamut_公開版
N211 sc12 sp1概要_osamut_公開版N211 sc12 sp1概要_osamut_公開版
N211 sc12 sp1概要_osamut_公開版
 
Windows Server 2008 / R2とWindows Admin CenterとAzure Site Recovery
Windows Server 2008 / R2とWindows Admin CenterとAzure Site RecoveryWindows Server 2008 / R2とWindows Admin CenterとAzure Site Recovery
Windows Server 2008 / R2とWindows Admin CenterとAzure Site Recovery
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
 
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021
 
Flex開発を加速するFlash Builder 4新機能紹介
Flex開発を加速するFlash Builder 4新機能紹介Flex開発を加速するFlash Builder 4新機能紹介
Flex開発を加速するFlash Builder 4新機能紹介
 
Interact 2019:Microsoft SDN v2 よもやま話
Interact 2019:Microsoft SDN v2 よもやま話Interact 2019:Microsoft SDN v2 よもやま話
Interact 2019:Microsoft SDN v2 よもやま話
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
 
Nano Server First Step
Nano Server First StepNano Server First Step
Nano Server First Step
 
Windows Admin Center 2103.2 and Windows Admin Center on Azure
Windows Admin Center 2103.2 and Windows Admin Center on AzureWindows Admin Center 2103.2 and Windows Admin Center on Azure
Windows Admin Center 2103.2 and Windows Admin Center on Azure
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1
 
XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!
 
Windows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 Story
Windows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 StoryWindows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 Story
Windows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 Story
 
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
 
HCL Domino REST API 利用ガイド
HCL Domino REST API 利用ガイドHCL Domino REST API 利用ガイド
HCL Domino REST API 利用ガイド
 
これぞ最強!? Windows Virtual Desktop の使い方
これぞ最強!? Windows Virtual Desktop の使い方これぞ最強!? Windows Virtual Desktop の使い方
これぞ最強!? Windows Virtual Desktop の使い方
 
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験するIBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
 
Windows Admin Center -Project Honolulu改め-
Windows Admin Center -Project Honolulu改め-Windows Admin Center -Project Honolulu改め-
Windows Admin Center -Project Honolulu改め-
 

En vedette

Javaにおけるモジュラリティ元年
Javaにおけるモジュラリティ元年Javaにおけるモジュラリティ元年
Javaにおけるモジュラリティ元年Hiroki Kondo
 
How the Bosch Group is making use of OSGi for IoT - Kai Hackbarth
How the Bosch Group is making use of OSGi for IoT - Kai HackbarthHow the Bosch Group is making use of OSGi for IoT - Kai Hackbarth
How the Bosch Group is making use of OSGi for IoT - Kai Hackbarthmfrancis
 
Internet of Things with Bosch: From Concept to Code
Internet of Things with Bosch: From Concept to CodeInternet of Things with Bosch: From Concept to Code
Internet of Things with Bosch: From Concept to CodeMongoDB
 
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...mfrancis
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!bitter_fox
 

En vedette (6)

Javaにおけるモジュラリティ元年
Javaにおけるモジュラリティ元年Javaにおけるモジュラリティ元年
Javaにおけるモジュラリティ元年
 
なぜ今OSGiか
なぜ今OSGiかなぜ今OSGiか
なぜ今OSGiか
 
How the Bosch Group is making use of OSGi for IoT - Kai Hackbarth
How the Bosch Group is making use of OSGi for IoT - Kai HackbarthHow the Bosch Group is making use of OSGi for IoT - Kai Hackbarth
How the Bosch Group is making use of OSGi for IoT - Kai Hackbarth
 
Internet of Things with Bosch: From Concept to Code
Internet of Things with Bosch: From Concept to CodeInternet of Things with Bosch: From Concept to Code
Internet of Things with Bosch: From Concept to Code
 
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
 

Similaire à 成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-

Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshopDaisuke Sugai
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 
18-D-1 .Net Framework 4 概要
18-D-1 .Net Framework 4 概要18-D-1 .Net Framework 4 概要
18-D-1 .Net Framework 4 概要Developers Summit
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu Hidaka
 
デブサミ2010 これからのアーキテクチャを見通す
デブサミ2010 これからのアーキテクチャを見通すデブサミ2010 これからのアーキテクチャを見通す
デブサミ2010 これからのアーキテクチャを見通すYusuke Suzuki
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2skudoh
 
Efsta cod2012 master_for_slideshare
Efsta cod2012 master_for_slideshareEfsta cod2012 master_for_slideshare
Efsta cod2012 master_for_slideshareTakahito Sugishita
 
Metroアプリケーションのwin8/wp7の効率的ソース運用を考える
Metroアプリケーションのwin8/wp7の効率的ソース運用を考えるMetroアプリケーションのwin8/wp7の効率的ソース運用を考える
Metroアプリケーションのwin8/wp7の効率的ソース運用を考えるTakahito Sugishita
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development Shotaro Suzuki
 
de:code 2019 Cloud トラック 総まとめ! 完全版
de:code 2019 Cloud トラック 総まとめ! 完全版de:code 2019 Cloud トラック 総まとめ! 完全版
de:code 2019 Cloud トラック 総まとめ! 完全版Minoru Naito
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 
CodelessDevelop using iPaas
CodelessDevelop using iPaasCodelessDevelop using iPaas
CodelessDevelop using iPaasTomoyuki Obi
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略信之 岩永
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Masaki Muranaka
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework Microsoft
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio CodeTakashi Okawa
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門minazou67
 

Similaire à 成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現- (20)

Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
18-D-1 .Net Framework 4 概要
18-D-1 .Net Framework 4 概要18-D-1 .Net Framework 4 概要
18-D-1 .Net Framework 4 概要
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
CMDBあれこれ
CMDBあれこれCMDBあれこれ
CMDBあれこれ
 
デブサミ2010 これからのアーキテクチャを見通す
デブサミ2010 これからのアーキテクチャを見通すデブサミ2010 これからのアーキテクチャを見通す
デブサミ2010 これからのアーキテクチャを見通す
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2
 
Efsta cod2012 master_for_slideshare
Efsta cod2012 master_for_slideshareEfsta cod2012 master_for_slideshare
Efsta cod2012 master_for_slideshare
 
Metroアプリケーションのwin8/wp7の効率的ソース運用を考える
Metroアプリケーションのwin8/wp7の効率的ソース運用を考えるMetroアプリケーションのwin8/wp7の効率的ソース運用を考える
Metroアプリケーションのwin8/wp7の効率的ソース運用を考える
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development
 
第六回Jenkins勉強会
第六回Jenkins勉強会第六回Jenkins勉強会
第六回Jenkins勉強会
 
de:code 2019 Cloud トラック 総まとめ! 完全版
de:code 2019 Cloud トラック 総まとめ! 完全版de:code 2019 Cloud トラック 総まとめ! 完全版
de:code 2019 Cloud トラック 総まとめ! 完全版
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
CodelessDevelop using iPaas
CodelessDevelop using iPaasCodelessDevelop using iPaas
CodelessDevelop using iPaas
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
 

Plus de Hiroki Kondo

Coderetreat in KIT 導入資料
Coderetreat in KIT 導入資料Coderetreat in KIT 導入資料
Coderetreat in KIT 導入資料Hiroki Kondo
 
Coderetreat in KIT 資料/
Coderetreat in KIT 資料/Coderetreat in KIT 資料/
Coderetreat in KIT 資料/Hiroki Kondo
 
Coderetreat in KITスポンサー資料
Coderetreat in KITスポンサー資料Coderetreat in KITスポンサー資料
Coderetreat in KITスポンサー資料Hiroki Kondo
 
Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsHiroki Kondo
 
分散環境でのTrac
分散環境でのTrac分散環境でのTrac
分散環境でのTracHiroki Kondo
 
分散環境でのTrac
分散環境でのTrac分散環境でのTrac
分散環境でのTracHiroki Kondo
 
10分で出来る!?プラグインライブコーディング
10分で出来る!?プラグインライブコーディング10分で出来る!?プラグインライブコーディング
10分で出来る!?プラグインライブコーディングHiroki Kondo
 
JRubyでカードアプリを作ろう
JRubyでカードアプリを作ろうJRubyでカードアプリを作ろう
JRubyでカードアプリを作ろうHiroki Kondo
 
モジュール指向勉強会-コードリーディングを始める前に-
モジュール指向勉強会-コードリーディングを始める前に-モジュール指向勉強会-コードリーディングを始める前に-
モジュール指向勉強会-コードリーディングを始める前に-Hiroki Kondo
 
業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic ModulesHiroki Kondo
 
Kanban Vs Scrum日本語版
Kanban Vs Scrum日本語版Kanban Vs Scrum日本語版
Kanban Vs Scrum日本語版Hiroki Kondo
 
どこでもTrac Wiki
どこでもTrac WikiどこでもTrac Wiki
どこでもTrac WikiHiroki Kondo
 
どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)
どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)
どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)Hiroki Kondo
 
HELP ME! 説明書
HELP ME! 説明書HELP ME! 説明書
HELP ME! 説明書Hiroki Kondo
 
Rodから聞いたことを全部話すぜ
Rodから聞いたことを全部話すぜRodから聞いたことを全部話すぜ
Rodから聞いたことを全部話すぜHiroki Kondo
 
斜め上行くリッチクライアントの考え方(仮)
斜め上行くリッチクライアントの考え方(仮)斜め上行くリッチクライアントの考え方(仮)
斜め上行くリッチクライアントの考え方(仮)Hiroki Kondo
 
斜め上行くリッチクライアントの考え方(仮)
斜め上行くリッチクライアントの考え方(仮)斜め上行くリッチクライアントの考え方(仮)
斜め上行くリッチクライアントの考え方(仮)Hiroki Kondo
 
5分で分かるSpringDMとS2AP
5分で分かるSpringDMとS2AP5分で分かるSpringDMとS2AP
5分で分かるSpringDMとS2APHiroki Kondo
 

Plus de Hiroki Kondo (20)

Coderetreat in KIT 導入資料
Coderetreat in KIT 導入資料Coderetreat in KIT 導入資料
Coderetreat in KIT 導入資料
 
Coderetreat in KIT 資料/
Coderetreat in KIT 資料/Coderetreat in KIT 資料/
Coderetreat in KIT 資料/
 
Coderetreat in KITスポンサー資料
Coderetreat in KITスポンサー資料Coderetreat in KITスポンサー資料
Coderetreat in KITスポンサー資料
 
Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtips
 
分散環境でのTrac
分散環境でのTrac分散環境でのTrac
分散環境でのTrac
 
分散環境でのTrac
分散環境でのTrac分散環境でのTrac
分散環境でのTrac
 
10分で出来る!?プラグインライブコーディング
10分で出来る!?プラグインライブコーディング10分で出来る!?プラグインライブコーディング
10分で出来る!?プラグインライブコーディング
 
JRubyでカードアプリを作ろう
JRubyでカードアプリを作ろうJRubyでカードアプリを作ろう
JRubyでカードアプリを作ろう
 
モジュール指向勉強会-コードリーディングを始める前に-
モジュール指向勉強会-コードリーディングを始める前に-モジュール指向勉強会-コードリーディングを始める前に-
モジュール指向勉強会-コードリーディングを始める前に-
 
業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules
 
Kanban Vs Scrum日本語版
Kanban Vs Scrum日本語版Kanban Vs Scrum日本語版
Kanban Vs Scrum日本語版
 
どこでもTrac Wiki
どこでもTrac WikiどこでもTrac Wiki
どこでもTrac Wiki
 
どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)
どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)
どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)
 
HELP ME! 説明書
HELP ME! 説明書HELP ME! 説明書
HELP ME! 説明書
 
Help Me!
Help Me!Help Me!
Help Me!
 
Rodから聞いたことを全部話すぜ
Rodから聞いたことを全部話すぜRodから聞いたことを全部話すぜ
Rodから聞いたことを全部話すぜ
 
斜め上行くリッチクライアントの考え方(仮)
斜め上行くリッチクライアントの考え方(仮)斜め上行くリッチクライアントの考え方(仮)
斜め上行くリッチクライアントの考え方(仮)
 
斜め上行くリッチクライアントの考え方(仮)
斜め上行くリッチクライアントの考え方(仮)斜め上行くリッチクライアントの考え方(仮)
斜め上行くリッチクライアントの考え方(仮)
 
5分で分かるSpringDMとS2AP
5分で分かるSpringDMとS2AP5分で分かるSpringDMとS2AP
5分で分かるSpringDMとS2AP
 
EclipSky200712
EclipSky200712EclipSky200712
EclipSky200712
 

成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-

Notes de l'éditeur

  1. システムをいくつかのモジュールに分割 モジュールを組み合わせてシステムを構築 -> 「 Modularity 」 モジュール毎に独自に発展が可能 -> インタフェースに互換があれば OK -> モジュールごとにパフォーマンス改善 構成要素によって、振る舞いを変えられる
  2. 前の話とつながりが悪い . サービスの連携 ( 宣言敵に )
  3. 前の話とつながりが悪い . サービスの連携 ( 宣言敵に )
  4. 前の話とつながりが悪い . サービスの連携 ( 宣言敵に )
  5. Declartive Service とは、 Bundle からシステムに対し、どういうサービスが必要なのか、はたまたどういうサービスを提供できるのか、宣言するというものです。ピンと来た方も大勢いらっしゃるとおもいますが、この考え方は DI 、依存性を注入する、というところに非常に近いものと言えるでしょう。言い換えると、 Bundle がどういうサービスに依存していて、どういうサービスが提供できるのか、を宣言するわけです。 依存するサービスはインタフェースでの宣言、実装は POJO というあたりも DI と同じです。 Di との違いは、あくまで DI は静的な条件で行われるもので、起動時に構築された県連性は、変更できませんが、 Declartive Service では、宣言も含め動的に変更できます。インタフェースに基づく開発
  6. Declartive Service とは、 Bundle からシステムに対し、どういうサービスが必要なのか、はたまたどういうサービスを提供できるのか、宣言するというものです。ピンと来た方も大勢いらっしゃるとおもいますが、この考え方は DI 、依存性を注入する、というところに非常に近いものと言えるでしょう。言い換えると、 Bundle がどういうサービスに依存していて、どういうサービスが提供できるのか、を宣言するわけです。 依存するサービスはインタフェースでの宣言、実装は POJO というあたりも DI と同じです。 Di との違いは、あくまで DI は静的な条件で行われるもので、起動時に構築された県連性は、変更できませんが、 Declartive Service では、宣言も含め動的に変更できます。インタフェースに基づく開発
  7. 前の話とつながりが悪い . サービスの連携 ( 宣言敵に )
  8. バージョンをあげると、動かなくなる例