prev Kozaneba開発日記2021-08-18 image

昨日は範囲選択してテキストとしてコピー機能を実装した。

  • 改善したい、改善の仕方も見えてるものと、想定し忘れてた入力パターンとがあって、ついつい続きをやりたくなるが、ユーザページの実装の方が優先だな
  • 「機能は実装できてて、その出力の質を上げたい」というタイプのタスクと「あるべきだと前々から思ってるけどまだ全く存在してないユーザページ」の比較で前者をやりたくなってしまう
  • image
  • これに関係してそう

考えたことをメモしないと、それを忘れることが不安で今実装したくなる

  • クラスターを見つけるための探索と1次元にするための探索を同時にやったのは誤り
  • 枝が右上に伸びていてもクラスタとしてはつながるべきだが、右上方向に単語を繋いでいくのはおかしいから。
    • image
  • 先にクラスターを決めてから一次元化すべき
  • グループが混ざってる時をまだサポートしてない
    • インデントで表現できるように設計はしてある
  • 付箋のサイズが大きい場合を考慮漏れしてた
    • 距離関数は中心の間の距離ではなく辺の間の距離であるべき
    • その場合、めり込みは、めり込み面積が大きいほど近い?
    • めり込んでない場合は?
    • image
      • Aの次として物理的な距離に従うとCが近いが、Bが選ばれた方が自然

選択範囲がドラッグで2倍?動く、スケール依存かな

image

/shokai/他のprojectに移動したらUserScriptの後始末をする(event版)

  • UserScriptがUserとProjectの掛け合わせで決まっている
  • それは本当に必要だろうか
    • 特にKozanebaの場合
    • 必要ない気がするのでYAGNI

JSのコードを配信するサービス(例えばScrapbox)から読んで使う場合

  • 知らない間に更新されてバックドアを仕込まれる危険性がある
  • importは手軽だからユーザは使いたがるが、根本が更新された時に気づけない
  • importを「最新のものを読む」ではなく「読んでキャッシュし、それを使う」にする

/shokai/ドッグフーディング


  • 見映えはさておき一覧画面ができた、タイトルの変更と、ローディング表示をつけた

  • この一覧画面からタイトルを変更したり削除したりできる予定だったのだが、よく考えると中身を確認しないで削除するのか?という気がしたので開いた先に削除があればいいだけだと思った

  • ✅みばえをマシにする

    • image
  • ✅選択範囲ドラッグのバグを直す

    • ドラッグのバグはスケール依存
  • ✅テキストコピーのグループ対応

チュートリアルのヘルプ化 image

  • やるべきことがだいぶ収束してきた、チュートリアルの仕組みを改善してヘルプの一章がチュートリアルである形に変えよう
    • 今はコンテンツが名前のないリストになってて、見出しも単に見出しのタグが書かれてるだけになってる
    • これを整理して機械的に見出しを扱えるようにすれば「目次」ができる
    • チュートリアルは「チュートリアルの章」を読んでるだけ、となる
    • いまリストの中にただ入ってるだけだが、これをtitleとbodyを持ったオブジェクトのリストにする
    • チュートリアルのリストと全体のリストは別にする
    • チュートリアルモードの時にステータスバーのハテナでチュートリアルを再開してたんだけど、そのハテナをチュートリアルモードでない時に隠す意味ないよな、そこからヘルプでたらいいよな
    • まずは今のチュートリアルができる状態を保ったまま、ヘルプが出せる形に中の設計を変えるか
    • 自動テストで壊れてないことを確認できるしな
  • キーボードで進められるようにする? YAGNI

removed: The following pages will explain the advanced features and the philosophy behind Kozaneba.

image

  • 目次がついて目次から個別ページへジャンプできるし目次にも戻れるようになった
  • が、チュートリアルの目次を出しっぱなしにしてると結構長いリストなので畳みたくなった

image

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を整理した時に、やることを大きくしておいて終わったら小さくする運用ができることに気づいた

  • image

ユーザ定義の定数、ホイールの感度などはユーザが操作する時までに決まればいいから楽なのだが、例えば付箋を正方形にしたいみたいなやつが難しい 定数値を元にStyledComponentが作成されている。これはモジュールレベルの定数なのでモジュールが読まれた時点で計算されてしまい、後から変えても反映されない この種のものを変更可能にするには影響を受けるものを軒並み確定遅らせることが必要になる

そもそも個人の手元のカスタマイズと全体のカスタマイズは別物だな

  • 例えばグループのボーダーの色を変えたいなどの場合、自分の手元だけ変わって欲しいのではなく、それを見る人全てについて変わって欲しいわけだから、このカスタマイズのデータはBaに所有されるべき
    • そしてこれは書き込み権限なしでの共有機能がついた後の話

そういう意味ではメニューの拡張は自分用

  • AppBarにボタンを増やしたり
  • キーバインドの変更

ホイールの感度を変えるなど、基本的にデバイスに密結合だからデバイスごとに保存されるべき Kozanebaの上で編集するのが面倒ならfetchボタンを押すと特定のURLから取ってくる、とかはできそう

デベロッパーメニュー、僕が使ってるやつは一旦隠してあるけど、カスタマイズをやりたい人向けの拡張メニューを表示できるようにしておくのもありだな

DeepLで変換しただけだけど悪くないな

日本語のフォーラムに書いたものを機械翻訳で英語フォーラムにまず投稿しておいて、それから気が向いたら直す運用でどうか

pScrapboxAutoTrans

ユーザによる拡張性に関しては、ユーザダイアログから設定するつもりだったが、しばらくDevMenuから新しいダイアログを出して設定する形にするかな

  • ある程度ちゃんとなるまでユーザに見えるところに置くと良くなさそう

ついつい技術的にできるかできないかあやしいギリギリを攻めたくなるが、それをやると試作品が床に散らばった部屋みたいになって大部分のユーザは快適に過ごせないので僕を隔離する必要がある

next Kozaneba開発日記2021-08-20