このページにコントリビュートすることができます。  (Menu)

 

 

コンポーネント図

Let's have few examples :

 

 

コンポーネント

コンポーネントは括弧でくくります。

また、 component キーワードでもコンポーネントを定義できます。 そして、コンポーネントには as キーワードにより別名をつけることができます。 この別名は、後でリレーションを定義するときに使えます。

@startuml

[First component]
[Another component] as Comp2  
component Comp3
component [Last\ncomponent] as Comp4

@enduml

 

 

インタフェース

インタフェースは丸括弧 () でシンボルを囲うことで定義できます。 (何故なら見た目が丸いからです。)

もちろん interface キーワードを使って定義することもできます。 as キーワードでエイリアスを定義できます。 このエイリアスは後で、関係を定義する時に使えます。

後で説明されますが、インタフェースの定義は省略可能です。

@startuml

() "First Interface"
() "Another interface" as Interf2
interface Interf3
interface "Last\ninterface" as Interf4

@enduml

 

 

基本的な例

要素間の関係は、破線 (..)、直線 (--), 矢印 (-->) の組合せで構成されます。

@startuml

DataAccess - [First Component] 
[First Component] ..> HTTP : use

@enduml

 

 

ノートの使用方法

オブジェクトに関連のあるノートを作成するにはnote left ofnote right ofnote top ofnote bottom of キーワードを使います。 note left of , note right of , note top of , note bottom of

または note キーワードを使ってノートを作成し、.. 記号を使ってオブジェクトに紐づけること ができます。

@startuml

interface "Data Access" as DA

DA - [First Component] 
[First Component] ..> HTTP : use

note left of HTTP : Web Service only

note right of [First Component]
  A note can also
  be on several lines
end note

@enduml

 

 

コンポーネントのグループ化

いくつかのキーワードをグループコンポーネントやインタフェースに使用することができます:

@startuml

package "Some Group" {
  HTTP - [First Component]
  [Another Component]
}
 
node "Other Groups" {
  FTP - [Second Component]
  [First Component] --> FTP
} 

cloud {
  [Example 1]
}


database "MySql" {
  folder "This is my folder" {
	[Folder 3]
  }
  frame "Foo" {
	[Frame 4]
  }
}


[Another Component] --> [Example 1]
[Example 1] --> [Folder 3]
[Folder 3] --> [Frame 4]

@enduml

 

 

矢印の方向を変える

デフォルトではクラス間のリンクは 2 つのダッシュ -- を持っており垂直方向に配向されています。 次のように単一のダッシュ(またはドット)を置くことによって水平方向のリンクを使用することが可能です:

@startuml
[Component] --> Interface1
[Component] -> Interface2
@enduml

リンクを反対にすることで方向を変更することもできます。

@startuml
Interface1 <-- [Component]
Interface2 <- [Component]
@enduml

また、 left を加えることで矢印の向きを変更することもできます。 right, up, down などのキーワードを矢印の間に記述します。:

@startuml
[Component] -left-> left 
[Component] -right-> right 
[Component] -up-> up
[Component] -down-> down
@enduml

方向の最初の文字のみを使用して矢印を短くすることができます(例えば、-down- の代わりに-d-)、または最初の 2 文字(-do-)。

この機能を悪用してはならないことに注意してください:Graphviz は微調整の必要がない良い結果を通常は与えてくれます。

 

 

UML2 表記の使用

コマンド skinparam componentStyle uml2 は、UML2 表記に切り替えるために使用されます。

@startuml
skinparam componentStyle uml2

interface "Data Access" as DA

DA - [First Component] 
[First Component] ..> HTTP : use

@enduml

 

 

長い説明

角括弧を使用して説明を複数行で記述することができます。
@startuml
component comp1 [
This component
has a long comment
on several lines
]
@enduml

 

 

個々の色

コンポーネント定義のあとに色を指定することができます。

@startuml
component  [Web Server] #Yellow
@enduml

 

 

ステレオタイプでスプライトを使用

ステレオタイプのコンポーネント内にスプライトを使用することができます。
@startuml
sprite $businessProcess [16x16/16] {
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFF0FFFFF
FFFFFFFFFF00FFFF
FF00000000000FFF
FF000000000000FF
FF00000000000FFF
FFFFFFFFFF00FFFF
FFFFFFFFFF0FFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
}


rectangle " End to End\nbusiness process" <<$businessProcess>> {
 rectangle "inner process 1" <<$businessProcess>> as src
 rectangle "inner process 2" <<$businessProcess>> as tgt
 src -> tgt
}
@enduml

 

 

見かけを変える

ダイアグラムの色やフォントを変更するには skinparam コマンドを使用します。

このコマンドは以下の場面で使用できます。

ステレオタイプのコンポーネントおよびインタフェースのための特定の色とフォントを定義することができます。

@startuml

skinparam interface {
  backgroundColor RosyBrown
  borderColor orange
}

skinparam component {
  FontSize 13
  BackgroundColor<<Apache>> Red
  BorderColor<<Apache>> #FF6655
  FontName Courier
  BorderColor black
  BackgroundColor gold
  ArrowFontName Impact
  ArrowColor #FF6655
  ArrowFontColor #777777
}

() "Data Access" as DA

DA - [First Component] 
[First Component] ..> () HTTP : use
HTTP - [Web Server] << Apache >>

@enduml

@startuml
[AA] <<static lib>>
[BB] <<shared lib>>
[CC] <<static lib>>

node node1
node node2 <<shared node>>
database Production

skinparam component {
	backgroundColor<<static lib>> DarkKhaki
	backgroundColor<<shared lib>> Green
}

skinparam node {
	borderColor Green
	backgroundColor Yellow
	backgroundColor<<shared node>> Magenta
}
skinparam databaseBackgroundColor Aqua

@enduml