生産性改善」カテゴリーアーカイブ

ObsidianでKindle Highlightを管理する

Kindleで本を読んだときに、いいなと思っている機能の一つがHighlightをWebで見ることができる点だと思っています

Kindle Highlight
https://read.amazon.co.jp/notebook?ref_=k4w_ka_notebook

過去に自分がどういうことに興味を持ったのか?ということを確認することが出来ますし、ブログに記事を投稿する際にも参考にしたりしています。
Audibleにも似たような機能があるといいのですが、音声だと文字起こし範囲の指定が難しいですよね。

最近のAIは賢いもので、これらの”自分が何に興味を持ったのか?”という情報は、これから大事になってくるのではないかと考えています。
そういう意味では、それを再利用可能な状態にしておく方が良いと。
であれば、Obsidianに取り込んでしまおうかという話です

Kindle Highlights

特に何も考えることなくそのものズバリ、「Kindle Highlights」というPluginがあります

プラグインのプロパティとしては下記のものがある

Templatesで、同期したあとにどういう形でノートとして保存するのかを定義可能。
デフォルトでも大きな問題はないのだけれど、自分用に少しいじったものをここに公開しておきます。

FileName

{{title}} - {{author}}

File Content

---
tag: 📚Book
title: "{{title}}"
author: [{{author}}]
---
{% trim %}
{% if imageUrl %}![image]({{imageUrl}}){% endif %}
{% if authorUrl %}
* 著者: [{{author}}]({{authorUrl}})
{% elif author %}
* 著者: [[{{author}}]]
{% endif %}
{% if asin %}* ASIN: {{asin}}{% endif %}
{% if isbn %}* ISBN: {{isbn}}{% endif %}
{% if pages %}* Pages: {{pages}}{% endif %}
{% if publicationDate %}* 出版日: {{publicationDate}}{% endif %}
{% if publisher %}* 出版社: {{publisher}}{% endif %}
{% if url %}* Reference: {{url}}{% endif %}
{% if appLink %}* [Kindle link]({{appLink}}){% endif %}
{% endtrim %}

## 概要・要約

## Highlights
{{highlights}}

Highlight

## location: {{location}} : {{ text | truncate(20) }}
{{ text }} — [link]({{ appLink }})

{% if note %}{{note}}{% endif %}

---

このテンプレートでやるとこんな感じになります。
Highlightされた場所をより見つけやすくするために、位置情報と冒頭の数文字を出している形ですね。

このあたりはもう少し運用して手を加える場所があれば都度見直していこうかと。
ノートを削除してもう一度同期をすれば作られるので、テンプレートの改造を試すのには比較的敷居が低いと感じています。

最後にプラグインのプロパティでSync on Startupがありますが、Obsidianの起動が遅くなるので結局オフにしました

Obsidian起動してから主導でSyncする形で頻度としては十分かと。
思ったよりもこの時間がかかるのが気になってしまうので。

Obsidian の LiveSync を Fly.ioで

Obsidianはだんだん手に馴染んできているもののDynalistと違ってふと手元でメモを取ってそれをPCで確認するということが出来ないのは、正直おもしろくない。

Obsidian公式としてもSync機能は提供されているものの、せっかくデータをローカルに持ってきているという特性。
それを再び相手に明け渡すというのも面白くない

調べてみると、Syncサーバーを自分で立てる。。というか、Obsidianは内部的にCouchDBを使っているようでそれをホスティングしてくれるものを利用するSelf-hosted LiveSyncというプラグインが存在しているので早速試してみる

例によってコミュニティプラグイン一覧からlivesyncと検索すれば出てくる。

プラグインの説明を読むと、Amazon S3でも行けるっぽい。
SetUpの方法は基本的にはGithubにかかれている通りの手順となります。

Setup CouchDB on fly.io
https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/setup_flyio.md

ColabでFly.ioの設定をスタートする

下記ページへアクセス

https://github.com/vrtmrz/obsidian-livesync/blob/main/setup-flyio-on-the-fly-v2.ipynb

”Open in Colab”ボタンを押下するとGoogleアカウントが正しく設定されていれば、GCPのColabを利用してFly.ioをセットアップするためのノートブックが開かれる。

これは、Fly.ioがGUIを基本的に提供しておらず、CLIでセットアップを進める必要があるからである。

下のGithubに「Choose a region and run all blocks」と書いてあったので、”ランタイム”メニューから”すべてのセルを実行”を選択するを最初選んでしまったのだが、最後にサーバーを削除するスクリプトがついているので必ず一つずつ実行してください

セクション[1]が完了するとセクション[2]に移るわけだが、ここではFly.ioへのログインが求められる

上記URLをクリックしてFly.ioへサインアップする必要がある。
ここで注意なのが、Fly.ioはCouchDBを1GB無料枠があるけれど、利用するためにはクレジットカード登録が必要になってしまうというところ。

ここで、Payment Methodを登録しておかないと、Colabのスクリプトは失敗してしまう。

セクション[3]まで完了すると、LiveSyncプラグインへ入力するための情報が表示される。
これが出れば、Colab側の作業は完了。
表示されているURIとPassPhraseは使うので必ずローカルに保存しておく。
そのうえで、画面は閉じずに一旦そのままにして、Obsidianに戻る

ObsidianでLiveSyncプラグインを有効化すると、Setup-URIをすでに保持しているのかを聞かれるので”Yes”を選択する

Colabで指定されたSetup uriを入力する。
これに関してはColab上に”Copy setup uri”というボタンがあるのでそれを押下した値をペーストすればOK

次にPassphraseを入力する。
Colabのセクション[3]を読むとPassPhraseという文言が2つ出てくるのだが、先のキャプチャで書いた、最初に提示されたフレーズを入力する

コンフィグをインポートするか聞かれたので”Yes”を選択した

続いて、この端末をどう扱うかを聞いてくる。
一番上はFly.ioに立てたDB上のデータでローカルを更新するとなっているので、2番目の「initialize new server data」を選択して、サーバーを初期化する形を選ぶ

この設定で進めるかを問われるので、下の選択肢を選択

隠しファイルをどうするかを問われているので、一旦デフォルト設定の”Disable”を選択する。

ちょこちょこ選択肢が出てくるが一旦はデフォルトにしておいてこれで設定は完了。

スマホ側

私が試したのはiOSだが、Obsidianをインストール後、Self-hosted LiveSyncのプラグインを入れて同様に入力。

新規クライアントとして登録する事で無事に同期を取ることが出来た。
いいね。

Obsidian使用1週間

Obsidianを仕事でも使い始めて1週間ほどが経過した。

まだ目覚ましい成果というほどのものが出ているわけではないが、デイリーノートを起点として業務をまとめていく形が徐々に作られている気がする。

タグとかそういうものを利用していくと、これまで散らばっていた情報が整理され、集約されていくので生産性が上がっている気がする。

一方で弊害も出始めている。

疲れるのだ。

これまで結構適当に過ごしていたので、何かの情報が抜け落ちていることがよくあった。
特に先週はいろいろなことが連続しておき、かなり頭を使うことを要求される感じだった。
その中で、デイリーノートを中心にやることを書いてあるので、抜け漏れが少なくなったせいでずっと頭を働かせているような感じ。

違う。
そんな真面目なキャラじゃないんだ、私は。

Obsidian。。。恐ろしい子

Obsidian でノート内の未チェックタスクをリストアップする

Obsidianがこれまで愛用していたメモサービスであるdynalistのチームが開発しているという事を知って、非常に驚くとともにうれしくなりました。

徐々にObsidianを使いこなせればと思っています。
業務PCにいれる許可も取れたのでどういう単位でノートを作っていくかや、どういうふうにリンクを作っていくと効果的なのか。
考え始めるとあれこれ出てきそうですが、そのあたりに凝りすぎて肝心の仕事が進まないと手段の目的化になってしまうので注意が必要です。

ひとまず、”案件”というフォルダを作ってその中になんとなくの単位でノートを作り、作業ログ的にメモ書きを走らせています。

メモ書きを走らせていく中で、その中からTODOが生まれたときにはチェックボックスをつけるのですが、ノートが長くなってくるとなんのTODOが残っているのかが分かりづらいです。

そこで、同じノート内で未チェックのものをノート上部に置くようにしてみました

```dataview
TASK
from "案件"
where file.name = this.file.name and !completed
```

使ったPlug-Inは”Dataview”というもの

多少のタイムラグはあるけれど、現在の内容を下にクエリを走らせて表示してくれる。

しかもDataview中のチェックボックスをOn/OffすることができるのでメモからのTODOリストが自然と出来上がる。

いいじゃないか。

もう一度言う

いいじゃないか。

Obsidianの使い方に関しては先人がいっぱいいるので、いろいろなやり方を試して取り入れていければと思う。

Obsidian の デイリーノートに前日の未実施TODOを引き継ぎたい

少しずつ使い始めている Obsidian 。
まだ使いこなしていると言うには程遠いですが。。。

ToDoをいわゆるAsanaやBacklogなどタスク管理ツール、プロジェクト管理ツールで管理している人もいるとは思うのですが、もう少し細かいタスク。
プロジェクトになっていないようなタスクは基本的にこれまではテキストベースで書いていました。

今回、Obsidianを利用するにあたってデイリーノートの仕組みがせっかくあるので有効活用したいところなのですが、デイリーノートは毎回作り直されてしまうので引き継げません。

コピペすればいい話ではありますが、完了済みのタスクもペーストされてしまうので地味に面倒です。

なんとかならないかな?と見ていたら、良さげなプラグインが。

Templaterを導入

コミュニティプラグインからフィルタでTemplaterを探し出してインストールを押下します。

インストールが終わったら忘れずに有効化します。

続いて、有効化したTemplaterプラグインの設定の中から必要なものを有効化します

有効化する設定としては下記となります

Trigger Templater on new file creation
→テンプレートから新規ファイルを作成した際にTemplaterプラグインのルールに従って内容を作り上げます。今回でいうと、前回のTODOを引っ張ってくる処理を動かすわけですね

引き継ぎの実施

引き継ぎ処理の仕様としては、一旦下記とした

  • ”Work In Progress”セクションから”Memo”セクションまでの間が対象範囲
  • その中でチェックが入っていない行を引き継ぐ
  • 毎日必ずしもデイリーノートを作るとは限らないので、1週間分まで遡って最初に見つけたノートを引き継ぐ

テンプレートへの記載内容は下記となる。
セクション名は適宜変更してほしい。

## Work In Progress
<%*
let addRest = 0; // サブテンプレートから差し込むかどうか
for (let i = 1; i <= 7; i++) {
	const yesterday = tp.date.now("YYYY-MM-DD(dd)[.md]", (i*-1), tp.file.title, "YYYY-MM-DD(dd)[.md]"); // 前回の日付のファイル名を生成
	const yesterdayFile = tp.file.find_tfile(yesterday); // 前日のファイルを取得

	if(yesterdayFile){
		const content = await tp.file.include(yesterdayFile); // ファイルの内容を読み込む
		// "## Work In Progress"から"## Memo"までのテキストを抽出するための正規表現
		const wipOld = content.match(/## Work In Progress([\s\S]*?)\n## Memo/);

		if (wipOld && wipOld[1]) {
		    const taskLists = wipOld[1].match(/^(\s*)- \[ \] .*/gm);
		    if (taskLists && taskLists.length > 0) {
			    uncheckedTasks = taskLists.join('\n');
			    tR += uncheckedTasks;
			    addRest = 1;
		    }
		}
		break;
	}
}
if (addRest == 0) {
  // 進捗部分がない場合はサブテンプレートを書き出す
  tR += await tp.file.include("[[daily-todo]]");
}
%>

## Memo

これで、前回未完了分をコピペし直さなくて良くなって満足だ。

Obsidianをインストール

今更ながら、Obsidianというものがあるということを聞いた。
私自身、普段のメモ書きはVSCodeを使って一応マークダウンで書いているけれど、プレビューをするというわけでもなくほとんどメモ帳。

ただ、あちこちにファイルが散乱してしまうこともあるのでなんとかしたいな、と思っていた。
いきなり仕事PCにいれるわけにもいかないので、一旦は個人のPCへインストールして使い勝手を確認。
良さそうであれば仕事PCへ申請して入れてみたいと思っている

インストール

モジュール自体は公式にインストーラーが置かれている

Download and install Obsidian
https://help.obsidian.md/Getting+started/Download+and+install+Obsidian

インストーラーを起動すると、まずはvaultを作る画面となる。
これは、説明にもある通り諸々を保存するローカルフォルダとなる

何でも良いと思うのですが、一旦baseとした。

そうすると、サクッと立ち上がる。
あまりにもサクッとしすぎていて、何かと思ったくらいサクッと立ち上がってビビった。

このままだとマークダウンエディタという感じ。
そこで、コミュニティプラグインを導入していく。

歯車マークをクリックしてオプション画面を開き、コミュニティプラグインを選択。
有効化したうえで閲覧を押す

プラグインの一覧が出るので選択してインストールを押下する

ここまでが基本的なインストール手順になりそう。
プラグインも豊富に揃っているので、いくつか試してみたいと思っている。