前回、入力ボックスを検討しましたが、別の技がありました。 Dataview dataviewはキーの埋め込みができます。 「key::テキスト」とすると「dv.current().key」で「テキスト」を拾うことができる。 「dv.pages('').key」とすると、全ファイルから「key::なんとか」の部分を集めてきます。 これを「メタデータ」と呼びます。 たぶんdataviewの最大の特徴でしょう。 ただのテキストがそのままデータベースに早変わり。 書式の縛りもない。 このメタデータを応用して「アプリ」を作ることもできます。 Unicode表 文中に「部首::」という一行を設け、その文字を拾って表を作る方法。 部首:: ```dataviewjs a = dv.current().部首 if(a){ k = a.codePointAt(0) s = "" for(i=0; i<500
dataviewは面白いけど、表ができたらそれだけで、そこからの発展がない。 そう思ってました。 でもdataviewの沼は底無しに深かったのです。 インラインJS インラインJSについて調べたとき、Markdown変換のコマンドがあったわけです。 なんのため? これは「使え」ってことだなあ。 どう使えばいいんだろう? dv.el() エレメント作成のコマンド。 これもdataviewに用意されている。 HTMLタグをつけるときに使えます。 じゃあ、buttonタグはどうだろう? もしボタンでクリップボードに表が保存できたら。 それ、いいじゃないか。 コピーボタン テーブルの下に「copy」というボタンが出てきます。 これをタップするとクリップボードにMarkdownが保存される。 貼り付けると、それが表になる仕組みです。 ```dataviewjs s = [ ["阪神", 20, 13
書いている途中にスクリプトを埋め込む。 文章とプログラミングの融合。 そんな変な使い方がObsidianならできます。 特殊すぎて頭の切り替えが追いつかない。 基本形 前回、数式を埋め込めることが判明しました。 OK? 何か難しいですよね。 でも計算式を残すと、なぜその計算をしたか理由もわかる。 反面、他のアプリで開いても計算するわけではない。 一長一短です。 応用編 数式が一本ならいいけど、複数の場合はどうすればいいのでしょうか。 どうやらコンマ区切りで書くことができます。 `$= a=11, b=22, a+b` 変数を使って公式に代入したい場合ですね。 これなら数値を変えながら計算結果を参照できる。 DataviewJS もっと複雑な場合はどうしたらいいでしょうか。 それはdataviewjsにしちゃえばいいわけです。 ```dataviewjs a=11 b=22 dv.span(
簡単な計算をしたいとき、電卓アプリを立ち上げていませんか。 Obsidianなら計算式を書くだけで結果が表示されます。 文章を書く手を止めなくていい。 ちょっとびっくりしました。 Dataview Obsidian - Connected Notes 1.4.4 分類: 仕事効率化,辞書/辞典/その他 価格: 無料 (Dynalist Inc.) Obsidianで「=」を二つ並べるとハイライトになる。 この仕様に困ることがあります。 要らぬところに色がつく。 それで「=」をバッククォートで囲んでみました。 そしたらDataviewがエラーを吐き出したのです。 おやおや、何事か。 このバッククォートとイコールの組み合わせはインライン・コマンドだったのです。 知らなかった。 そして面白い。 これは研究してみよう。 Obsidian plugin: Dataview 書式 Dataviewプラ
ありがとう。 2Hop Links Plugin Plus コミュニティプラグインにある「2Hop Links Plugin」はモバイルでは使えませんでした。 インストールできても有効化でFailする。 その状態のまま開発が止まっていた。 ところがどっこい、その修正版を作ってくれた人がいるのです。 うれしい。 インストール Obsidian plugin: Obsidian42-BRAT Obsidian42-BRATを使います。 野良レポジトリをインストールするプラグインです。 このBRATの「Add Beta Plugin」に下記アドレスを入力します。 https://github.com/L7Cy/obsidian-2hop-links-plugin 「Add Plugin」するとコミュニティプラグインに「2Hop Links Plugin Plus」が追加されます。 で、スイッチO
描画ライブラリを使える環境ならば、たとえば円を描くのに書くコードは一行で済むだろう。ただ、コード一行でほぼ完全な真円を描いてもなにかつまらない。そこであえて意図的に雑な図形をコードで描きたいと考えて試行錯誤した結果、ある程度満足するところまでいったのでその技法について解説を行う。 意図的に雑な線を描く まずは雑な線をコードで表現するために、実際に適当な線を何度も描いてみて特徴を探してみる。そうすると下記のような特徴が現れた。 始点と終点の位置が多少バラける 途中から位置が上下にずれているのに気づきそれを元の位置に直そうとする 上記の内容を3次ベジェ曲線程度で表現するために色々と試行錯誤した結果、下記の手順になった。 始点と終点を用意する 始点から終点までの20%〜40%の地点に点を置く 更に上記の倍の地点に点を置く 4つの点を少しずらす 4つの点をもとに3次ベジェ曲線を描く 以前、Twit
URLアドレスを貼り付けたあと、もう一度Safariに戻ってタイトルをコピーする。 それからMarkdownのリンク形式に書き換える。 それって手間じゃないですか。 もちろんブックマークレットやショートカットを使いタイトル込みでコピーする方法もあります。 ただそれもスマートではない。 もっと簡単に考えましょう。 Linker.md Templaterスクリプトです。 ツールバーに登録してお使いください。 <%* e = app.workspace.activeLeaf.view.editor; p = e.getCursor().line; url = e.getLine(p); if(url.match(/^https?:/)){ x = await request({url}); s = x.toString().match(/<title>(.*?)<\/title>/i)[1];
万策尽きたら総集編。 Templater Obsidian - Connected Notes 1.4.3 分類: 仕事効率化,辞書/辞典/その他 価格: 無料 (Dynalist Inc.) Templaterスクリプトを使うとアクションが組める。 これに惚れ込みました。 今までTextwellでテキストを加工していました。 でもObsidianでアクションが組めればOSに縛られなくて済む。 「電子文房具」の選択肢が増えるのは嬉しい。 Obsidian plugin: Templater ちなみにプラグインのスキームは「obsidian://show-plugin?id=Templater」。 基本形 Templaterスクリプトは下記形式のmdファイルです。 <%* スクリプト本体 %> このスクリプトにJavascriptを使いますが、テキストを扱う拡張がされています。 Templa
これも改造版。 Review 過去30日間のデイリーノートを閲覧するTemplaterスクリプト。 今回dataviewやCalloutを採り入れ進化しました。 なのでdataviewプラグインも必要。 Review.md 変数FORMATにデイリーノートの日付書式を入れてください。 <%* FORMAT = "YYYY-MM-DD"; s = ">[!check]+ todo list\n>```dataview\ntask where !completed group by file.link\n>```\n"; for(i=0;i<30;i++) s+= "#### ![[" + tp.date.now(FORMAT, -i) + "]]\n"; f = "Reviews.md"; p = app.vault.getAbstractFileByPath(f); if(p){ awai
思った以上によく使う。 Naming あとからファイル名を決める方式。 テキストの一行目がファイル名として転記されます。 やっぱり内容が見えてこないとファイル名は付けようがありません。 で、ファイルを書くこともライフログの対象だなあ、と思いました。 ファイル名をつけたとき、デイリーノートにも記録する。 そういうスクリプトはどうだろう? Naming.md Templaterスクリプトです。 <%* FOLDER = "journals/"; FORMAT = "YYYY-MM-DD"; s = tp.file.content.split("\n")[0]; tp.file.rename(s); f = FOLDER + tp.date.now(FORMAT) + ".md"; p = app.vault.getAbstractFileByPath(f); s = "\n## " + tp.
Textwellに慣れると「ファイル名」を付ける習慣がない。 Obsidianは最初にこれを尋ねてくる。 パソコンだなあ、と思います。 アクション 今回はファイル名。 新しいファイルを作るとき、名前を決めるのが面倒くさい。 「無題のファイル」でもいいじゃないですか。 後から決めればいいことです。 Naming.md タイトル付けのスクリプト。 TemplaterのTemplate Hotkeyに登録してください。 <%* s = tp.file.content.split("\n")[0]; tp.file.rename(s); %> 使い方 「無題のファイル」のまま文章を書く。 書いているうちに内容が固まってきて、一行目にタイトルを書きますよね。 そのときNaming.mdを実行すると、その一行目をファイル名に書き込みます。 推敲するうち、また書き換えることもある。 何度もある。 誰だっ
覚え書き。 基本操作 Templater沼にズボボボボ。 基本的なところは上記記事を参照のこと。 今回はファイルを扱うコマンドを確認してみます。 ファイル操作 相対パスはfile、絶対パスはpathで区別します。相対パスを絶対パスに変換するには下記コマンドをお使いください。 file = "foo/bar.md"; path = app.vault.getAbstractFileByPath(file); ファイルを新規作成する。Templater専用コマンドで、ファイルのタイトルを決めて、作成後に開く方法。 await tp.file.create_new(text, title, true); ファイルを新規作成する。相対パスを使う。デフォルト以外のフォルダにもファイルが作成できる。 path = await app.vault.create(file, text); ファイルを読み込
ファイル操作を覚えた。 Review 前回はファイルを一度削除してました。 調べると、上書きや新規作成のコマンドもある。 このほうがスマートです。 Review.md デイリーノートを30日分閲覧します。 <%* FORMAT = "YYYY-MM-DD"; s = ""; for(i=0;i<30;i++) s+= "#### ![[" + tp.date.now(FORMAT, -i) + "]]\n"; f = app.vault.getAbstractFileByPath("Reviews.md"); if(f){ await app.vault.modify(f, s); }else{ f = await app.vault.create("Reviews.md", s); } await app.workspace.activeLeaf.openFile(f); app.com
タスク管理に使えるかな。 TodoList.md dataviewで、完了になってないタスクを絞り込み。 ```dataview task from "" where !completed group by file.link ``` fromにデイリーノートを指定してもいい。 使い方 そのままチェックボックスをタップすれば完了。 簡単。 完了日 この方法を使うとタスクの完了日も記錄できます。 dataviewの設定にある「Automatic Task Completion Tracking」をONにしてください。 チェックボックスをタップすると完了日が付加される。 下の「Use Emoji Shorthand」にすると✅付きで記錄されます。 この日付はfile.tasks.completionという変数で取得できます。 まとめ file.tasksだけで組もうとして半日かかった。
未知の領域。 Templater アクションの組み方は前回を参照のこと。 今回は文章の加工を考えてみました。 これができれば、使えるアクションが一気に増えます。 NoHead.md 例として、見出し記法を一括削除するスクリプト。 <%* s = tp.file.content.replace(/^#+ /mg, ""); e = app.workspace.activeLeaf.view.editor; e.getDoc().setValue(s); %> 実行すれば、見出しから「#」が取り除かれます。 見たとおりreplaceでの置換ですから、正規表現を書き換えればどんなパターンにも対応します。 CodeMirror どうやらObsidianはCodeMirrorでプログラミングしているらしい。 そういえばcssでよくcmって見かけたけど、これだったか。 なので、CodeMirrorのコ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く