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


Baの一覧を日時順にソート

  • 複合インデックスが必要になる
  • image

エミュレータでテストして楽チンという話 https://techlife.cookpad.com/entry/2018/11/05/143000

リードオンリー共有ができるようにFirestoreのルールを変更する

NG、構文チェックは問題ないが、チュートリアルのテストが過去のBa一覧の取得でコケる firestore rules

service cloud.firestore {
  match /databases/ba/documents {
    function is_writer() {
      return request.auth.uid in resource.data.writers;
    }
    match /{document=**} {
      allow create: if true;
      allow update, delete: if resource.data.anyone_writable || is_writer();
      allow get: if true;
      allow list: if is_writer();
    }
  }
}

パスの理解が間違ってた

  • /databases/FOO/documentsではなく
  • /databases/{database}/documents/FOO/{document}だった

match /databases/{database}/documents 宣言は、ルールがプロジェクト内の Cloud Firestore データベースと一致するように指定します。現在、各プロジェクトには (default) という名前のデータベースが 1 つだけあります。

OK rules

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /ba/{document=*} {
      function is_writer() {
        return request.auth.uid in resource.data.writers;
      }
      allow create: if true;
      allow update, delete: if resource.data.anyone_writable || is_writer();
      allow get: if true;
      allow list: if is_writer();
    }
  }
}

リードオンリー共有ができるようにfirestoreのルールを変更した

  • エミュレータがなかったら試行錯誤大変だっただろうな
  • エミュレータなら本番環境のルール更新を待たずに手元で試行錯誤できる
  • image

いま、場に対する操作が「タイトルの変更」しかないけど、もっと色々するようになったら場のダイアログがあるべきだな

  • タイトルの変更
  • リードオンリー共有
    • デフォルトではURLを知っていれば編集できる
    • URLを知っていても編集できないように変更する
  • コピーを作成
  • 削除

新規作成

  • ユーザダイアログから/#newを新しいタブで開くとか?

まだ何かおかしいな

  • 空グループに空グループを入れた時にズレる?
  • 空グループに空グループを入れてその中にこざねを入れた時にズレる
  • そもそも「空のグループ」が存続すべきなのか、消えるべきでは

kozaneba.constants.group_padding = 5; kozaneba.redraw(); before image after image

既にある程度書いてある勉強会資料をKozanebaに読み込んで整理しようとした場合、何が問題って「画像がKozanebaには読み込まれない」なのだよなぁ

  • Regroupでは画像付箋ができてたのでKozanebaでもやればできるけど勉強会には間に合わないので今じゃない感
  • 既にインデントつき箇条書きになってるものを階層的なグループとしてインポートしたい

テストコードを見てテストの足りてないところを洗い出す

  • ドラッグ結果の位置の確認
  • スクロールとズーム
    • ホットキーのテスト
  • コンテキストメニューで削除をした時に削除されてることを確認
  • グループの開閉
  • グループタイトルの編集

/kozaneba-forum-jp/リリースノート 2021-08-26

  • ユーザダイアログ
    • 既存の場の一覧が更新時間でソートされる
    • 「場の新規作成」が可能
      • ログインしている状態で/#newにアクセスしても同じ
  • グループのパディングを調整可能に。
    • デフォルト値を小さくするかどうか検討中。

矢印のことを考えてたんだけど、暗黙に2項間の関係ばかり考えがちだが別にN項間でもいいのでは。 image


image

  • WIPのタスクにWIPって札をつけてみた
    • これを赤背景とかの目立つものにするといいかも
    • image
    • background: blue; color: white;
    • カスタムのスタイルをつける機能があれば良い
  • グループのマージンを減らしてみた結果、だいたいは良いが2つ問題がある
    • 空のグループがゴミ
      • そもそも「空のグループ」が存続すべきなのか、消えるべきでは src

      • でも「バグは今のところない」ってのは空っぽの「バグ」グループで表現したい
        • タイトルがついてれば消えない?
      • 空のグループがいっぱいできるのはそもそも1枚追加でもグループに入ってるせい?
        • いや、2〜3枚追加する時もあるので1枚の場合だけ対処してもやはりゴミはできる
      • やっぱり「タイトルのない空のグループは自動削除」が適当か?
    • こざね1枚分の幅や高さの時、中のこざねではなくグループをクリックすることが困難
      • min-width / min-height

image

マージン(正確にはパディング)を減らしてみて

  • 実際に使ってみて色々わかることがある
  • ユーザスクリプトで変更すると、手軽に試せる
  • ダメだったらすぐに戻せるから気楽
  • 最終的にタスクになったもの(大きくしたこざね)の周囲にそこに至る思考の流れがある
    • なので実際に着手するまでのあいだに他のものとくっついて変化するかもしれない
    • 実際「空のグループを消す」は「タイトルのない空のグループは消す」へと変化した

明日リリースノートもこざねばにするかなー

ユーザ拡張のデモ

  • 有用性よりも少ないコードで予想外のことをやる
  • 「そんなことできるのか?」となるのが大事
  • ゲーミングこざねとパーティパロット
  • ポモドーロこざね
  • そういう意味ではScrapboxのページ指定でリンク先ページを読み込んでこざねにするのは「実装規模の大きい便利機能」だな
    • ユーザ拡張のデモというより…って感じ
    • キラー応用

簡単に出来そうなので試したら出来た カスタムのスタイルをつける機能 kozaneba.update_style("1629979178768", (s) => {s.background = "blue"; s.color = "white" });

  • ちゃんとサーバに保存される

グループがたとえ空でも一定サイズより小さくならないようにした image

リードオンリーURLを開いた時「これはリードオンリーです、編集しても保存されません」と表示すべきかどうか

  • デフォルト出して、嫌な人はユーザスクリプトで消せばいい
  • 「なんでもユーザスクリプトに押し付けるのはどうかと思います!」

一瞬「ユーザスクリプトで設定可能にした上でユーザがどんな設定にしているか見れば」とか思ったけど、それサンプルが偏りまくりだから素人向けのデフォルト設定を決める目的に使ってはいけないデータだ

矢印機能を入れるとして

  • 理想としてはAとBをつなぐ矢印はどちらかが移動した時に最前面になる
  • 矢印はすべて箱より手前、という設計もあり
  • 常に背面という設計は、グループがあることによってちょっと微妙
    • 「グループの中の箱を指す」があり得る
    • 中のものは基本的に外のものより前面だから

リリースノートを試しにKozanebaに入れてみた

  • が「日時」で塊になるとそれ以上どうしようもない

  • 時系列で離れてるが意味合いとしては近いものを整理できない

  • 日時や時系列の流れを捨てれば意味合いで整理はできる

    • しかしユーザは「既にある軸で整理されてるもの」の軸を捨てることに心理的抵抗があるはず
  • 離れたものの間の関係を矢印で表現するという手もある

next Kozaneba開発日記2021-08-27