はじめに

今回は思考ノートなので、いつもの記事より読みづらいかも。あと脈絡がなく突然話題が切り替わる。でもObsidianを使っている人には意外と面白い話、、、かもしれない。知らない人にはめっちゃ気持ち悪い話だと思う。あと自分の考えなので参考程度に!

あと遅れましたが、一応、ソフ研アドベントカレンダー24日目の記事です。

自分はObsidianを愛用している。割と当時、2023年あたりぐらいからずっと使っている。
確か当時はサークルの先輩とかに触発されて、使い始めたんだっけか。

それまで、メモとかは自分のPCのメモ帳だとか、discordの個人チャンネルにやったりとかでいろいろ苦労してたから、初めてのメモアプリに感動した記憶がある。
自分の勉強した内容だとか、知識を蓄えていくことに結構楽しくなっていた。

それと同時にObsidianのカスタマイズにもかなり没頭していた。
例えば、プラグインだとか、テーマだとか、CSSだとか。
自分がかなりカスタマイズ好きな性格も相まって、もはやObsidianを使いやすくするというより、カスタマイズそのものがメインになっていた時期さえある。
2年半ちょっと経った今だと、だいぶ洗練されてきている。自分のObsidianについてから相当経ったが、それでも尚、自分のObsidianは恐ろしいほどに成長している。
例えば、デイリーノート。
テンプレートを見てみるとこんな感じ。
Templaterをゴリゴリに使用した構成になっている。ただ、どこかから拝借したテンプレートも混ざっている。

---
title: <%* const date = tp.file.title %><%date%>
date: <%date%>
created: <%date%>
modified: 
tags:
  - Diary
status: 🚩Stable
cssclasses:
  - daily-notes
---
 
[[<% tp.date.now("YYYY-MM-DD", -7, tp.file.title, "YYYY-MM-DD") %>]] || [[<% tp.date.now("YYYY-MM-DD", -1, tp.file.title, "YYYY-MM-DD") %>]] | [[<% tp.date.now("YYYY-MM-DD", 1, tp.file.title, "YYYY-MM-DD") %>]] || [[<% tp.date.now("YYYY-MM-DD", 7, tp.file.title, "YYYY-MM-DD") %>]]
 
カレンダー : [[Calendar]]
<%* const sleepingTime = await tp.system.prompt('睡眠時間を入力')%>
---
## メモ 
> 基本的には何でも書いてもいい、思考ログ、作業ログ、URLなどなど
 
 
 
---
## 日記
> 日記とか書いてあるけどまあ何でもよい
  #Diary/睡眠時間:<%sleepingTime%>
 
 
 
---
## [[Todo-List]] 
#Diary/todo-list 
 
<%*
const tToday = new Date(tp.file.title);
const tWeekNum = tToday.getDay();
const taskList = [
"0_SundayTasksTemplate",
"1_MondayTasksTemplate",
"2_TuesdayTasksTemplate",
"3_WednesdayTasksTemplate",
"4_ThusdayTasksTemplate",
"5_FridayTasksTemplate",
"6_SaturdayTasksTemplate",
];
%><%tp.file.include("[[" + taskList[tWeekNum] + "]]")%>
 
---
## 今日の計画
<%*
const today = new Date(tp.file.title);
const weekNum = today.getDay();
const list = [
"0_SundayUnivSubjectTemplate",
"1_MondayUnivSubjectTemplate",
"2_TuesdayUnivSubjectTemplate",
"3_WednesdayUnivSubjectTemplate",
"4_ThusdayUnivSubjectTemplate",
"5_FridayUnivSubjectTemplate",
"6_SaturdayUnivSubjectTemplate",
];
%><%tp.file.include("[[" + list[weekNum] + "]]")%>
 
---
## 仕訳
<%* const siwakeTag = "#仕訳/" + date.replaceAll("-", "/") %><%siwakeTag%>
### 収入
<%*
function isStartOfMonth(date) { 
	return date.getDate() === 1; 
}
 
function isKyuryobi(date) { 
	return date.getDate() === 5; 
}
 
function getFilesByTag(targetTag) {
  try {
    const filesWithTag = [];
    const normalizedTargetTag = targetTag.startsWith('#') ? targetTag : '#' + targetTag;
    
    const files = app.vault.getMarkdownFiles();
    for (const file of files) {
      const fileCache = app.metadataCache.getFileCache(file);
      if (!fileCache) continue;
      
      const fileTags = fileCache.tags ? fileCache.tags.map(t => t.tag) : [];
      const frontmatterTags = fileCache.frontmatter?.tags || [];
      const normalizedFrontmatterTags = (Array.isArray(frontmatterTags) 
        ? frontmatterTags 
        : [frontmatterTags]
      ).map(tag => tag.startsWith('#') ? tag : '#' + tag);
      
      const allFileTags = [...fileTags, ...normalizedFrontmatterTags];
      
      const hasMatchingTag = allFileTags.some(tag => tag.startsWith(normalizedTargetTag));
      if (hasMatchingTag) {
        filesWithTag.push(file);
      }
    }
    
    return filesWithTag;
    
  } catch (error) {
    console.error("ファイル取得エラー:", error);
    new Notice("ファイルの取得中にエラーが発生しました: " + error.message);
    return [];
  }
}
 
async function getShunyu(file){
	try {
		const content = await app.vault.read(file);
		// インラインフィールド [収入::項目:金額] の形式を抽出
		const shunyuPattern = /\[収入::([^:\]]+):(\d+)\]/g;
		let match;
		
		while ((match = shunyuPattern.exec(content)) !== null) {
			const utiwake = match[1].trim();
			const value = match[2].trim();
			calcZankin("shunyu", value);
		}
	} catch (error) {
		console.error("収入取得エラー:", file.path, error);
	}
}
 
async function getSishutu(file){
	try {
		const content = await app.vault.read(file);
		// インラインフィールド [支出::項目:金額] の形式を抽出
		const sishutuPattern = /\[支出::([^:\]]+):(\d+)\]/g;
		let match;
		
		while ((match = sishutuPattern.exec(content)) !== null) {
			const utiwake = match[1].trim();
			const value = match[2].trim();
			calcZankin("sishutu", value);
		}
	} catch (error) {
		console.error("支出取得エラー:", file.path, error);
	}
}
 
function combineUniData(item){
	if(item.length > 1){
		const value = item[item.length - 1].trim();
		const utiwake = item.slice(0, item.length - 1).join(":").trim();
		return [utiwake, value];
	}
	return ["不明", 0];
}
 
let zankin = 0;
 
function calcZankin(mode, value){
	let intValue = parseInt(value);
	if(mode == "shunyu"){
		zankin += intValue;
	}
	else{
		zankin -= intValue;
	}
}
 
if(isStartOfMonth(today)) {
	zankin = 0;
	
	const currentYear = today.getFullYear();
	const curMonth = (today.getMonth() + 1).toString().padStart(2, '0');
	const lastMonthDate = new Date(today);
	lastMonthDate.setMonth(today.getMonth() - 1);
	const lastMonthYear = lastMonthDate.getFullYear();
	const befMonth = (lastMonthDate.getMonth() + 1).toString().padStart(2, '0');
	const befTag = "#仕訳/" + lastMonthYear + "/" + befMonth;
	const befFiles = getFilesByTag(befTag)
 
	for(let file of befFiles){
		await getShunyu(file); 
		await getSishutu(file);
	}
 
	tR += "[収入::前月繰り越し:" + zankin + "]"
}
 
KYURYO = 90000
 
if(isKyuryobi(today)) {
	tR += "[収入::給料:" + KYURYO + "]"
}
%>
 
### 支出
 
 

途中で JavaScript が書かれているが、これは毎月一日に現在の残金を計算して、


画像の通りに自動的に出力してくれるものである。

これを行って、家計簿を限りなく楽にしている。 > Obsidianで収支の計算をする記録


このように表にして今月いくら使ったとか、残金が見れるようにしている。
ちなみに、この時の面倒くさくならないコツとして、限りなく端数は省略する、手数料とかこまごましたものを入れない、ざっくり、を意識している。
正直ちゃんとしたものではなく、個人的は数千円単位で残金を把握できればいいので、このような形をとっている。

ちなみに週ノートと月ノートと年ノートはとっていない。
多分とった方がいいと思うけど、絶対自分はサボるからやらない。
あとシステムで矯正するにもいい案が思いつかない。やるなら月曜にデイリーノート作成した瞬間に週ノートがあるかどうかで判定するぐらいだと思う。
これらをやるメリットとしては、日記を書く意味をさらに広げる意味があると思う。ただ、記録するだけじゃくて、明確に意味を持って振り返ることができるので、QOLというか、幸福度が上がる気がする。日々に感謝できる的な感じ?やりたいのはやまやま。この辺りは人によると思う。

もちろん、デイリーノートには収支以外にも、ちょっとしたメモだとか、URLリンク、日記などを書き込んでいる。
これら以外に書くこと管理することが増えると、自分の正確では絶対にさぼるようになるので、このあたりにしている。
日記の所感について メモを取ること、ノートを書くこと、記事を書くこと

あとObsidianの使い方としては、大学のノートであったり(これは公開していない)、プログラミングの学習記録、何か開発したときのメモ(例:Obsidian未完成ノート記録プラグイン作成ログ-1など)、個人メモ(これも個人情報満載なので公開しない)、とかぐらい。

大学のノートに関しては、メリットデメリット半分半分ぐらいな感覚に感じた。
メリットとしては、

  • いつでも復習が楽
  • 検索が楽
  • 弊学では演習問題がWebである場合が多いので、それをそのまま記録することが楽。
  • ノートを持ち歩かなくていい
  • タイピング練習になる
    • 実際これでかなり早くなった
  • TeX を使用する場合、その知識がかなり豊富になる。
  • MDの練習にになる。
    とかでかなり享受してはいる。
    デメリットとしては、
  • その場で頭に入りずらい
  • 物理系や工学系は計算式がたくさんあるので、書くのが大変
  • TeX を覚えないといけない
    • 面倒くさいとこでいうと行列とか
    • ただこれに関しては割とテンプレートで対応出来る。
  • 持ち込み可の授業に対応できない
    とかになる。
    ぶっちゃけ一番上のその場で頭に入りずらいがでかすぎるデメリット、これだけでデメリット理由の9割占めてるぐらい。
    もちろん、復習込みで考えると別にどっちも変わりはしないのだが、意外と人間の記憶は書くことによって定着していて、それがたとえ一回でも記憶に残っているもの。
    書くことに関しての論文は多分いっぱいあるし、今調べても出てきた。
    論文: https://www.u-toyama.ac.jp/wp/wp-content/uploads/20240529-3.pdf

まあそれだけ、電子媒体で書くことのデメリットを考えたうえで使う感じ。

もう一個、自分のObsidianについて欠かせないのはプログラミングの学習記録である。
このサイトでも、ProgrammingHistoryとして、自分の学習記録を載せている。
今でいうと、AIに聞いた方が早いまである情報の方が多くなっているのが時代を感じる。
とはいえ、これによってかなり自分の理解が早まってくれたのもまた事実、こういった記録を残してよかったとも思う。
今でもObsidian内で検索して使うこともあるし、意外と助かる場面はある。

実は昔はAIに聞いたことスレッドもすべてObsidianのコピペして載せていたのだが、面倒くさくなってやめた。


ちなみにこれは意味があんまりないので辞めたほうがいいです。
こういったものはObsidian内のノイズになりやすく、ごみをためることに意味はないので辞めたほうがいいです。
参照性が欲しいなら、自分の手で書くべき、またはメモノートに簡単でもいいので書き溜めるべきだと考えます。
ただしその場合はある程度の期間で、メモを整理する必要はあります。 > メモの昇格

あと、最近は https://rerurate.com/Thinkings/ として、自分の考えを少しずつ記録するようにしている。今この思考メモを書いている途中でも自分の頭の中で考えるより、ずっと言語化できている気がする。また自分にこれが合っていると感じた理由として、自分の特徴として若干HSPの傾向があると思ったから。

本当に人付き合いに敏感で、かなり一人で考え込んでしまう傾向にある。
それとは別に一人になった時とか、ずーーーーっといろいろ考えこんでいる。(ポジティブネガティブ関係なく。)
なので、それを記録、言語化できるこの方法は自分にとって、Obsidian様様だと思った。欲を言えば、これを書き上げるのに時間を使ってしまうのでそこが難点。もっとこのメモを増やしていきたい。

他の自分のObisidianの使い方で言うと、自分のObsidianについてを書いた時から使用するプラグインがかなり減った気がする。
これは自分の保管庫のノートや添付ファイルが増えすぎて、起動に時間がかかり始めたから、プラグインに貴重な起動時間を奪われないようにするため。

Obsidian start-up time breakdown
 
Obsidian version: v1.10.6
Installer version: v1.6.7
Operating system: Windows 11 Home 10.0.26200
 
- Total startup time: 10,836ms
- Initialization: 238ms
- Vault (4,136 files): 449ms
- Workspace (12 tabs, 6 deferred): 5,039ms
- Core plugins: 142ms
- Community plugins (23 active): 4,969ms
  - Export Image plugin (v2.4.4): 516ms
  - DataLoom (v8.16.1): 373ms
  - Surfing (v0.9.14): 321ms
  - Full Calendar (v0.10.7): 312ms
  - Tasks (v7.22.0): 279ms
  - Emoji Toolbar (v0.4.1): 264ms
  - Remotely Save (v0.5.25): 221ms
  - Git (v2.35.1): 219ms
  - Excalidraw (v2.16.1): 166ms
  - Editor Syntax Highlight (v0.1.3): 154ms
  - Google Calendar (v1.10.16): 152ms
  - Style Settings (v1.0.9): 139ms
  - Iconize (v2.14.7): 128ms
  - Dataview (v0.5.68): 122ms
  - Keyboard Analyzer (v0.4.1): 109ms
  - Icon Shortcodes (v0.9.7): 102ms
  - Templater (v2.16.1): 93ms
  - Reminder (v1.1.21): 91ms
  - Tracker (v1.17.0): 82ms
  - Hover Editor (v0.11.26): 71ms
  - QuickShare (v1.3.1): 67ms
  - Update time on edit (v2.4.0): 65ms
  - Calendar (v1.5.10): 61ms
  - Tag Wrangler (v0.6.4): 60ms
  - ReadItLater (v0.11.4): 57ms
  - Convert url to preview (iframe) (v0.5.0): 56ms
  - Homepage (v4.2.2): 55ms
  - Buttons (v0.9.13): 54ms
  - Typewriter Mode (v1.1.0): 52ms
  - Quick Latex (v2.6.5): 50ms
  - floating toc (v2.7.0): 44ms
  - Custom Frames (v2.5.0): 32ms
  - Image Toolkit (v1.4.3): 30ms
  - Auto Card Link (v1.2.3): 29ms
  - Paste image rename (v1.6.1): 28ms

って思ったけど、もしかして無効化するだけじゃ意味ない感じ?アンインストールしないといけないのは、ちょっとなー。

今、アクティブなの上げるとこんな感じ


多分要らないのも交じってると思うけど。前よりは減った。
正直要らないプラグインが多すぎた。一時期、Obsidianの改造が主目的になっていた時期があると話したが、それの名残がこういったところにも入り込んでいる。
Obsidianに依存しないようにするためには、こういったものに依存しないことが近道であるが、どうしても使ってしまう。

書き物をするのには、何者にも思考を邪魔されず、自分だけの世界に入り込んで、集中して書く必要がある。そういった純粋なライティングには、プラグインなど不必要なはずである。ただ一つ言うなら、自分は書き物をするためというよりかは、自分だけwikiを作るという目的と生活を豊かにするという目的のもと、このObsidianを使っているので、そこまで意識は高くないのかもしれない。
よく、 https://note.com を見てみると、意識高い系より、本物の脳学者とかライターが思考が云々といっている気がする。意識高い系はObsidianを使って小銭稼ぎしてるだけなので、割と見る価値がない。そもそも自分だけの世界を作るために、自分で思考せずに、ずっと頼ってばっかりでは、電子庭園の中で生きていけないのではないか?(ってかっこよく決めたかっただけ、なんなら自分は最初こそめっちゃ色々参考にしてここまで来たので、初心者程参考にした方がいい気がする。)

結局、他の人が作成したテンプレや構成は、その人だけにチューニングされたものなので、正解はないし、多分合わない。自分に合わないということは、かなり高い確率でObsidianをやめてしまう可能性が高い。植物が成長するように、自分のObsidianも成長していく。その時々で、葉が枯れてしまう(=自分が考えた構成やシステムに飽きてしまう)こともよくある。ただ、枯れてしまった後、どう成長をさせていくかがObsidian継続のカギな気がする。
自分もこのObsidianをさらに発展させて、成長させていくために https://rerurate.com を作成した側面もあるので、この部分はめちゃめちゃ大事だと思う。もしかしたら、この試みも枯れてしまう日が来るかもしれないが、それはその時で新たな成長の養分となるときがあるので、それは決して悲観しない。自分も、今まで試しては捨てて、試しては捨ててを何十回と繰り返してきた。ちなみに結論として、継続を持たせるには気持ちで頑張る!をやるのではなく、システム的に絶対にやらせるようにするのが最適だと気付いた。
この辺は Flutter が一生アーキテクチャ議論がされている部分と似ている。つまり、銀の弾丸はないので、自分だけの保管庫世界を作り上げていこうという話でした。

さらに言うなら、ノートも成長する生き物である。ただし、勝手に成長していくわけではなく、餌(=加筆、修正)をやる必要がある。よく言われているのが、エバーグリーンノートをつくれ、である。

ただここに書かれているものはかなりZettelkastenに厳密にのっとったものなので、それを志向しない人はあまり参考にしないでほしい。重要なのはこの部分、

About Ever Green Note

Evergreen notes are written and organized to evolve, contribute, and accumulate over time, across projects.

翻訳すると、

エバーグリーンノートは、時間をかけて、プロジェクトを越えて進化し、貢献し、蓄積されるように書かれ整理されています。

つまり、短時間でノートを書き終えて終わりではなく、時間をかけて加筆、修正を行い、よりよいノートへと進化、貢献、蓄積せよ、ということである。(多分Zettelkasten的には厳密に違うけど。)
この概念はサボり魔には、継続するのが厳しいものであるが、これもまた保管庫を成長させるために必要なものである。
エンジニア向けに言うと、技術的負債をコードベースでは嫌うのに、なぜナレッジベースでは嫌うのかという話である。自分も、昔に書いたノートを見返しては修正などを行っている。これを通して、自分の中にもノートの中にも、知識が蓄積されていく。
繰り返し学習と似たようなもので、書いていくうちに知識がSecondBrainからFirstBrainに定着していく。
がっつりリファクタを行うのでなく、ナレッジベースではこんなことができる。「次にそのノートを開いた時に、前よりも少しだけ良くする」現実のコードベースで修正を行うと、その影響は多岐にわたるがナレッジベースではその心配はない。少しだけ修正するだけでも意味がある。

話がだいぶそれてしまったが、自分のObsidianの使い方とマインドセットについてはこんな感じ。みんなも自分だけの銀の弾丸を自分で見つけて、保管庫を自分好みに進化させていこう!その先に見える未来も自分で決めてみてね。自分はまだ探求と思考の海に漂っています。

加筆、修正、進化、蓄積、貢献、定着
Refinement, Recalibration, Evolution, Accumulation, Contribution, Integration
The notes must glow
🫠👆これかっこいい👆