【ITニュース解説】Azure DevOps only renders Mermaid with ::: mermaid – please upvote for standard syntax support!
2025年09月06日に「Reddit /r/programming」が公開したITニュース「Azure DevOps only renders Mermaid with ::: mermaid – please upvote for standard syntax support!」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
Azure DevOpsでは、図を描くMermaid記法が標準の「```mermaid」では表示されず、独自の「::: mermaid」でしか使えない。そのため、GitHubなど他ツールとの互換性がなく、ドキュメント作成に支障が出ている。Microsoftへの改善要望に投票が呼びかけられている。
ITニュース解説
今回のニュースは、システム開発の現場で日々使われる重要なツールや技術に関する、ちょっとした、しかし開発効率に大きな影響を与える可能性のある問題提起だ。特にシステムエンジニア(SE)を目指す皆さんにとって、ドキュメント作成やプロジェクト管理ツールがいかに重要か、そしてそれらの互換性がなぜ大切なのかを理解する良い機会となるだろう。
まず、この話のキーとなる「Mermaid(マーメイド)」と「Markdown(マークダウン)」、そして「Azure DevOps(アジュール・デブオプス)」という三つの技術について簡単に説明しよう。
Mermaidは、コードを使って図を作成できるツールだ。フローチャート、シーケンス図、ガントチャートなど、様々な種類の図を、専用のGUIツールを使わず、テキストエディタで直接記述できる。これはSEにとって非常に便利だ。なぜなら、図もソースコードと同じようにバージョン管理システム(Gitなど)で管理できるため、図の変更履歴を追跡したり、複数の開発者が同時に編集したり、変更をマージしたりすることが容易になるからだ。手書きやGUIツールで作成した図は、バージョン管理が難しく、変更のたびに画像ファイルを更新する手間がかかるが、Mermaidを使えばその手間を大幅に削減できる。
次にMarkdownだが、これは「軽量マークアップ言語」の一種で、シンプルな記法でテキストを装飾できる。例えば、見出しや箇条書き、太字などを、特殊なタグを覚えることなく、簡単な記号を使って表現できる。プログラミングのソースコードとは異なり、直感的で読み書きがしやすいため、READMEファイルや技術ドキュメント、ブログ記事など、幅広い場面で利用されている。SEの仕事では、設計書や手順書、議事録など、多くのドキュメントを作成するため、Markdownの効率性と手軽さは非常に重宝される。
そして、Azure DevOpsは、Microsoftが提供する開発者向けの統合プラットフォームだ。プロジェクト計画、ソースコードの管理、自動ビルド・テスト・デプロイ、成果物の追跡など、ソフトウェア開発のライフサイクル全体をサポートする多機能なサービスが提供されている。多くの企業で開発プロジェクトの管理ツールとして利用されており、SEは日々の業務でAzure DevOps上の様々な機能を利用することになるだろう。GitHubやVisual Studio Code(VS Code)も、それぞれコードのホスティングサービスと高機能なコードエディタとして、SEが日常的に利用する代表的なツールだ。
今回の問題は、このMermaidで作成した図をMarkdown形式のドキュメントに組み込む際に、Azure DevOpsだけが特定の「記法」(書き方)しか受け付けない、という点にある。
Mermaidの図をMarkdownファイルに埋め込む際の一般的な記法は、```mermaid(バッククォート3つとmermaid)で始まり、```(バッククォート3つ)で終わるコードブロックを使うものだ。この記法は、Mermaidの公式ドキュメントで推奨されており、GitHubのREADMEファイル、VS Codeのエディタ内プレビュー、その他多くのMarkdownレンダリングツールやプラットフォームで標準的にサポートされている。つまり、一度この形式で図を記述すれば、多くの場所で特別な変更なしに、図として正しく表示される。これが「標準記法」と呼ばれる所以だ。
ところが、今回のニュース記事が指摘しているように、Azure DevOpsだけは、この標準記法をサポートせず、代わりに::: mermaidで始まり:::で終わる、特殊な記法を要求する。
この記法の違いが、なぜ大きな問題になるのだろうか。一見すると、単に記号が違うだけのように思えるかもしれないが、システムエンジニアの作業効率やドキュメント管理の観点からは、看過できない問題となる。
最も大きな問題は「ドキュメントのポータビリティ(持ち運びやすさ、再利用性)が失われる」ことだ。ポータビリティとは、ある環境で作ったものが、別の環境でもそのまま問題なく使える性質を指す。例えば、GitHubで管理しているプロジェクトのドキュメントをMarkdownで作成し、そこに標準記法でMermaid図を埋め込んだとする。このドキュメントをそのままAzure DevOpsに移行したり、Azure DevOps上で参照したりしようとすると、Mermaid図の部分だけが正しくレンダリングされず、ただのテキストとして表示されてしまう。図が表示されないドキュメントは、その意図を伝えにくく、情報の伝達能力が大幅に低下してしまう。
この問題を回避するためには、ドキュメントをAzure DevOpsで表示する際には、Mermaid図の記法を```mermaidから::: mermaidへと手動で修正する必要がある。逆に、そのドキュメントをGitHubやVS Codeなどで利用する際には、再度標準記法に戻さなければならない。これは「二重管理」や「複数のバージョン維持」という、非常に非効率な作業を発生させる。
例えば、プロジェクトの設計図であるフローチャートをMermaidで作成し、それをプロジェクトのREADMEファイルに埋め込んだとする。このREADMEファイルがGitHubとAzure DevOpsの両方で参照される場合、あなたは二つのバージョンのREADMEファイルを維持しなければならないかもしれない。一方のファイルはGitHub用に標準記法で、もう一方のファイルはAzure DevOps用に特殊記法で、という具合だ。もし図にわずかな変更があった場合、あなたは両方のファイルで同じ修正を行わなければならない。これは、修正忘れや、バージョン間の不整合を引き起こしやすく、開発コストを増大させるだけでなく、ミスの原因ともなり得る。
このような問題は、ドキュメントの作成者や利用者に余計な負担をかけ、結果的に開発プロセスの効率を低下させる。SEにとって、効率的なドキュメント管理は、プロジェクトをスムーズに進める上で非常に重要だ。最新かつ正確な情報が、どの環境でも簡単に参照できることは、チーム内のコミュニケーションを円滑にし、開発の品質を高める。今回の記法の違いは、その基本的な部分に支障をきたすものなのだ。
この問題に直面したRedditユーザーは、単に不満を述べるだけでなく、具体的な行動を起こした。彼はMicrosoftに対して、公式の「機能リクエスト」を提出したのだ。機能リクエストとは、製品やサービスの改善を求めるユーザーからの要望のことで、開発元が新しい機能を追加したり、既存の不具合を修正したりする際の重要な情報源となる。
今回の機能リクエストは、Azure DevOpsがMermaidの標準記法```mermaidに対応するよう求めるものだ。これは、単に個人的な好みの問題ではなく、業界標準との互換性を確保し、多くの開発者の作業効率を向上させるための、非常に合理的な要望だと言える。
そして、このニュース記事の投稿者は、他のユーザーに対しても、この機能リクエストに「賛成票(upvote)」を投じ、可能であればコメントを残すよう呼びかけている。これは、ユーザーコミュニティの力が製品改善にどのように影響するかを示す典型的な例だ。開発元の企業は、ユーザーからのフィードバック、特に多くのユーザーが共通して抱える問題や要望に対して、優先的に対応する傾向がある。賛成票が多いほど、その要望の重要性が高く、より多くのユーザーが影響を受けていると判断され、Microsoftがその機能を実装する優先順位が高まる可能性が大きいのだ。
システムエンジニアとして働く上で、利用するツールやプラットフォームが、業界の標準的な記法や慣習に準拠していることは非常に重要だ。標準に準拠していれば、異なるツール間での連携がスムーズになり、学習コストも低く抑えられる。しかし、今回のように一部のツールが標準から外れた独自の仕様を採用している場合、開発者はその違いを吸収するために余計な労力を費やすことになる。
今回のニュースは、一見小さな記法の違いに見えて、実はドキュメントのポータビリティ、メンテナンスコスト、そして開発効率という、システムエンジニアの仕事の根幹に関わる問題提起だ。そして、ユーザーコミュニティの積極的なフィードバックが、製品をより良くしていく上でどれほど強力な力になるかを示している。SEを目指す皆さんにとって、このような具体的な課題認識と、それに対する建設的なアプローチは、将来のキャリアにおいて非常に役立つ視点となるだろう。