いくつかの例をご覧ください。 コンポーネントは括弧でくくります。 また、 component キーワードでもコンポーネントを定義できます。 そして、コンポーネントには as キーワードにより別名をつけることができます。 この別名は、後でリレーションを定義するときに使えます。 🎉 Copied! 
 | @startuml
[First component]
[Another component] as Comp2
component Comp3
component [Last\ncomponent] as Comp4
@enduml
|
WARNING This translation need to be updated. WARNING インタフェースは丸括弧 () でシンボルを囲うことで定義できます。 (何故なら見た目が丸いからです。) もちろん interface キーワードを使って定義することもできます。 as キーワードでエイリアスを定義できます。 このエイリアスは後で、関係を定義する時に使えます。 後で説明されますが、インタフェースの定義は省略可能です。 🎉 Copied! 
 | @startuml
() "First Interface"
() "Another interface" as Interf2
interface Interf3
interface "Last\ninterface" as Interf4
[component]
footer //Adding "component" to force diagram to be a **component diagram**//
@enduml
|
要素間の関係は、破線 (.. )、直線 (-- ), 矢印 (--> ) の組合せで構成されます。 🎉 Copied! 
 | @startuml
DataAccess - [First Component]
[First Component] ..> HTTP : use
@enduml
| オブジェクトに関連のあるノートを作成するにはnote left of 、note right of 、note top of 、 note bottom of キーワードを使います。 🎉 Copied! 
 | @startuml
[Component] as C
note top of C: A top note
note bottom of C
A bottom note can also
be on several lines
end note
note left of C
A left note can also
be on several lines
end note
note right of C: A right note
@enduml
| または note キーワードを使ってノートを作成し、.. 記号(または任意の矢印記号(- 、-- 、...))を使ってオブジェクトに紐づけることができます。 🎉 Copied! 
 | @startuml
[Component] as C
note as N
A floating note can also
be on several lines
end note
C .. N
@enduml
| 別の例: 🎉 Copied! 
 | @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
|
いくつかのキーワードをグループコンポーネントやインタフェースに使用することができます: package node folder frame cloud database
🎉 Copied! 
 | @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 つのダッシュ -- を持っており垂直方向に配向されています。 次のように単一のダッシュ(またはドット)を置くことによって水平方向のリンクを使用することが可能です: 🎉 Copied! 
 | @startuml
[Component] --> Interface1
[Component] -> Interface2
@enduml
| リンクを反対にすることで方向を変更することもできます。 🎉 Copied! 
 | @startuml
Interface1 <-- [Component]
Interface2 <- [Component]
@enduml
| また、 left を加えることで矢印の向きを変更することもできます。 right , up , down などのキーワードを矢印の間に記述します。: 🎉 Copied! 
 | @startuml
[Component] -left-> left
[Component] -right-> right
[Component] -up-> up
[Component] -down-> down
@enduml
| 方向の最初の文字のみを使用して矢印を短くすることができます(例えば、-down- の代わりに-d- )、または最初の 2 文字(-do- )。 この機能を悪用してはならないことに注意してください:Graphviz は微調整の必要がない良い結果を通常は与えてくれます。 left to right direction パラメータを指定した場合は、次のようになります。: 🎉 Copied! 
 | @startuml
left to right direction
[Component] -left-> left
[Component] -right-> right
[Component] -up-> up
[Component] -down-> down
@enduml
|
デフォルトでは、UML2表記が使用されます(v1.2020.13-14以降)。 🎉 Copied! 
 | @startuml
interface "Data Access" as DA
DA - [First Component]
[First Component] ..> HTTP : use
@enduml
|
コマンド skinparam componentStyle uml1 は、UML1 表記に切り替えるために使用されます。 🎉 Copied! 
 | @startuml
skinparam componentStyle uml1
interface "Data Access" as DA
DA - [First Component]
[First Component] ..> HTTP : use
@enduml
|
skinparam componentStyle rectangle コマンドを使用すると、UML表記ではなく四角形による表記を行うことができます。 🎉 Copied! 
 | @startuml
skinparam componentStyle rectangle
interface "Data Access" as DA
DA - [First Component]
[First Component] ..> HTTP : use
@enduml
|
角括弧を使用して説明を複数行で記述することができます。 🎉 Copied! 
 | @startuml
component comp1 [
This component
has a long comment
on several lines
]
@enduml
|
コンポーネント定義のあとに色を指定することができます。 🎉 Copied! 
 | @startuml
component [Web Server] #Yellow
@enduml
| ステレオタイプのコンポーネント内にスプライトを使用することができます。 🎉 Copied! 
 | @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 コマンドを使用します。 このコマンドは以下の場面で使用できます。 ステレオタイプのコンポーネントおよびインタフェースのための特定の色とフォントを定義することができます。 🎉 Copied! 
 | @startuml
skinparam interface {
backgroundColor RosyBrown
borderColor orange
}
skinparam component {
FontSize 13
BackgroundColor<<Apache>> Pink
BorderColor<<Apache>> #FF6655
FontName Courier
BorderColor black
BackgroundColor gold
ArrowFontName Impact
ArrowColor #FF6655
ArrowFontColor #777777
}
() "Data Access" as DA
Component "Web Server" as WS << Apache >>
DA - [First Component]
[First Component] ..> () HTTP : use
HTTP - WS
@enduml
|
🎉 Copied! 
 | @startuml
skinparam component {
backgroundColor<<static_lib>> DarkKhaki
backgroundColor<<shared_lib>> Green
}
skinparam node {
borderColor Green
backgroundColor Yellow
backgroundColor<<shared_node>> Magenta
}
skinparam databaseBackgroundColor Aqua
[AA] <<static_lib>>
[BB] <<shared_lib>>
[CC] <<static_lib>>
node node1
node node2 <<shared node>>
database Production
@enduml
|
WARNING This translation need to be updated. WARNING componentStyle - デフォルトで(もしくは
skinparam componentStyle uml2 を指定することで)、コンポーネントにはアイコンが表示されます。
🎉 Copied! 
 | @startuml
skinparam BackgroundColor transparent
skinparam componentStyle uml2
component A {
component "A.1" {
}
component A.44 {
[A4.1]
}
component "A.2"
[A.3]
component A.5 [
A.5]
component A.6 [
]
}
[a]->[b]
@enduml
|
- これを非表示にして四角形だけを表示するには、
skinparam componentStyle rectangle を指定します。
🎉 Copied! 
 | @startuml
skinparam BackgroundColor transparent
skinparam componentStyle rectangle
component A {
component "A.1" {
}
component A.44 {
[A4.1]
}
component "A.2"
[A.3]
component A.5 [
A.5]
component A.6 [
]
}
[a]->[b]
@enduml
| [Ref. 10798] デフォルトでは、すべてのコンポーネントが表示されます: 🎉 Copied! 
 | @startuml
component C1
component C2
component C3
C1 -- C2
@enduml
|
- しかし、
hide @unlinked で、孤立したコンポーネントを非表示にできます:
🎉 Copied! 
 | @startuml
component C1
component C2
component C3
C1 -- C2
hide @unlinked
@enduml
|
- もしくは、
remove @unlinked で、孤立したコンポーネントを削除できます:
🎉 Copied! 
 | @startuml
component C1
component C2
component C3
C1 -- C2
remove @unlinked
@enduml
| [Ref. QA-11052]$ を使って、コンポーネントにタグ付けすることができます。それから、コンポーネント個別、またはタグごとに、非表示(hide)、削除(remove)、復元(restore)を指定することができます。 デフォルトでは、すべてのコンポーネントが表示されます: 🎉 Copied! 
 | @startuml
component C1 $tag13
component C2
component C3 $tag13
C1 -- C2
@enduml
| 次のような指定が可能です: 🎉 Copied! 
 | @startuml
component C1 $tag13
component C2
component C3 $tag13
C1 -- C2
hide $tag13
@enduml
|
🎉 Copied! 
 | @startuml
component C1 $tag13
component C2
component C3 $tag13
C1 -- C2
remove $tag13
@enduml
|
$tag13 のコンポーネントを削除するが$tag1 は表示する:
🎉 Copied! 
 | @startuml
component C1 $tag13 $tag1
component C2
component C3 $tag13
C1 -- C2
remove $tag13
restore $tag1
@enduml
|
* (すべてのコンポーネント)を削除するが$tag1 は表示する:
🎉 Copied! 
 | @startuml
component C1 $tag13 $tag1
component C2
component C3 $tag13
C1 -- C2
remove *
restore $tag1
@enduml
| [Ref. QA-7337 and QA-11052]Simple example 🎉 Copied! 
 | @startuml
allowmixing
component Component
() Interface
json JSON {
"fruit":"Apple",
"size":"Large",
"color": ["Red", "Green"]
}
@enduml
| [Ref. QA-15481] For another example, see on JSON page. You can add port with port , portin and portout keywords. Port 🎉 Copied! 
 | @startuml
[c]
component C {
port p1
port p2
port p3
component c1
}
c --> p1
c --> p2
c --> p3
p1 --> c1
p2 --> c1
@enduml
|
PortIn 🎉 Copied! 
 | @startuml
[c]
component C {
portin p1
portin p2
portin p3
component c1
}
c --> p1
c --> p2
c --> p3
p1 --> c1
p2 --> c1
@enduml
|
PortOut 🎉 Copied! 
 | @startuml
component C {
portout p1
portout p2
portout p3
component c1
}
[o]
p1 --> o
p2 --> o
p3 --> o
c1 --> p1
@enduml
|
Mixing PortIn & PortOut 🎉 Copied! 
 | @startuml
[i]
component C {
portin p1
portin p2
portin p3
portout po1
portout po2
portout po3
component c1
}
[o]
i --> p1
i --> p2
i --> p3
p1 --> c1
p2 --> c1
po1 --> o
po2 --> o
po3 --> o
c1 --> po1
@enduml
|
| |