Obsidian使い始めた4~運用編2~

20250109085649447.png

ノートの分類

僕はノートを以下の5つに分けている。よく言われるツェッテルカステンとはちょっと違う分類である。
一時メモ(Fleeting Notes)に当たるようなものは紙にメモっているのでObsidian上には存在しない。
雑な内容は全部雑感ノートに突っ込めば良い。雑感と日記との区別は、対象にしているものがパブリックなものかプライベートなものか、の違いである。例えば、あるテレビニュースに対して感じたことは雑感であり、散歩中の出来事や買い物の話は日記である。
創作ノートを分けている理由は、創作の用語や事象は現実のものとは違うからである。例えば、「魔法」という概念について、現実のものと僕の構築している世界では別の内容になるため、分けなければならない。

フォルダ名 用途
永続ノート 時事ネタのように時間経過により古くならない情報をまとめたノート群
雑感ノート 時事ネタや特定の事象に対する雑感を綴ったノート群
創作ノート マンガや小説用の設定資料、キャラクターシート、物語プロットなどのノート群
日記ノート 今日あったことやプライベートな事象に対する感想や思ったことを綴ったノート群
文献ノート 本や論文などに対するまとめや感想をまとめたノート群

永続ノート

永続ノートは特にフォーマットTemplateは規定していない。

雑感&日記ノート

Templateは下記の通り、Templaterを使用してdateは入力している。
これに追加してLinterを使用して、タイトル(title)、作成日(created)、最終編集日(modified)を自動入力するようになっている。
publishをtrueにするとEnveloppeでuploadできるようになる。公開を意図してないノートが公開されることをこれで防いでいる。

雑感&日記用Template

1
2
3
4
5
6
7
8
9
10
---
title: Notes
author: nanika_sheila
date: <% tp.file.creation_date() %>
tags:
- 日記
categories: 日記
description:
publish: false
---

創作ノート

創作ノートは運用を模索中である。基本的には、キャラクター、組織、用語、などはそれぞれTemplateを用意して、Projectsで管理しようと思っている。物語の構築にどう役立てるかはもう少し考えていきたい。

文献ノート

文献ノートのFolderNoteは以下のようになっている。
MetaBindで作った「Add ISBN to Note」ボタンを押すと、文献ノート用のTemplateを開く。
ISBNを入力すれば、OpenBDと版元ドットコムから書籍情報を取得して書影とサマリーが記載されたノートが作成される。これで、本に対するメモが取りやすくなる。
また、Frontmatterにはどれだけ読み進めているかのステータスプロパティもあるので、「買ったのに読んでない本」や「読んでる途中で止まっている本」をDataviewで列挙できる。

20250109091658192.png

文献ノート用Template

コミュニティプラグインTemplaterを使っているので、下記Templateを使う人はインストール必須です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<%*
/**
* ISBNを入力してOpenBDの書誌情報を取得し、
* ノートのFrontMatterと本文に反映するTemplaterスクリプト。
* pubdate を YYYY-MM-DD 形式に統一する。
*/

// ISBN入力ダイアログ
const isbnInput = await tp.system.prompt("ISBNコードを入力してください:");
const isbn = isbnInput.replace(/-/g, "");
const url = `https://api.openbd.jp/v1/get?isbn=${isbn}`;
const response = await fetch(url);
const data = await response.json();

// pubdate を YYYY-MM-DD 形式に整形する関数
function formatPubdate(rawDate) {
if (!rawDate) return "不明";
// 数字以外を取り除く(ハイフンなど)
const clean = rawDate.replace(/\D/g, "");

// パターン別に対応
if (clean.length === 8) {
// 例: 20240101 -> 2024-01-01
return `${clean.substring(0,4)}-${clean.substring(4,6)}-${clean.substring(6,8)}`;
} else if (clean.length === 6) {
// 例: 202401 -> 2024-01-01(日付不明のため"01"を仮)
return `${clean.substring(0,4)}-${clean.substring(4,6)}-01`;
} else if (clean.length === 4) {
// 例: 2024 -> 2024-01-01(月日不明のため"01"を仮)
return `${clean}-01-01`;
} else {
// その他のパターンはそのまま返す or "不明" など
return rawDate;
}
}

if (data && data[0]) {
// summary部分
const summary = data[0].summary ?? {};
const rawtitle = summary.title ?? "不明";
const author = summary.author ?? "不明";
const publisher = summary.publisher ?? "不明";
const rawPubdate = summary.pubdate ?? "";
const cover = (summary.cover != null && summary.cover != "" ) ? summary.cover : `https://img.hanmoto.com/bd/img/${isbn}.jpg`;

// pubdate を変換
const pubdate = formatPubdate(rawPubdate);
// ファイル名に使用できるように安全なタイトルに置換
let title = rawtitle
.replace(/\//g, "/")
.replace(/\\/g, "\")
.replace(/:/g, ":")
.replace(/\*/g, "*")
.replace(/\?/g, "?")
.replace(/"/g, "”")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/\|/g, "|");

// ファイル名変更
await tp.file.rename(title);

// --- FrontMatter
tR += `---\n`;
tR += `title: "${title}"\n`;
tR += `author: "${author}"\n`;
tR += `publisher: "${publisher}"\n`;
tR += `pubdate: ${pubdate}\n`;
tR += `isbn: "${isbn}"\n`;
tR += `cover: "${cover}"\n`;
tR += `tags:\n - 本\n - ISBN\n`;
tR += `---\n\n`;
} else {
tR += "書誌情報が見つかりませんでした。";
}
%>