LOADING

俺的Obsidianのつかいかた

公開日
更新日

どうも。Reoです。 最近Obsidianに目覚めてしまい、1週間ぐらいかけて大メモ整理を行いました。

Obsidian って?

Obsidianはマークダウンファイル管理するアプリケーションです。

ローカル環境にあるファイルを管理し、知識をwikiのようにまとめることができます。 また、デフォルトでデイリーノート機能がついており、1日1ノートを書くことが推奨されています(タブン!)

これまで

半年ほど前からObsidianを使い始めましたが、最近まではThinoというTwitter形式でタイムライン投稿できるメモや、バグ調査のメモなどで利用していました。毎日使うっていうよりかは3日に1回使うぐらいでした。

また、このブログのエディタと記事管理にも採用しましたが、正直うまくいっておらず、なんとなく使い方が良くない...ということにも気づいていました。

出会い

どうにかObsidianをうまく使いたいと思い、テンプレート等と戦っている時に、Minervaというサイトに出会いました。すごく衝撃を受けました。

とにかくObsidianを使う人もそうじゃない人も一度は訪れてみて欲しいサイトです。すごすぎる。Obsidian Publish というホスティングサービスを使ってObsidian の保管庫を丸っとサイトにしてある状態なので、運用方法もとても参考になります。

そして、なんだか悔しくなりました。なんで自分も何年も前からコレをやってないんだ...と。

気づき

Minervaに感銘を受け、Obsidianの整理方法を変え始めて、気づいたことがあります。

Obsidian にはウィキリンクという概念があります。Minervaを見ていてもわかるように、例えばObsidianというページがあれば全ての「Obsidian」という単語にリンクがつきます。

これってなんてWeb向けなんだ!ってことですよ。

リンクによってWebページ間の情報の結びつきが強くなることはSEO的にもとてもいいことです。

ブログを今からやるなら自分なら絶対 Obsidian Publish がいいと思います。まじで。(でも自分はどうにか自作でそこを目指したい...車輪の再開発といわれようとも...

環境構築

さて、前置きが長くなってしまいましたが、ここから俺的Obsidianの使い方です。かなり影響は受けていますので俺的でもなんでもないかもですが!

ディレクトリ構成

まずはディレクトリの分け方です。

- 001_Config
    - src
        - CustomJS のファイル
    - Templates
        - Templater のテンプレートファイル
- 002_Images 
    - 全ての画像
- 003_Clippings
    - Obsidian Web Clipperで保存したノート    
- 100_DailyNote
    - デイリーノート
- 101_MonthlyNote
    - 月刊ノート
- 102_YearlyNote
    - 年刊ノート
- Notes
    - 全てのノート

コレが1番Obsidianを使ううえの肝なんじゃないかと思っています。基本的にノートはディレクトリを分けない。

以前は次の画像のように、ディレクトリを分けて整理していました。このブログで現在運用中のディレクトリ分けなんですが、右のように変更しようと試行中です。

2025-03-俺的Obsidianのつかいかた-1742422091658

階層が深いとアクセス性はかなり悪くなります。

また、Obsidianでは基本的にアルファベット順にソートが行われます。好きな位置にファイルを配置することができないため、関連する内容には頭に絵文字をつけたり、番号をつけたりしてファイルの位置を操作しています。

利用しているコミュニティプラグイン

  • CustomJS
    • ホットキーなどをフックにしてjsを実行することができる
  • Obsidian Git
    • Git管理に利用
  • Templater
    • テンプレート機能
  • Thino
    • タイムライン形式でメモを追加できる。メモはデイリーノートに自動で追加される。
  • Various Complements
    • wikiリンクのオートコンプリート機能
  • Old Note Admonitor
    • 古いノートのヘッダーに古いですよが表示される
  • Editor Syntax Highlight
    • すでにストアから消えているがシンタックスハイライト系のプラグイン
  • Obsidian Image Converter
    • 画像をリサイズしたり整列したりできる

また、ChatGPTと一緒に作った自作プラグインも利用しています。

  • 別の保管庫(同じPC上)にファイルを複製するプラグイン
  • 月刊の時間割を作成するプラグイン

ノートの書き方

全てのノートには次のメタデータを付与しています。

---
createdDate: ファイル作成日
updatedDate: ファイル更新日
private: 公開するかどうか(まだ未使用)
aliases: 別名
url: 外部URL
---

このテンプレートはTemplaterを使っています。

<%*
  const addMetadata = async () => {
    const activeFile = app.workspace.getActiveFile();

    if (!activeFile) {
      new Notice("No active file found.", 5000);
      return;
    }

    const formatDate = (date) => new Intl.DateTimeFormat("ja-JP", {
      year: "numeric",
      month: "2-digit",
      day: "2-digit",
      hour: "2-digit",
      minute: "2-digit",
      timeZone: "Asia/Tokyo",
      calendar: "gregory",
    })
      .format(date)
      .replace(/\//g, "-")
      .replace(",", "");

    const metadata = app.vault.getAbstractFileByPath(activeFile.path);
    let createdDate = formatDate(new Date());

    if (metadata && metadata.stat && metadata.stat.ctime) {
      const createdDateRaw = new Date(metadata.stat.ctime);
      createdDate = formatDate(createdDateRaw);
    }

    const updatedDate = formatDate(new Date());

    let metadataContent = `---
createdDate: ${createdDate}
updatedDate: ${updatedDate}
private: true
aliases: []
url: ""
---`;

    let content = await app.vault.read(activeFile).then(data => data.trimStart());
    content = metadataContent + "\n" + content;

    await app.vault.modify(activeFile, content);

    new Notice("メタデータを追加しました");
  };

  // ファイルを保存してからメタデータを追加
  await app.commands.executeCommandById("workspace:save-file");
  setTimeout(addMetadata, 200);
%>

フォルダは作らない

先ほども書きましたが、全て Notes に入れます。Notes内でもフォルダ分けは一切しません。

タグやカテゴリは作らない

タグやカテゴリも基本的には作りません。 ブログでは、カテゴリとかタグってあるけれど、それも本当は必要ないんだなってことに気づきました...。

もし「#SwiftUI」というタグを作りたい場合は「SwiftUI」というノートを代わりに作り、その中にMOCを書いています。

MOCとは、情報や知識を体系的に整理し、単なるリストやフォルダ構造ではなく、地図のように視覚的に表現したもの。Nick Milo氏が提唱した。Map of Content。 https://minerva.mamansoft.net/Notes/MOC

実際に、SwiftUIについては次のように書いています。

2025-03-俺的Obsidianのつかいかた-1742421295004

ウィキリンクをあとからつける場合

Notionで管理していたメモを移行していたり、以前はウィキリンクを使っていない状態だったりしたため、ウィキリンクがついていないページがほとんどです。

それでもObsidianには後からウィキリンクをつける機能があります。

右側のサイドメニューからリンクされていないメンションより、リンクを選択することでウィキリンクを作成できます。

2025-03-俺的Obsidianのつかいかた-1742420822497

このとき、メタデータに追加してある aliases が役に立ちます。別名です。 SwiftUIと書いたり Swift UI と書いたりと表記がぶれている場合にも、どちらも対象とすることができます。とっても便利!

デイリーノートの書き方

デイリーノートはNotesディレクトリではなく 100_DailyNoteに配置しています。数字は整理番号なのであまり気にしないでください。

基本的には Thino でメモした内容が自動的に追加されたり、やること/やったこととかを書いてます。

テンプレートは簡潔にこんな感じです。(テンプレート適用できえてしまう..くぅ)

---
createdDate: 2025-03-18 10:45
updatedDate: 2025-03-18 12:47
---
## [[2025-03-17|昨日]]から引き継ぎ


## やったこと


## Thino

また、その日作成したノート一覧を挿入するテンプレートも利用しています。

最近は整理の鬼すぎて作成したノートが多すぎてあんまり役に立てていませんが、後々便利になるはずです。 作ったノートは全てNotes に入っていってしまうので、基本的にはその日のうちはデイリーノートのリンクから辿って開いています。

また、デイリーノートをまとめるためのMonthlyNote用とYearlyNote用のフォルダも用意しています。この3つは「フォルダ分けをしない」というルールから除外しています。

ホットキーの利用

ショートカットやホットキーを覚えることが苦手なので最低限のみ導入しています。

  • cmd + shift + n ノートにメタデータ追加(基本は新規作成時に自動で追加されている)
  • cmd + shift + s CustomJSでファイル保存時にupdateDateを更新しGitにプッシュする
  • cmd + shift + l デイリーノートにその日に作成したノートのリストを追加する
  • cmd + shift + j 現在開いているファイルをフォーカス

私がXcodeで唯一覚えたショートカットは cmd + shift + j です。コレは現在開いているファイルにナビゲーション上でフォーカスするという機能になります。

これはCustomJSを使って実現しています。(便利便利機能なので別記事にもしたいのでここでは簡単にコードだけ)

class ScrollToCurrentFile {
  async invoke() {
    try {
      const currentFile = app.workspace.getActiveFile();
      if (!currentFile) {
        new Notice("No active file found.", 5000);
        return;
      }

      const filePath = currentFile.path;
      const explorerLeaf = app.workspace.getLeavesOfType("file-explorer")[0];
      if (explorerLeaf) {
        // まずエクスプローラーをリセット(必要に応じて設定)
        explorerLeaf.view.revealInFolder(currentFile);

        // 少し時間を待つ(スクロールリセットが完了するのを待つ)
        await new Promise(resolve => setTimeout(resolve, 300));

        const fileEl = explorerLeaf.view.containerEl.querySelector(`[data-path="${filePath}"]`);
        if (fileEl) {
          // 少し上までスクロールするための調整
          const additionalScroll = 50; // 必要に応じて調整
          fileEl.scrollIntoView({ behavior: "smooth", block: "center" });
          explorerLeaf.view.containerEl.scrollTop -= additionalScroll;

          fileEl.classList.add("is-active");
          const fileName = currentFile.name;
          new Notice(`${fileName}」ファイルへ移動`, 5000);
        } else {
          new Notice("File not found in the explorer.", 5000);
        }
      } else {
        new Notice("File Explorer not found.", 5000);
      }
    } catch (error) {
      new Notice("Error occurred: " + error.message, 5000);
      console.error(error);
    }
  }
}

こんな感じで黄色にハイライトされます。(スクロールもするよ!)

2025-03-俺的Obsidianのつかいかた-1742421445999

めちゃめちゃ快適になるのでおすすめです。

おわりに

細かいところは全然書けていませんが、最近はこんな感じでObsidianを使うようになりました。

プライベートでのObsidianの運用方法はコレでイケるっしょ!と思っているんですが、ブログ記事の方はどうしようか悩んでいます。とりあえず同じ保管庫に記事は移したんですが、どうしたもんかなって気もしています。自分はどこまで自分のメモをネットに公開できるのか問題もあるし...

正直どこかの誰かに向けて書いているこのブログ記事より、よっぽどメモ書きの方がシンプルで有意義な内容が書かれているような気はしているので、なるべく公開はしていきたいです。

でも、今回みたいなブログも別物として書きたいんですよね。お気持ち含みブログ。

ただし Obsidian Publish は使わない方向で考えているので、ウィキリンクの処理とかも自力で頑張る予定です。でもAIたんがいるので方向性さえ決まれば簡単に実現できちゃうんじゃないかなと思っています。方向性さえ決まればね...

Minervaさんのようになりたい人生だったけれど、ここまでストイックには恐らくなれないので、自分なりに気持ちよくObsidianと付き合っていけたらいいなと思います。

継続して使っていくことが結局大事なので。

数日間狂ったように、自分用と会社用のメモのこれまでの全てをObsidianに移行していて、さらにファイルをGit管理しているので、GitHubの草がえらいことになりましたとさ。指も痛いよ

ばい

公開日
更新日