Kozaneba開発日記2021-08-19
https://gyazo.com/107bd4bafc8adf5e990a2a8d5575a6e8
---
昨日は範囲選択してテキストとしてコピー機能を実装した。
改善したい、改善の仕方も見えてるものと、想定し忘れてた入力パターンとがあって、ついつい続きをやりたくなるが、ユーザページの実装の方が優先だな
「機能は実装できてて、その出力の質を上げたい」というタイプのタスクと「あるべきだと前々から思ってるけどまだ全く存在してないユーザページ」の比較で前者をやりたくなってしまう
https://gyazo.com/ca78606811aa900613d8a7790b1fa90f
これに関係してそう
考えたことをメモしないと、それを忘れることが不安で今実装したくなる
クラスターを見つけるための探索と1次元にするための探索を同時にやったのは誤り
枝が右上に伸びていてもクラスタとしてはつながるべきだが、右上方向に単語を繋いでいくのはおかしいから。
https://gyazo.com/b8cdd03f5e47af787c7580e7cb9b22d6
先にクラスターを決めてから一次元化すべき
グループが混ざってる時をまだサポートしてない
インデントで表現できるように設計はしてある
付箋のサイズが大きい場合を考慮漏れしてた
距離関数は中心の間の距離ではなく辺の間の距離であるべき
その場合、めり込みは、めり込み面積が大きいほど近い?
めり込んでない場合は?
https://gyazo.com/0d438fd048acec502dffe860d928d8cb
Aの次として物理的な距離に従うとCが近いが、Bが選ばれた方が自然
選択範囲がドラッグで2倍?動く、スケール依存かな
https://gyazo.com/3764a3109dbfc6ce37787e01c0a0f6fe
UserScriptがUserとProjectの掛け合わせで決まっている
それは本当に必要だろうか
特にKozanebaの場合
必要ない気がするのでYAGNI
JSのコードを配信するサービス(例えばScrapbox)から読んで使う場合
知らない間に更新されてバックドアを仕込まれる危険性がある
importは手軽だからユーザは使いたがるが、根本が更新された時に気づけない
importを「最新のものを読む」ではなく「読んでキャッシュし、それを使う」にする
---
見映えはさておき一覧画面ができた、タイトルの変更と、ローディング表示をつけた
この一覧画面からタイトルを変更したり削除したりできる予定だったのだが、よく考えると中身を確認しないで削除するのか?という気がしたので開いた先に削除があればいいだけだと思った
✅みばえをマシにする
https://gyazo.com/6a642c431c7205936b2999fcee798d59
✅選択範囲ドラッグのバグを直す
ドラッグのバグはスケール依存
✅テキストコピーのグループ対応
チュートリアルのヘルプ化
https://gyazo.com/6756e2e0e9b67b6d268ad5a7abcbfa9b
やるべきことがだいぶ収束してきた、チュートリアルの仕組みを改善してヘルプの一章がチュートリアルである形に変えよう
今はコンテンツが名前のないリストになってて、見出しも単に見出しのタグが書かれてるだけになってる
これを整理して機械的に見出しを扱えるようにすれば「目次」ができる
チュートリアルは「チュートリアルの章」を読んでるだけ、となる
いまリストの中にただ入ってるだけだが、これをtitleとbodyを持ったオブジェクトのリストにする
チュートリアルのリストと全体のリストは別にする
チュートリアルモードの時にステータスバーのハテナでチュートリアルを再開してたんだけど、そのハテナをチュートリアルモードでない時に隠す意味ないよな、そこからヘルプでたらいいよな
まずは今のチュートリアルができる状態を保ったまま、ヘルプが出せる形に中の設計を変えるか
自動テストで壊れてないことを確認できるしな
キーボードで進められるようにする? YAGNI
removed: The following pages will explain the advanced features and the philosophy behind Kozaneba.
https://gyazo.com/92792948d612218ab6d37f679a48d5d6
目次がついて目次から個別ページへジャンプできるし目次にも戻れるようになった
が、チュートリアルの目次を出しっぱなしにしてると結構長いリストなので畳みたくなった
https://gyazo.com/107bd4bafc8adf5e990a2a8d5575a6e8
Kozanebaヘルプ
既にあるもの
Table of contents
Welcome to Kozaneba!
digital stationery to organize your thought
You can open the tutorial
Let's add some Kozane!
Let's move Kozane!
Let's scroll and zoom the Ba
Let's click to show context menu
Automatic font size adjustment
You can ungroup a group
Let's select objects!
It's not saved yet!
Let's enable auto-save!
Saved?
Tutorial Finished🎉
We need the practice to use stationery effectively
Don't classify, organize!
カーソルでの移動
グループの開閉
グループにタイトルをつける
付箋の分割
複製や更新にも使えるよ
Replaceついてからがいいな
フィードバック機能
重要な物を大きくする
スペースキーで全画面
origin of Kozane
その他
範囲選択中にReactNを更新するのは遅いのでDOMだけにしたい
間違えて大きくした時に小さくする手段がない
copy textでのテキストの結合は英語圏の人はスペースを挟んで欲しいよな
設定可能にする必要がある
ユーザ定義の定数
ネットに置けるようにしたいけどネットからの取得を待ってから他の処理をするのは…
定数はローカルにキャッシュするべきでは
ホイールのない人に拡大の手段がないぞ
bで拡大
アングループのページ
グループを作ったあと、閉じたり、タイトルを付けたりしたい
フィニッシュのページで
匿名でフィードバックを送れる
フォーラムに書き込むこともできる
とアナウンスする
間違えて拡大したものを戻せないのはおかしいのでsmallメニューもつけたんだが、TODOを整理した時に、やることを大きくしておいて終わったら小さくする運用ができることに気づいた
https://gyazo.com/8a08585193ba67fa6416105c029b98f3
ユーザ定義の定数、ホイールの感度などはユーザが操作する時までに決まればいいから楽なのだが、例えば付箋を正方形にしたいみたいなやつが難しい
定数値を元にStyledComponentが作成されている。これはモジュールレベルの定数なのでモジュールが読まれた時点で計算されてしまい、後から変えても反映されない
この種のものを変更可能にするには影響を受けるものを軒並み確定遅らせることが必要になる
そもそも個人の手元のカスタマイズと全体のカスタマイズは別物だな
例えばグループのボーダーの色を変えたいなどの場合、自分の手元だけ変わって欲しいのではなく、それを見る人全てについて変わって欲しいわけだから、このカスタマイズのデータはBaに所有されるべき
そしてこれは書き込み権限なしでの共有機能がついた後の話
そういう意味ではメニューの拡張は自分用
AppBarにボタンを増やしたり
キーバインドの変更
ホイールの感度を変えるなど、基本的にデバイスに密結合だからデバイスごとに保存されるべき
Kozanebaの上で編集するのが面倒ならfetchボタンを押すと特定のURLから取ってくる、とかはできそう
デベロッパーメニュー、僕が使ってるやつは一旦隠してあるけど、カスタマイズをやりたい人向けの拡張メニューを表示できるようにしておくのもありだな
DeepLで変換しただけだけど悪くないな
日本語のフォーラムに書いたものを機械翻訳で英語フォーラムにまず投稿しておいて、それから気が向いたら直す運用でどうか
ユーザによる拡張性に関しては、ユーザダイアログから設定するつもりだったが、しばらくDevMenuから新しいダイアログを出して設定する形にするかな
ある程度ちゃんとなるまでユーザに見えるところに置くと良くなさそう
ついつい技術的にできるかできないかあやしいギリギリを攻めたくなるが、それをやると試作品が床に散らばった部屋みたいになって大部分のユーザは快適に過ごせないので僕を隔離する必要がある