0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CommonMarkの仕様の日本語訳を公開しました

0
Last updated at Posted at 2026-06-13

マークダウン (Markdown) の標準仕様として広く参照されるCommonMarkの現行での最新版を日本語に全訳して公開しました。本記事ではこの翻訳にあたっての背景について紹介します。

リンク:日本語訳リポジトリ

なぜ訳したか

マークダウンは従来より非技術者であっても目にすることのある記法でしたが、例えばRedditやTumblrでは入力方式の一つです。厳密にマークダウンではなくとも、ウィキの編集などを通じた軽量ないし非軽量のマークアップ言語に触れる機会はそれなりにあったでしょう。しかし近年、AIとのやり取りで基本の記法となったりMicrosoft Windowsのメモ帳への機能追加がされたりと、ますます一般の利用者にとって身近な存在になってきています。

CommonMarkはそのマークダウンの一つのベースラインとして技術的に重要な仕様であり、一般向けとしてはやや詳解にすぎるきらいはあるものの、日本語で参照できる訳の公開は一定程度に有益ではないかと考えました。

試訳はこの公開に先立って折を見て進めていましたが、その際の動機となったのはやはり多様な制約のもとに文法が定められるマークアップ言語自体の面白さであって、そうした視点からの読みごたえがあると感じたこと、また細々とした実用上のライブラリ等の実装の上で詳細を理解するためでした。また、技術文書の翻訳を大規模言語モデルに一任する流れは避けがたいだろうとはしつつ、訳語の吟味や表現の試行錯誤の結果をあえてローカルに死蔵することもないと思い直しました。

国際化について

翻訳管理にはpo4aを採用し、仕様の将来的な更新に効率よく追従できるようにしています。これにより翻訳のデータがgettext PO形式で管理できるようになり、変更箇所だけを素早く把握できるため、原文の改訂のたびにゼロから訳し直す、差分を目で追う等の手間がありません。翻訳関連のスクリプトはtranslationディレクトリ配下にまとめています。

また、po4aは従来よりマークダウンを扱えていましたが、品質の高いgettext POファイルを得るために、CommonMarkの参照実装による構文解析器を活用した新しいモジュールを作成して使用しています(po4aへのプルリクエスト)。この変更はpo4aの次回リリース(おそらくバージョン0.75)より利用できる見込みです。

なお、原文の仕様のファイルの取り回しはやや込み入ったものにならざるを得ず、試訳から公開に踏み切る最大の障害はその点、つまりスクリプトの整理にありました。なかんずく素朴に原文をCommonMarkで構文解析するとリンクが機能しない点は厄介です。これは、原文において原稿末尾にある参照リンク定義、つまり [...]: ... によるリンクの定義、が意図的に省略されており、本文での [...](@) 記法からスクリプトの実行時に自動生成される仕組みになっているからです。国際化のスクリプトではこの部分も日本語訳の対象として抽出されるようにしつつ、適切なハイパーリンクが張られるよう仕立てました。なお、スクリプト群は意図的にシェルスクリプトとLuaのみに絞っていますが、これはcommonmark-specリポジトリ自体の依存関係の範疇からこれ以上増やさないための判断です。

せっかくなので具体例を見ましょう。仕様のファイルspec.txtのうち「Characters and lines」の節にはこうあります(該当範囲)。

## Characters and lines

Any sequence of [characters] is a valid CommonMark
document.

A [character](@) is a Unicode code point.  Although some
code points (for example, combining accents) do not correspond to
characters in an intuitive sense, all code points count as characters
for purposes of this spec.

ここで注目すべきは[characters][character](@)の2種類のリンクです。前者は簡略参照リンクなのでcharactersの参照リンク定義において照応するリンクが張られるはずです。また後者は行内リンクでありリンク先が@です。ところがまず前者については、文書の末尾まで探してみてもcharactersの参照リンク定義は見当たりません。CommonMarkにおいては――CommonMarkの執筆者であるJohn MacFarlene氏によるDjot記法とは異なり――リンクラベルが合致するリンク参照定義が文書内になければリンクとして解釈されませんから、CommonMarkの参照実装であるcmarkで正規化、つまりCommonMarkからcmarkの内部表現を介してCommonMarkを出力形式として直列化した場合、次のようになります。

Any sequence of \[characters\] is a valid CommonMark
document.

後者についてはcharacterだけリンクが@となっているのではなく、例えばlineもまたリンク先が@です。どういうことかというと、文書内の用語はリンクテキストをURIのフラグメントとして適切なものに加工したものがスクリプト実行時に生成され、それがリンク先として使われるのです(参照)。

これを踏まえつつ、快適に翻訳作業をする上で次の点を満たしたいと考えました。

  • 用語についてもPOファイル内の項目として管理する
  • 用語の参照については訳文においても[用語](@)の記法を書けるようにする

そうしてできたのがこちらのシェルスクリプトおよびその関連ファイルです。要点は以下の通り。

  1. 原文の仕様のファイルから用語の参照定義を生成し、一時ファイルに保存します。そしてそれをpo4aで翻訳できる形式のYAMLへと変換します(参照)。
    • →これにより用語を翻訳の項目として扱うことが可能になります。
  2. 一旦その用語の翻訳データを生成し、POファイルにて翻訳します。
  3. 用語のためのPOファイルと本文のためのPOファイルを結合して1つのPOファイルにします(参照)。
  4. 原文から生成される参照定義を仕様の末尾に後置したもの一時ファイルに保存し、それを対象にPOファイルの更新&翻訳の生成を行います。
    • →こうして翻訳された用語とともにリンクのつながりが断たれることなく翻訳文書の生成が可能となります。

po4aのCommonMarkモジュールについてちょっと触れておくと、これは前述のcmarkのPerlバインディングであるCommonMarkパッケージを活用して作成しました。このモジュール固有の特色はそこまでなく他のモジュールのものとそこまで遜色ないでしょう、つまり抽象構文木を巡回して翻訳の単位として適切なところで直列化→翻訳→構文木に差し替えを行っています。

現地化について

翻訳にあたっては大規模言語モデルを始めとするAIには一切頼らず、すべて手作業で行いました。辞書は原則としてGNU Collaborative International Dictionary of English (GCIDE)のデータを活用しました。また本仕様の日本語の先行訳はいくつかあり、commonmark-specの使用許諾の範囲内で、訳の作成にあたり参考にした箇所があります。これらの先行訳についてはPOファイル冒頭に記載しています。

ある程度の校正は済んでいますが、用語の揺れや誤植が残っている可能性はあります。品質向上のためお気付きの点はぜひリポジトリのイシューにてご報告ください。

展望

現時点では最新版であるバージョン0.13.2に対応しており、原文の更新に随時追従していく予定です。また、CommonMarkがバージョン1.0に到達した際には、公式ウェブサイトでの国際化対応について改めて議論が進む可能性があります。当訳での国際化対応に向けた試みはその点で貢献できる可能性があると考えています。

また、実用上のマークダウンとしてはCommonMarkに拡張を加えたGitHub Flavored Markdownもまた最もよく使われているマークダウン派生の一つです。po4aのCommonMarkモジュールからの発展として、そのため、cmark-gfmを活用したモジュールの追加も、いずれは目指したい気もしています。

日本語話者の方がCommonMarkの仕様を参照する際の一助となれば幸いです!

使用許諾

Copyright (C) 2026 gemmaro

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without any warranty.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?