世界を動かす技術を、日本語で。

Org Modeの構文は、テキストに使用する最も合理的なマークアップ言語の一つです。

2026年1月10日原文(karl-voit.at)

概要

  • 本記事は 軽量マークアップ言語 について解説
  • Org mode構文 の利点を他言語と比較しながら紹介
  • Markdownの 標準化問題 や多様な方言への批判
  • Org mode構文の 直感性と一貫性 を強調
  • 見出し・リスト・テーブル等の 具体例と比較 を提示

Org mode構文が最良の軽量マークアップ言語である理由

  • 本記事は 軽量マークアップ言語 全般と、その中での Org mode構文 の優位性を論じる内容
  • Emacs 以外のエディタ(vim, Atom, Notepad++など)でも Org mode構文 は利用可能
  • Org mode構文は 見出し・リスト・強調表示 など、一般的な文書構造を直感的に表現可能
  • 例:
    • * 見出し
    • ** サブ見出し
    • *太字* /斜体/ _下線_ +取り消し線+ =等幅=
    • [[http://Karl-Voit.at][リンク説明]]http://Karl-Voit.at
    • - リスト項目 1. 番号付きリスト
    • - [ ] 未完了タスク - [X] 完了タスク
    • : ソースコードなどの整形済みテキスト
    • コードブロック例:
      #+BEGIN_SRC python
      myresult = 42 * 23
      print('Hello Europe! ' + str(myresult))
      #+END_SRC
      
  • Org modeの テーブル構文 はやや複雑だが、整形を無視しても動作する柔軟性
    • 例:
      | カラム1 | カラム2 | カラム3 |
      |---------+---------+---------|
      | 42      | foo     | bar     |
      | 23      | baz     | abcdefg |
      |---------+---------+---------|
      | 65      |         |         |
      
  • 直感的な記法 で、初心者でもチートシート不要で使い始められる

Markdownの標準化問題と方言の混乱

  • Markdownは 多くの方言 が存在し、ツールやサービスごとに仕様が異なる
    • 例:Original Markdown, Markdown Extra, MultiMarkdown, GitHub Flavored Markdown, CommonMark, Djot, MySTなど
  • 新しい機能(脚注、テーブル等)の追加で 非互換性 が発生
  • Markdownの「標準」とされるものが複数存在し、 移植性・互換性の低下 を招く
  • ファイル拡張子も .md, .mkdn, .markdown, .txt などバラバラ
  • 結果として ユーザビリティ地獄 に陥りやすい

Org mode構文の一貫性と標準化

  • Org mode構文は Emacs Org-mode を基準にし、他ツールでのサブセットも 元仕様に忠実
  • これにより データ移行時の情報損失が少ない
  • 2025年2月時点で 正式な構文定義 はないが、実装基準が明確
  • 拡張子は一貫して .org で統一
  • どのツールでも 同じ記法 で解釈可能

見出し・リスト・定義リストの比較

  • 見出し記法の種類
    • プレフィックス型(例:* 見出し Org mode, # Heading Markdown)
    • プレ&ポストフィックス型(例:== Heading ==
    • アンダーライン型(例:Heading 1\n========= AsciiDoc, reStructuredText)
  • Org modeは プレフィックス型 で、階層が明確で覚えやすい
  • アンダーライン型やプレ&ポストフィックス型は 可読性や一貫性に欠ける ため混乱しやすい
  • リスト記法も言語ごとに複数存在し、 MarkdownやAsciiDocでは混在・混乱 しやすい
  • 定義リストの例(AsciiDoc):
    • Term 1:: Definition 1
    • Term 2.1;; Definition 2.1
    • 階層やインデントが複雑で、 視認性や記憶性が低い

テーブル・リンク記法の比較

  • AsciiDoc等では 複雑なテーブル記法 や多機能を提供するが、 記憶・手入力が困難
  • Org modeは 基本的なテーブル記法 を提供し、手軽に利用可能
  • リンク記法も Org modeは一貫してシンプル
    • [[URL][説明]]URLのみでOK

結論

  • Org mode構文は 直感的・一貫性・拡張性 に優れ、他の軽量マークアップ言語よりも 多くのユースケースに最適
  • Markdownなどの 方言乱立や標準化問題 に悩まされることなく、 安心して長期利用できる構文
  • Emacsユーザー以外にも 幅広く推奨可能 な軽量マークアップ言語

Hackerたちの意見

Orgフォーマットは結構直感的だよね(マークダウンもそうだけど)。でも、Orgの本当の力はorg-modeとEmacs全体にあるんだ。PIMとして使ったり、ドキュメントを書くのにサクッと使えたり、ノートを取るのにも便利だし、Emacsユーザーにとってはほぼ自動的にできるキー操作もあるしね。これがOrgが輝く理由だと思う。Emacs以外で単なるマークダウンフォーマットとしての価値はあまり感じないな。

Emacsの外でのOrgの価値は、マークダウンが広く採用されていれば持っている価値と同じだと思う。Voit'sの投稿は、Orgの構文がマークダウンが現在やっていることをすべてこなせる能力があることを強く主張していて、マークダウンよりも一貫性があって簡潔だと。だから、もっと広く採用されることを推奨してるんだ。技術の世界では、最初に良いフォーマットが勝つとは限らないし、勝たないこともあるけど、私たちは提唱することができるよね!

最近、マークダウンをGeminiの.gmi/gemtextフォーマットに置き換え始めたよ。機能が少ないマークダウンみたいな感じ。シンプルさが気に入ってるし、カスタムツールが解析するのもめっちゃ楽。インラインフォーマットはなくて、ATXヘッダーは3レベルだけ(#は付かない)、箇条書きはアスタリスクだけでダッシュは使わないし、隣接する非空白行をマージしない(だから段落ごとに1行を期待する)、トリプルバックティックの囲まれたプレフォーマットテキストエリアだけをサポートしてる。リンクは必ず独立した行に書かれて、=>の後に続いてオプションで代替テキストが付く。俺のgemtextパーサーは70行くらいで、マークダウンに必要な95%くらいの機能をカバーしてると思う。

自分だけかと思ってた。ヘッダーやリンクがあるテキストを持つのに、気を散らすものがないのがいいよね。ただ一つの不満は、行の改行を一部のマークダウンのバリアントみたいに扱うところで、各行が一つの段落になってしまうこと。俺は改行は単なる空白として扱って、段落を終えるのにはダブルブレークを使う方が好きなんだ。例えばPandocのマークダウンフォーマットみたいに(これが俺がマークダウンをレンダリングするときにいつもそれを使う理由の一つ)。

Orgには自分の構文をエスケープする仕組みがあるのかな?前に調べたときは、this(アスタリスクを保持するためには)を入力するにはゼロ幅スペース(U+200B)を挿入しなきゃいけなかったんだ。マークダウンだと、*this*って感じでエスケープすればいいのに。

コメントを編集したの?最初はどうやってそれをエスケープしたのか分からなかったけど、今はバックスラッシュが見えるよ。org-modeのドキュメントでもゼロ幅スペースを使うことを推奨してるみたいだね。https://orgmode.org/manual/Escape-Character.html 俺はorg-modeが主にそのレンダリング出力についてではないと思ってる。ほとんどのユーザーは、俺みたいに、さまざまなorg-modeドキュメントに何時間も費やして、基本的には生のマークアップを見つめてるんだ。Emacsのorg-modeは、リンクのターゲットを隠すなど、テキストの表示方法にほんの少しだけ変更を加えるだけだから、出力を見ることはほとんどない。俺はorgドキュメントの1%未満をエクスポートするから、フォーマットがどう見えるかはあまり気にしない。org-mode自体が機能するためにマークアップが正しくあればいい(リンクがたどれるとか、セクションが折りたためるとか)。エクスポートしたいドキュメントにはゼロ幅スペースみたいな回避策を使うことを想像できるけど、出力でorg-modeのマークアップがどう見えるかにこだわる必要はあまりないと思う。少なくとも俺にとっては、マークアップをエスケープすることを心配するのは気が散るし、ノイズを増やすだけだと思う。生のマークアップはどうせ読むからね。でも、何か良いエスケープ方法があれば悪くないと思う。ちなみに、非orgコンテンツの行全体を使うときに使えるそのままのブロックもあるし、もちろんsrc-blocksもある。でも、それは明らかにエスケープが役立つすべてのケースをカバーしているわけじゃないね。

その構文をエスケープする意味って何なの?最上位では、ただの任意にネストされたリストじゃん。

そうそう、エスケープは面倒だよね。「エスケープキャラクター」方式に加えて、以下の方法も使ってるよ(他のコメント者が指摘したように公式に文書化されてる):インラインエスケープにはチルダブロック ~ ~ ... を使ってる。これでエクスポート時にモノスペース(コードフォーマット)でタイプセットされるから、通常はそれが欲しいものだよね。シンボルを明確にするために。非コードのテキストブロックには「リテラル例」 https://orgmode.org/manual/Literal-Examples.html これもエクスポート時にモノスペースでタイプセットされるよ。特別なシンボルにはLaTeX風の構文 https://orgmode.org/manual/Special-Symbols.html

もちろん。左側通行は運転するのに合理的な側面の一つだけど、みんなが右側通行の国ではそれを受け入れるのがいいよね。左側通行にも同じくらいの利点があるけど、続けることにこだわるべきじゃない。マークダウンもテキスト用の合理的なマークアップ言語の一つで、十分なシェアを得てるから、軽量マークアップのデフォルト選択として使うべきだと思う。org-modeがどれだけ合理的でもね。

org-modeにMarkdownを簡単に埋め込めるから、"十分なシェアを持つ"ものを逃す必要もないよね。* Orgにmdブロックを使って #+begin_src markdown ..... #+end_src たしかにMarkdownは勝者かもしれないけど、org-modeがあるのにそれを選ぶのは、両手を背中に縛って足だけで真剣なことをしようとするようなもんだよ。

これは好みの問題だよね?LaTeXとTypstみたいなもんだ。自分にとって一番合う環境を作ればいいんだよ。

他のフォーマットの人気に応じて、自分のプライベートファイルのマークアップ形式を選べって言ってるの?あなたの言いたいことがよくわからない。org-modeを使ってる人に、それを使うなって言ってるの?

Hacker Newsで議論の続きを見る