はじめに
「ターミナルでMarkdownを見ながら、Mermaidの図もそのまま確認したい」
そんな思いから始まったglowmの開発。今回は特別なチャレンジとして、OpenAI Codexのみで開発を進めてみました。要件整理から実装、テスト、リリースまで、すべてCodexとの対話で完結させた記録です。
作ったもの
glowmは、Glow風のMarkdown表示機能に加えて、Mermaidダイアグラムをターミナル内で画像として表示できるCLIツールです。
主な機能
- Markdown → ANSIレンダリング: Glamourベースの美しいターミナル表示
- Mermaid → PNG変換: chromedp + Mermaid.jsでブラウザ不要の変換
- iTerm2/Kitty対応: インライン画像プロトコルで図を直接表示
- PDF出力:
--pdfオプションでMermaidダイアグラムをPDF化
# 基本的な使い方
glowm README.md
# 標準入力から
cat README.md | glowm -
# PDF出力
glowm --pdf README.md > diagram.pdf
Codexとの開発プロセス
1. 要件整理 – スコープの絞り込み
最初は「Glow相当 + mermaid-cli相当 + 標準出力」という漠然とした要望からスタート。Codexと対話する中で、以下のように仕様が固まっていきました。
- コマンド名: glowmに決定
- 出力: 標準出力が基本、PDFはオプション
- 実装言語: Go
- 外部コマンド依存なし(glow/mermaid-cliを呼ばない自己完結型)
重要だったのは「URL/GitHub入力の意義が不明」という指摘。ローカルファイルとSTDINのみに限定することで、シンプルな仕様に収束しました。
2. 実装途中での方針転換
MVP実装後、大きな問題が発覚しました。
「ANSIで出力しても、Mermaidの図が見えない」
当初はMermaidをテキストとして表示していましたが、「端末内で図として見たい」という本来の目的に立ち返り、実装方針を大きく変更。
- iTerm2/Kittyの画像プロトコル対応を採用
- MermaidをPNG化してインライン表示
- 非対応端末では従来通りコードブロック表示
この方針転換がglowmの最大の特徴になりました。
3. 細かな調整の積み重ね
Codexとの対話で、表示品質を段階的に改善しました。
- 画像サイズ: 端末幅に合わせて動的に拡大
- フォントサイズ: 14px→16px→18px→20pxと調整
- 見出し表記: Glamourのデフォルト
##プレフィックスを削除
4. リリースまで自動化
GitHub pushからHomebrew Formula作成まで、Codexの指示通りに進めました。
brew tap atani/tap
brew install glowm
技術的なポイント
外部依存なしのMermaid変換
chromedpを使い、ヘッドレスChromeでMermaid.jsを実行します。mermaid-cliのインストール不要で、Mermaidのレンダリングを実現しています。
ターミナル画像プロトコル
iTerm2とKittyは、Base64エンコードした画像をエスケープシーケンスで出力することで、インライン画像表示ができます。glowmは端末を自動検出し、適切なプロトコルで出力します。
Codexだけで開発して感じたこと
- スコープの絞り込みが自然にできる: 対話の中で「それ本当に必要?」と問われることで、必要最小限の機能に集中できた
- 方針転換のハードルが低い: 実装途中でも「やっぱりこうしたい」と言えば、すぐに対応してくれる
- ドキュメントも一緒に作れる: ADR、PRD、Tasksなどをコードと並行して作成
おわりに
glowmは「ターミナルでMarkdownとMermaidを一緒に見たい」というシンプルな欲求から生まれました。Codexとの開発は、要件の整理から実装、リリースまで一気通貫で進められる新しい開発体験でした。
ぜひ試してみてください。
リンク
- GitHub: https://github.com/atani/glowm
- Homebrew:
brew tap atani/tap && brew install glowm - Release: https://github.com/atani/glowm/releases/tag/v0.1.1

