本ページは、 関田、竹下:視覚障害者の利用しやすさを目指したチャート記述法 ─Markdownによる─、筑波技大テクノレポート、vol.31, pp.28-35 から、改訂したものである。
概念はチャートの中でのノードに相当し、概念には、他者から観測可能な概念と観測できない概念の2種類がある。 観測可能な概念は四角い枠で囲んで表現し、観測できない概念は楕円もしくは楕円のような角の丸い枠で囲んで表現する。 そして、枠の中に概念の名称を書く。
Mermaidでは、flowchartの中で、概念の名称を書けば、四角い枠で囲まれる。
例えば、Mermaidで観測できる「概念A」では、
flowchart
概念A
により、図1が描画される。
図1 「概念A」が観測可能であることを表す
なお同じものを、概念ラベルを付記して、
概念ラベル[概念の名称]
でも表現可能である。
概念ラベルは、その概念を再び参照する際に用いられる名前であり、単に記述するだけならば短い記号などのほうが複数回記述するときに楽ではある。 しかし、一般に短く単純な記号からは概念の名称を想起しにくく、視覚障害者にとって把握のために遡って見直すことは容易ではないので、なおさら負担が大きい。 そこで、概念ラベルから概念の名称を想起しやすくするために、以下のルール1を推奨する。
例えば、図1では、
flowchart
概念A[概念A]
または、
flowchart
観可な概念A[概念A]
%% 「観可な」とは「観測可能な」を表す。
と記述できる。
ここに、概念ラベルでの「観可な」とは「観測可能な」を表すとし、チャートの中に観測可能な概念と観測不可能な概念とが混在するときには、「観可な」や「観不な」を付けると、枠の形だけでなく、概念ラベルで文字として明記できる。
コメント行は、
%%
から始めることで、その行はチャートで表出されなくなる。
観測できない概念は、枠の形で、観測可能なことを表す四角形から、観測できないことを表す楕円形で表現する。Mermaidのflowchartの中で、
概念ラベル([概念の名称])
を書けばよい。
例えば、Mermaidで観測できない「概念B」は、
flowchart
概念B([概念B])
または、
flowchart
観不な概念B([概念B])
%% 「観不な」とは「観測不可能な」を表す。
により、図2が描画される。
図2 「概念B」が観測できないことを表す
なお、概念の名称や以下でのsubgraphの名称などに特殊な役割を持つ文字が含まれてエラーが生じる場合には、ダブルコーテーションで名称などを囲めばよい。
概念間に関係のあることをリンク(線)で表し、関係に向きがあるときは細線の矢印で表す。 また、概念が段階的に推移することを、太い矢印で表す。 Mermaidでは、細線の矢印と太線の矢印とを表現できるが、プレビューした矢印を視覚的に区別することがしばしば困難であるため、ここでは細線と点線とを同じ意味で用いることにし、細線の代わりに点線を用いることにする。
例えば、「概念A」から「概念B」に関係があるとき、Mermaidで
flowchart LR
概念A .-> 概念B
により、図3が描画される。
図3 「概念A」から「概念B」に関係のあることを表す
flowchartの右側のLRはLeft to Right の意味であり、矢印の向きを指定するが、複雑なチャートの場合に、矢印の向きを制御することは難しい。プレビューしたときの概念の位置関係は、チャートの内容などに依存する。
その他、RLはRight to Left、TBはTop to Bottom、BTはBottom to Topがある。
Mermaidによる記述は、基本的に概念間の論理的な関係を示すためのものである。
関係に向きがない場合には、記号 > の代わりに、 o を、点線 .- や太線 == の両側に付けるとよい。例えば、図3において、「概念A」と「概念B」を点線でつなぐには、Mermaidで
flowchart LR
概念A o.-o 概念B
により、図4が描画される。
図4 「概念A」と「概念B」との間に関係のあることを表す
両方向の向きで関係があることを明記するには、Mermaidで
概念A <.-> 概念B
により、図5が描画される。
図5 「概念A」から「概念B」に、「概念B」から「概念A」に、関係のあることを表す
概念間の関係がどのような関係なのかを明記する場合には、リンク(線や矢印)の後に記号|を使って関係性を囲んで記述する。 例えば、「概念A」から「概念B」へ「関係C」があるとき、Mermaidで
flowchart LR
概念A .-> |関係C|概念B
により、図6が描画される。
図6 「概念A」から「概念B」へ「関係C」があることを表す
例えば、「段階A」から「段階B」へ段階が推移したとき太線で関係を示すため、Mermaidで
flowchart LR
段階A ==> 段階B
により、図7が描画される。
図7 「段階A」から「段階B」へ段階が推移することを表す
関係を表すリンクがループ状になっているとき、循環という。
例えば、「概念A」から「概念B」へ、「概念B」から「概念C」へ、「概念C」から「概念A」へ関係があるとき、Mermaidでは、個々の関係ごとに1行で書き合計3行で書くこともできるが、循環を明記するために1行で、
flowchart LR
概念A .-> 概念B .-> 概念C .-> 概念A
により、図8が描画される。
図8 「概念A」、「概念B」、「概念C」の関係が循環していることを表す
循環が明示されているMermaidの表現(図9)と、概念BやCから複数の概念への関係があることが明示されているMermaidの表現(図10)(4参照)がある。どちらがよいかは、作成者の意図(重要度)に基づいて採用するのが良いだろう。
flowchart LR
概念A .-> 概念B .-> 概念C .-> 概念A
概念B .-> 概念D
概念C .-> 概念E
%% 概念A、B、Cが循環していることを明記
または、
flowchart LR
概念A .-> 概念B
概念B .-> 概念C & 概念D
概念C .-> 概念A & 概念E
により、図9が描画される。
図9 チャートの一部に、概念A、B、Cの循環が存在している図
1つの概念から2つの概念に矢印があるときを考える。 例えば、「概念A」から「概念B」に関係があり、「概念A」から「概念C」にも関係があるときを考える。 この場合、2つの関係を2行で記述してもよいが、直ちに複数の概念と関係のあることを把握できるようにするために、以下のルール2を推奨する。
概念間の関係を明記する必要がないとき、または、概念間の関係が同一のとき、関係先の複数の概念を記号 & を用いて列記する。
例えば、「概念A」から「概念B」にも「概念C」にも関係があり、どのような関係があるかを明記する必要がなければ、Mermaidで、
flowchart LR
概念A .-> 概念B & 概念C
により、図10が描画される。
図10 「概念A」が「概念B」にも「概念C」にも関係のあることを表す
「概念A」から「概念B」にも「概念C」にも関係があり、同一の関係性Dがあるとき、Mermaidで、
flowchart LR
概念A .-> |関係性D|概念B & 概念C
により、図11が描画される。
図11 「概念A」が「概念B」にも「概念C」にも同一の関係性Dのあることを表す
選択枝Aと選択枝Bを比較し、それぞれの選択枝を採用したときにどのような処理に進むのかを示すことを考える。 現在、以下の複数の記述方法を検討中である。
比較時の判断を強調するために枠の形状をひし形にすると、
以下では、ひし形に入れる文字を途中で改行することで、ひし形の大きさを小さくできる。改行のためには、
を挿入すればよい。
flowchart TD
比較何々{"何々に<BR>ついて" } .-> |比較対象A|Aの考察
比較何々 .-> |比較対象B|Bの考察
により、図12が描画される。
図12 選択のための判断をひし形で表すとき
図12で、スペースを節約するために、ひし形でなく上下の頂点部分を水平にした六角形にすると、
flowchart TD
比較何々{{"何々について" }} .-> |比較対象A|Aの考察
比較何々 .-> |比較対象B|Bの考察
とすることもでき、図13が描画される。
図13 選択のための判断を六角形で表すとき
複数の項目を、意味、形状など、各種見地から似ている仲間を近くに集めるという分類を考える。
PlantUMLの配置図では、階層が深いほど下方に表出される。 またノードの形は各種ある。ここでは角が若干丸い四角形(card)の例を示す。 記号 ~~ は点線を表す。
例えば、項目aとbが見出し1に分類され、項目cが見出し2に分類されるとき、PlantUMLでは、
@startuml
card 見出し1
card 見出し2
card 項目a
card 項目b
card 項目c
見出し1 ~~ 項目a
見出し1 ~~ 項目b
見出し2 ~~ 項目c
により、図14-1が描画される。
図14-1 項目aとbが見出し1に分類され、項目cが見出し2に分類されるとき
項目aとbが見出し1に分類され、項目dは項目bに分類され、項目cが見出し2に分類されるとき、PlantUMLでは、
@startuml
card 見出し1
card 見出し2
card 項目a
card 項目b
card 項目c
card 項目d
見出し1 ~~ 項目a
見出し1 ~~ 項目b
見出し2 ~~ 項目c
項目b ~~ 項目d
図14-2 さらに項目dが項目bに分類されるとき
ある数値の変動の概要を視覚的に表現することを考える。 ここでも検討中の複数の記述方法を示す。
Mermaidでは、journey diagram を使うと、簡潔に表記できる。 journey diagramの見方は、矢印で推移のベースとなっている軸を表し、その下にある顔マークの位置と表情で数値の高さを表す。
例えば、数値の見通しが、現在 1%で、5年後に6%とすると、Mermaidで
journey
section 数値の見通し
現在:1:数値1%
5年後:6:数値6%
により、図15が描画される。
図15 数値の見通しが、現在 1%で、5年後に6%であることを表す
上記7.1と同じ意味で、「数値1%」から「数値6%」への見通しを右上に向かう太矢印で示すことを考える。 このためにPlantUMLの配置図を使用する。 ただし、「数値1%」の下に「現在」を置き、「数値6%」の下に「5年後」を置くが、さらに、「数値1%」の上に太矢印で連結して「数値6%」を置き、且つ、「現在」の右に矢印で連結して「5年後」を置くことを指定した、若干無理のある配置を指定することで、「数値6%」が「数値1%」の右上に来ることを期待している。
すなわち、PlantUMLで、
@startuml
usecase "数値1%"
usecase "数値6%"
rectangle "現在"
rectangle "5年後"
"数値1%" ~~ "現在"
"数値6%" ~~ "5年後"
"数値1%" =u=> "数値6%"
"現在" -r-> "5年後"
@enduml
により、図16が描画される。
図16 7.1と同じ意味を表すPlantUMLの配置図
4つの領域をつくり、その中央に評価軸を明記し、複数の項目を配置したい。 しかし、今のところ評価軸をMarkdownで明記することは難しい。 そこで、評価軸を文字から類推してもらう方法を示す。
例えば、評価軸1と2があり、評価軸1が大きく評価軸2が小さいところに項目Aがあり、評価軸1が小さく評価軸2が大きいところに項目Bがあるとする。MermaidのQuadrant Chartを用いると、
quadrantChart
title 評価軸1、2における項目A、Bの配置
x-axis "評価軸1が小" --> "評価軸1が大"
y-axis "評価軸2が小" --> "評価軸2が大"
"項目A": [0.75, 0.25]
"項目B": [0.25, 0.75]
により、図17が描画される。
図17 「評価軸1」が大きく「評価軸2」が小さいところに「項目A」があり、「評価軸1」が小さく「評価軸2」が大きいところに「項目B」があることを表す
階層的に構成されている組織の組織図を考える。 ここでは、PlantUMLの作業分解図wbs (work breakdown structure)を使用して木構造で表現する方法を示す。
例えば、部1には課A、Bがあり、部2には、課Cがあるとき、PlantUMLの作業分解図で、
@startwbs
* 組織名
** 部1
*** 課A
*** 課B
** 部2
*** 課C
@endwbs
により、図18が描画される。
図18 「部1」には「課A、B」があり、「部2」には「課C」がある組織図を表す
その他、Markdownで階層構造を表現する方法は複数ある。 例えば、前述のPlantUMLのmindmapを使う方法、Mermaidのflowchartのsubgraphを使う方法なども考えられる。
単純な図に対する推奨ルールは、前述の1.2や4で示した。ここでは、subgraphを複数用いて記述する際に推奨したいルールを示す。 三森ゆりか「ビジネスパーソンのための『言語技術』超入門(2021) 」の第3章にわかりやすく情報を組み立てるポイントが書かれている。これらの中から特に、「包括度の割合に従って優先度を決める。基本的には『大きいものから小さいもの』」と「重要度の高いものから低いもの」と「経過や段階に従って情報を示す」に基づいて、記述していくものとする。
大局的なものの記述を、細部の局所的な記述よりも優先する。
例えば、subgraphが入れ子構造になっている場合、外側のsubgraphの内側にある詳細なsubgraphの内容は、外側のsubgraphの中に展開して記述することをせず、外側のsubgraphの記述では要素を示すだけにとどめて、各要素の詳細はその後のsubgraphに記述する。
例えば、概念Aには概念a1と概念a2を含み、概念a1には概念a11が含まれることを表すチャート
図19 概念Aには概念a1と概念a2を含み、概念a1には概念a11が含まれるとき
を記述するときに、
flowchart LR
subgraph 概念A
概念a1
概念a2
end
subgraph 概念a1
概念a11
end
%% 大局を記述した後に詳細を記述する方法
の記述を推奨し、
flowchart LR
subgraph 概念A
subgraph 概念a1
概念a11
end
概念a2
end
%% 対局の中に詳細を記述する方法
の記述はできるだけ避けるようにする。
筑波技術大学 保健科学部 情報システム学科 関田巖
E-Mail:sekita=cs.k.tsukuba-tech.ac.jp([ = ] を [ @ ] にしてください)
個別ワークのご相談も可能です。
※セルフワークのモニターを募集しています。
筑波技術大学 保健科学部 竹下浩
E-Mail:takeshita=k.tsukuba-tech.ac.jp([ = ] を [ @ ] にしてください)