原稿作業に戻る土曜日

7:00

おはようございます。やることはまだ残っていますが、葬儀というビッグイベントは終了しましたので、原稿作業に戻りましょう。

まずはメルマガを配信予約すること。でもって、来週から考えたいことの整理です。

メルマガ:

まずは全体の読み返しを。

* * *

読み返しが終わりました。そのまま配信予約に移りましょう。

* * *

まぐまぐOK。

* * *

noteもOKです。これで一応今週の最低限の作業は終わりました。良かったです。

あとは、まき直しの作業をしておきましょう。

8:00

KW:

ミニエッセイを書きましょう。

* * *

publish:お経と子どもの声 | Knowledge Walkers

レシート入力:

9:00

考えることの整理:

少し落ち着いて考え事をしたいのですが、まず何について考えるのかを整理します。

* * *

何について考えるのかは、メタな視点での思考。でもって、そういうときは大きく書くのが望ましい。

Image from Gyazo

同じものをWorkflowyで作ると、

Image from Gyazo

こうなる。やはり印象はかなり違う。

管理の手間についてはWorkflowyを使ったほうがはるかによいのだが、ここは実験的思考でTextboxでどう展開していくのかを考えてみる。

* * *

それぞれの項目について、別途記入場所を作り、そこに書くというのがよい。問題は、その形態。同じようにカード型で表示するのか、それとも他のページのようにするのか。これは内部的な処理も変わってくるので、結構大きい問題。

たとえばカード型で表示するならば、それはアウトライナーにおけるズームに等しい。それはそれで便利だと思う。問題は、「仏壇と部屋の片づけについて」考えることは、おそらくカードでは収まり切らない、ということ。少なくとも、このフォントサイズでは一ページ内に収まり切らないだろう。

ということは、フォントサイズを小さくして欠けるようにするか、それともカードではなページにするか。ページにする場合は、Textboxのページリンクを使えばいい。そのためには、この領域をTextareaではなく編集可能なdivにする必要がある。その上、リンクを変換する機能も必要。

もし、フォントサイズを変えることで対応する場合は、このカード表示用のリンク機能が必要。Textboxの通常のページリンクはmdファイルを呼び出すわけだが、カードの中身はjsonで保存されるから、それを呼び出すことができなければならない。しかも、jsonはidで管理することになるから、リンクもそれに対応させる必要がある。不可能ではないが、かなりの大事業になりそう。

さて、どうするか。

* * *

「何について考えるのか?」という内容はあきらかにカード的。インデックスでしかないとも言える。これを単一のファイルに保存するのは微妙に違う気がする。タイトルも付けづらい(同じようなものを別の日に作る可能性もある)。単にタイムスタンプだけにしておくという手もあるし、タイムスタンプ+何について考えるのか、というやり方もあるが、それが適切かも微妙なところ。

一方で、「何について考えるのか?」というこの情報も保存しておきたい気持ちがある。この辺が難しいところ。たとえば三ヶ月経ったら、これらについてはずいぶん考えたことになっているだろうから、「何について考えるのか?」という文脈でこの情報を参照することはないだろう。しかし。何について考えたのか、というログとしては参照されることはありうる。で、そういう利用をしてみたい。

* * *

問題は結局リンクか。jsonに保存したときのリンク機能をどう実装するか。JSON内へのリンクは使わず、ページにする、というのが一番安直な解決方法で、根本レベルの機能をいじる必要はない。逆に、jsonの項目についてリンクを貼れるようにするならばhome直下でのコードの新規作成が必要で、それによってできることもまた増えそう。

* * *

ページリンク機能をそのまま使う場合でも、プレビュー編集問題は残る。通常の入力では、編集モードでダブルブラケットすればそれがプレビューモードでリンクになったが、そのままページで入力できる場合は、その手が仕えない。

Scrapboxのようなカーソル行があるときだけ編集モードになって、それ以外のときはプレビューモード、みたいなややこしい処理が必要。

あるいは、テキストを選択してボタンを押したら、それがリンクになる、というような操作をかませるか。

* * *

とりあえず、まずtextareaをdivに変えるところからやってみよう。

10:00

Textbox:

まずTextareaをdivに書き換えました。

でもって、テキストを選択した状態で押すためのボタンを設置しました。あとは、このボタンの動作を記述します。

Image from Gyazo

まずページリンクのそのままの利用から。classつきのspanをあてて、そこにイベントを加える。

* * *

Google Bardの助けを借りて、順当にコードは書けました。

一応もうこれだけで、カードからページへの連結は可能です。バックリンクなどはありませんが、特に問題はないでしょう。

で、とりあえずこれはこれでOKとして、もしページではなく、カードにリンクするとしたらどうなるか?

あるいは、もうクリックしたらそのタイトルのScrapboxページにジャンプするとかでもよさそうですが。それなら上のコードを少し書き換えるだけで十分です。

が、「これで十分」は一旦置いておいて、極端なことを考えましょう。jsonに保存されたカードにリンクするとしたらどうなるか。

* * *

リンク作成の操作そのものは同じだとする。テキストを選択して、ボタンを押す。モダンなUIでは、テキストを選択したらポップアップメニューが表示される、というのもあるが、今はそこは考えない。テキストを選択してボタンを押す。

すると、どうなる。文字の色がかわって、リンク機能がつく、というのがインターフェース面での機能。では、バックエンドでは?

もし選択された文字=タイトルをキーにしてjsonの中身を呼び出せるならば、比較的簡単。そのテキストを何かの関数に渡して、その関数が適切なjsonの項目を見つけて、編集可能なdiv(カード)の中身を書き換えればいい。この操作はできれば「戻る」ができた方がいい。

テキストで呼び出せない場合は、IDとなる。ということは、リンクを作るときにIDを添えることになる?その場合は、Workflowyがやっているように、リンクしたい項目を「探す」という行為が必要になる。Scrapboxは同じタイトルでページを作れないから、タイトルの一意性が確立されており、このような「探す」は必要ない。この違いは存外に大きい。

一応ID方式でいくとして、その場合は、呼び出すカードのタイトルとテキストが一致していなくてもよい、というメリットはある。というか、今選択しているテキストを本文に含むカードを抽出して表示すればいい。それでどれかを選ぶ。選んだらIDがリンクに添付され、そこからは簡単。

選択するときに「新規」を選ぶこともできるようにする。その場合は、選択したテキストをタイトル(line)にしたjsonの新規項目が作成され、IDをコールバックし、そのIDが添付される。

なかなかに面倒。

* * *

wikiの空リンクは、「新規ページを作り、そことリンクする」という機能がある。これをテキスト情報だけで実現しているのがすごい。

IDで呼び出すのはおそらく難しいので、line(本文)まわりで呼び出したほうがよいだろう。

* * *

どうなったら嬉しいのか。

まずカードを書き、その中で項目が列挙される。そのうち一つを選んで「リンク」にする。その中身はまだない。そのとき、リンクをクリックすれば、真っ白なカードが表示される。必要あれば、リンクになっているテキストが一行目に表示される。そういう形であれば、スムーズに思考を展開できるだろう。

* * *

リンクをクリックしたときに、まっしろなカードを表示すること自体は簡単。問題は、その新規作成されたページと、もともとあったリンクとをどう接続するのか。

一つは、リンクの段階で空っぽのカードを生成し、そこにリンクしておくこと。もう一つは、「このテキストで対象のjsonを呼び出す。しかし、もし整合性のあるjsonが見つからなければ新規ページを作成する」という処理にしておくこと。これは今のTextboxのページリンクと同じ考え。新しく作られるカードの一行目が、リンクの文字列と等しければ、IDで接続する必要はなくなる。その行をキーにしてjsonを呼び出せばいいだけ。

* * *

カード用のjsonでは、lineをタイトルにして、詳細を中身にする、という手がある。で、タイトルを同じものを付けても構わないとする。検索で一番最初に見つかったものを呼び出す、という安直な方式にしてしまう。それでもおそらくほとんど不都合はないだろう。

15:00

Textbox:

そういえば、jsonにはline以外にtitleという項目があるのでした。IDを使わずに、それで絞り込むこと自体はできそうです。

ということは、どうなるか?

リンクを踏んだときに、選択された文字列でcard.jsonを走査し、見つかればそれを呼び出し、見つからなければ、その文字列をタイトルにした新しいjsonの項目を作る、という感じになるでしょうか。

* * *

リンク機能は動くようになりました。文字列をクリックしたらページ移動。という感じ。

Image from Gyazo

が、まず必要なのがやはり「戻る」という操作です。一つ前のページに戻れないと大変不便。ヒストリーを保存するか、上にパンくずリストを作る必要あり。