generated at
denote
Zatsu wikiを書き直している
名前は実装に使っているのがDenoであることと、「意味」「表現」などを意味するdenoteが言語化支援ツールとして丁度よさそうだったことから

進捗
古いのはdenote進捗にある

2022-04-18
記法を折り畳めるようにした
外部リンクを踏めるようにした
前作よりは多少エレガントな実装にはなったが、色々やってるとどうしても増えてしまう

why
/villagepump/Scrapboxをオフラインで使いたいに上手く答えられないので徐々に明文化していきたい
自分で全てを把握できるものが欲しい
モバイル版Scrapboxでキャレットを外した時のようにハックをしたくない
自前実装してれば中身を好きなだけ書き換えられる
ScrapboxNotaの製品なので入社しないといじれないだろうし、したとしても自由にはいじれないだろう
自前でコンセプトなどを真似して組んでしまえばやりたいことができる
既に再現したものは作ってて有効活用している→vim-scrap
Vimが無いと動かない
Vimを人におすすめするのはちょっと…
設定も必要で面倒臭い
競合させるわけにもいかないのでやむなし
物理キーボード以外での操作に難がある
リッチじゃない
画像とか貼りたいことがある
視覚に訴えるのが効果的なのにそれができない
共同編集できない
個人だと必要ない機能に思われるが実はそうではない
vim-scrapとZatsu wikiを作ってこれに気付けた
良い物は模倣してみたくなる
日本語入力システムでやった
接続辞書finger-right???(ddc-source-chaimというものを遊びで作った)
日本語入力を完全に理解できた
Scrapboxだと?
テキストエディタ
コラボレーションシステム
ウェブアプリケーション
全部理解できる

kuuote.iconはエディタの実装をしたいだけなので突然飽きて何もしなくなる可能性が高い
ブラウザで動くと色々便利
ブラウザで動く既存のエディタの中でScrapboxがよくできている
1文字ずつspanで分割した文字列は現実的な解としてよい
だから複製しようという動機で動いている
割と深い所まで真似しているので問題があれば消します
Twitterや井戸端などでコラッと言ってもらえれば対応します

方針
上から下まで全部Denoでやる
前回はバックエンドをGoにしたため二重に実装する必要があって疲弊してしまった
シングルバイナリに全てを閉じ込めたくてそうしたが大した意味はない
Clone名乗れるくらいには記法をサポートする
前作になくて欲しかったのは
アイコン記法
画像
コードブロック
「サービス」にしない
あくまで欲しいのはリアルタイムに編集できるGollumみたいなもの
あるいはScrapboxのような使い心地のObsidian
変なこだわりあるから作ってるだけでサービスが欲しければ普通にScrapbox使えばいいと思う
けどサーバーとして置く以上簡単な物でいいのでログイン機構は欲しい
かといってローカルのツールであることにこだわりすぎない
面倒なので共同編集とか実装していなかったけど結局やった方がいいと思う

実装の話
土台しかないので何書けばいいのかわからん問題
OSSにしているのでtakkerさんがどんどんPR投げてくれてる
ありがたいkuuotekuuotekuuotekuuotekuuotekuuotekuuotekuuotekuuotekuuote
makeChanges() が便利
TypeScriptで書いている、型を付けやすいように色々変えている
CSSの挙動を調べるのにDevToolsのComputedが便利
Scrapboxの行パーサは正規表現で実装されているらしいがパーサコンビネータいじってる方が楽しいのでbread-n-butterでパースすることにした
必要な物が足りないし拡張性が乏しいのでbread-n-butterを捨てることにした
notやuntilなどの最短マッチをするのに必要な部品が全くない
ネストした構造を扱う上に中途半端な状態でマッチするので必須
以前使ったpazzaを使うことにした