Warning: リポジトリと同期できません (サポートされていないバージョンコントロールシステム "svn です。 Python のライブラリに "svn" が正しくインストールされているか確認してください。)

バージョン 6 から バージョン 7 における更新: TracDoc/ComponentArhitectureJa

差分発生行の前後
無視リスト:
更新日時:
2006/10/21 12:00:47 (18 年 前)
更新者:
weekbuild (IP アドレス: 219.111.182.228)
コメント:

--

凡例:

変更なし
追加
削除
変更
  • TracDoc/ComponentArhitectureJa

    v6 v7  
    33{{{ 
    44訳注: 
    5  この章には、コンポーネントのメカニズムが書いてあります。ただし、ちょっと難しいし、プラグインを作る際に絶対必要というわけではありません。わからないところは飛ばして読んで、気になったらまたこのページを読んでください(訳も自信ありませんが)。 
     5 この章には、コンポーネントのメカニズムが書いてあります。ただし、ちょっと難しいし、プラグ 
     6インを作る際に絶対必要というわけではありません。わからないところは飛ばして読んで、気になっ 
     7たらまたこのページを読んでください(訳も自信ありませんが)。 
    68この章のポイントは以下です。 
    79 
    8  * Tracのコンポーネントは、データのモデルに対応するよう作るものではなく、機能を提供する部品という観点で作るべきであること。 
    9    なお、コンポーネントは全てのアクセスに対してオブジェクトをひとつしか持たない(シングルトンである)。 
    10  * コンポーネントの初期化は__init__メソッドで行うこと。ただし、__init__メソッドは引数をもてないこと。 
    11   * Tracのインタフェースは、(Javaのインタフェースと異なり)継承に類する概念とはちょっと違う。 
    12     インタフェースを実装さえすれば、Tracが必要なときに自分の作ったクラスを探し出して呼び出してくれる。(Javaのように、呼び出す側を変更する必要は無い) 
     10 * Tracのコンポーネントは、データのモデルに対応するよう作るものではなく、機能を提供する部品 
     11という観点で作るべきであること。 
     12   なお、コンポーネントは全てのアクセスに対してオブジェクトをひとつしか持たない(シングルト 
     13ンである)。 
     14 * コンポーネントの初期化は__init__メソッドで行うこと。ただし、__init__メソッドは引数をもて 
     15ないこと。 
     16  * Tracのインタフェースは、(Javaのインタフェースと異なり)継承に類する概念とはちょっと違 
     17う。 
     18    インタフェースを実装さえすれば、Tracが必要なときに自分の作ったクラスを探し出して呼び出 
     19してくれる。(Javaのように、呼び出す側を変更する必要は無い) 
    1320}}} 
    1421 
    1522^As the heart of Trac, [source:/trunk/trac/core.py#latest trac.core] implements a minimal component kernel that allows components to easily extend each others functionality. It provides a "meta-plugin-API": every component can easily offer its own plugin API by declaring "extension points".^[[BR]] 
    16 trac.coreはTracの心臓部として、最小限のコンポーネントカーネルを実装します。そいつは、各コンポーネントが簡単にそれぞれの機能を拡張するための「メタプラグインAPI」を提供します。メタプラグインAPIにより、あらゆるコンポーネントは「エクステンションポイント」(extension point)を宣言することで、容易にプラグインAPIを他に提供することが出来ます。 
     23Tracの心臓部であるtrac.coreは、最小限のコンポーネントカーネルを実装します。trac.codeは、各コンポーネントが簡単にそれぞれの機能を継承するための「メタプラグインAPI」を提供します。メタプラグインAPIにより、あらゆるコンポーネントは「エクステンションポイント」(extension point)を宣言することで、容易にプラグインAPIを他に提供することが出来ます。 
    1724(訳注;実際にTracでは、プラグインというべきクラスは全てcomponentクラスを継承している。) 
    1825 
     
    2027 
    2128^For our purposes, a component is an object that provides a certain type of service within the context of the application. There is at most one instance of any component: components are singletons. That implies that a component does not map to an entity of the application's object model; instead, components represent functional subsystems.^[[BR]] 
    22 コンポーネントは、アプリケーションの中で、私たちの目的に合うサービスを提供するオブジェクトです。どのコンポーネントでも1つのインスタンスしか存在しません(コンポーネントはシングルトンです)。それは、コンポーネントがアプリケーションのオブジェクトモデルのエンティティ(実体)とは対応しないことを意味します。代わりに、コンポーネントは機能的なサブシステムを表します。 
     29コンポーネントは、私たちの目的に合うサービスをアプリケーション中で提供するオブジェクトです。どのコンポーネントでも1つのインスタンスしか存在しません(コンポーネントはシングルトンです)。それは、コンポーネントがアプリケーションのオブジェクトモデルのエンティティ(実体)とは対応しないことを意味します。代わりに、コンポーネントは機能的なサブシステムを表します。 
    2330 
    2431^Components can declare "extension points" that other components can “plug in” to. This allows one component to enhance the functionality of the component it extends, without the extended component even knowing that the extending component exists. All that is needed is that the original component exposes -- and uses -- one or more extension points.^[[BR]] 
    25 コンポーネントは、他のコンポーネントが「プラグイン」可能なように「エクステンションポイント」を宣言できます。これで、拡張しているコンポーネントが存在するのを知りながら、拡張されたコンポーネント使うことなく、あるコンポーネントの機能性を高めることが可能になっています。 
     32コンポーネントは、他のコンポーネントが「プラグイン」可能なように「エクステンションポイント」を宣言できます。これで、継承しているコンポーネントが他に存在しても、それを継承することなく、あるコンポーネントの機能性を高めることが可能になっています。 
    2633必要であるのは元のコンポーネントが1つ以上の「エクステンションポイント」を宣言して(そして自分がそれを使って)いることだけです。 
    2734 
     
    3643^The actual functionality and APIs are defined by individual components. The component kernel provides the “magic glue” to hook the different subsystems together -- without them necessarily knowing about each other.^[[BR]] 
    3744実際の機能性とAPIは個々のコンポーネントによって定義されます。 コンポーネントカーネルは、異なる複数のサブシステム(しかもお互いを知らない)をフックするための「魔法の接着剤」を提供します。 
     45 
    3846Public classes 
    3947