macOS用のシンプルで使いやすいMarkdownビューアアプリケーションです。
- Markdownファイルの美しいレンダリング
- 複数のウィンドウで複数のファイルを同時に開ける
- ドラッグ&ドロップでファイルを開く(複数ファイル対応)
- プレビュー内容のテキスト選択とコピーが可能(Command-C、編集メニューからコピー)
- GitHub風のスタイリング
- Mermaid図表のレンダリング対応 (フローチャート、シーケンス図、ガントチャートなど)
- キーボードショートカットによるスクロール操作
- ファイルの自動監視と再読み込み
- リロード時のスクロール位置保持 (Command-Rでのリロードや、ファイル変更検知による自動リロード時に、現在のスクロール位置が保持されます)
- Xcode 16.3以降
- Xcodeでプロジェクトを開く:
open MarkdownViewer.xcodeproj-
swift-markdownパッケージを追加:
- Xcodeのプロジェクトナビゲータで
MarkdownViewerプロジェクトを選択 PROJECT>MarkdownViewerを選択Package Dependenciesタブを選択+ボタンをクリック- 検索フィールドに
https://github.com/swiftlang/swift-markdown.gitを入力 Add PackageをクリックMarkdownプロダクトを選択してAdd Packageをクリック
- Xcodeのプロジェクトナビゲータで
-
Xcodeで以下の手順を実行:
- メニューから
Product>Buildを選択(または⌘B) - ビルドが成功したら
Product>Runを選択(または⌘R)
- メニューから
xcodebuild -project MarkdownViewer.xcodeproj -scheme MarkdownViewer -configuration Release buildアプリは build/Release/MarkdownViewer.app としてビルドされます:
- アプリケーションを起動
- 以下のいずれかの方法でファイルを開きます:
- メニューバーから
File > Open...を選択 (Command-O) - Markdownファイル(
.mdまたは.markdown)をウィンドウにドラッグ&ドロップ - コマンドラインから:
open -a MarkdownViewer file1.md file2.md file3.md - Finderからアプリにファイルをドラッグ&ドロップ
- メニューバーから
- 新しいウィンドウを開く:
Command-Nで空のウィンドウを作成 - 複数ファイルを開く: ファイル選択ダイアログで複数ファイルを選択、または複数のファイルをドラッグ&ドロップ
- 各ウィンドウは独立: 各ウィンドウで異なるファイルを表示し、個別にファイル監視と自動再読み込みを行います
Mermaidコードブロックを使用して、フローチャート、シーケンス図、ガントチャートなどの図表をレンダリングできます。
例:
```mermaid
graph TD
A[Start] --> B{Decision}
B -->|Yes| C[Action 1]
B -->|No| D[Action 2]
```Mermaidの詳細については、Mermaid公式ドキュメントを参照してください。
ファイル操作やスクロールのためのショートカットが利用できます。
| キー | 動作 |
|---|---|
Command-N |
新しいウィンドウを開く |
Command-O |
ファイルを開く(複数選択可能) |
Command-R |
ファイルを再読み込み |
| キー | 動作 |
|---|---|
j, ↓, Control-n |
1行下へスクロール |
k, ↑, Control-p |
1行上へスクロール |
Space, PageDown |
1ページ下へスクロール |
Shift-Space, PageUp |
1ページ上へスクロール |
Home, Command-< |
ドキュメントの先頭へ移動 |
End, Command->, G |
ドキュメントの末尾へ移動 |
| キー | 動作 |
|---|---|
Command-C |
選択したテキストをコピー |
Command-A |
すべてのテキストを選択 |
- 言語: Swift 5.0
- フレームワーク: SwiftUI, WebKit
- 対象OS: macOS 13.0以降
- リンク対応
- 外部リンク (http/https など) は既定ブラウザで開く
- ローカルの Markdown ファイル (
.md/.markdown) への相対/絶対リンクは別ウインドウで開く (読み取れない場合や Markdown 以外は何もしない) - ページ内アンカー (
#section等) に対応。見出しには自動的に slug ID を付与 - 別ファイル + fragment (
other.md#inner) で開いたリンクは、開いたウインドウで該当見出しへスクロール
- YAML frontmatter 対応
- Markdown ファイル先頭の
---で囲まれた frontmatter を検出し、本文とは別枠 (薄紫の枠 + monospace) で表示
- Markdown ファイル先頭の
- 変更箇所の自動ハイライト機能を追加
- ファイル再読み込み時に、前回からの差分を黄色背景で強調表示
- コードベースの大規模なリファクタリングを実施
- スクロールメソッドの重複コードを共通ヘルパーに統合
- キーイベントハンドラを宣言的なKeyBindingHandlerシステムに変換
- HTMLレンダリングロジックを焦点を絞った複数のメソッドに分解
- FileWatcherクラスを別ファイルに抽出し、関心の分離を改善
- コードの保守性、テスト可能性、可読性が大幅に向上
- プレビュー内容のテキスト選択とコピー機能を追加
- プレビュー内容を選択して、Command-Cや編集メニューからコピーできるようになりました
- Command-Aで全選択が可能です
- Mermaid図表のレンダリングサポートを追加
- フローチャート、シーケンス図、ガントチャートなどのMermaid図表を自動的にレンダリングします
```mermaidコードブロックを使用して図表を記述できます
- リロード時のスクロール位置保持機能を追加
- Command-Rでの手動リロード時にスクロール位置が保持されるようになりました
- ファイル変更検知による自動リロード時にもスクロール位置が保持されるようになりました
- 複数ウィンドウ対応
- 複数ファイルの同時オープン機能
- ファイルの自動監視と再読み込み機能
- キーボードショートカットによるスクロール操作
- 初回リリース
- 基本的なMarkdownレンダリング機能
- ドラッグ&ドロップサポート
このプロジェクトはMITライセンスで公開されています。