2ペイン構成のMarkdownプレビューアプリケーション。左ペインにフォルダツリー、右ペインに選択ファイルのプレビューを表示します。
- ローカルのMarkdownファイル(最大500ファイル)を効率的に閲覧
- frontmatterメタデータの可視化
- リアルタイム検索とファイル監視
- PRサマリーやドキュメントの一覧管理に最適
- Claude CodeでダミーのMarkdownファイルを作成し表示
✅ 2ペインレイアウト
- 左: フォルダツリー(折りたたみ可能)
- 右: Markdownプレビュー + メタデータ表示
✅ 検索フィルタ
- ファイル名/パス/本文で検索
- リアルタイム絞り込み
✅ 自動監視
- ファイル変更を2秒間隔で検知
- 選択状態を維持して自動更新
✅ メタデータ表示
- frontmatterから title, repo, PR番号, author, date, labels を抽出
- 外部PRへのリンクボタン
✅ エラーハンドリング
- 大容量ファイル(10MB超)の警告
- 文字エンコーディング自動判定(UTF-8 → Shift-JIS → fallback)
- 権限エラーの詳細表示
- Python 3.13+
- macOS / Linux / Windows
# リポジトリに移動
cd /Users/taka110/Desktop/hc2025_md_viewer
# 仮想環境を作成
python3.13 -m venv .venv
# 仮想環境を有効化
source .venv/bin/activate
# 依存パッケージをインストール
pip install -r requirements.txt./start.shダブルクリックでも起動可能です。
# 仮想環境を有効化
source .venv/bin/activate
# アプリケーション起動
streamlit run app.pyブラウザが自動で開き、http://localhost:8501 でアクセスできます。
hc2025_md_viewer/
├── data/ # Markdownファイルを配置
│ ├── 2025-10/
│ │ ├── pr-summary-2025-10-01.md
│ │ └── pr-summary-2025-10-02.md
│ └── docs/
│ └── setup.md
├── app.py
├── start.sh
└── requirements.txt
推奨形式: YYYY-MM-DD_repo_pr123_title.md
例:
2025-10-01_backend_pr456_add-auth.md2025-10-05_frontend_pr789_fix-layout.md
各Markdownファイルの先頭に以下の形式で記述:
---
title: Pull Request Summary
repo: my-org/my-repo
pr: 123
author: taka110
date: 2025-10-01
url: https://github.com/my-org/my-repo/pull/123
labels: [bug, enhancement]
---
# 本文
ここにMarkdownコンテンツを記述...| フィールド | 型 | 必須 | 説明 | 例 |
|---|---|---|---|---|
title |
string | ○ | タイトル | "Add authentication" |
repo |
string | - | リポジトリ名 | "my-org/backend" |
pr |
integer | - | PR番号 | 123 |
author |
string | - | 作成者 | "taka110" |
date |
string | - | 日付 (YYYY-MM-DD) | "2025-10-01" |
url |
string | - | 外部リンク | "https://github.com/..." |
labels |
array | - | ラベル | ["bug", "p1"] |
フォールバック:
- frontmatterがない場合は本文のみ表示
- フィールドが欠けている場合は該当項目を非表示
mkdir -p data/2025-10
cat > data/2025-10/sample.md << 'EOF'
---
title: サンプルPRサマリー
repo: example/repo
pr: 1
author: user
date: 2025-10-01
url: https://github.com/example/repo/pull/1
labels: [feature, backend]
---
# 概要
これはサンプルのPRサマリーです。
## 変更内容
- 機能Aを追加
- バグBを修正
## テスト
- ユニットテスト追加
- 手動テスト完了
EOF以下のディレクトリ/ファイルは自動でスキャン対象外:
.git, .svn, .hg
node_modules, bower_components
__pycache__, .venv, venv, env
.pytest_cache, .mypy_cache, .tox, .eggs
dist, build, target, out
.vscode, .idea, .fleet
.cache, tmp, temp
.DS_Store, Thumbs.db
- 起動:
./start.shを実行 - フォルダ選択: 左ペインのフォルダをクリックして展開
- ファイル選択: ファイル名をクリックして右ペインにプレビュー表示
- 検索: 上部の検索ボックスにキーワードを入力
- 監視: 「自動監視」トグルをONにするとファイル変更を自動検知
- 検索クリア: 検索ボックス右の「✕」ボタン
- 更新: 右上の「🔄 Refresh」ボタン
- PRリンク: メタデータ下の「🔗 Pull Requestを開く」ボタン
- 10MB以上のファイルはプレビュー不可
- 警告メッセージが表示されます
- エディタで直接開くことを推奨
- UTF-8を推奨
- Shift-JISは自動変換を試行
- その他のエンコーディングは文字化けする可能性あり
- ファイル選択にボタンを使用(Streamlitの制約)
- キーボード操作は未対応
# 依存パッケージを再インストール
source .venv/bin/activate
pip install --upgrade -r requirements.txt# dataディレクトリを作成
mkdir -p data
echo "# Test" > data/test.md
# アプリ内で「🔄 Refresh」ボタンをクリック# 既存のプロセスを終了
lsof -ti:8501 | xargs kill -9
# または別のポートで起動
streamlit run app.py --server.port 8502- ファイルをUTF-8で保存し直す
- または以下のコマンドで変換:
iconv -f SHIFT-JIS -t UTF-8 input.md > output.md- フレームワーク: Streamlit 1.39.0
- 言語: Python 3.13+
- 主要ライブラリ:
streamlit-autorefresh: ファイル監視os,re: ファイル操作・正規表現
hc2025_md_viewer/
├── app.py # メインアプリケーション
├── start.sh # 起動スクリプト
├── requirements.txt # 依存パッケージ
├── utils/
│ ├── __init__.py
│ └── file_scanner.py # ファイルスキャナー
├── data/ # Markdownファイル配置先
└── .venv/ # 仮想環境
このプロジェクトは個人利用・学習目的で作成されています。
Claude Code で生成されました。