Windows 用の軽量な Markdown ビューアです。WPF + WebView2 で構築されており、Markdown ファイルをダブルクリックするだけで素早く閲覧できます。
ただ表示するだけのビューアではありません。フォルダに溜まった Markdown を「知識ベース」として横断的に探索できるのが Hirake の特徴です。すべてローカルで完結し、文書が外部へ送信されることは一切ありません。
| 機能 | できること | |
|---|---|---|
| 🔍 | AI 意味検索(完全オフライン) | 「認証まわりで例外的な扱いをしている箇所」のような曖昧な日本語で、キーワードが一致しない文書まで引き当てます。埋め込みモデルはローカル実行(ONNX)なので社内文書でも安心 |
| 🖼️ | 画像の中まで検索(OCR) | スクショや図の中の文字を Windows OCR で抽出し、キーワード検索・意味検索の両方でヒット。「あの画面のスクショどこだっけ」に効きます |
| 🕸️ | ナレッジグラフ | 文書間のリンクを解析して関係を地図のように可視化(Ctrl+G)。無限キャンバスの「全体俯瞰」として開き、そのままズームインして中身まで見に行けます。「この文書を参照している文書」のバックリンク一覧も常設表示 |
| 🗂️ | 構造クエリビュー | 「全文書の見出しだけ」「未完了の TODO だけ」を横断抽出して一覧化(Ctrl+Shift+S)。クリックで該当行へ直接ジャンプ |
| 🔗 | リンク切れ・孤立ページの検出 | 移動・改名で切れたリンクと、どこからも参照されていないページを一覧化(Ctrl+Shift+L)。クリックで壊れた行へジャンプでき、hirake:// 付きでまとめてコピーして外部エディタや AI に渡せます |
| 👯 | 文書指紋・類似検出 | コピペそのまま・編集して貼った重複記述を検出してグループ表示(Ctrl+Shift+R)。ドキュメント資産の重複を棚卸しできます |
| 📖 | 「次に読む」レコメンド | 表示中の文書と意味的に似た文書をサイドバーに提案。フォルダ内の関連知識へ自然に辿れます |
これらの探索機能は検索結果・一覧から該当行への直接ジャンプでつながっており、AI モデル未取得の環境では静かに無効化されるため、ビューアとしての軽快さは損ないません。
Hirake は、エディタでの編集を目的とせず「素早く正確に Markdown を表示すること」に特化したビューアアプリケーションです。GitHub 風のスタイルでシンタックスハイライトや mermaid 図を含む Markdown を、ネイティブアプリのように高速に表示します。
http(s):// へのリンクはアプリ内ではなく既定のブラウザで開きます.md / .markdown を再帰的に検索し、ファイルごとにヒット行のプレビューを表示します。文書が参照する画像内の文字(OCR)もヒット対象です120% など)が画面右下に表示され、操作を止めると自動で消えます(印刷・PDF には写りません)- [ ])だけ」「TODO などのキーワードを含むブロックだけ」を横断抽出して一覧表示し、クリックで該当行へジャンプできます[[wikilink]] が索引に無い)と、被リンクが 0 のページを一覧表示します。クリックで参照元の該当行へジャンプでき、一覧は hirake://open?path=...&line=... 付きのテキストとしてコピーできます(Hirake は検出して場所を示すところまでを担い、修正はエディタや AI が行います)$...$ / $$...$$ の数式を KaTeX で描画します.md リンクも新しいタブで開けます[[wikilink]] 記法: Obsidian などで使われる [[ページ名]] をリンクとして扱います。ナレッジグラフ・バックリンク・キャンバスにも反映されます(後述)Releases から HirakeSetup-x.y.z.exe をダウンロードして実行します。
%LocalAppData%\Programs\Hirake にユーザー単位でインストールします.md の関連付けとスタートメニューのショートカットは、ウィザードのチェックボックスで選べますアンインストールは「設定 > アプリ > インストールされているアプリ」から行います。
初回起動時の警告について
インストーラにコード署名がないため、「Windows によって PC が保護されました」という青い画面が出ます。 「詳細情報」→「実行」 を押すと続行できます(この表示は署名証明書を取得するまで消せません)。
アンインストールしても、設定・ワークスペース・セマンティック索引は残ります(再インストール時に失わないためです)。完全に消す場合は、アンインストール後に次のフォルダを削除してください。
Remove-Item -Recurse -Force "$env:LocalAppData\Hirake"
.NET 10 SDK がインストールされた環境で、以下のコマンドを実行してください。
dotnet publish src/Hirake -c Release -r win-x64 --self-contained false -o publish
ビルド成果物は publish フォルダに出力されます(publish\Hirake.exe)。
配布用のインストーラを作る手順は installer/README.md を参照してください。
インストーラを使った場合、この手順は不要です(ウィザードで登録済み)。ソースからビルドした場合や、インストール時に関連付けを外した場合に使います。
.md / .markdown ファイルを Hirake で開けるようにするには、scripts/register.ps1 を実行します。管理者権限は不要です(現在のユーザー = HKCU にのみ登録します)。
# 既定の exe パス(publish または bin\Release)を自動検出して登録する場合
.\scripts\register.ps1
# exe のパスを明示的に指定する場合
.\scripts\register.ps1 -ExePath "C:\Tools\Hirake\Hirake.exe"
登録すると、以下が行われます。
Hirake.md という ProgId を HKCU に登録.md / .markdown の「プログラムから開く」候補に Hirake を追加.md の既定プログラムが未設定の場合のみ Hirake を既定に設定(既に別アプリが既定になっている場合は上書きしません)hirake:// の URL プロトコルを登録(下記のディープリンク用)他アプリが .md に登録している既定プログラムや「プログラムから開く」候補は変更しません。既に別アプリが既定になっている環境では、Hirake は「プログラムから開く」候補にのみ追加されます。
注意: Windows 11 では初回のみ、
.mdファイルを右クリック →「プログラムから開く」→「別のプログラムを選択」から Hirake を選び、「常にこのアプリを使う」にチェックを入れる操作が必要な場合があります。
登録した関連付けを削除するには、scripts/unregister.ps1 を実行します。
.\scripts\unregister.ps1
Hirake の ProgId・OpenWithProgIds・hirake:// プロトコルのエントリを削除します。.md の既定プログラムは、Hirake.md になっている場合のみ削除され、他アプリが既定になっている場合は変更しません。Hirake が追加した値を除去し、その結果として空になった関連キーも削除します。
どちらのスクリプトも「どの値を自分が作ったか」は記録していません。unregister.ps1 の契約は「現時点で存在する Hirake の関連付けをすべて解除する」ことなので、実行前から Hirake の関連付けがあった場合はそれも解除されます。また、実行前から空だった
OpenWithProgIds/ 拡張子キーも掃除の対象になります。
他アプリが登録した OpenWithProgIds のエントリが残っている場合、そのキーは削除されません。Hirake.md ProgId と hirake:// プロトコルのキーも、shell\open\command の実行ファイル名が Hirake.exe であることを確認してから削除します。確認できない場合(別の実行ファイルを指している/shell\open\command が無い)は、レジストリを 1 つも変更せずに終了コード 1 で中止します。
確認しているのは実行ファイルの名前だけで、パスは見ていません。別アプリの実行ファイルもたまたま
Hirake.exeという名前であれば Hirake のものと判定されます。
両スクリプトはレジストリ操作と手順を
scripts/association-lib.ps1に集約しており、単体では動作しません。3 ファイルを同じフォルダに置いて実行してください。どちらも失敗時は終了コード 1 で終わります。値ごとのロールバックは行わないため、その時点で一部の変更が適用済みのことがあります。原因を解消して再実行してください(両スクリプトとも何度実行しても同じ結果になります)。
tests/ にリグレッションテストがあります。Pester には依存しません(追加インストール不要)。実際の .md / .markdown / Hirake.md / hirake には一切触れず、実行ごとに一意な使い捨ての ProgId・URL スキーム・拡張子だけを使い、終了時に削除します。
# レジストリ操作の関数単体
.\tests\test-association-lib.ps1
# 登録・解除の制御フロー(呼ぶ順序、どの失敗で何をやめるか、表示と終了コード)
.\tests\test-association-flow.ps1
hirake:// ディープリンクブラウザ・チャット・タスク管理ツール・エディタなど他アプリから、特定文書の特定位置へ直接リンクできます(scripts/register.ps1 での登録が必要)。
hirake://open?path=<URLエンコードした絶対パス>[&line=<1始まりの行番号>][&heading=<URLエンコードした見出しテキスト>]
| パラメータ | 説明 |
|---|---|
path | 必須。ローカルの絶対パス。拡張子は .md / .markdown のみ |
line | 任意。1 始まりの行番号 |
heading | 任意。見出しテキストそのもの(概要 など)。指定すると line より優先されます |
例:
Start-Process "hirake://open?path=C%3A%5Cdocs%5Csample.md&heading=%E6%A6%82%E8%A6%81"
Start-Process "hirake://open?path=C%3A%5Cdocs%5Csample.md&line=42"
line に入ります)heading に見出し id(section-1 等)ではなく見出しテキストを使うのは、日本語見出しの id が自動採番になり人間が書けないためです.md / .markdown 以外の拡張子、存在しないファイル、未知の verb は黙って無視します(行うのは「Markdown をタブで開く」ことだけです)hirake://workspace?name=<URLエンコードしたワークスペース名>
Start-Process "hirake://workspace?name=%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E6%BA%96%E5%82%99"
name はパスとして一切解釈しません(ワークスペースは名前をファイル名に使わない設計のため、トラバーサルの経路自体が存在しません)[[wikilink]] 記法Obsidian などで使われる [[ページ名]] を、ふつうのリンクとして扱います。ナレッジグラフ(Ctrl+G)・バックリンクパネル・キャンバスにもそのまま反映されます。
| 書き方 | 動き |
|---|---|
[[ページ名]] | そのページを新しいタブで開く |
[[ページ名|表示名]] | 表示だけ変えて同じページを開く |
[[ページ名#見出し]] | そのページの該当見出しへスクロールする |
[[フォルダ/ページ名]] | フォルダを指定して曖昧さをなくす |
拡張子は省略できます([[note]] でも [[note.md]] でも同じ)。
探す範囲は、開いているファイルから推定したワークスペースのルート配下です(横断検索・ナレッジグラフと同じ範囲)。同名のファイルが複数あるときは、次の順で 1 つに決めます。
[[sub/note]] のようにフォルダを指定していれば、それに一致するもの4 まで来た場合はリンクとして開けますが、点線の下線で「同名が複数ある」ことを示します。どれが選ばれたかはマウスを乗せると分かります。
リンクにはせず、[[まだ無いページ]] のように原文のまま赤い破線で表示します。黙って通常の文字にすると、リンクのつもりが繋がっていないことに気付けないためです。
[[ を含む普通の文章をリンクにしてしまわないよう、次の場合はリンクにしません。
[[0][1]] のように内側に [ ] を含むもの\[[...]] とエスケープしたもの[[]] のように中身が空のもの![[...]](埋め込み記法。Hirake では非対応)それでも都合が悪い場合は、settings.json の WikiLinksEnabled を false にすると機能ごとオフにできます(設定 UI はありません。タブの再読み込みで反映されます)。
[表示](other.md#見出し)のような通常のリンクでも、#見出しで開いた先の該当位置までスクロールします。 見出しテキスト(#決めごと)と GitHub 流の見出し id(#my-heading)のどちらでも指定できます。
いま読んでいる行を、外部エディタの同じ行で開きます。編集機能は入れず、編集へ移る経路だけを用意する形です。
はじめて使ったときに、インストール済みのエディタを探して一覧で出します。選ぶだけで使え、引数を書く必要はありません。
┌─ エディタを選ぶ ──────────────────────────────┐
│ ● Visual Studio Code │
│ ...\Microsoft VS Code\Code.exe │
│ 見つけた場所: 既知のインストール先 │
│ ○ メモ帳 │
│ C:\Windows\system32\notepad.exe │
│ 見つけた場所: PATH │
│ ※ 行ジャンプには対応していません │
└────────────────────────────────────────────────┘
同名の実行ファイルが複数見つかることがあるため、どこで見つけたかを併記し、候補が 1 件でも確認を求めます。行ジャンプに対応していないエディタは、その場で分かるようにしています。
一覧に無いエディタは「一覧に無い…」から .exe を選べます(この場合はファイルを開くところまで。行ジャンプが必要なら下記の設定を書き換えてください)。
実機で確認できたものだけを同梱しています。
| エディタ | 行ジャンプ |
|---|---|
| Visual Studio Code | ✅ |
| サクラエディタ | ✅ |
| メモ帳 | — |
秀丸 / Notepad++ / EmEditor / Sublime Text / gVim は未検証のため、Assets\editors.json の unverified に置いてあります。使う場合は editors 配列へ移してください(引数が違っていれば、そのファイルを直せば直ります)。
選んだ内容は settings.json の Editor に保存されます。選び直すときはこの項目を削除してください(次に Ctrl+E を押したときに再び選択画面が出ます)。
"Editor": {
"Name": "サクラエディタ",
"ExePath": "C:\\Program Files (x86)\\sakura\\sakura.exe",
"FileArgs": ["-Y={line}", "{file}"],
"NoLineArgs": ["{file}"],
"FolderArgs": [],
"SupportsLine": true
}
{file} / {line} / {folder} が置き換わります。引数は配列で持ちます(1 本の文字列にしないのは、パスに空白・日本語・& が含まれても壊れないようにするためです)。
起動に失敗したときは、実行しようとした内容と理由を表示し、診断ログにも残します。
複数の場所にある docs/ を 1 つの vault へシンボリックリンク(またはジャンクション)で集めている場合、既定ではリンクを辿りません。横断検索・ファイルツリー・ナレッジグラフなどの結果にリンク先の文書は出ません。
これは、リンクが \\server\share のようなネットワーク共有を指していると、走査した時点で認証情報が送られてしまうためです。
リンクを経由するフォルダ自体も、既定では開けません。 C:\vault\link\docs\x.md のように、開いたファイルの経路のどこかにリンクがある場合、サイドバーのファイルツリーや横断検索は次のように案内します。
このフォルダはリンクを経由しています。
settings.json の FollowDirectoryLinks を true にすると表示できます。
(\\server\share を指すリンクなど、設定を有効にしても開けないものにはこの案内は出ません。)
辿るようにするには、%LocalAppData%\Hirake\settings.json に次を追加して Hirake を再起動します。
{
"FollowDirectoryLinks": true
}
有効にしても、次のリンクは辿りません。
\\server\share のような UNC パスを指すもの\\?\GLOBALROOT\... のようなデバイスパス(\\?\C:\ と \\?\Volume{...}\ は除く)なお、辿らないのはあらかじめ置かれたリンクについての判定です。走査している最中にリンクの向き先を書き換えられる状況までは防げません(フォルダを直接開く場合は従来どおり、UNC とネットワークドライブを拒否します)。
表示されるパスは実体のパスになります。
C:\vault\docs-a\x.mdではなく、リンク先のC:\repo-a\docs\x.mdとして扱われます。同じ文書がリンク経由と実体の両方で二重に出るのを防ぐためです。
ワークスペースとセッションにも実体のパスが保存されます。 リンク経由のパスのままだと、次に開いたときにそのタブが復元されないためです。すでに保存済みのワークスペースも、読み込んだ時点で実体のパスとして扱われます(ファイルは書き換えません)。
なお、C:\vault\current のようなリンクを張り替えて参照先を切り替える使い方をしている場合、ワークスペースには保存した時点の実体が記録されます。張り替えても、そのワークスペースは元の実体を開きます。
タブ構成をまとめて保存し、いつでも同じ状態に戻せます。ツールバーの「ワークスペース」ボタン、または Ctrl+Shift+W で一覧を開きます。
| 操作 | 動作 |
|---|---|
| 名前を入力して「保存」 | そのウィンドウのタブ構成を保存します。以後このウィンドウはそのワークスペースとして扱われます |
| 一覧の項目をクリック | 新しいウィンドウで開きます。既に開いていればそのウィンドウを前面化します(● 印が付きます) |
| ゴミ箱アイコン | 確認のうえ削除します |
| ウィンドウを閉じる | 名前付きワークスペースなら、タブ構成の変更が自動で書き戻されます(保存忘れが起きません) |
保存されるもの: タブの並び順・種別(文書 / キャンバス / 構造クエリ / リンク検出 / 指紋 / 統計)・アクティブタブ・各文書のスクロール位置・キャンバスの視点(パン位置とズーム率)・ウィンドウの位置とサイズ。
保存されないもの:
canvas-layout の値を参照するだけ)です。同じフォルダを含む 2 つのワークスペースが別々の座標を持つと、手動配置(ピン留め)のどちらが正しいか決められなくなるためです上限は、ワークスペース 50 件 / 1 ワークスペース 200 タブ / 名前 60 文字 / 同時に開けるウィンドウ 10 枚です。保存先は %LocalAppData%\Hirake\workspaces.json で、書き込みは一時ファイル経由の原子的置換を行います(壊れた場合は空の一覧として起動します)。
| キー | 動作 |
|---|---|
| Ctrl+O | Markdown ファイルを開く |
| Ctrl+E | いま読んでいる行を外部エディタで開く |
| Ctrl+N | 新しいウィンドウを開く |
| Ctrl+Shift+W | ワークスペース一覧の開閉 |
| Ctrl+W | 現在のタブを閉じる |
| Ctrl+Tab | 次のタブへ切り替え |
| Ctrl+Shift+Tab | 前のタブへ切り替え |
| Ctrl+F | ページ内検索を開く |
| Esc | 検索を閉じる |
| Ctrl+Shift+E | PDF にエクスポート |
| Ctrl+Shift+V | クリップボードのテキストを表示 |
| Ctrl+Shift+D | テーマ切替(自動 → ライト → ダーク) |
| Ctrl+B | ファイルツリー サイドバーの表示切替 |
| Alt+← | 1 つ前に表示していたファイルへ戻る |
| Alt+↑ | ファイルツリーのルートを 1 つ上のフォルダへ |
| Ctrl+Shift+F | フォルダ内横断検索(サイドバーを開いて検索) |
| Ctrl+G | ナレッジグラフ(キャンバスの全体俯瞰)を開く |
| Ctrl+Shift+S | 構造クエリビューを開く |
| Ctrl+Shift+L | リンク切れ・孤立ページの検出ビューを開く |
| Ctrl+Shift+R | 文書指紋・類似検出ビューを開く |
| Ctrl+Shift+T | フォルダ統計ダッシュボードを開く |
| Ctrl+Shift+C | 無限キャンバス・モードを開く |
| Ctrl+P | 印刷(プレビュー) |
| Ctrl+ホイール / Ctrl+0 | ズーム(拡大縮小 / 100% に戻す) |
Hirake は MIT License で公開されています。
Copyright (c) 2026 soramaru777
| ライブラリ | 用途 | ライセンス |
|---|---|---|
| Markdig | Markdown → HTML 変換 | BSD-2-Clause |
| Microsoft.Web.WebView2 | HTML レンダリング(SDK) | Microsoft Software License Terms |
| highlight.js(github / github-dark テーマ含む) | シンタックスハイライト | BSD-3-Clause |
| mermaid | 図の描画 | MIT |
| KaTeX(同梱フォント含む) | 数式レンダリング | MIT |
highlight.js / mermaid / KaTeX は src/Hirake/Assets/vendor/ にミニファイ済みファイルを同梱しています。各ライセンスの全文は THIRD-PARTY-NOTICES.md を参照してください。
Windows 用の軽量な Markdown ビューアです。WPF + WebView2 で構築されており、Markdown ファイルをダブルクリックするだけで素早く閲覧できます。
ただ表示するだけのビューアではありません。フォルダに溜まった Markdown を「知識ベース」として横断的に探索できるのが Hirake の特徴です。すべてローカルで完結し、文書が外部へ送信されることは一切ありません。
| 機能 | できること | |
|---|---|---|
| 🔍 | AI 意味検索(完全オフライン) | 「認証まわりで例外的な扱いをしている箇所」のような曖昧な日本語で、キーワードが一致しない文書まで引き当てます。埋め込みモデルはローカル実行(ONNX)なので社内文書でも安心 |
| 🖼️ | 画像の中まで検索(OCR) | スクショや図の中の文字を Windows OCR で抽出し、キーワード検索・意味検索の両方でヒット。「あの画面のスクショどこだっけ」に効きます |
| 🕸️ | ナレッジグラフ | 文書間のリンクを解析して関係を地図のように可視化(Ctrl+G)。無限キャンバスの「全体俯瞰」として開き、そのままズームインして中身まで見に行けます。「この文書を参照している文書」のバックリンク一覧も常設表示 |
| 🗂️ | 構造クエリビュー | 「全文書の見出しだけ」「未完了の TODO だけ」を横断抽出して一覧化(Ctrl+Shift+S)。クリックで該当行へ直接ジャンプ |
| 🔗 | リンク切れ・孤立ページの検出 | 移動・改名で切れたリンクと、どこからも参照されていないページを一覧化(Ctrl+Shift+L)。クリックで壊れた行へジャンプでき、hirake:// 付きでまとめてコピーして外部エディタや AI に渡せます |
| 👯 | 文書指紋・類似検出 | コピペそのまま・編集して貼った重複記述を検出してグループ表示(Ctrl+Shift+R)。ドキュメント資産の重複を棚卸しできます |
| 📖 | 「次に読む」レコメンド | 表示中の文書と意味的に似た文書をサイドバーに提案。フォルダ内の関連知識へ自然に辿れます |
これらの探索機能は検索結果・一覧から該当行への直接ジャンプでつながっており、AI モデル未取得の環境では静かに無効化されるため、ビューアとしての軽快さは損ないません。
Hirake は、エディタでの編集を目的とせず「素早く正確に Markdown を表示すること」に特化したビューアアプリケーションです。GitHub 風のスタイルでシンタックスハイライトや mermaid 図を含む Markdown を、ネイティブアプリのように高速に表示します。
http(s):// へのリンクはアプリ内ではなく既定のブラウザで開きます.md / .markdown を再帰的に検索し、ファイルごとにヒット行のプレビューを表示します。文書が参照する画像内の文字(OCR)もヒット対象です120% など)が画面右下に表示され、操作を止めると自動で消えます(印刷・PDF には写りません)- [ ])だけ」「TODO などのキーワードを含むブロックだけ」を横断抽出して一覧表示し、クリックで該当行へジャンプできます[[wikilink]] が索引に無い)と、被リンクが 0 のページを一覧表示します。クリックで参照元の該当行へジャンプでき、一覧は hirake://open?path=...&line=... 付きのテキストとしてコピーできます(Hirake は検出して場所を示すところまでを担い、修正はエディタや AI が行います)$...$ / $$...$$ の数式を KaTeX で描画します.md リンクも新しいタブで開けます[[wikilink]] 記法: Obsidian などで使われる [[ページ名]] をリンクとして扱います。ナレッジグラフ・バックリンク・キャンバスにも反映されます(後述)Releases から HirakeSetup-x.y.z.exe をダウンロードして実行します。
%LocalAppData%\Programs\Hirake にユーザー単位でインストールします.md の関連付けとスタートメニューのショートカットは、ウィザードのチェックボックスで選べますアンインストールは「設定 > アプリ > インストールされているアプリ」から行います。
初回起動時の警告について
インストーラにコード署名がないため、「Windows によって PC が保護されました」という青い画面が出ます。 「詳細情報」→「実行」 を押すと続行できます(この表示は署名証明書を取得するまで消せません)。
アンインストールしても、設定・ワークスペース・セマンティック索引は残ります(再インストール時に失わないためです)。完全に消す場合は、アンインストール後に次のフォルダを削除してください。
Remove-Item -Recurse -Force "$env:LocalAppData\Hirake"
.NET 10 SDK がインストールされた環境で、以下のコマンドを実行してください。
dotnet publish src/Hirake -c Release -r win-x64 --self-contained false -o publish
ビルド成果物は publish フォルダに出力されます(publish\Hirake.exe)。
配布用のインストーラを作る手順は installer/README.md を参照してください。
インストーラを使った場合、この手順は不要です(ウィザードで登録済み)。ソースからビルドした場合や、インストール時に関連付けを外した場合に使います。
.md / .markdown ファイルを Hirake で開けるようにするには、scripts/register.ps1 を実行します。管理者権限は不要です(現在のユーザー = HKCU にのみ登録します)。
# 既定の exe パス(publish または bin\Release)を自動検出して登録する場合
.\scripts\register.ps1
# exe のパスを明示的に指定する場合
.\scripts\register.ps1 -ExePath "C:\Tools\Hirake\Hirake.exe"
登録すると、以下が行われます。
Hirake.md という ProgId を HKCU に登録.md / .markdown の「プログラムから開く」候補に Hirake を追加.md の既定プログラムが未設定の場合のみ Hirake を既定に設定(既に別アプリが既定になっている場合は上書きしません)hirake:// の URL プロトコルを登録(下記のディープリンク用)他アプリが .md に登録している既定プログラムや「プログラムから開く」候補は変更しません。既に別アプリが既定になっている環境では、Hirake は「プログラムから開く」候補にのみ追加されます。
注意: Windows 11 では初回のみ、
.mdファイルを右クリック →「プログラムから開く」→「別のプログラムを選択」から Hirake を選び、「常にこのアプリを使う」にチェックを入れる操作が必要な場合があります。
登録した関連付けを削除するには、scripts/unregister.ps1 を実行します。
.\scripts\unregister.ps1
Hirake の ProgId・OpenWithProgIds・hirake:// プロトコルのエントリを削除します。.md の既定プログラムは、Hirake.md になっている場合のみ削除され、他アプリが既定になっている場合は変更しません。Hirake が追加した値を除去し、その結果として空になった関連キーも削除します。
どちらのスクリプトも「どの値を自分が作ったか」は記録していません。unregister.ps1 の契約は「現時点で存在する Hirake の関連付けをすべて解除する」ことなので、実行前から Hirake の関連付けがあった場合はそれも解除されます。また、実行前から空だった
OpenWithProgIds/ 拡張子キーも掃除の対象になります。
他アプリが登録した OpenWithProgIds のエントリが残っている場合、そのキーは削除されません。Hirake.md ProgId と hirake:// プロトコルのキーも、shell\open\command の実行ファイル名が Hirake.exe であることを確認してから削除します。確認できない場合(別の実行ファイルを指している/shell\open\command が無い)は、レジストリを 1 つも変更せずに終了コード 1 で中止します。
確認しているのは実行ファイルの名前だけで、パスは見ていません。別アプリの実行ファイルもたまたま
Hirake.exeという名前であれば Hirake のものと判定されます。
両スクリプトはレジストリ操作と手順を
scripts/association-lib.ps1に集約しており、単体では動作しません。3 ファイルを同じフォルダに置いて実行してください。どちらも失敗時は終了コード 1 で終わります。値ごとのロールバックは行わないため、その時点で一部の変更が適用済みのことがあります。原因を解消して再実行してください(両スクリプトとも何度実行しても同じ結果になります)。
tests/ にリグレッションテストがあります。Pester には依存しません(追加インストール不要)。実際の .md / .markdown / Hirake.md / hirake には一切触れず、実行ごとに一意な使い捨ての ProgId・URL スキーム・拡張子だけを使い、終了時に削除します。
# レジストリ操作の関数単体
.\tests\test-association-lib.ps1
# 登録・解除の制御フロー(呼ぶ順序、どの失敗で何をやめるか、表示と終了コード)
.\tests\test-association-flow.ps1
hirake:// ディープリンクブラウザ・チャット・タスク管理ツール・エディタなど他アプリから、特定文書の特定位置へ直接リンクできます(scripts/register.ps1 での登録が必要)。
hirake://open?path=<URLエンコードした絶対パス>[&line=<1始まりの行番号>][&heading=<URLエンコードした見出しテキスト>]
| パラメータ | 説明 |
|---|---|
path | 必須。ローカルの絶対パス。拡張子は .md / .markdown のみ |
line | 任意。1 始まりの行番号 |
heading | 任意。見出しテキストそのもの(概要 など)。指定すると line より優先されます |
例:
Start-Process "hirake://open?path=C%3A%5Cdocs%5Csample.md&heading=%E6%A6%82%E8%A6%81"
Start-Process "hirake://open?path=C%3A%5Cdocs%5Csample.md&line=42"
line に入ります)heading に見出し id(section-1 等)ではなく見出しテキストを使うのは、日本語見出しの id が自動採番になり人間が書けないためです.md / .markdown 以外の拡張子、存在しないファイル、未知の verb は黙って無視します(行うのは「Markdown をタブで開く」ことだけです)hirake://workspace?name=<URLエンコードしたワークスペース名>
Start-Process "hirake://workspace?name=%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E6%BA%96%E5%82%99"
name はパスとして一切解釈しません(ワークスペースは名前をファイル名に使わない設計のため、トラバーサルの経路自体が存在しません)[[wikilink]] 記法Obsidian などで使われる [[ページ名]] を、ふつうのリンクとして扱います。ナレッジグラフ(Ctrl+G)・バックリンクパネル・キャンバスにもそのまま反映されます。
| 書き方 | 動き |
|---|---|
[[ページ名]] | そのページを新しいタブで開く |
[[ページ名|表示名]] | 表示だけ変えて同じページを開く |
[[ページ名#見出し]] | そのページの該当見出しへスクロールする |
[[フォルダ/ページ名]] | フォルダを指定して曖昧さをなくす |
拡張子は省略できます([[note]] でも [[note.md]] でも同じ)。
探す範囲は、開いているファイルから推定したワークスペースのルート配下です(横断検索・ナレッジグラフと同じ範囲)。同名のファイルが複数あるときは、次の順で 1 つに決めます。
[[sub/note]] のようにフォルダを指定していれば、それに一致するもの4 まで来た場合はリンクとして開けますが、点線の下線で「同名が複数ある」ことを示します。どれが選ばれたかはマウスを乗せると分かります。
リンクにはせず、[[まだ無いページ]] のように原文のまま赤い破線で表示します。黙って通常の文字にすると、リンクのつもりが繋がっていないことに気付けないためです。
[[ を含む普通の文章をリンクにしてしまわないよう、次の場合はリンクにしません。
[[0][1]] のように内側に [ ] を含むもの\[[...]] とエスケープしたもの[[]] のように中身が空のもの![[...]](埋め込み記法。Hirake では非対応)それでも都合が悪い場合は、settings.json の WikiLinksEnabled を false にすると機能ごとオフにできます(設定 UI はありません。タブの再読み込みで反映されます)。
[表示](other.md#見出し)のような通常のリンクでも、#見出しで開いた先の該当位置までスクロールします。 見出しテキスト(#決めごと)と GitHub 流の見出し id(#my-heading)のどちらでも指定できます。
いま読んでいる行を、外部エディタの同じ行で開きます。編集機能は入れず、編集へ移る経路だけを用意する形です。
はじめて使ったときに、インストール済みのエディタを探して一覧で出します。選ぶだけで使え、引数を書く必要はありません。
┌─ エディタを選ぶ ──────────────────────────────┐
│ ● Visual Studio Code │
│ ...\Microsoft VS Code\Code.exe │
│ 見つけた場所: 既知のインストール先 │
│ ○ メモ帳 │
│ C:\Windows\system32\notepad.exe │
│ 見つけた場所: PATH │
│ ※ 行ジャンプには対応していません │
└────────────────────────────────────────────────┘
同名の実行ファイルが複数見つかることがあるため、どこで見つけたかを併記し、候補が 1 件でも確認を求めます。行ジャンプに対応していないエディタは、その場で分かるようにしています。
一覧に無いエディタは「一覧に無い…」から .exe を選べます(この場合はファイルを開くところまで。行ジャンプが必要なら下記の設定を書き換えてください)。
実機で確認できたものだけを同梱しています。
| エディタ | 行ジャンプ |
|---|---|
| Visual Studio Code | ✅ |
| サクラエディタ | ✅ |
| メモ帳 | — |
秀丸 / Notepad++ / EmEditor / Sublime Text / gVim は未検証のため、Assets\editors.json の unverified に置いてあります。使う場合は editors 配列へ移してください(引数が違っていれば、そのファイルを直せば直ります)。
選んだ内容は settings.json の Editor に保存されます。選び直すときはこの項目を削除してください(次に Ctrl+E を押したときに再び選択画面が出ます)。
"Editor": {
"Name": "サクラエディタ",
"ExePath": "C:\\Program Files (x86)\\sakura\\sakura.exe",
"FileArgs": ["-Y={line}", "{file}"],
"NoLineArgs": ["{file}"],
"FolderArgs": [],
"SupportsLine": true
}
{file} / {line} / {folder} が置き換わります。引数は配列で持ちます(1 本の文字列にしないのは、パスに空白・日本語・& が含まれても壊れないようにするためです)。
起動に失敗したときは、実行しようとした内容と理由を表示し、診断ログにも残します。
複数の場所にある docs/ を 1 つの vault へシンボリックリンク(またはジャンクション)で集めている場合、既定ではリンクを辿りません。横断検索・ファイルツリー・ナレッジグラフなどの結果にリンク先の文書は出ません。
これは、リンクが \\server\share のようなネットワーク共有を指していると、走査した時点で認証情報が送られてしまうためです。
リンクを経由するフォルダ自体も、既定では開けません。 C:\vault\link\docs\x.md のように、開いたファイルの経路のどこかにリンクがある場合、サイドバーのファイルツリーや横断検索は次のように案内します。
このフォルダはリンクを経由しています。
settings.json の FollowDirectoryLinks を true にすると表示できます。
(\\server\share を指すリンクなど、設定を有効にしても開けないものにはこの案内は出ません。)
辿るようにするには、%LocalAppData%\Hirake\settings.json に次を追加して Hirake を再起動します。
{
"FollowDirectoryLinks": true
}
有効にしても、次のリンクは辿りません。
\\server\share のような UNC パスを指すもの\\?\GLOBALROOT\... のようなデバイスパス(\\?\C:\ と \\?\Volume{...}\ は除く)なお、辿らないのはあらかじめ置かれたリンクについての判定です。走査している最中にリンクの向き先を書き換えられる状況までは防げません(フォルダを直接開く場合は従来どおり、UNC とネットワークドライブを拒否します)。
表示されるパスは実体のパスになります。
C:\vault\docs-a\x.mdではなく、リンク先のC:\repo-a\docs\x.mdとして扱われます。同じ文書がリンク経由と実体の両方で二重に出るのを防ぐためです。
ワークスペースとセッションにも実体のパスが保存されます。 リンク経由のパスのままだと、次に開いたときにそのタブが復元されないためです。すでに保存済みのワークスペースも、読み込んだ時点で実体のパスとして扱われます(ファイルは書き換えません)。
なお、C:\vault\current のようなリンクを張り替えて参照先を切り替える使い方をしている場合、ワークスペースには保存した時点の実体が記録されます。張り替えても、そのワークスペースは元の実体を開きます。
タブ構成をまとめて保存し、いつでも同じ状態に戻せます。ツールバーの「ワークスペース」ボタン、または Ctrl+Shift+W で一覧を開きます。
| 操作 | 動作 |
|---|---|
| 名前を入力して「保存」 | そのウィンドウのタブ構成を保存します。以後このウィンドウはそのワークスペースとして扱われます |
| 一覧の項目をクリック | 新しいウィンドウで開きます。既に開いていればそのウィンドウを前面化します(● 印が付きます) |
| ゴミ箱アイコン | 確認のうえ削除します |
| ウィンドウを閉じる | 名前付きワークスペースなら、タブ構成の変更が自動で書き戻されます(保存忘れが起きません) |
保存されるもの: タブの並び順・種別(文書 / キャンバス / 構造クエリ / リンク検出 / 指紋 / 統計)・アクティブタブ・各文書のスクロール位置・キャンバスの視点(パン位置とズーム率)・ウィンドウの位置とサイズ。
保存されないもの:
canvas-layout の値を参照するだけ)です。同じフォルダを含む 2 つのワークスペースが別々の座標を持つと、手動配置(ピン留め)のどちらが正しいか決められなくなるためです上限は、ワークスペース 50 件 / 1 ワークスペース 200 タブ / 名前 60 文字 / 同時に開けるウィンドウ 10 枚です。保存先は %LocalAppData%\Hirake\workspaces.json で、書き込みは一時ファイル経由の原子的置換を行います(壊れた場合は空の一覧として起動します)。
| キー | 動作 |
|---|---|
| Ctrl+O | Markdown ファイルを開く |
| Ctrl+E | いま読んでいる行を外部エディタで開く |
| Ctrl+N | 新しいウィンドウを開く |
| Ctrl+Shift+W | ワークスペース一覧の開閉 |
| Ctrl+W | 現在のタブを閉じる |
| Ctrl+Tab | 次のタブへ切り替え |
| Ctrl+Shift+Tab | 前のタブへ切り替え |
| Ctrl+F | ページ内検索を開く |
| Esc | 検索を閉じる |
| Ctrl+Shift+E | PDF にエクスポート |
| Ctrl+Shift+V | クリップボードのテキストを表示 |
| Ctrl+Shift+D | テーマ切替(自動 → ライト → ダーク) |
| Ctrl+B | ファイルツリー サイドバーの表示切替 |
| Alt+← | 1 つ前に表示していたファイルへ戻る |
| Alt+↑ | ファイルツリーのルートを 1 つ上のフォルダへ |
| Ctrl+Shift+F | フォルダ内横断検索(サイドバーを開いて検索) |
| Ctrl+G | ナレッジグラフ(キャンバスの全体俯瞰)を開く |
| Ctrl+Shift+S | 構造クエリビューを開く |
| Ctrl+Shift+L | リンク切れ・孤立ページの検出ビューを開く |
| Ctrl+Shift+R | 文書指紋・類似検出ビューを開く |
| Ctrl+Shift+T | フォルダ統計ダッシュボードを開く |
| Ctrl+Shift+C | 無限キャンバス・モードを開く |
| Ctrl+P | 印刷(プレビュー) |
| Ctrl+ホイール / Ctrl+0 | ズーム(拡大縮小 / 100% に戻す) |
Hirake は MIT License で公開されています。
Copyright (c) 2026 soramaru777
| ライブラリ | 用途 | ライセンス |
|---|---|---|
| Markdig | Markdown → HTML 変換 | BSD-2-Clause |
| Microsoft.Web.WebView2 | HTML レンダリング(SDK) | Microsoft Software License Terms |
| highlight.js(github / github-dark テーマ含む) | シンタックスハイライト | BSD-3-Clause |
| mermaid | 図の描画 | MIT |
| KaTeX(同梱フォント含む) | 数式レンダリング | MIT |
highlight.js / mermaid / KaTeX は src/Hirake/Assets/vendor/ にミニファイ済みファイルを同梱しています。各ライセンスの全文は THIRD-PARTY-NOTICES.md を参照してください。