この記事ではUIデザインに特化して解説します。デザインシステム・UI生成全般は デザインシステムとは?仕組み・構成要素・有名事例をエンジニア向けに完全解説 をご覧ください。
ツールの概要
Clearlyは、macOS専用のネイティブMarkdownエディタ。GitHub Stars 314、開発者はJosh Pigford(@Shpigford)。一言で表すなら「Electron排除・機能最小限・macOS最適化のMarkdownエディタ」。
SwiftとAppKitだけで構築された純粋なネイティブアプリ。サブスク不要、アカウント不要、クラウド接続不要。ローカルの.mdファイルを開いて書く、それだけに特化した設計。
OSSのREADME執筆やブログ下書きに適している。Viteのようなフロントエンド開発ツールのドキュメント作成や、OpenSwiftUIプロジェクトの資料作成にも使える。
何ができるのか
Clearlyの機能を3つのモードで整理する。
NSTextView + シンタックスハイライト
見出し / 太字 / リンク / コードブロックを色分け"] A --> C["プレビューモード (Cmd+2)
WKWebView + cmark-gfm
GFM / Mermaid / KaTeX を即時レンダリング"] A --> D["サイドバイサイド
左: エディタ 右: プレビュー
同期スクロール対応"]
機能一覧を整理する。
| 機能カテゴリ | 内容 | 操作方法 |
|---|---|---|
| シンタックスハイライト | 見出し、太字、斜体、リンク、コードブロック、引用、リスト | 自動適用(正規表現ベース) |
| リアルタイムプレビュー | GitHub Flavored Markdown完全対応 | Cmd+2 または分割表示 |
| Mermaidダイアグラム | フローチャート、シーケンス図等をプレビュー内で描画 | Mermaid記法をそのまま記述 |
| KaTeX数式 | 数式をプレビュー内でレンダリング | LaTeX記法をそのまま記述 |
| YAML frontmatter | エディタ・プレビュー両方でフォーマット表示 | ファイル先頭に—で囲む |
| PDF出力 | プレビュー内容をPDFエクスポートまたは直接プリント | メニューから実行 |
| フォーマットショートカット | 太字(Cmd+B)、斜体(Cmd+I)、リンク(Cmd+K) | キーボードショートカット |
| Scratchpad | メニューバー常駐のミニエディタ。グローバルホットキーで起動 | ホットキーで呼び出し |
| QuickLook | Finderで.mdファイルをスペースキーでプレビュー | QLPreviewProvider拡張 |
| ダークモード | システム設定に自動追従、手動切り替えも可 | 自動 / 手動設定 |
Scratchpadは他のMarkdownエディタにあまり見られない機能。ドキュメントを開かずにメニューバーからメモを取れるため、ちょっとしたアイデア記録に使える。
仕組み
アーキテクチャはSwiftUI + AppKitのハイブリッド構成。DocumentGroupベースのドキュメント管理アプリとして動作する。
FileDocument準拠、.mdファイルのI/O"] A --> C["ContentView"] C --> D["EditorView (NSViewRepresentable)
NSTextView をラップ"] D --> E["MarkdownSyntaxHighlighter
(NSTextStorageDelegate)
正規表現でキーストロークごとに解析
コードブロック → 見出し → 太字 → ... の優先順位"] C --> F["PreviewView (NSViewRepresentable)
WKWebView をラップ"] F --> G["MarkdownRenderer (cmark-gfm) → HTML生成
PreviewCSS でスタイル適用"]
設計判断で注目すべき点が3つある。
NSTextView採用の理由 – SwiftUI標準のTextEditorではなくAppKitのNSTextViewを使用。ネイティブUndo/Redo、システム検索パネル(Cmd+F)、NSTextStorageDelegateによるハイライトが必要なため。
共有コード設計 – MarkdownRendererとPreviewCSSは、メインアプリとQuickLook拡張の両方にコンパイル。プレビューの見た目がFinderのQuickLookと完全一致する。
動的テーマ – 全カラー定義がTheme.swiftに集約。NSColor(name:)でライト/ダークを自動解決し、ハードコードされた色は存在しない。
インストールと使い方
| 方法 | 手順 | 前提条件 |
|---|---|---|
| DMGダウンロード | GitHub Releasesから.dmgを取得 → Applicationsにドラッグ | macOS 14以降 |
| ソースビルド | git clone → xcodegen generate → Xcode(Cmd+R) | Xcode、Homebrew、xcodegen |
| CLIビルド | xcodebuild -scheme Clearly -configuration Debug build | Xcode CLI tools |
ソースビルドの前提条件を整理する。
| 必要ツール | インストール方法 | 用途 |
|---|---|---|
| macOS 14 (Sonoma)以降 | – | 実行環境 |
| Xcode + CLI tools | xcode-select –install | ビルド |
| Homebrew | brew.sh | パッケージ管理 |
| xcodegen | brew install xcodegen | project.yml → .xcodeproj生成 |
| Sparkle (自動取得) | Swift Package Manager | 自動アップデート |
| cmark-gfm (自動取得) | Swift Package Manager | Markdownレンダリング |
project.ymlが設定の正。変更した場合はxcodegen generateの再実行が必要。.xcodeprojの直接編集は非推奨。
shadcn/uiなどのUIコンポーネントライブラリでフロントエンドを構築する際のドキュメント、ClearlyでMarkdown執筆してからGitHubにプッシュする流れが効率的。
他ツールとの比較
| 項目 | Clearly | iA Writer | Bear | Obsidian | Typora |
|---|---|---|---|---|---|
| 価格 | 無料(OSS) | 買い切り約$50 | サブスク$1.49/月 | 無料(プラグイン一部有料) | 買い切り約$15 |
| プラットフォーム | macOS専用 | macOS/iOS/Windows | macOS/iOS | 全プラットフォーム | macOS/Windows/Linux |
| レンダリング方式 | ネイティブ(AppKit+WKWebView) | ネイティブ | ネイティブ | Electron | Electron |
| GFM対応 | 完全 | 部分的 | 部分的 | プラグイン依存 | 完全 |
| Mermaid対応 | 対応 | 非対応 | 非対応 | プラグインで対応 | 対応 |
| KaTeX/数式 | 対応 | 非対応 | 非対応 | プラグインで対応 | 対応 |
| クラウド同期 | なし | iCloud | iCloud | Obsidian Sync(有料) | なし |
| プラグイン | なし | なし | なし | 豊富 | なし |
| QuickLook拡張 | 対応 | 非対応 | 非対応 | 非対応 | 非対応 |
| Scratchpad | 対応 | 非対応 | 非対応 | 非対応 | 非対応 |
Clearlyの立ち位置は明確。「macOSでMarkdownを書くだけ」に徹した無料ツール。Obsidianのナレッジベース構築やBearのタグ管理は不要、iA Writerに$50を払う前に試す価値がある選択肢。
クロスプラットフォームが必須なら選択肢から外れる。iOS連携もなく、チームでドキュメントを共有する場合はVS CodeやObsidianの方が適切。
制限事項・注意点
- macOS 14以降が必須: Sonoma未満のmacOSでは動作しない。古い環境のユーザーは対象外
- クラウド同期機能なし: アプリ自体にファイル同期機能は存在しない。iCloud DriveやDropboxフォルダに保存すれば間接的に同期は可能だが、コンフリクト解決はOS任せ
- プラグイン・拡張機能なし: 設計思想として機能追加の仕組みを持たない。カスタムテーマ、ショートカットの追加、外部サービス連携は不可
- 自動テストなし: テストスイートは存在しない。手動ビルド→実行→目視確認が基本フロー
- iOS/iPad非対応: AppKit依存のためiOS移植の見込みなし。モバイル執筆にはiA WriterやBearを選択
- Xcodeビルドが必要: ソースビルドにはxcodegen + Xcode環境が前提。DMGダウンロードであれば不要