11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

5年放置したMarkdown→Excel変換ツールをClaude Codeで完成させた話

11
Last updated at Posted at 2026-04-04

TL;DR

  • Markdown を Excel (.xlsx) に変換する CLI ツール md2xls を作りました
  • 5,6年前に途中まで作って放置していたものを、Claude Code を使って一気に完成させました
  • 見出しの自動採番、テーブル、コードブロック、画像、リスト、リッチテキスト(太字・斜体・取り消し線)など、実用的な Markdown 記法をほぼ網羅しています

https://github.com/HituziANDO/md2xls

なぜ Markdown → Excel 変換ツールが必要なのか

エンジニアにとって Markdown はドキュメントの母国語みたいなものですが、クライアントワークの現場ではまだまだ Excel 文化は健在です。

  • 設計書を Markdown で書いたけど、納品は Excel でと言われる
  • レビューは Excel に赤入れで返ってくる
  • 社内の承認フローが Excel 前提で組まれている

こういう場面、エンジニアなら一度は経験があるんじゃないでしょうか。

Markdown で書いた内容を手作業で Excel に転記するのは、正直やりたくない作業です。かといって最初から Excel で書くのも、Git 管理しづらいし差分も見づらい。AI にドキュメントを書かせるにしても、Excel より Markdown の方が圧倒的に相性が良い。

「普段は Markdown で書いて、Excel が必要なときだけ変換すればいいじゃん」

そう思って5,6年前にこのツールを作り始めました。

5年放置した理由と、Claude Code で復活した話

最初は勢いよく作り始めたんですが、Markdown の記法を一つひとつ Excel のスタイルに変換するルールを書いていくのが、とにかく地道で面倒でした。見出し、テーブル、コードブロック、リスト、画像……それぞれパースして、Excel のセル結合やスタイル設定に変換していく作業は、やることが多い割に楽しくない部類の実装です。

H1〜H3 の見出しとテーブルくらいまで実装したところで、モチベーションが尽きて放置していました。

それが Claude Code を使ったら、状況が一変しました。

「ブロッククォート対応して」「ハイパーリンク対応して」「HTML エンティティのデコードも」と指示していくだけで、パーサーとレンダラーの両方を一気に実装してくれる。正規表現の追加、コンポーネント型の定義、レンダラーのスタイル設定、テストコードまで全部やってくれます。

さらに「非対応機能一覧を精査して」「Codex でレビューして」と指示すれば、自分では気づかないバグや設計上の問題も洗い出してくれる。人間がやると数日かかりそうな作業が、会話ベースで数時間で終わりました。

5年放置していた「面倒だからやりたくない」部分を、AI が全部引き受けてくれた感じです。

なぜ Go で書いたか

このツールは シングルバイナリで配布したい というのが大前提でした。

クロスコンパイルが簡単で、依存ライブラリをすべて静的リンクした1ファイルを go build 一発で作れる Go は、CLI ツールとの相性が抜群です。Python や Node.js だとランタイムのインストールが必要になりますが、Go なら CGO_ENABLED=0 go build で作ったバイナリをそのまま渡すだけで動きます。

また Excel 生成には excelize という Go ライブラリがあり、これが非常に高機能で安定しています。セルのスタイル設定、リッチテキスト、ハイパーリンク、画像埋め込みなど、md2xls に必要な機能が一通り揃っていたのも Go を選んだ大きな理由です。

インストール

Go で直接インストール

go install github.com/HituziANDO/md2xls@latest

ビルド済みバイナリ

Releases ページ から Linux / macOS / Windows 向けのバイナリをダウンロードできます。

使い方

初期化

md2xls init

カレントディレクトリに .m2x.yml(設定ファイル)がデフォルト値で生成されます。

変換

md2xls

これだけで .m2x.yml の設定に従って Markdown → Excel 変換が実行されます。

CLI フラグで設定を上書きすることもできます。

md2xls -s docs/spec.md -d output/spec.xlsx

設定ファイル(.m2x.yml)

YAML 形式の設定ファイルで、フォントや採番、シート名などをカスタマイズできます。

# 入出力ファイル
src: README.md
dst: README.xlsx

# 本文フォント
text:
  font:
    family: Meiryo UI
    size: 11

# コードブロック・インラインコードのフォント
code:
  font:
    family: Arial
    size: 10.5

# 1行あたりの最大文字数(超過時に行分割)
max_num_of_characters_per_line: 120

# 見出しの自動採番(H1-H4)。CLIフラグ --no-heading-number でも無効化可能
heading_number: true

# Excelシート名
sheet_name: Sheet1

# テーブル列のマージ閾値(バイト数)
table_merge_threshold: 80

# 見出しのフォントサイズ(pt)
heading_font_size:
  h1: 24
  h2: 20
  h3: 16
  h4: 14
  h5: 12
  h6: 11

全項目にデフォルト値があるので、設定ファイル自体がなくても動作します。

変換できるもの一覧

md2xls が対応している Markdown 記法とその Excel での表現をまとめます。

ブロック要素

Markdown Excel での表現
# 見出し (H1〜H6) 自動採番付き(H1〜H4)、レベル別フォントサイズ(24pt〜11pt)
テーブル 罫線付きセル、ヘッダ行グレー背景、列アラインメント対応(左・中央・右)
コードブロック (```) A〜H列結合、グレー背景、コードフォント
ブロッククォート (>) A〜H列結合、イタリック、左ボーダー、グレー背景
画像 (![alt](url), <img>) シート内に画像埋め込み(HTTP/HTTPS も自動ダウンロード)
箇条書きリスト (-, *, +) マーカー付き、ネスト対応
番号付きリスト (1., 2.) 番号付き、ネスト対応
タスクリスト (- [ ], - [x]) ☐ / ☑ マーカー
水平線 (---, ***, ___) 下ボーダーライン

インライン書式

Markdown Excel での表現
**太字** / __太字__ Excel Rich Text で 太字
*斜体* / _斜体_ Excel Rich Text で 斜体
***太字斜体*** Excel Rich Text で 太字斜体
~~取り消し線~~ Excel Rich Text で 取り消し線
`インラインコード` コードフォント(code.font 設定を使用)
[リンク](URL) Excel ハイパーリンク(青色下線)
<https://...> オートリンク → Excel ハイパーリンク

これらのインライン書式は 本文だけでなく、リスト項目やテーブルセル内でも有効 です。

その他の機能

機能 説明
HTML エンティティ &amp;&&copy; → (C) など自動デコード
HTML コメント <!-- ... --> は出力から除去(複数行対応)
リンク/画像タイトル [text](url "title") のタイトル部分は自動除去
行折り返し 長い行は単語境界で自動分割(CJK は文字単位)
リッチテキスト行分割保持 行分割しても太字・斜体等の書式を維持
snake_case 保護 _ による斜体判定で snake_case_name を誤変換しない

変換結果のイメージ

変換前(Markdown):

変換前のMarkdownファイル

変換後(Excel):

変換後のExcelファイル

まとめ

  • Markdown で書いて、必要なときだけ Excel に変換する というワークフローが実現可能
  • 設定ファイルでフォントやレイアウトをカスタマイズ可能
  • go install 一発、md2xls 一発で動くシンプルさ
  • 5年放置していた趣味プロジェクトが Claude Code のおかげで完成

Excel 文化の現場で Markdown を使いたいエンジニアの方、ぜひ試してみてください。

https://github.com/HituziANDO/md2xls

11
5
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
11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?