の作業記録
原稿作業に戻る土曜日
- 作業記録の共有
- メルマガ+全体の読み返し
- メルマガ+配信予約
- レシート入力
- KW+ミニエッセイ
- 考えることの整理
- Textbox+カード機能の検討
7:00
おはようございます。やることはまだ残っていますが、葬儀というビッグイベントは終了しましたので、原稿作業に戻りましょう。
まずはメルマガを配信予約すること。でもって、来週から考えたいことの整理です。
メルマガ:
まずは全体の読み返しを。
* * *
読み返しが終わりました。そのまま配信予約に移りましょう。
* * *
まぐまぐOK。
* * *
noteもOKです。これで一応今週の最低限の作業は終わりました。良かったです。
あとは、まき直しの作業をしておきましょう。
8:00
KW:
ミニエッセイを書きましょう。
* * *
publish:お経と子どもの声 | Knowledge Walkers
レシート入力:
9:00
考えることの整理:
少し落ち着いて考え事をしたいのですが、まず何について考えるのかを整理します。
* * *
何について考えるのかは、メタな視点での思考。でもって、そういうときは大きく書くのが望ましい。
同じものをWorkflowyで作ると、
こうなる。やはり印象はかなり違う。
管理の手間についてはWorkflowyを使ったほうがはるかによいのだが、ここは実験的思考でTextboxでどう展開していくのかを考えてみる。
* * *
それぞれの項目について、別途記入場所を作り、そこに書くというのがよい。問題は、その形態。同じようにカード型で表示するのか、それとも他のページのようにするのか。これは内部的な処理も変わってくるので、結構大きい問題。
たとえばカード型で表示するならば、それはアウトライナーにおけるズームに等しい。それはそれで便利だと思う。問題は、「仏壇と部屋の片づけについて」考えることは、おそらくカードでは収まり切らない、ということ。少なくとも、このフォントサイズでは一ページ内に収まり切らないだろう。
ということは、フォントサイズを小さくして欠けるようにするか、それともカードではなページにするか。ページにする場合は、Textboxのページリンクを使えばいい。そのためには、この領域をTextareaではなく編集可能なdivにする必要がある。その上、リンクを変換する機能も必要。
もし、フォントサイズを変えることで対応する場合は、このカード表示用のリンク機能が必要。Textboxの通常のページリンクはmdファイルを呼び出すわけだが、カードの中身はjsonで保存されるから、それを呼び出すことができなければならない。しかも、jsonはidで管理することになるから、リンクもそれに対応させる必要がある。不可能ではないが、かなりの大事業になりそう。
さて、どうするか。
* * *
「何について考えるのか?」という内容はあきらかにカード的。インデックスでしかないとも言える。これを単一のファイルに保存するのは微妙に違う気がする。タイトルも付けづらい(同じようなものを別の日に作る可能性もある)。単にタイムスタンプだけにしておくという手もあるし、タイムスタンプ+何について考えるのか、というやり方もあるが、それが適切かも微妙なところ。
一方で、「何について考えるのか?」というこの情報も保存しておきたい気持ちがある。この辺が難しいところ。たとえば三ヶ月経ったら、これらについてはずいぶん考えたことになっているだろうから、「何について考えるのか?」という文脈でこの情報を参照することはないだろう。しかし。何について考えたのか、というログとしては参照されることはありうる。で、そういう利用をしてみたい。
* * *
問題は結局リンクか。jsonに保存したときのリンク機能をどう実装するか。JSON内へのリンクは使わず、ページにする、というのが一番安直な解決方法で、根本レベルの機能をいじる必要はない。逆に、jsonの項目についてリンクを貼れるようにするならばhome直下でのコードの新規作成が必要で、それによってできることもまた増えそう。
* * *
ページリンク機能をそのまま使う場合でも、プレビュー編集問題は残る。通常の入力では、編集モードでダブルブラケットすればそれがプレビューモードでリンクになったが、そのままページで入力できる場合は、その手が仕えない。
Scrapboxのようなカーソル行があるときだけ編集モードになって、それ以外のときはプレビューモード、みたいなややこしい処理が必要。
あるいは、テキストを選択してボタンを押したら、それがリンクになる、というような操作をかませるか。
* * *
とりあえず、まずtextareaをdivに変えるところからやってみよう。
10:00
Textbox:
まずTextareaをdivに書き換えました。
でもって、テキストを選択した状態で押すためのボタンを設置しました。あとは、このボタンの動作を記述します。
まずページリンクのそのままの利用から。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の項目を作る、という感じになるでしょうか。
* * *
リンク機能は動くようになりました。文字列をクリックしたらページ移動。という感じ。
が、まず必要なのがやはり「戻る」という操作です。一つ前のページに戻れないと大変不便。ヒストリーを保存するか、上にパンくずリストを作る必要あり。



