世界を動かす技術を、日本語で。

Show HN: Files.md – 「Obsidian」のオープンソース代替品

概要

  • files.md は、ローカルファーストで .mdファイル を管理するシンプルなアプリケーション
  • ブラウザだけで動作し、 インストール不要・オフライン対応
  • ノート、ドキュメント、タスク管理、ジャーナルなど 様々な用途 に対応
  • LLM(大規模言語モデル)フレンドリー な設計
  • 完全オープンソース で、自由にカスタマイズ可能

files.md:シンプルなMarkdownライフ管理アプリ

  • ノート、ドキュメント、プロジェクト、ジャーナル、習慣、チェックリスト、タスク など、日常の全てを.mdファイルで一元管理
  • ローカルファースト 設計、クラウド同期も可能(iCloud/Dropbox/Google Drive対応)
  • インストール不要、ブラウザ(Chrome推奨)だけで利用
  • オフライン対応、ファイルは全て自分の手元に保存
  • 無料・オープンソース、コードがシンプルで誰でも把握しやすい
  • PWA対応 で、アドレスバーから「files.mdをインストール」可能
  • Telegramチャットボット で外出先からのアクセスも簡単

最小限の機能で創造性を引き出す設計思想

  • 必要最小限の機能 のみ搭載、制約が創造性を刺激
  • 複雑なテンプレートやAIワークフロー不要
  • フォルダ構造は自由、最初は0フォルダ・1ノートから始めるのが推奨
  • 一つのノートに一つのアイデア、文脈なしで理解できる粒度
  • 関連ノートはリンクで接続、知識をネットワーク化

チャット機能・同期・知識管理の流れ

  • チャット画面 で思考やアイデアを即座に記録
    • メッセージ送信後、保存先を選択(後からでも可能)
  • 全デバイス間で自動同期、どこからでもアクセス
  • Telegram Bot連携、他メッセンジャーも順次対応予定

セカンドブレイン(Second Brain)批判とfiles.mdの哲学

  • Obsidian等の高度なPKMは「知識の先送り」問題を生みやすい
    • 複雑な構造やテンプレートで「分かったつもり」になりやすい
    • 本当に必要なのは「自分の頭で考える」こと
  • ノートは目的が明確な場合のみ有効
    • 深い理解、リサーチ、執筆など
  • 読書やノートだけでは経験値は得られない
    • 感情的な癒しには読書やノートよりも「体験」や「セラピー」が重要

ファイル構造例・命名規則

  • chat: Chat.md
  • ノート: brain/Note.md, <category>/*.md
  • チェックリスト: Read.md, Watch.md, Shop.md, MyChecklist_.md
  • ジャーナル: journal/2024.08 August.md
  • タスク: Later.md
  • 習慣: habits/Ate consciously.md, habits/*.md
  • 画像: media/*(png, jpg, webp, gif)
  • アーカイブ: archive/*.md
  • 設定: config.json
  • スキーマ: files.md/llms.txt(AIエージェント用)

ホットキー一覧

  • [ :ファイルへのリンク挿入
  • Cmd+P / Ctrl+P :ファイル検索
  • Cmd+N / Ctrl+N :新規ファイル作成
  • Cmd+M / Ctrl+M :ファイル移動
  • Cmd+D / Ctrl+D :ファイル削除
  • Cmd+Enter / Ctrl+Enter :チャット画面を開く
  • Cmd+Shift+Enter / Ctrl+Shift+Enter :チャットダイアログ切替
  • Cmd+[ / Ctrl+[ :前のファイルへ
  • Cmd+] / Ctrl+] :次のファイルへ
  • Cmd+~ / Ctrl+~ :サイドバー切替
  • Cmd+B / Ctrl+B :太字切替
  • Cmd+I / Ctrl+I :斜体切替
  • Cmd+Y / Ctrl+Y :チェックボックス挿入
  • Cmd/Ctrl + クリック :インラインテキストコピー/リンクオープン
  • Ctrl+Cmd+Space :絵文字挿入(macOS)

便利なスクリプト

  • Whoopメトリクス追加 :go run /abs/path/to/files.md/cmd/whoop/whoop.go
  • wikilink→Markdownリンク変換 :go run /abs/path/to/files.md/cmd/tomdlinks/tomdlinks.go
  • バックリンク挿入 :go run /abs/path/to/files.md/cmd/backlink/backlink.go
  • ジャーナルのタイムスタンプ調整 :go run /abs/path/to/files.md/cmd/shifttime/shifttime.go

開発・コントリビューションガイド

  • コードはシンプル・自己完結型、依存関係は極力排除
  • PRはコード削減・単純化が理想
  • 全ての依存物はリポジトリ内管理
  • 本当に必要な機能か常に問い直す
  • バックエンドはテスト必須、get*メソッド名禁止、エラー処理は明示的にWHYコメント
  • フロントエンドはビルド不要、10年後もindex.htmlだけで動作する設計

用語集

  • filename :拡張子付きファイル名(例:note.md、IDとして使用)
  • header :拡張子を除き大文字化したファイル名(例:Note)
  • body :ファイルの内容
  • dir :カテゴリごとのノート格納ディレクトリ(例:happiness)
  • userID :chatID(主にbotとのやり取りで使用)
  • ctime :ファイルの所有権・場所・タイプ・権限変更時刻、移動やリネームで変化
  • mtime :内容変更時刻、同期処理に利用
  • 一意なファイル指定 :filename+dir
  • サポートするフォルダ階層は1段のみ

パフォーマンス

  • 極めて高速 な動作
  • Mutexロック/アンロック:25ns
  • SSDから4Kランダムリード:150,000ns
  • 1ms = 1,000,000ns

ADRs(アーキテクチャ決定記録)抜粋

  • 2026/06/05 :「Today.md」から「Chat.md」へ移行、ユーザー理解向上のため
  • 2026/05/06 :「Inbox.md」と「Today.md」を統合、シンプルさと使いやすさ重視
  • 2026/04/23 :「API_HOST/APP_HOST」から「API_URL/APP_URL」へ変更、環境ごとの柔軟性向上
  • 2026/04/22 :BotのInboxエントリは安定したコンテンツハッシュで識別、同期精度向上
  • 2026/04/11 :Markdownリンクを標準化、GitHub等クロスプラットフォーム運用を重視

files.md は「自分の脳で考える」ことを重視し、 シンプルさ・柔軟性・高速性 を追求した 次世代のMarkdown知識管理アプリあなたの生活・思考・学び を、 自由自在に.mdファイルで記録・整理 できます。

Hackerたちの意見

データはプレーンファイルで持つべきだし、そのファイルを開くソフトウェアも自分のものにすべきだと思うんだ。そうすれば、ファイルとツールが一緒に成長して、時代を超えて完全に自分の所有物になるからね。アプリはLLMを使って簡単にカスタマイズできるし、コードもそのために最適化されてるよ。P.S. Golangはこういうソフトウェアにぴったりだと思う。

Golangが素晴らしい選択肢だと思う理由は何?

自分用に作ったもの、気に入るかもよ。 https://github.com/pratikdeoghare/brashtag

これで気づいたんだけど、Obsidianはオープンソースじゃないんだよね。でも、どこかオープンソースっぽい感じがあった。調べてみたら、確かにオープンソースじゃないのは明らかだけど、なんか「オープンソースであるべき」って感じがするんだよね。

それが数年前にこのプロジェクトを始めた理由なんだ。AI時代のソフトウェアはオープンソースで配布されるべきだと思う。誰でも好きなようにカスタマイズできるようにね。ゴチャゴチャしたプラグインシステムじゃなくて。

理由はオープンスタンダードだからだよ。Obsidianはマークダウンを使ってる、それだけ。専用のデータベースも、特別なアルゴリズムも、ロックインされたプラットフォームもない。ただ便利にメモを管理する方法があるだけ。ああ、なんかAIっぽいこと言っちゃった。自分でやることもできるけど、オンライン同期のサブスクリプションで手伝ってくれるから、安く済むんだよね。だからこそ、オープンスタンダードとフェデレーションをずっと推していくつもり。

まあ、ObsidianはElectronアプリで、難読化もされてないから、コードを取得するのは結構簡単だよ。確か公式のObsidianチームが、アプリを信用できない人にはサポートフォーラムでそうするように言ってたのを覚えてる。

ずっとそう思ってたよ!

それが私の印象ではなかったと思うけど、プラグインを作るためのAPIはかなりオープンだよ。Obsidianモデルを支持する形で、専用のエンジニアリングチームがいて、無料のツールで、メモは.md形式で保存されていて、専有のものじゃないし、もし必要なら同期ツールにお金を払うこともできる。それはかなり妥当だし、彼らの努力を支えるいい方法だと思う。さらに、製品を面白い方法で改善し続けてるし、新しいプラグインマーケットプレイスの検証ポリシーもすごくよくできてるし、目指すべきものだよね。でも、どちらにしても、これは素敵なプロジェクトだけど、私もObsidianのエバンジェリストなんだよね。

なんでオープンソースにする必要があるの?Obsidianはデータをオープンな標準で保存して、完全にコントロールできるんだよ。開発者が貧乏僧みたいに振る舞う理由を教えてほしいな。開発者たちは価値のあるものを作ったんだから、それに対して利益を得るべきだよ。

データはオープンで、Markdown形式で保存されてる。プラグインはオープンソースだよ。コア製品はオープンソースじゃないけど、結局はElectronアプリだしね。Obsidianはオープンコア製品の逆だとずっと思ってる。

でも、Obsidianの代替としては紹介しないかな。MDファイルを共有してるし、どちらもノートを取るためのものだけど(「どちらも」はObsidianのこと、Files.mdはまだ試してない)、Files.mdはユーザーが自分の考えやノート、知識を一緒に扱う独自の方法があるみたい。私が「代替」と聞いたときは、機能が同じでAPI互換性があると思ったけど、実際に見つけたのは全然違って、もっと面白かった。試してみるよ、1年前の作品をシェアしてくれてありがとう!

「代替」と聞いたとき、機能が同じでAPI互換性があると思った。 その時、代替って呼ばれるものが実際には代替じゃないってことについて、頭の中で愚痴が始まった。

「代替」と聞いたとき、機能が同じでAPI互換性があると思った。でも、実際に見つけたのは全然違って、もっと面白かった。いい観察をありがとう!確かに、私はこれをObsidianの代替として位置づけてないよ。まだこれに対するより良い説明は思いついてないけど、私にとっては、シンプルさ、物を追加するのが楽な流れ、すぐに使えることが大事なんだ。何が機能するかに集中して、何が派手かじゃなくて。

例えば「完全に自分が所有するセルフホスティングのマークダウンノート」とか「個人知識サーバー」みたいな感じ?機能でObsidianと競うんじゃなくて、所有権のアングルを強調するのがいいかも。

これは面白いけど、サーバーサイドじゃないプログラムが必要なんだ。全部ローカルで、次の20年以上動かしたいから。

クローンしてオフラインで使えるよ。web/index.htmlファイルを開くだけで、サーバーは全く必要ない。もしローカルサーバーが欲しいなら、簡単にセットアップできるよ:https://github.com/zakirullin/files.md/blob/main/docs/your-o...

TiddlyWiki? https://tiddlywiki.com/

これが理由で https://www.asnotes.io を作ったんだ - VS Code用の拡張機能だよ。Obsidianが必要だったけど、企業ネットワークではObsidianや他のPKMアプリが使えないからね。バージョン管理に優しいように設計されてるから、同期サーバーも必要ないよ(Gitを使えばOK)。

自己宣伝だけど、今、ローカルでネイティブな、ウェブベースじゃないミニマリストのものを作ってるんだ。外部依存もないし、データはシンプルなテキストファイルとして保存されてる。フォーマットは*nixツールで簡単に検索できるよ。オープンソースにはしないし、無料でもないけど、2年の永続ライセンスになる予定。どれくらい興味あるかな?ターゲットは、todo.txtのようなシンプルさを求めてる人たちだけど、少し役立つ機能も欲しい人たち。今のところLinuxとWindowsだけだよ。

スレッドにはMarkdown好きがたくさんいるね…もしMarkdownのタスクをReminders.appに同期したいなら、特権のためにお金を払ってほしいな: https://turquoisehexagon.co.uk/remindersync それか、自分で解決策を考えてみてね :)

面白いね。最近、自分のObsidianクローンを「バイブコーディング」したんだ。ちゃんとしたEmacsのキーバインディングが欲しいから、Obsidianはそれに対応してないし、拡張機能でも無理なんだよね。自分のプロジェクトをどうするか分からないけど、今は自分で使ってて、正しく作るのにかなりの努力が必要だった機能がたくさんあるよ。例えば、WYSIWYGのテーブル編集は簡単じゃないし、Claude Opusもそれを自力で管理できなかったって言ってるし。オープンソースにするのも選択肢だけど、ネガティブなフィードバックはあまり期待したくないな。もし他にObsidianでEmacsのキーバインディングが欲しい人がいたら、考え直すかも :)

今、Qt6(QWidgets、cpp)でObsidianのネイティブ版を作ってるんだ。Markdownエディタを再現するのに時間がかかるけど、ファイルが壊れたり、レンダリングされたMarkdownスタイルを失ったりする方法がたくさんあって…でも、少しずつ進んでるよ。軽量で、約15MBのRAMを使って、GPUも使わず、カーソルやスクロールが動いてる時もほとんどCPUを使わない、テキストエディタらしい感じだよ。ウィジェットのテーブル、リスト、コードブロックの構文ハイライトをレンダリングする必要があるけど、オープンソースにするかは分からないな。今は時間の無駄に思えるけど、使うのは無料にするつもりだよ。

「AI’m building」が誤字じゃないなら、AIを使って何を作ってるかを正確に主張する方法として気に入ってるよ。

いくつかのバージョンのセカンドブレインに「セカンドブレインは成長するけど、ファーストブレインは賢くならない」って書いてあるのが面白いな。Tiago Forteが言ってたことを思い出すけど、彼のセカンドブレインの目標は「何も覚えない」ことで、その時に必要なコンテキストをセカンドブレインが引き出して、彼がそれを読んで吸収するって言ってた。私にはそれがひどく思える :) 「ググればいいから、物事を覚える必要はない」って感じだよね。私はこの著者の、セカンドブレインを使ってファーストブレインを強化するというビジョンの方が好きだな。

ありがとう!何年もかけて知識を深めてきたけど、いい結果が出てるよ。メモを取り始めるのにそんなに技術やワークフローはいらないんだ。シンプルなセットアップで十分だよ。でも「セカンドブレイン」は人々の心をワクワクさせるんだよね。でも実際にはあんまりうまくいかない。売上はすごいけどね。

へへ、著者はObsidianで「メタデータのキュレーション」に疲れたって認めて、もっと自動的に処理するアプリを書いたんだって。私の考えでは、そんなにメタデータはいらないと思う!自分にぴったりの知識管理アプリを見つけるのに無駄に時間を使ってきたけど、正直言って、ページを放り込んで、また探して、必要なときにAIに要約させるだけのものが一番使えると思うよ。

あなたのZKについての説明が、実際には足かせになることがあるっていうのが好きだな。私も同じ問題に直面して、ZKが必ずしも自分に合ってるわけじゃないってわかった。何かを勉強するときに一番いいのは、資料を見直して、それを内面化してエッセイにまとめることだと思う。もし理解したい知識を完璧に再現するオリジナルのエッセイが作れないなら、ほぼ確実にそれを完璧には理解してないよ。逆に、必要ならサブチャートを使って詳細なフローチャートを作るのもいいよ。(Graphviz/dotがこれに向いてる)