Work Life Fun

MarkdownからWordに一発変換|Pandocの使い方を社労士がやさしく解説

※当サイトはリンクに広告ページが含まれている場合があります

著書「一人社労士事務所のほどほど経営術」の中でも触れていますが、社労士業務の中でも、就業規則や規程のようにページ数の多い文書は、Markdown(あるいはLaTeX)で作成・管理した方が、構造も修正履歴も圧倒的に扱いやすいと感じています。

私自身、業務に用いる資料の大半はMarkdownで作成していますし、このブログや事務所サイトの内容もMarkdownで書いています。

関連:ブログ・サイトの管理をWordPressからHugoに移行したら爆速で快適

ただ、社労士の成果物として、いまだにWordで求められる場面は少なくありません。顧問先への就業規則の納品、労務監査の報告書、専門誌の原稿……。

Markdownで書き上げた内容をWordに毎回コピペする、それでも可能なのですが、見出しや箇条書きの装飾をWord上で一つずつ直す必要があり、文字数の多い文書になると、この装飾作業だけでも一苦労です。

内容は完成しているのに、Wordの見た目を整える時間は、専門家の仕事ではなく「作業」そのものです。

そこで私が活用しているのが、MarkdownからWordに一発変換できる「Pandoc」です。

難しそうに見えるかもしれませんが、準備さえ済めば、やることは「コマンドを1行打つだけ」です。ITツールに詳しくない方にもイメージしてもらえるよう、図を交えて順番に解説します。

コマンドって聞くだけで、私には無理そうな気がします…
Qちゃん
A先生
最初はみんなそう思うんです。でも、わからないことがあれば、生成AIに聞けば丁寧に教えてくれますし、今はITに詳しくないことが言い訳にならない時代なんです。

Pandocとは

Pandoc(パンドック)とは、文書のファイル形式を変換するための無料のツールです。

身近な例でいえば、Wordで作った文書を「PDFで保存」することがありますよね。Pandocは、これと同じことを、さまざまなファイル形式の間でできるツールです。

本記事では、

  • 変換する前の、原稿を書く形式を「入力フォーマット」
  • 変換した後の、提出・納品する形式を「出力フォーマット」

と呼びます。図にするとPandocは以下のような使い方になります。

flowchart LR A["Markdownで書いた原稿<br>(就業規則・報告書・原稿)"] --> P(("Pandoc")) P --> W["Word"] P --> D["PDF"] P --> H["HTML<br>(Webページ)"] P --> S["PowerPoint"]

入力フォーマットにはWordやHTMLなども選べますが、Pandocが最もよく対応している入力フォーマットがMarkdownです。つまり、「原稿はMarkdownで書き、提出先に合わせてWordやPDFに変換する」という使い方の場合、Pandocはぴったりなのです。

ちなみに、上の図は画像ではなく「Mermaid(マーメイド)」というツールを使って、テキストだけで描いています。以下のように、矢印の向きや箱の中の文字を書くだけで、自動で図にしてくれる便利なツールです。

flowchart LR
  A["Markdownで書いた原稿"] --> P(("Pandoc"))
  P --> W["Word"]

業務フローや手続きの流れを図にするときにも使えるので、興味のある方は以下の記事もご覧ください。

関連:テキストのみで図を描画できるMermaidでフローチャートを作図

関連:Hugoにテキストのみで図を描画できるMermaidを導入

Markdownとは

Markdown(マークダウン)とは、記号を使って「ここは見出し」「ここは箇条書き」といった文書の構造を書き表す記法です。ファイルは拡張子が .md のテキストファイルなので、メモ帳などのテキストエディタで作成できます。

Wordのように見た目を整えながら書くのではなく、記号で構造だけを指定しておき、見た目は変換時に自動で整えるイメージです。

MarkdownとWordの対応関係は、以下のとおりです。表の右の列は、変換後のWordで、「ホーム」タブの「スタイル」の欄にどのスタイルが設定されるかを示しています。

Markdown意味Wordのスタイル
# 第1章章の見出し見出し1
## 第1条条の見出し見出し2
1. 〜号(番号あり)番号付きリスト
- 〜項目(番号なし)箇条書き
**〜**強調太字

就業規則でいえば、「章」を #、「条」を ## で書いておくだけで、Wordの見出しスタイルが自動で設定されます。

最初からWordで書いた方が早くないですか?
Qちゃん
A先生
短い文書ならそうですね。ただ、就業規則のように長くて何度も改定する文書は、Markdownの方が圧倒的に楽です。条文を追加しても番号や見出しの書式が崩れませんし、テンプレートを一度作れば、事務所の成果物をいつも同じ見た目で納品できます。「見た目を整える作業」から解放されるのが一番大きいです。

Pandocのインストール

公式のインストーラーがあるため、Pandocのインストールは簡単です。Windowsの場合は、Pandocの公式サイトからインストーラーをダウンロードして実行するだけです。

参考:Pandocの比較的簡単なインストール方法

Macであれば、ターミナルから以下のコマンド一発でインストールできます(Homebrewというツールが入っている場合)。

$ brew install pandoc

なお、この記事のコマンドの先頭にある $ は「ここからコマンドです」という目印なので、入力は不要です。

インストールできたかどうかは、以下のコマンドで確認できます。バージョン番号が表示されれば成功です。

$ pandoc --version

関連:Pandocのバージョンを確認する方法

Pandocを用いたWordファイルへの変換

コマンドを入力する場所(ターミナル)

Pandocは、Wordのようにアイコンをクリックして使うソフトではなく、コマンドを入力して使うツールです。コマンドは、Macでは「ターミナル」、Windowsでは「PowerShell」という画面に入力します。

  • Mac:Spotlight(command + スペース)で「ターミナル」と検索して起動
  • Windows:スタートメニューで「PowerShell」と検索して起動

変換したいMarkdownファイルがあるフォルダで、コマンドを実行することでPandocが利用できます。

「ファイルがあるフォルダでコマンドを実行する」って、どうすればいいんですか?
Qちゃん
A先生
Windowsなら、エクスプローラーでそのフォルダを開き、上のアドレスバーに「powershell」と入力してEnterキーを押すだけです。Macなら、ターミナルに「cd 」と入力してから、フォルダを画面にドラッグ&ドロップしてEnterキーです。一度やってみるとコマンド操作の便利さがわかると思います。

もし、コマンドを入力してエラーが出たり、意味がわからなかったりした場合は、画面に表示された文字をそのままClaudeなどの生成AIに貼り付けて聞けば、たいてい解決方法を教えてくれます。

変換のコマンド

Pandocを用いてファイルを変換する際には、以下のコマンドを実行するだけです。-oの後に、出力したいファイル名と拡張子を指定(Wordの場合は.docx)すればOKです。

# Wordファイルを出力
$ pandoc input.md -o output.docx

# HTMLファイルを出力
$ pandoc input.md -o output.html

input.md が変換前のMarkdownファイル(入力)、output.docx が変換後のWordファイル(出力)です。拡張子を変えるだけで、出力フォーマットを切り替えることができます。

試しにサンプルとして、厚生労働省の「モデル就業規則」(令和7年12月版)の一部を以下のようにMarkdownで書きます。

# 第3章 服務規律

## 第11条(遵守事項)

労働者は、以下の事項を守らなければならない。

1. 許可なく職務以外の目的で会社の施設、物品等を使用しないこと。
2. 職務に関連して自己の利益を図り、又は他より不当に金品を借用し、若しくは贈与を受ける等不正な行為を行わないこと。
3. 勤務中は職務に専念し、正当な理由なく勤務場所を離れないこと。
4. 会社の名誉や信用を損なう行為をしないこと。
5. 在職中及び退職後においても、業務上知り得た会社、取引先等の機密を漏洩しないこと。
6. 酒気を帯びて就業しないこと。
7. その他労働者としてふさわしくない行為をしないこと。

このMarkdownファイルをPandocで変換すると、以下の図のようなWordファイルが作成できます。

「章」が見出し1、「条」が見出し2として設定され、遵守事項の各号も番号付きリストとして反映されています。見出しとして設定されているので、Wordのナビゲーションウィンドウから条文へすぐに移動できますし、目次の自動作成にも使えます。

また、ここでは紹介しませんが、Pandocでは図の貼り付けも再現してくれます。実際、250ページを超える著書「一人社労士事務所のほどほど経営術」の執筆でもMarkdownを利用しました。

ただ、上の図を見ていただくとわかるとおり、デフォルトの変換の場合、

  • 見出しの色は青
  • 見出しのフォントは游ゴシックLight、見出し1が20pt、見出し2が16pt
  • 本文のフォントは游明朝、12pt

となっています。以前はMSゴシック、MS明朝に変換されていたので、個人的にかなりダサいと思っていたのですが、幾分かマシになっています。

ただ、せっかくPandocを使ってWordに一発変換できるので、見た目の部分も自分好みに設定しておくことで、一発で納品できる完成度を求めたいところです。

テンプレートを適用して自分好みのWordに変換する方法

1. Pandocのデフォルトのテンプレートを書き出す

まず、以下のコマンドで、Pandocが標準で使っているテンプレートを custom-reference.docx として書き出します。

$ pandoc -o custom-reference.docx --print-default-data-file reference.docx

2. Wordでスタイルを編集する

書き出した custom-reference.docx をWordで開き、「スタイル」の設定を変更して上書き保存します。文章そのものではなく、スタイルを変更する点がポイントです。

主に変更するスタイルは、以下のとおりです。

  • 見出し1、見出し2など(Heading 1、Heading 2):章や条の見出し
  • 本文(Body Text)、First Paragraph:通常の段落
  • Compact:箇条書きの各項目
  • Table:表(後述する「枠」もこのスタイル)

3. テンプレートを指定して変換する

変換するときは、--reference-doc でテンプレートを指定します。

$ pandoc input.md --reference-doc=custom-reference.docx -o output.docx

実行した結果は以下のとおりです。

フォントの色を黒に、フォントサイズは見出し1を16pt、見出し2を14pt、本文を10.5ptに設定し、箇条書きの余白も少し広げています。

ちなみに、私はこのコマンドを実行するときに一度つまずきました。あるブログ記事を参考に進めていたのですが、そこでは --reference-docx と書いていたため、ずっとエラーが出ていたのです。

Pandocの古いバージョン(1.x)では --reference-docx でしたが、バージョン2.0以降は --reference-doc に変わっていたようです。

うまくいかないときは、ブログ記事を鵜呑みにせず、Pandocの公式マニュアルを確認するのが近道です。人事労務の実務で「行政が発表する一次情報を確認する」のと同じです。

箇条書きを1つの枠で囲む方法(Luaフィルタ)

先日、専門誌から約7,200字(6ページ程度)の原稿依頼を受け、いつもどおりMarkdownで書いてWordに変換しました。

その原稿で、最低賃金法の「最低賃金の減額の特例許可制度」の対象となる5つの労働者を、1つの枠で囲んで示そうと以下のようにMarkdownファイルで書いていたところ、1つ1つの項目がそれぞれ別の枠に囲まれてしまうという問題にぶつかりました。

---
1. 精神又は身体の障害により著しく労働能力の低い者
2. 試の使用期間中の者
3. 基礎的な技能等を内容とする認定職業訓練(職業能力開発促進法)を受けている者のうち、厚生労働省令で定める者
4. 軽易な業務に従事する者
5. 断続的労働に従事する者
---

この書き方のままPandocを実行してしまうと、以下の図のようになってしまいます。

※上の図は、テンプレートの「Table」スタイルに罫線を設定して変換した状態です。デフォルトのままでは点線(グリッド線)の表示になり、印刷すると枠は消えてしまいます。

原因

PandocのMarkdownでは、--- のような横線で挟んだ部分は「ヘッダなしのシンプルテーブル」として読まれます。シンプルテーブルは1行が表の1行になるため、各項目が別々の行(枠)に分かれてしまっていたわけです。

また、表のセルの中身は箇条書きとして解釈されないため、1. などの番号や記号は、Wordの番号付きリストにならず、ただの文字として残ってしまいます。

対処法:::: box とLuaフィルタで「枠」を作る

Markdown側は、枠で囲みたい範囲を ::: box と ::: で挟むだけにします。

::: box
1. 精神又は身体の障害により著しく労働能力の低い者
2. 試の使用期間中の者
3. 基礎的な技能等を内容とする認定職業訓練(職業能力開発促進法)を受けている者のうち、厚生労働省令で定める者
4. 軽易な業務に従事する者
5. 断続的労働に従事する者
:::

次に、以下の内容を box.lua として保存します。

-- ::: box ... ::: で囲んだ内容を1セルの表(枠)に変換する
function Div(el)
  if el.classes:includes("box") then
    local st = pandoc.SimpleTable(
      {},                      -- キャプションなし
      {pandoc.AlignDefault},   -- 1列
      {1.0},                   -- 列幅:本文幅いっぱい
      {},                      -- ヘッダなし
      {{el.content}}           -- 1行1セルに中身をそのまま入れる
    )
    return pandoc.utils.from_simple_table(st)
  end
end

変換するときは、次のように --lua-filter でフィルタを指定します。

$ pandoc draft.md --lua-filter box.lua -o draft.docx

これで、5つの項目が1つの枠(1行1セルの表)の中に収まり、しかもWordの番号付きリストとして反映されました。

※上の図も、同じく「Table」スタイルに罫線を設定したテンプレートで変換した状態です。

なお、::: box は他の枠でも使い回せますし、枠の中に段落や注記を入れることもできます。

枠の見た目はテンプレートで決まる

枠の正体は表なので、罫線などの見た目は、Wordのテンプレート(reference.docx)の「Table」スタイルで決まります。テンプレートを指定する場合は、次のようにまとめて指定すればOKです。

$ pandoc draft.md --lua-filter box.lua --reference-doc=custom-reference.docx -o draft.docx

テンプレートの作り方は、先ほどの「テンプレートを適用して自分好みのWordに変換する方法」を参照してください。

Claudeに相談したら一発で解決

実は、この「箇条書きを1つの枠で囲む方法」は、普段から愛用している生成AI「Claude」に相談して教えてもらったものです。

感動したのは、実際に私が作成したMarkdownファイル、そして変換したWordファイルの中身を確認したうえで、「なぜ項目ごとに枠が分かれてしまうのか」という原因から説明し、手元で変換して動作を確かめた上で、解決法を示してくれたことです。

Pandocはとても便利なツールですが、フィルタを自分で一から調べて書くのは、正直、面倒です。

今や、Claudeに相談するだけで、原因の理解も含めて短時間で解決できます。ITツールや生成AIを業務に取り入れる効果を改めて実感した場面です。

生成AIにファイルを見せるのは情報漏えいが心配です…
Qちゃん
A先生
社労士なら当然気にすべき点ですね。今回、Claudeに相談したのは専門誌の原稿なので、顧問先の情報は含まれていません。もし顧問先の情報を含むファイルの場合は、会社名や個人情報を伏せたサンプルで同じ現象を再現してから聞くのが鉄則です。それでも十分に生成AIは解決方法を教えてくれます。

まとめ

社労士の成果物がWordで求められる場面は、まだしばらくは続くでしょう。だからといって、作成段階からWordで装飾に時間をかける必要はありません。

  • 文書はMarkdownで作成・管理する
  • 提出の最終段階で、Pandocを使ってWordに一発変換する
  • 見た目は、自分好みのテンプレート(reference.docx)で整える
  • 枠囲みなど細かい部分は、Luaフィルタで対応する(困ったらAIに相談する)

この流れを作っておくだけで、Wordの装飾という「作業」の時間を大きく減らせます。

メルマガでは、一人社労士事務所の経営の中で私が実践しているIT・AIの活用法を、包み隠さず発信しています。業務の効率化に関心のある社労士は、ぜひ以下のフォームからご登録ください。

社労士のための
「ほどほど」お悩み相談室

あなたのご質問・ご相談に、月1回、無料・本音で回答します。

ご質問・ご相談は、登録後に届くメールから送っていただけます。費用は一切かかりません。「お悩み相談室」というクローズドな場だからこそ、踏み込んだ内容の質問にも回答できます。

これまでに、こんなご質問・ご相談に回答してきました。

  • コンサル(3号業務)を主力業務にするには、どうすれば良いか?
  • どのようにして顧問料を上げれば良いか?
  • 営業が苦手で、新規の顧客獲得ができない
  • 業務をどう絞り込めば良いか?
  • 一人社労士のままで良いのか、人を雇うべきか?
  • 苦手・相性の悪い顧問先と、どう付き合うか?
  • 生成AIの時代、社労士は今後どう生き残るか?

なぜ、無料で同業の社労士からの相談に乗るのか?

それは「本当に顧客のために活動できる社労士仲間を増やしたい」からです。

私自身、社労士という資格に誇りを持っています。企業からの社労士に対する不満をよく聞きますし、「社労士なんて役に立たない」と思われることは、正直悔しいです。

  • 信頼される・信頼できる社労士の仲間を増やしていきたい

そんな想いから、少しでも社労士業界全体のレベルアップに貢献できればと考えています。

    ※ 登録は無料・月1回配信・配信解除いつでも可能
    ※ 登録後、本人確認のメールをお送りします。届かない場合は迷惑メールフォルダもご確認ください。


    up_line