「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
「ソフテックだより」では、みなさまのご意見・ご感想を募集しています。ぜひみなさまの声をお聞かせください。
私は入社して約30年になり、主に組み込み系のソフトウェア開発を担当しています。
ソフトウェア開発では、仕様書や設計書、試験項目書、議事録など、さまざまなドキュメントを作成します。これらは、Microsoft WordやExcel、Visioなどのオフィスソフトを用いて作成することが多く、私自身も長年これらのツールを利用してきました。
4〜5年ほど前、ある顧客の担当者が議事録をMarkdown(テキストベースの文書記述言語)で作成しているのを見かけました。Markdownについて詳しくは知りませんでしたが、プレーンテキスト(文字情報のみのテキスト)に簡単な記号を加えることで、見出しや箇条書きなどを表現できることに興味を持ちました。しかし当時は、WordやExcelで特に困っていなかったこともあり、自分の業務でMarkdownを使うことはないだろうと考えていました。
数年後、あるソフトウェア開発会社から開発協力の依頼を受けました。提示された資料はWord、Excel、PowerPointが中心でしたが、その中には少数ながらMarkdown形式のファイルも含まれていました。また、設計書の状態遷移図やシーケンス図にはPlantUMLやMermaid(どちらもテキストから図を生成するツール)が使用されていました。
この案件の開発当初は設計書をWordで作成していましたが、開発が進む中で「ドキュメントもGit(ソースコードなどの変更履歴を管理するバージョン管理システム)で管理し、変更内容を確認しながらレビューしたい」という要望があり、設計書をMarkdownへ移行することになりました。
実際に使ってみると、MarkdownはGitで差分や変更履歴を確認しながら管理でき、PlantUMLやMermaidは図をテキストで記述するため、修正や保守がしやすく、従来のオフィス文書にはない利点があることを実感しました。以前は「自分には関係ない」と思っていた技術でしたが、実際の開発を通じて、自分の業務でも十分活用できることが分かりました。
本稿では、この経験を踏まえ、テキストベース文書の概要を説明するとともに、Markdown、PlantUML、Mermaidなどの代表的なツール、活用が広がっている背景、メリット・デメリットについて紹介します。
テキストベース文書とは、プレーンテキストで記述された文書です。プレーンテキストは、文字コードに基づく文字や改行のみで構成されたテキスト形式のことで、文字の装飾や画像、レイアウト情報などは含まれません。そのため、軽量で扱いやすく、差分比較や検索、再利用に適しています。
プレーンテキストは、メモ書きや、プログラムの説明を記述したREADMEファイルなどで広く利用されてきました。また、プログラムのソースコードもプレーンテキストで記述されており、ソフトウェア開発では最も身近なファイル形式の一つと言えます。
ただし、プレーンテキストだけでは文字の装飾やレイアウトを表現できないため、仕様書や設計書などのドキュメント作成では、Wordをはじめとするオフィスソフトが広く利用されてきました。
しかし近年では、プレーンテキストに簡単な記法を追加することで、読みやすく構造化された文書を作成できるようになり、テキストベース文書の活用が広がっています。
プレーンテキストの扱いやすさを維持したまま、読みやすい文書を作成できるようにしたものがMarkdownです。
Markdownは軽量マークアップ言語の一つであり、見出しや箇条書き、表、コードブロックなどを簡潔な記法で記述できます。記述したテキストは、Markdown対応エディタやGitHub(Gitを利用したソースコード共有サービス)などで整形された文書として表示されるため、プレーンテキストでありながら、構造化された読みやすい文書を作成できます。
そのため、READMEファイルや技術資料、設計書など、ソフトウェア開発におけるさまざまなドキュメントの作成に活用できます。
以下に、左側へテキストエディタで作成したMarkdown文書、右側へその文書をMarkdownビューワーで表示した結果を示します。
| テキストエディタで作成したMarkdown文書 | Markdownビューワーで表示した結果 |
|---|---|
| # UART通信仕様 ## 通信規約 - 通信速度:9600bps - データ長:8bit - パリティ:奇数 - ストップビット:1bit ## 通信フレーム |制御キャラクタ|コード(HEX)|内容| |---|---|---| |STX|02|フレーム先頭| |ETX|03|フレーム終端| ## サンプルコード ```c void Uart_Send(uint8_t data) { ... } ``` |
![]() |
図 1 Markdown文書の記述例と表示例
Markdownが文書を構造化して記述するための軽量マークアップ言語であるのに対し、PlantUMLやMermaidは図をテキストで記述するためのツールです。
PlantUMLとMermaidは、どちらも専用の記法を記述するだけで図を自動生成でき、フローチャートやシーケンス図、状態遷移図など、さまざまな種類の図を作成できます。
PlantUMLはクラス図などを含むUML図(ソフトウェア設計を表現するための標準的な図)に幅広く対応しています。また、Mermaidもフローチャートやシーケンス図、状態遷移図などを作成できるほか、Markdown文書へ直接記述でき、対応したツールでは図として表示できるため、文書と図を一体で管理しやすいことが特徴です。
図をテキストとして記述できるため、仕様変更時にはテキストを修正するだけで図を更新でき、設計書の保守性向上や更新作業の効率化にも役立ちます。
以下に、左側へシーケンス図を記述したPlantUMLコード、右側へそのコードをPlantUMLビューワーで表示した結果を示します。
| PlantUML形式で記述したテキスト | 生成された図 |
|---|---|
| @startuml title UART通信シーケンス participant マイコン participant UARTドライバ participant 外部機器 マイコン -> UARTドライバ : 送信要求 UARTドライバ -> 外部機器 : コマンド送信 外部機器 --> UARTドライバ : 応答 UARTドライバ --> マイコン : 受信通知 @enduml |
![]() |
図 2 PlantUMLによるシーケンス図の記述例と生成結果
続いて、PlantUMLと同じ内容のシーケンス図をMermaid形式で記述した例を示します。左側へMermaidコードを記述したMarkdown文書、右側へその文書をMarkdownビューワーで表示した結果を示します。| Mermaid形式で記述したテキスト | 生成された図 |
|---|---|
| # UART通信シーケンス ```mermaid sequenceDiagram participant マイコン participant UARTドライバ participant 外部機器 マイコン->>UARTドライバ: 送信要求 UARTドライバ->>外部機器: コマンド送信 外部機器-->>UARTドライバ: 応答 UARTドライバ-->>マイコン: 受信通知 ``` |
![]() |
図 3 Mermaidによるシーケンス図の記述例と生成結果
| Markdownの変更点をGitHub上で確認 |
|---|
![]() |
図 4 GitHubによるMarkdown文書の差分表示例
| 生成AIとのやり取り | 生成された状態遷移図 |
|---|---|
![]() |
![]() |
図 5 生成AIによる状態遷移図の作成例
(M.A.)
[1] Git公式サイト(日本語)
(https://git-scm.com/book/ja/v2)
[2] PlantUML公式サイト(日本語)
(https://plantuml.com/ja/)
[3] Mermaid公式サイト
(https://mermaid.js.org/)
[4] Visual Studio Code
(https://code.visualstudio.com/)
関連ページへのリンク
関連するソフテックだより
「ソフテックだより」では、みなさまのご意見・ご感想を募集しています。ぜひみなさまの声をお聞かせください。