yamori

有給休暇計算を主目的とした簡易勤怠管理システム

Commits at f7fcd82f3784d58f232453621d3d43582f02a1f9

  1. f7fcd82f docs: ドキュメントサイトの基礎 必要なツールの数を絞るために Nix を採用した。 ``` mise install bun install bun docs ``` よりも ``` nix run .#docs ``` の方がシンプルな上躓くポイントが少ない。 また、利用できるツールの数も桁違いに多く、バージョンの違いによる エラーなどもほぼない。 Mkdocs を採用した理由はなんとなく。使ったことがない、 というのもある。ぶっちゃけよほど酷くなければなんでもよかった。 Shota FUJI authored at Shota FUJI comitted at
  2. e95152bf v2 のファイルを削除 Shota FUJI authored at Shota FUJI comitted at
  3. fc159b15 backend: ユーザ作成時にカスタムフィールドを保存する Shota FUJI authored at Shota FUJI comitted at
  4. 30dae958 proto: カスタムフィールドの書き込み用フィールド 今までなかった。 Shota FUJI authored at Shota FUJI comitted at
  5. eeac3086 react_ui: ユーザ更新後に詳細画面が古いままなのを修正 Shota FUJI authored at Shota FUJI comitted at
  6. 4420922f react_ui: ユーザ詳細以下のページが表示されないのを修正 UUID のようにハイフンなんかが含まれていると 404 になってしまっていた。 Shota FUJI authored at Shota FUJI comitted at
  7. 8ff02a2c backend: ユーザIDに "wu-" プリフィクスがないのを修正 Shota FUJI authored at Shota FUJI comitted at
  8. 0a5858bd react_ui: 管理者フラグをユーザ作成・編集のフィールドに追加 Shota FUJI authored at Shota FUJI comitted at
  9. 6e96fc73 react_ui: ユーザ編集ページ Shota FUJI authored at Shota FUJI comitted at
  10. 5e1c89a6 react_ui: ユーザ詳細ページ Shota FUJI authored at Shota FUJI comitted at
  11. f8a8ae60 react_ui: ユーザ作成フォームをコンポーネント化 更新でもほぼ同じものを使いたかったので。 Shota FUJI authored at Shota FUJI comitted at
  12. 3ef3e56d backend: ユーザ更新メソッド Shota FUJI authored at Shota FUJI comitted at
  13. 74286af9 proto: ユーザ更新メソッド Shota FUJI authored at Shota FUJI comitted at
  14. 91f22947 react_ui: ユーザの属性をバッジとして表示 Shota FUJI authored at Shota FUJI comitted at
  15. cc29fc63 react_ui: 解決済み TODO コメントの削除 Shota FUJI authored at Shota FUJI comitted at
  16. 42cc1eda react_ui: ユーザ削除 UI Shota FUJI authored at Shota FUJI comitted at
  17. ae06727b backend: ユーザ削除メソッド Shota FUJI authored at Shota FUJI comitted at
  18. 4a538aa8 backend: 無意味な関数呼び出しの削除 なんじゃこりゃ。 と思ったけど、多分最初にロガーを設置して未実装のレスポンスを返していたが、 ログをとるようになったタイミングでまたロガーを設置してしまったものと 思われる。 Shota FUJI authored at Shota FUJI comitted at
  19. 4d99cf19 proto: ユーザ削除メソッド Shota FUJI authored at Shota FUJI comitted at
  20. 96a66729 react_ui: カスタムフィールド定義編集 UI Shota FUJI authored at Shota FUJI comitted at
  21. 0d91d1b4 react-ui: カスタムフィールド削除機能 Shota FUJI authored at Shota FUJI comitted at
  22. cae5eec3 react_ui: カスタムフィールド定義作成画面 Shota FUJI authored at Shota FUJI comitted at
  23. f2d74be8 react-ui: カスタムフィールド定義一覧画面 Shota FUJI authored at Shota FUJI comitted at
  24. 73fb4bc7 backend: カスタムフィールド削除メソッド Shota FUJI authored at Shota FUJI comitted at
  25. f8d73a6d backend: テスト失敗時の表示対象変数を修正 Shota FUJI authored at Shota FUJI comitted at
  26. 81fac3ff backend: カスタムフィールド定義書き込みメソッド Shota FUJI authored at Shota FUJI comitted at
  27. 089344ca backend: カスタムフィールド定義のモデリング Shota FUJI authored at Shota FUJI comitted at
  28. 9536087b backend: カスタムフィールド定義の書き込み・削除メソッド雛形 Connect Go の設計が悪いせいで新規追加されたメソッドは実装しないと コンパイルエラーになるため早めに実装。 Shota FUJI authored at Shota FUJI comitted at
  29. a8689769 proto: バックエンド用のカスタムフィールドのイベント定義 Shota FUJI authored at Shota FUJI comitted at
  30. 189ae636 pwa: 未使用の import を削除 Shota FUJI authored at Shota FUJI comitted at
  31. e4d1e83e proto: カスタムフィールド定義の更新系メソッドを追加 カスタムフィールドはユーザ管理に関わってくるため早く欲しくなった。 Shota FUJI authored at Shota FUJI comitted at
  32. 8ee14487 react_ui: ユーザ作成画面 Shota FUJI authored at Shota FUJI comitted at
  33. a1e1be48 backend: ユーザ一覧を返す Shota FUJI authored at Shota FUJI comitted at
  34. 2dd96b89 react_ui: ユーザ一覧画面 Shota FUJI authored at Shota FUJI comitted at
  35. 020ba241 react_ui: ログイン後の画面レイアウト Shota FUJI authored at Shota FUJI comitted at
  36. 0ff76a8f pwa: Connect RPC を導入 新しい react-ui 及び backend で利用しているため。 Shota FUJI authored at Shota FUJI comitted at
  37. 90a69b4f react_ui: ログイン周りをアプリケーションに組み込み Shota FUJI authored at Shota FUJI comitted at
  38. 6592a62e backend: ユーザがいない場合のログインユーザ取得レスポンス Shota FUJI authored at Shota FUJI comitted at
  39. 43638887 proto: ログインユーザ取得メソッドに管理者不在時のレスポンスを追加 ワークスペース取得処理が認証必須なため。未ログイン時に最低限のレスポンスを返す といったことをすると、うっかり他のフィールドも含めてしまいかねない上、定義から どのように動くのかがわかりづらくなる。 Shota FUJI authored at Shota FUJI comitted at
  40. 00bc8d74 react_ui: ログイン UI Shota FUJI authored at Shota FUJI comitted at
  41. f07dc177 backend: ログインユーザ取得メソッド Shota FUJI authored at Shota FUJI comitted at
  42. 265abaa2 proto: ログインユーザ取得メソッド 完全に想定から抜けていた。 PWA 実装時に「ないとダメじゃん」と早い段階で 気づいた。 Shota FUJI authored at Shota FUJI comitted at
  43. 0e6f2f21 react_ui: 初期管理者作成ページ ログインまで含めようと思ったが、思いの外量が多い上 RPC 側の変更も必要 だったためこのページだけとした。 Shota FUJI authored at Shota FUJI comitted at
  44. 86109ea9 proto: v2 ユーザのカスタムフィールド 移行時に面倒だったので省いていたが、やはり必要なので。 Shota FUJI authored at Shota FUJI comitted at
  45. c329bcaf proto: v2 の労働者データ マスクとかまだだけど。 Shota FUJI authored at Shota FUJI comitted at
  46. 49d1ceb3 backend: レスポンスヘルパで不要なエラーを返さない ハンドラが `*Response, error` である必要があるので、そのまま返せる ようにヘルパも同じ型にしていた。しかし、関数名と型が異なること、 利用側としてはそこまでの差がないことから関数のベストプラクティスに 則ることにした。 Shota FUJI authored at Shota FUJI comitted at
  47. f7a2ddbd backend: ワークスペース更新時に認証エラーを返す TODO 消化。 Shota FUJI authored at Shota FUJI comitted at
  48. 4e083e18 proto: ワークスペース更新時の認証エラー 認証付きエンドポイントのため。 Shota FUJI authored at Shota FUJI comitted at
  49. fb652c57 backend: permission_error を返す TODO 消化。 Shota FUJI authored at Shota FUJI comitted at
  50. 83b512fd proto: 権限エラーを作成 CapabilityError は capability based security に基づいたエラーのため。 紛らわしくならないように分けた。 Shota FUJI authored at Shota FUJI comitted at
  51. e03967fd backend: ワークスペース更新処理 Shota FUJI authored at Shota FUJI comitted at
  52. 21ff80c5 backend: 省略表記の初期値を設定し、レスポンスで返す Shota FUJI authored at Shota FUJI comitted at
  53. c7754317 backend: 省略表記の保存用データ定義 Shota FUJI authored at Shota FUJI comitted at
  54. 6f66f02e backend: ログアウトメソッド Shota FUJI authored at Shota FUJI comitted at
  55. 9f3d24b3 backend: ユーザ情報を整形して返す Shota FUJI authored at Shota FUJI comitted at
  56. e6831b82 backend: 通常ユーザによるユーザ作成機能 Shota FUJI authored at Shota FUJI comitted at
  57. a63ad39a backend: 管理者ユーザに対する権限を定義 これにより「管理者の場合は〜」といった処理を個々のサービスハンドラで 書く必要がなくなり、将来的な要件変更にも強くなる。 Shota FUJI authored at Shota FUJI comitted at
  58. dd98a985 backend: ユーザの権限データを保存する Shota FUJI authored at Shota FUJI comitted at
  59. 611fa22f backend: CreateUser メソッド 権限周りに関してはストレージ側が準備できていないため未実装。 Shota FUJI authored at Shota FUJI comitted at
  60. a1a2b1ef backend: interface{} -> any gopls がうるさいので。 Shota FUJI authored at Shota FUJI comitted at
  61. 51c5a24d backend: スナップショット名作成の SQL 文をわかりやすくした Shota FUJI authored at Shota FUJI comitted at
  62. 2b12ae51 backend: WASM でスナップショットを保存できない問題の回避 go-sqlite3-js がプレースホルダやら名前付きパラメータといった 実質必須なものの対応をまともにしていないため。もうスクラッチで 書いたほうがいいかもしれない、というレベル。 Shota FUJI authored at Shota FUJI comitted at
  63. ba6e73f2 backend: WASM 向けのブラウザロガー Shota FUJI authored at Shota FUJI comitted at
  64. 8d33e27b backend: ワークスペース取得の認証エラーを定義 Shota FUJI authored at Shota FUJI comitted at
  65. c0053096 proto/backend: バリデーション系のエラーを定義 汎用のエラーメッセージを作るよりは、個々のメソッドに必要なエラーを ペイロードを都度定義しながら書いたほうがいいことに気がついた。 Shota FUJI authored at Shota FUJI comitted at
  66. 9c62df7f backend: サーバの終了コードを定義する わかりづらいため。 Shota FUJI authored at Shota FUJI comitted at
  67. b6ea07de backend: main 終了時に DB を閉じる Go の main のシグネチャは本当に終わってる。 Shota FUJI authored at Shota FUJI comitted at
  68. d5f22577 proto: CapabilityKey を削除 このシステムのユーザ認可には合わなかったため。 ワークスペースの v2 では CapabilityKey に触れる実装をしていないため フィールド定義ごと削除した。 Shota FUJI authored at Shota FUJI comitted at
  69. 7524073c backend: ワークスペース取得処理 認証付きだが、ワークスペースの初期管理者作成の必要可否は別の メソッドにしたほうがいいと気づいたため。 Shota FUJI authored at Shota FUJI comitted at
  70. 2cea57dd backend: ワークスペースの初期表示名 Shota FUJI authored at Shota FUJI comitted at
  71. 90abb48b backend: ワークスペース表示名のイベントとプロジェクション Shota FUJI authored at Shota FUJI comitted at
  72. b6d8311d backend: ログインのテスト Shota FUJI authored at Shota FUJI comitted at
  73. feb97858 backend: テストのヘルパ関数を別ファイルに移動 他のテストでほしかったため。 Shota FUJI authored at Shota FUJI comitted at
  74. 4d35044e backend: テストのセットアップが失敗するのを修正 Shota FUJI authored at Shota FUJI comitted at
  75. cebef263 backend: Login でのログとエラーハンドリング Shota FUJI authored at Shota FUJI comitted at
  76. 3452ebee backend: CreateInitialAdmin でのログとエラーハンドリング Shota FUJI authored at Shota FUJI comitted at
  77. 5693f6f0 backend: JWT の生成・検査ヘルパ 今後ほぼすべての RPC で必要となるため事前に整理した。 Shota FUJI authored at Shota FUJI comitted at
  78. 663ceacd backend: ログイン時に JWT を SameOrigin Cookie に焼き付ける Shota FUJI authored at Shota FUJI comitted at
  79. 36d31f78 backend: ログイン処理を別ファイルに移す ファットになりすぎて見づらかったので。 Shota FUJI authored at Shota FUJI comitted at
  80. 0fce04ca proto: ユーザ作成リクエストをシンプル化 移行したのでフィールドを詰めた。デプロイとかしてないし。 oneof から別個のフィールドにしたのは使いやすさのため。 正直種々のコードジェネレーターの吐く oneof 実装がクソ過ぎて 使いたくない。将来的にも別個のほうが、例えば管理者から特定の 権限を外す場合などにも対応できる。まぁ oneof 外すのは簡単なん だけどね。 Shota FUJI authored at Shota FUJI comitted at
  81. 8842bc99 backend: 初期管理者ユーザ作成 RPC へ移行 Shota FUJI authored at Shota FUJI comitted at
  82. 9231b3a0 proto: 管理者ユーザ作成メソッド ユーザ作成暗黙の RPC に oneof みたいなフィールドが多く使い勝手が 悪いと感じたため。 backend のコードに触れているのは Connect Go のサービスが全てのメソッドを 実装していないとコンパイルエラーになるという欠陥設計によるもの。 Shota FUJI authored at Shota FUJI comitted at
  83. ed45ac44 backend: 管理者作成のテスト Shota FUJI authored at Shota FUJI comitted at
  84. c0522153 backend: -h がヘルプになるのを修正 kong は無条件で -h を設定するため、デフォルトのヘルプを無効化する 必要がある。 Shota FUJI authored at Shota FUJI comitted at
  85. 4a363d11 backend: HTTP サーバのホストとポートを CLI 系で変更可能にした ぶっちゃけログのほうがメインだったり。実際に何度も立ち上げて わかりづらかったので。 Shota FUJI authored at Shota FUJI comitted at
  86. 7627d966 backend: まともに CLI 引数を渡せるようにする Go の flag パッケージは普通の `-a`/`--a-long` 形式をサポートせずに `-a-long` で全部ポインタのため。楽だが、成果物の UX が悪くなるという アンチパターン。 Go の標準ライブラリ割とだめじゃね...? Shota FUJI authored at Shota FUJI comitted at
  87. dafd1a3c backend: テキストログ出力をまともに見れるように修正 Shota FUJI authored at Shota FUJI comitted at
  88. 0b23f623 backend: テキストログと JSONL ログを選べるようにした JSONL は便利だがテスト時などは見にくい。 Shota FUJI authored at Shota FUJI comitted at
  89. e95f3a9c backend: デバッグログを見れるようにする 見れなきゃ出しても意味ないので。 Shota FUJI authored at Shota FUJI comitted at
  90. 4440b52c backend: 管理者作成パスワードの初期指定 自動テストが書けないので。 Shota FUJI authored at Shota FUJI comitted at
  91. 6b71ff4f proto: ユーザの権限モデル定義 Shota FUJI authored at Shota FUJI comitted at
  92. f1497f78 backend: ログイン RPC Shota FUJI authored at Shota FUJI comitted at
  93. 05bda859 backend: イベント生成のヘルパ関数 自動生成されるコードがあまりにも酷くノイズでしかないため。 Shota FUJI authored at Shota FUJI comitted at
  94. a20b0398 backend: 管理者ユーザ作成時に PW を設定する 単純な抜け。 Shota FUJI authored at Shota FUJI comitted at
  95. e3344e20 backend: 初期管理者作成フロー テストは一パターンしかないが、初期パスワードを明示的に指定する機能が ないとテストができないので (ログをキャプチャするとかは勘弁) とりあえず サンプル的に書いてあるだけ。ちゃんと書くならある程度ヘルパ関数に出して いく必要がありそう。 スナップショットやプロジェクションあたりは PoC をベースにシンプルで クリーンな感じを目指して書いたが、もう少し詰めてきれいにできそうな 気がする。 Go 特有のボイラープレートは全然問題ではなかったが、 Protobuf/Go の吐く コードがやばすぎてやばさがやばい。現状、 * WASM 出力ができる * 2023 edition の Protobuf に対応している * ランタイムオーバヘッドが大きくない 言語が Go しかなくスイッチはできないので、ヘルパなり何なりで早めに対策 をする必要がありそう。特に `oneof` のコード生成がオワコンすぎる。 Protobuf 2024 edition が出たら生成コードが Opaque になって Builder 系の ヘルパが生成されるのでそれまで待つのもあり? 2025 Q3 あたりでようやく 仕様が固まる見通しっぽいからあまりにも酷ければ移行を見越したヘルパなり Builder と似た機構を用意したほうがいいかも。 色々と中途半端なところや TODO コメントがあるが、これ以上完璧を目指すと diff を読むのが地獄なのでここで一区切り。 Shota FUJI authored at Shota FUJI comitted at
  96. 9aef8519 Zig 関連の設定を削除 利用しなくなったため。 Shota FUJI authored at Shota FUJI comitted at
  97. dd213fe7 vendor/go-sqlite3-js: WASM で DB が開けないのを修正 そもそもこのコードが動いていたのか甚だ疑問。 Shota FUJI authored at Shota FUJI comitted at
  98. 516cab77 backend: SQLite3 の導入 WASM でも動かすために色々追加している。 ただ、これ以上環境依存のツールを導入しなければ後は共通の コードを書くだけになるはず。 Shota FUJI authored at Shota FUJI comitted at
  99. 115fc47f backend: すべて Go で書く WASM の出力がおかしいのはどうやら v1.24.1 限定のバグだった模様。 v1.23.8 と v1.24.2 では再現しなかった。リリースノートにはないので バレないようにしれっと直したのだろう。 pwa パッケージにサンプル的なコードが入っているが、これは動作確認用。 後で消す予定だが、どのみち pwa パッケージは使わなくなるのでそのまま になる可能性も。 Shota FUJI authored at Shota FUJI comitted at
  100. 82244747 backend: SQLite3 での Event Sourcing スキーマ SQL 文の正常性確認は実際に行いそうなクエリや INSERT を書いたものを `001_test.sql` と保存した上で、 ``` $ cat migrations/*.sql | sqlite3 -table ``` を実行した。 本来であればマイグレーションの実行までを一纏めにしたかったが、 ここに来て Zig の protobuf である Gremlin のコード生成が全然ダメ なことが発覚。特に `oneof` を普通のメッセージと同様に出力するため 利用側でどのフィールドが判別できない ("_" でプリフィクスされてる フィールドが `null` かどうかを見ればわかるが、非公開だしハック) ので実用に耐えないことが分かった。他の Protobuf コード生成ツールは Protobuf3 しか対応しておらず、 edition 向けのちゃんとしたツールを 書くしかない。しかし工数的に、というかペース的にそんな余裕がないので Go (WASM 出力できれば) か Rust (Go がウンコだったら) での書き換えを する予定。そうなると更に低レベルな内容のコミットとなるため、別の コミットにすることとした。 要約すると、大量の環境整備が入るけどこの SQL 捨てるの勿体ないから コミットしたよ。 Shota FUJI authored at Shota FUJI comitted at
  101. 7db4a3ee backend: server.zig を削除 サーバも WASM を使うことにしたため。 Shota FUJI authored at Shota FUJI comitted at
  102. f6062794 proto: ユーザ作成 RPC Shota FUJI authored at Shota FUJI comitted at
  103. 35f896e8 proto: 単一ワークスペース前提の workspace/v2 モジュール SingletonWorkspaceService を作ったが、既存のモデル定義を拡張していくと どうしてもノイズが多くなったり注釈が増えたりしてくる。 根本的なアーキテクチャ変更なのでバージョン変更は妥当と判断し、最小限の モジュールを作成した。 根本的な変更の理由はユーザ管理・ログインを実際に実装しようとして既存の サービス設計では実現が難しい、できてもハック盛りだくさんになってしまう ため。労働者管理とユーザ管理を分離しようとして設計した v1 だったが、 結果的にそれのせいでユーザ管理が追加できない事態となってしまった。 Shota FUJI authored at Shota FUJI comitted at
  104. 8edcdcf5 proto: ユーザモデルをワークスペース配下に移動 シングルトンワークスペースがメインになる以上、ユーザはワークスペースに 属するデータとなる。 Shota FUJI authored at Shota FUJI comitted at
  105. eb9ece9c proto: 内容がおかしいコメントの修正 多分コピペ。 Shota FUJI authored at Shota FUJI comitted at
  106. 3abc4595 proto: カスタムフィールド 社員 ID などを設定して CSV などでエクスポート、外部システムで 紐づけなどのユースケースがあるため必須要件となる。 Shota FUJI authored at Shota FUJI comitted at
  107. 87be8e69 proto: ログアウト RPC Shota FUJI authored at Shota FUJI comitted at
  108. c433adc6 proto: ログイン RPC Event Sourcing をするにしろ通常の CRUD SQL にするにしろ、 まずこれが必要になる。このあとのユーザ周りの設計にも必要 になってくる。 Shota FUJI authored at Shota FUJI comitted at
  109. b24ca3f0 backend: connectrpc を使ったサーバ リクエストを受けると Go -> Zig (WASM) -> Go という順番で処理を 行う。 connectrpc のデザイン制約上 binary -> Go struct -> binary -> Zig struct -> binary -> Go struct -> binary と非常に非効率な シリアライズ・デシリアライズをしてしまっている。ただ、現状 Zig で まともな gRPC ライブラリがないこと、自前の HTTP2/3 をベースにした 実装だとプロファイルやテストで実装コストが膨らむことから当面は この非効率実装を妥協点とする。 長期的には独自の protobuf 用 RPC + rate limit 付きの (非効率な) 現状と同じ connectrpc 経由の外部向け gRPC というのが無難そうか。 Shota FUJI authored at Shota FUJI comitted at
  110. 75d721c8 backend: Wazero を使った Go からのコア呼び出し gRPC やらサーバ周りは Go が充実しているため。 また、サンドボックスで実行されることにより I/O を限定でき、 安全にコアを実行できる。 Shota FUJI authored at Shota FUJI comitted at
  111. f5eafc11 backend: WASM バックエンド DB とかはない。そもそもどんな DB アクセスにするのかとか 設計とか考えてないし。 Shota FUJI authored at Shota FUJI comitted at
  112. 62a6766e backend_core: Zig から protobuf を利用する 使っている Gremlin というコード生成ライブラリと Zig という言語の 仕様上、 proto でライブラリを出力、というのはハックになってしまう。 そのため、多少効率は悪くなるが利用側で都度出力する形にした。 Protobuf は .proto 毎にソースファイルを生成、という形だが Zig は 配布形態に合わせたパッケージングとなる。つまり、静的・動的な ライブラリや実行ファイルがモジュールの単位となる。そのため「複数 ファイル群をモジュールとして公開」ということはできない。 このコミットでは protobuf の wkt (well-known types) の追加も 含まれている。これは Gremlin が protoc に対応しておらず wkt が 含まれていないため。このベンダリングに伴うライセンス周りの変更も 入っているため少し変更ファイル数が多くなっている。 Shota FUJI authored at Shota FUJI comitted at
  113. e551c6fc proto: 単一ワークスペース向け構成 RPC 現実的な運用としてマルチワークスペースはなさそうということが判明。 自分の組織だけのデプロイなのにワークスペース選択やらがあるのは不便なので 単一ワークスペース向けのフローを考えそれに必要な RPC を実装した。 Shota FUJI authored at Shota FUJI comitted at
  114. 90396a7f proto: 疎通確認RPC 実装初期やテスト、ステータス確認などいろいろ便利なため。 Shota FUJI authored at Shota FUJI comitted at
  115. 25753283 test_go_consumer: サンプルパッケージの削除 Shota FUJI authored at Shota FUJI comitted at
  116. 1fcfa4b3 proto: Go バインディングの出力 サンプル用にテストのパッケージも追加している。 Shota FUJI authored at Shota FUJI comitted at
  117. 24c1c392 docs: アーキテクチャ図を更新 "ship fast" を優先するため使いやすい技術スタックにした。 また、 web ホスティングが優先要件となったためそこも含めた。 Shota FUJI authored at Shota FUJI comitted at
  118. 5a71f21c react_ui: 勤怠記録編集ダイアログ ショートカットキーだけでは半日の入力に無理があるため。 半日の記録の頻度などを考え、一先ずこれでどうにかなるのでは?と いうことで実装した。 Shota FUJI authored at Shota FUJI comitted at
  119. 7d060f01 react_ui: 改善された勤怠履歴のフィールドへ移行 ひとまずバックエンド、そしてスキーマから旧フィールドを削除するために 旧フィールドの利用を消した。 UI 上での変更はまだ。 Shota FUJI authored at Shota FUJI comitted at
  120. 029baa80 idb_backend: 改善された一日未満へのデータモデルへ移行 Shota FUJI authored at Shota FUJI comitted at
  121. 72e12b4e idb_backend: 改善された一日未満のデータのストレージ移行 Protobuf メッセージの移行もしてしまうと変更がかなり大きくなって しまうため、内部のストレージ設計のみ変更した。 Shota FUJI authored at Shota FUJI comitted at
  122. 9bc9de45 idb_backend: 解消済みのTODOコメントを削除 Shota FUJI authored at Shota FUJI comitted at
  123. 6a2e0bb6 proto: 一日未満の勤怠記録のデータ設計を改善 以前のままでは半日公休+半日出勤&時間単位年休といった記録が つけられなかった。オフラインで議論を重ねてこの形なら汎用性 とシンプル性が保てるという結論に達したものをコードにした。 Shota FUJI authored at Shota FUJI comitted at
  124. 4e25a2f1 idb_backend: マイグレーションを個別のファイルに分割 大きくなりすぎて書いたり読んだりするのが大変になってきたため。 Shota FUJI authored at Shota FUJI comitted at
  125. 427faaf9 react_ui: CSV/TSVダウンロード Shota FUJI authored at Shota FUJI comitted at
  126. 8689f7f2 react_ui: 集計画面に未入力日数を表示する Shota FUJI authored at Shota FUJI comitted at
  127. eeffc205 react_ui: 勤怠記録書き込み成功時にトーストを出さない 複数日に纏めて書き込む場合は問題ないが、キーボードショートカット で一日ずつ書き込む場合は非常に邪魔で仕方ない。 Shota FUJI authored at Shota FUJI comitted at
  128. 538052dd react_ui: サマリ画面のタイトルを変更 わかりやすいタイトルはないか意見を聞いたところ、このデータは 集計データであり月次集計などが適当であるという意見をもらった ため。ページとしては期間は任意のため、月次・年次という装飾は つけずに集計表とぼかした。 Shota FUJI authored at Shota FUJI comitted at
  129. 3afd26fe react_ui: ワークスペースサマリ画面 Shota FUJI authored at Shota FUJI comitted at
  130. 4f8e1c68 README の実装状況を更新 Shota FUJI authored at Shota FUJI comitted at
  131. b4deadf5 react_ui: 勤怠記録編集のキーボードショートカット Shota FUJI authored at Shota FUJI comitted at
  132. c808f6cc react_ui: 勤怠記録編集処理をモジュールに切り出し メニュー以外からも呼び出したかったので。リファクタだけでもボリュームが あるため個別のコミットにした。 Shota FUJI authored at Shota FUJI comitted at
  133. 30b9a80d react_ui: 省略表記 Shota FUJI authored at Shota FUJI comitted at
  134. cbca2b2c idb_backend: 省略表記 Shota FUJI authored at Shota FUJI comitted at
  135. 7f34578c proto: 省略表記フィールド カレンダーで詰めて表示する際に、この設定がないと一文字しかでなかったり わかりづらい省略になったりで不便なため。 Shota FUJI authored at Shota FUJI comitted at
  136. d9413a5d react_ui: カレンダーの行ヘッダを労働者詳細へのリンクにする 使っていてジャンプできないのは不便だと感じたため。 Shota FUJI authored at Shota FUJI comitted at
  137. e3322a61 idb_backend: 有給休暇の残日数が戻らないのを修正 例えば 有給休暇 -> 休日 とした際に残日数が減ったままで戻らなかった。 Shota FUJI authored at Shota FUJI comitted at
  138. 785b7f11 react_ui: 有給休暇を取得しきってもダッシュボードに表示する 使い切ったのか元からないのかわからなかったため。 Shota FUJI authored at Shota FUJI comitted at
  139. 9c56623a idb_backend: 残りがあるのに有給休暇を取得できない不具合を修正 Shota FUJI authored at Shota FUJI comitted at
  140. 57739611 react_ui: 年次有給休暇の取得 UI Shota FUJI authored at Shota FUJI comitted at
  141. 9d5c8284 react_ui: 法定・特別休暇休業取得 UI Shota FUJI authored at Shota FUJI comitted at
  142. 72243bfd react_ui: ワークスペースのトップをカレンダーに変更 カレンダーは労働者一覧ページの情報も含んでいるため。 また、ユーザが一番アクセスする、気になる情報はカレンダーページの ものであるため。 Shota FUJI authored at Shota FUJI comitted at
  143. 2093d2fd proto: special_/legal_leave を削除 Shota FUJI authored at Shota FUJI comitted at
  144. 448d69c1 react_ui: workspace_defined_leave への移行 Shota FUJI authored at Shota FUJI comitted at
  145. c2395a6f idb_backend: workspace_defined_leave への移行 Shota FUJI authored at Shota FUJI comitted at
  146. f3fe6c17 proto: 特別・法定休暇を区別しない そもそもワークスペースごとに設定する設計となっている上、区別する メリットが殆どない。労働者の権利として必要、というのであればシステム 上で事前に作成して更新・削除できないようにすればいいだけ。 現状 `yamori.workspace.v1.Workspace` の `leave_definitions` には 特別・法定のどちらかといった情報がないため出し分けや設定ができない。 Shota FUJI authored at Shota FUJI comitted at
  147. 9c8019e8 react_ui: 労働者作成時に自動付与の属性を入力させる Shota FUJI authored at Shota FUJI comitted at
  148. e251b155 react_ui: 有給休暇付与テーブルの一覧ページ 間違いがないかの確認や、よく知らない労働者や使用者への周知、将来的な変更の基盤 としての実装。 Shota FUJI authored at Shota FUJI comitted at
  149. 952218c7 react_ui: ローカル変数名を変更 試行錯誤時の名残(変更忘れ)なのかわからないが、意味が通らない 変数名だったので変えた。 Shota FUJI authored at Shota FUJI comitted at
  150. 55bc7498 idb_backend: 年次有給休暇自動付与機能 Shota FUJI authored at Shota FUJI comitted at
  151. 5fcf2440 proto: 年次有給休暇の自動付与に必要なフィールドとメッセージを追加 Shota FUJI authored at Shota FUJI comitted at
  152. fa11be83 react_ui: 日・曜日のフォーマットが常に en なのを修正 MDN には `Intl` の最初の引数 (`locales`) が `undefined` の場合は > The runtime's default locale is used when undefined is passed > or when none of the specified locale identifiers is supported. <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#locales> と書いてあるがこのページの記述は嘘で、 > `undefined` (or omitted): The implementation's default locale > will be used. <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument> こちらが正解。仕様では "an arbitrarily-ordered duplicate-free List of language tags, ... It represents all locales for which the implementation provides functionality within a particular context." となっている。 Firefox も Chrome も恐らく safety default として en-US になっており 開発に使っている OS ・ブラウザの設定 (en-US/en-GB) と近いためおか しいことに気付かなかった。 ブラウザ実装側で将来的にソートする可能性もないとは言い切れないが...。 結果に依存できない以上明示的に指定するのが安全。 Shota FUJI authored at Shota FUJI comitted at
  153. f2f20ed8 react_ui: カレンダーの一部がメニューより上に来るのを修正 Shota FUJI authored at Shota FUJI comitted at
  154. 03c3c2c7 react_ui: カレンダーの日付・曜日を縦に並べる 横だと揃っていない印象を受けてしまうため。特に日本語じゃない場合は 1文字じゃないため、めちゃくちゃずれて見えてしまう。 Shota FUJI authored at Shota FUJI comitted at
  155. c18a9f96 react_ui: レイアウトのサイズ制限をページごとに行う ページによって適切なサイズがあるため。特にカレンダーのような左右に 大きく使いたい場合は上流で padding やらを設定すると非常に迷惑。 Radix 的には `<Inset>` でどうにかする、という思想なのだろうが実装が おざなりなため特定のコンポーネント以外では使えない。 統一感という点では微妙になってしまうが、画面の有効活用を考えると 十分すぎるトレードオフだろう。 Shota FUJI authored at Shota FUJI comitted at
  156. d31a44a5 react_ui: カレンダーのセルを小さくした フィードバックを求めたところ、やはりセルが大きかったようで(特に 横幅)もっと一画面で見える情報が欲しいらしい。 Shota FUJI authored at Shota FUJI comitted at
  157. 53e404b5 check スクリプトをキャッシュする 特に TSC が遅くてイライラしたので。 Shota FUJI authored at Shota FUJI comitted at
  158. 02454f31 reuse lint を check スクリプトで纏めて実行する コミット前にはどちらも必ず実行するので。 `--lines` オプションをつけないと正常時にも邪魔くさいテキストを stdout に書き込むため。 `1>&2` (redirect stdout to stderr) は 意味がなかった。 Bun の挙動なのか Wireit の挙動なのか、それとも 他のスクリプトが `isTTY` をちゃんと参照しているが REUSE だけが 見ていないのか、どれなのかは不明。 Shota FUJI authored at Shota FUJI comitted at
  159. a5c165ab react_ui/pwa: dev スクリプトを wireit に以降 idb_backend が古いまま Storybook を動かして「あれ?」となったため 再発防止として Wireit で必ずソースに対応したビルドを使うようにする。 Shota FUJI authored at Shota FUJI comitted at
  160. a9710739 react_ui: Storybook が勝手にブラウザを開くのを阻止 今まではランダムなポートを使っていたから仕方なかったが、 固定ポートを利用している今は余計なデフォルトでしかない。 一回サーバを落として再度立ち上げる、といったときに別タブ が開かれたり、 OS デフォルト以外のブラウザで見ようとして いるときに邪魔でしかなかったり、そもそも勝手にフォーカス を奪うのが論外だったりと初期で有効にする理由がない。 Shota FUJI authored at Shota FUJI comitted at
  161. e72b2c6e react_ui: 勤怠記録機能 年次有給休暇の取得はまず付与ができないとどうしようもないのでなし。 利用感を確かめるために基本の 3 ステータスのみ実装した。 Shota FUJI authored at Shota FUJI comitted at
  162. 0920a2b4 idb_backend: 読み取りマスクのフィールド初期値が空になるケースを修正 子メッセージのマスクを指定した AND `fields` が未指定の場合などは フィールドが空になってしまい何も返ってこなかった。 Shota FUJI authored at Shota FUJI comitted at
  163. 5f29c2b1 react_ui: カレンダーの月が変わるタイミングで選択を解除する Shota FUJI authored at Shota FUJI comitted at
  164. 256b68d0 react_ui: カレンダーセルの選択機能 ドラッグによる範囲選択はまだだが、一先ずキーボードを使えばなんとか 操作できるレベルにはなったのでコミット。 Shota FUJI authored at Shota FUJI comitted at
  165. 6553b2c5 Bun のテキストロックファイルに移行 `bun i` の度に更新されたり元々やばかったが、バイナリファイルなのが 輪をかけてやばかった。何が更新されたのか全くわからないので正直実用は 論外というレベルだったのでテキストロックファイルが導入されてなけれ ば別のランタイム・パッケージマネージャーに乗り換えていた。 Shota FUJI authored at Shota FUJI comitted at
  166. 1c4e2281 react_ui: カレンダーページ 現状表示しかできないため、実質何も有用なデータは表示されないが...。 Shota FUJI authored at Shota FUJI comitted at
  167. dde158b4 react_ui: 未使用の空ファイルを削除 実装初期に I/F どうしようか色々試行錯誤していた際の消し忘れ。 Shota FUJI authored at Shota FUJI comitted at
  168. a246dbf9 idb_backend/react_ui: Incremental Build を有効化 正直そこまで速度の差がないから本当に動いているのかわからない けど、 `*.tsbuildinfo` が生成されているので多分大丈夫。 Shota FUJI authored at Shota FUJI comitted at
  169. 6191c819 wireit を導入 Bun のスクリプトランナーがダメダメなので。具体的には、 * 依存関係を考慮せずにコマンドを実行する(ドキュメントに反する)。 <https://github.com/oven-sh/bun/issues/13239> * `--filter` を使って実行した際のログが超見づらい。 このせいで proto をビルドせずに pwa で `bun check` してしまったり、 依存先が古いままビルドしてしまったり、という状況が発生していた。 Shota FUJI authored at Shota FUJI comitted at
  170. 412ddd23 react_ui: 労働者ダッシュボードへの遷移ができないのを修正 Shota FUJI authored at Shota FUJI comitted at
  171. 734055de react_ui: 労働者ダッシュボードページ 登録がまだできないので現状 useless だが、労働者個別のパスをハンドル する仕組みの基礎としてのコミット。 Shota FUJI authored at Shota FUJI comitted at
  172. 47423289 react_ui: Storybook の起動ポートを固定 もうバージョンも 8 になるというのに未だにコンフィグファイル上で デフォルトのポート指定ができないという...。急に成長しすぎて駄目に なる典型例なんだろう。 `${VAR:-default_value}` は Parameter Expansion と呼ばれるもので Bourne Shell / Bash / Zsh の全てで対応している。 Windows の場合は Bun Shell が動くらしいが、この機能をサポートしているかは不明。 WSL 使えや。 Shota FUJI authored at Shota FUJI comitted at
  173. 724bb7e0 idb_backend: デバッグログを削除 テストだけど、一応。 Shota FUJI authored at Shota FUJI comitted at
  174. ad60c421 idb_backend: 有給休暇管理機能 Shota FUJI authored at Shota FUJI comitted at
  175. 5adbacb9 proto: 年次有給休暇の登録時に付与日を指定する これをしないと残数の取得時なんかに都度レコードを総ざらいして 現在の数値を計算する必要があるため。少なくとも「どの付与日の 年次有給休暇を利用したのか」は登録時にはっきりしているし、 前年の繰越分を必ず優先して使わなければならないというルールも ないためそのイレギュラー対応をしようとなるとになる。 基本は余っている年次有給休暇のうち消滅日が最も近いものとし、 明示的に指定された場合はそれを利用することで現状想定される 全てのユースケースに対応できる。 Shota FUJI authored at Shota FUJI comitted at
  176. 701a57fa idb_backend: DBデータからのメッセージ成形をシンプル化 データが複雑になるにつれ、データの依存関係も複雑になりパラメータ として依存データを受け取る形では無理が出てきたため。 例えば Worker の場合、 workRecords のマスクがない場合は WorkRecords コレクションへのアクセスを行わない。 Shota FUJI authored at Shota FUJI comitted at
  177. cbb3bf89 proto: 年次有給休暇付与データとメソッド Shota FUJI authored at Shota FUJI comitted at
  178. 3470cf44 idb_backend: 勤務履歴登録メソッド Shota FUJI authored at Shota FUJI comitted at
  179. 977faa02 idb_backend: 無用な export を削除 Shota FUJI authored at Shota FUJI comitted at
  180. ceae2673 proto: 勤怠記録更新メソッド Shota FUJI authored at Shota FUJI comitted at
  181. 0421468c proto: workspace.v1.AccessError を削除 全てのコードから消し去ったので。 Shota FUJI authored at Shota FUJI comitted at
  182. 85ba6bee react_ui: WorkspaceAccessError を使わない 削除予定のため。 Shota FUJI authored at Shota FUJI comitted at
  183. d8a11ea5 idb_backend: workspaceAccessError を使わない 削除予定のため。 Shota FUJI authored at Shota FUJI comitted at
  184. 9fc50f43 idb_backend: 労働者単体取得メソッド Shota FUJI authored at Shota FUJI comitted at
  185. 1d711627 proto: workspace_access_error を非推奨 not_found で事足りるため。エラーが分散するのが想像以上に使いづらい というのもある。 Shota FUJI authored at Shota FUJI comitted at
  186. 2862ca59 proto: コピペコメントを修正 Shota FUJI authored at Shota FUJI comitted at
  187. 381ffd32 proto: 労働者の単体取得メソッド Shota FUJI authored at Shota FUJI comitted at
  188. 7b1e421d proto: 勤怠記録を労働者に追加 サービスとして定義しておくと削除とかが結構面倒。 メッセージに付けちゃえば deprecated にして放置 -> その後削除と いうフローが使えて楽なので。 Shota FUJI authored at Shota FUJI comitted at
  189. d69d177f proto: WorkingDay と WorkRecord をスワップ 改めて見返して「逆じゃね?」って思ったので。 Shota FUJI authored at Shota FUJI comitted at
  190. 916c9a37 idb_backend: 労働者データのマスク Shota FUJI authored at Shota FUJI comitted at
  191. 123959dd react_ui: 一覧ページで労働者データをマスクする データが多くなることは自明なので。 Shota FUJI authored at Shota FUJI comitted at
  192. 59e2fb5f proto: 労働者データのフィールドマスク 今のうちにやっておかないと後で面倒だと思ったので。 Shota FUJI authored at Shota FUJI comitted at
  193. 8edc71d1 pwa: SPAルーティングを設定 し忘れていた。 aws プロバイダのバージョンを上げたのはチュートリアルに あった古いバージョン (v4) はメンテナンスされておらず、 Cloudfront Functions の v2 runtime に対応していなかったため。 Shota FUJI authored at Shota FUJI comitted at
  194. a79badc2 pwa: ホスティングとデプロイ Shota FUJI authored at Shota FUJI comitted at
  195. cf282ed8 react_ui: Storybookにfaviconを設定 たまにわからなくなるので。 本当はロゴとかも変えたかったけど、 Storybook の API が 💩すぎて設定してらんなかった。画像URL指定だったりシステムの ダークモード設定が考慮に入ってなかったり...。 Shota FUJI authored at Shota FUJI comitted at
  196. 42666fec react_ui: ReactのSVGに関する警告を解消 Shota FUJI authored at Shota FUJI comitted at
  197. 632445aa pwa: favicon を設定 タブがたまに迷子になるので。 Shota FUJI authored at Shota FUJI comitted at
  198. 748b2fa6 react_ui: ロゴ Shota FUJI authored at Shota FUJI comitted at
  199. 0ebeeb9f react_ui: 休暇・休業種別削除UI Shota FUJI authored at Shota FUJI comitted at
  200. db0f4340 idb_backend: 休暇休業定義削除メソッド Shota FUJI authored at Shota FUJI comitted at
  201. f3860efa proto: 休暇休業の削除メソッド 更新はなくても、削除 → 作成とすれば一先ずの代替となるため。 Shota FUJI authored at Shota FUJI comitted at
  202. 9c6c5000 react_ui: 休暇休業定義の編集メニュー メニュー内容はどれもまだ利用できないが、将来的な操作イメージを 持てるので。必要な操作の洗い出しにもなる。 Shota FUJI authored at Shota FUJI comitted at
  203. 84447917 react_ui: 休暇休業作成時の運用開始日フィールド Shota FUJI authored at Shota FUJI comitted at
  204. 295cf883 idb_backend: 既存の日付データを利用する 結局フロントエンドでもバックエンドも proto で定義された Date を 使うため、敢えて避ける必要はない。保存用のデータとしてはそもそも 詰め込まれた数値型だし。 Shota FUJI authored at Shota FUJI comitted at
  205. bb6191c2 react_ui: AppBarとナビがスクロールされてしまうのを修正 Shota FUJI authored at Shota FUJI comitted at
  206. 8e16a062 react_ui: 休暇・休業登録ページ Shota FUJI authored at Shota FUJI comitted at
  207. 1d919655 react_ui: 休暇休業のバージョンを表示する Shota FUJI authored at Shota FUJI comitted at
  208. 9db0c27d idb_backend: 休暇休業をバージョン管理する Shota FUJI authored at Shota FUJI comitted at
  209. 54bd908d idb_backend: proto変更時にテストが失敗するのを修正 新規フィールド追加時にアサーションが外れるのは流石にない。 Protobuf の設計理念にも反する。 Shota FUJI authored at Shota FUJI comitted at
  210. ba2445f9 proto: 休暇休業の属性をバージョン管理 途中で変わる可能性があるため。また、今後の労働者の 属性なども同じようにバージョン管理する必要があり、 設計テストとして丁度いい題材である。 Shota FUJI authored at Shota FUJI comitted at
  211. 4a9065c0 react_ui: ヘルプUIのコンポーネント化 色々なところで必要になるが、殆どスタイルは共通で繰り返しが 多くなりそうな (というか既になってる) ので。 Shota FUJI authored at Shota FUJI comitted at
  212. dfafc0ab react_ui: 休暇休業一覧画面 Shota FUJI authored at Shota FUJI comitted at
  213. 22a9fdc5 react_ui: クリップボード書き込みの結果を通知する サイレントでできたかどうかわからなかったので。 Shota FUJI authored at Shota FUJI comitted at
  214. f93cd3a8 idb_backend: 休暇休業定義の作成・取得機能 Shota FUJI authored at Shota FUJI comitted at
  215. 47a2c997 idb_backend: 休暇休業定義作成キーをAPIで返す Shota FUJI authored at Shota FUJI comitted at
  216. 8f854e6e idb_backend: DBデータからのprotoデータ変換処理 繰り返しが多くミスが起きそうだったので。 Shota FUJI authored at Shota FUJI comitted at
  217. f32a7b97 idb_backend: 休暇休業定義作成キーをDBに追加 Shota FUJI authored at Shota FUJI comitted at
  218. 267d1d66 proto: 休暇休業定義追加メソッド Shota FUJI authored at Shota FUJI comitted at
  219. 0fed61db react_ui: ワークスペース読込中表示 Shota FUJI authored at Shota FUJI comitted at
  220. 4a3f96a2 react_ui: エラー系の画面に Empty UI を適用 Shota FUJI authored at Shota FUJI comitted at
  221. dfefaccc react_ui: Empty UI をコンポーネント化 コピペされていたので。これからのページや既存のとりあえずの プレースホルダに必要になってくる。 Shota FUJI authored at Shota FUJI comitted at
  222. e5b0cabb pwa: 外部コードのライセンス表記 Shota FUJI authored at Shota FUJI comitted at
  223. daf7b3e8 react_ui: 著作権表記UI Shota FUJI authored at Shota FUJI comitted at
  224. 959e4301 react_ui: ワークスペースの取得フィールドをマスクする キーとか一覧でもらっても邪魔なだけなので。 Shota FUJI authored at Shota FUJI comitted at
  225. e34ee3c1 react_ui: ワークスペースを単体取得する 一覧は無駄すぎるので。 Shota FUJI authored at Shota FUJI comitted at
  226. 09f30015 idb_backend: ワークスペースを返すメソッドでマスクをする Shota FUJI authored at Shota FUJI comitted at
  227. fd70a66d idb_backend: マスク処理を汎用化 他のメソッドやメッセージで必ず必要になるため。 Shota FUJI authored at Shota FUJI comitted at
  228. ea2ba769 proto: ワークスペースを返すメソッド全てにマスクを追加 休暇休業データやそれに伴い増えるキーを考えると早めに実装 したほうが良さそうだったので。 Shota FUJI authored at Shota FUJI comitted at
  229. f88b189b idb_backend: ワークスペース単体取得メソッド Shota FUJI authored at Shota FUJI comitted at
  230. 5de14608 exactOptionalPropertyTypes を無効にした まさに百害あって一利なしだった。 key のチェックなどでは 確かに安心だろうが、既存のライブラリがこれらを一切考慮し ていないためエラー地獄。 Shota FUJI authored at Shota FUJI comitted at
  231. a09bf3b0 proto: ワークスペース単体取得メソッド パフォーマンス的にも利便性的にも必要だった。 Shota FUJI authored at Shota FUJI comitted at
  232. 5a67e0e3 idb_backend/pwa: 依存パッケージが間違ったモジュールにあるのを修正 Shota FUJI authored at Shota FUJI comitted at
  233. 4bc1c5d8 idb_backend: 開発に必要なパッケージが欠けているのを修正 1ab81605383a0f098f1c61ba916808339798823d で fake-indexeddb が抜け落ちてしまっていたが、 Bun が喜んで削除後のパッケージを node_modules に入れっぱなしにしていたせいでコードが動いて しまっており気づかなかった。別のマシンで `bun check` と `bun test` が失敗しているのを見て発覚。 Bun のパッケージマネージャーはまじでだめかもしれない。 Shota FUJI authored at Shota FUJI comitted at
  234. 774aa0c6 proto: 休暇休業定義をワークスペースに追加 まだ取得のみなので noop 。 実際に取得するイメージを持ち、システムデフォルトの休業を作成するための 定義。 Shota FUJI authored at Shota FUJI comitted at
  235. 4d2e6d88 proto: 労働実績モデル このシステムの最も重要となるデータ。 Shota FUJI authored at Shota FUJI comitted at
  236. 19d3f9fc ロックファイルを更新 新規で `bun i` をやったら差分が出た。 Bun のロックファイル周りの挙動は怪しすぎる。 Shota FUJI authored at Shota FUJI comitted at
  237. 11e11d81 react_ui: 労働者登録画面 Shota FUJI authored at Shota FUJI comitted at
  238. 1fcbb208 react_ui: 権限がない場合は労働者登録へのリンクを表示しない Shota FUJI authored at Shota FUJI comitted at
  239. 5c78ada0 react_ui: URLPattern 内の不正な正規表現を修正 polyfill はエラーにならないが、 Chrome だとエラーだった。 よく見てみると urlpattern-polyfill は仕様をちゃんと再現 しようとすらしてないっぽい? URLPattern API を使わないこと も含めて今後の方針は検討したほうがよさそう。 Shota FUJI authored at Shota FUJI comitted at
  240. 4632404e react_ui: トーストUI ワークスペース作成画面でフィードバックがなくわかりづらいと 感じたため。同じ問題は労働者登録画面でも起きるのでこの時点 で対応することにした。 Shota FUJI authored at Shota FUJI comitted at
  241. 591bf727 react_ui: Storybook 内でリンクを2回クリックする必要があるのを修正 useEffect がうまく動いていないのか、クリックリスナが連続して発火 している模様。 Shota FUJI authored at Shota FUJI comitted at
  242. 30a740c2 react_ui: ページをルーティングで構成 ページの追加をできる状態まで持っていった。 Shota FUJI authored at Shota FUJI comitted at
  243. 3f519c2c pwa: deprecated な React props を削除 ちゃんと動かないが暫定的な対応なので問題ない。 Shota FUJI authored at Shota FUJI comitted at
  244. 84d27db1 react_ui: ルーティング機能 UX としてはボタンで API を呼び出すのではなくアンカーリンクを使いたい ため。パスもこのパッケージが持つことになってしまうが、個別に管理する 手間を考えるとそこまでのドローバックでもないかなって気がする。 Shota FUJI authored at Shota FUJI comitted at
  245. 737d0300 pwa: 労働者一覧画面を表示する Shota FUJI authored at Shota FUJI comitted at
  246. 4ecc0205 idb_backend: WorkerService が必ずエラーになるのを修正 Shota FUJI authored at Shota FUJI comitted at
  247. fda542a9 react_ui: WorkerListPage が import できないのを修正 Shota FUJI authored at Shota FUJI comitted at
  248. 521aeea4 react_ui: .d.ts ファイルが正しく出力されないのを修正 types/src/components/*.ts のように吐き出されていた。 原因は tsc が .stories.tsx ファイルをトランスパイルしようとし、 それらが読み込んでいる .storybook/decorators/*.tsx までもトランス パイルしようとした結果 src/ からはみ出したため出力のルートディレ クトリを変えたこと。 tsc のこのクソ挙動はいつになったら治るのだ ろうか。 Shota FUJI authored at Shota FUJI comitted at
  249. 58c06980 react_ui: clean コマンドが types/ を削除しないのを修正 Shota FUJI authored at Shota FUJI comitted at
  250. 57305e72 react_ui: ワークスペース選択イベント 必要なのに忘れていた。 ロックファイルの更新は謎。トップレベルで `bun i` したら出てきた...。 Shota FUJI authored at Shota FUJI comitted at
  251. aa871258 react_ui: 労働者一覧画面 Shota FUJI authored at Shota FUJI comitted at
  252. 45ea1c74 react_ui: ワークスペース選択後画面のレイアウト 労働者系の画面を表示する際に必要になるため。 無くても MVP としてはどうにかなるが、実際にアプリケーション としてのイメージを持たせるためには必要。 Shota FUJI authored at Shota FUJI comitted at
  253. a7550f5d proto/idb_backend: KeyValueStorageBasedWorkspaceService を削除 これで WorkspaceService へのマイグレーションは完了。 Shota FUJI authored at Shota FUJI comitted at
  254. 53635089 react_ui: WorkspaceService へ移行 Shota FUJI authored at Shota FUJI comitted at
  255. fe83035b idb_backend: WorkspaceService をハンドルする 中身は KeyValueBasedStorageWorkspaceService と同じなので 処理は丸々使える。 Shota FUJI authored at Shota FUJI comitted at
  256. 09274fb4 idb_backend: WorkerService が登録されていないのを修正 しかもサービス名も間違えてたし。 実際にクライアントから叩いてないから気づかなかった。 Shota FUJI authored at Shota FUJI comitted at
  257. fd1eda20 proto: WorkspaceService を追加 KeyValueStorageBasedWorkspaceService は流石に長過ぎた。 Capability Key システムを導入したので、デスクトップ版で一覧や 削除ができない問題もなんとかなりそうなので思い切って改名する。 Shota FUJI authored at Shota FUJI comitted at
  258. 47f52d41 idb_backend: 労働者一覧取得メソッド Shota FUJI authored at Shota FUJI comitted at
  259. 5e9b3725 proto: 労働者一覧取得メソッド Shota FUJI authored at Shota FUJI comitted at
  260. a75ac4ce idb_backend: 労働者追加メソッド Shota FUJI authored at Shota FUJI comitted at
  261. 3edf4244 idb_backend: IndexedDBのデータを型付け `any` が原因となるエラーやミスが既に何度かあったため。 Shota FUJI authored at Shota FUJI comitted at
  262. 4b1ed95d idb_backend: ワークスペース削除・更新の capability worker_add はそもそも労働者追加メソッド自体がないため未実装。 Shota FUJI authored at Shota FUJI comitted at
  263. 3a0f59a3 proto: Capability ベースの権限管理機能 PWA 版ではワークスペースの管理はフルにできるが、デスクトップ版では ワークスペース = ファイルとなるためアプリケーション側から削除、 というのはあまりよろしくないので見せたくない。将来的なマルチユーザ なクラウド環境を考えても権限・サポートを capability として表現すれ ば UI 的にも API 的にも堅実に実装・設計ができる。 セキュリティコンテキストにおける capability の丁度いい日本語が 見つからない...。 Shota FUJI authored at Shota FUJI comitted at
  264. b0c86aa7 pwa: 無駄な余白を削除 Shota FUJI authored at Shota FUJI comitted at
  265. 6361e543 react_ui: 依存パッケージをバンドルしないように修正 Shota FUJI authored at Shota FUJI comitted at
  266. d2a9a17e react_ui: ワークスペース新規作成機能 Shota FUJI authored at Shota FUJI comitted at
  267. 222bd43e react_ui: ワークスペース選択画面のレイアウト Shota FUJI authored at Shota FUJI comitted at
  268. 9275bb5c react_ui: ワークスペース作成フォーム Shota FUJI authored at Shota FUJI comitted at
  269. f3934e43 react_ui: ワークスペース読み込みエラー表示 エラー表示はとても大切。汎用化して後で楽できるようにしておいた。 Shota FUJI authored at Shota FUJI comitted at
  270. 758e85c1 react_ui: Storybook上でRPCを動かす これがないとテストできてないも同然なので。 Shota FUJI authored at Shota FUJI comitted at
  271. a2544b33 idb_backend/pwa: バックエンド処理を別パッケージ化 react_ui の Storybook で使いたかったため。 Shota FUJI authored at Shota FUJI comitted at
  272. 0d574860 react_ui/pwa: RPC をUIパッケージ内で行う 基本的に UI は可能な限り全て共有とするため、通信層も揃える。 Shota FUJI authored at Shota FUJI comitted at
  273. d604dd56 Gleam 関連の設定を削除 少なくとも現状では使わなくなったため。 Shota FUJI authored at Shota FUJI comitted at
  274. 1ab81605 pwa/react_ui: React に切り替え 結局 CustomElement で TypeScript を触る羽目になること、 CustomElement で I/F を考えるのが非常に大変なことを鑑みて React にした。 Protobuf を使った Worker/IPC/HTTP のマルチプロトコル通信、という冒険を既に しているため、他のところで冒険する必要はないかなと思ったのがきっかけ。 正直スタイルを一から書くのがしんどい。 Radix で boring な UI を書いて MVP からのイテレーション地獄がアプリケーション開発としては正解だろう。 Shota FUJI authored at Shota FUJI comitted at
  275. 80acc21c gui: 単一セクションレイアウト Shota FUJI authored at Shota FUJI comitted at
  276. 666b23c8 gui: ドキュメントプレビューの padding をとれるようにした レイアウト系の UI を書くにあたり邪魔になってくるので。 Shota FUJI authored at Shota FUJI comitted at
  277. 8e364252 gui: ドキュメント内リンクのスタイル 他のテキストと同じで分かりづらかったため。 Shota FUJI authored at Shota FUJI comitted at
  278. 9556e8a3 gui: ドキュメントのコードスタイルの適用範囲が狭すぎるのを修正 具体的には yamori-workspace-list のページ先頭にあるリンク内の コードにスタイルが当たっていなかった。 Shota FUJI authored at Shota FUJI comitted at
  279. e6ed661d gui: lit-html の導入 頑張って素の DOM 操作でやってきたが、部分更新などでやはり無理 が出てきたためライブラリを導入した。 lit-html にした理由はこれが一番薄いから。なるべく素の Custom Element にするためには View 層にだけ専念したライブラリが必要 になる。 lit なんかは状態管理やら CustomElement の定義やらに 干渉してくるため、これが一番無難。また、利用者数も多く安定し ており、フロントエンド界隈では比較的枯れている。 Shota FUJI authored at Shota FUJI comitted at
  280. 18811534 gui: Empty が公開されていないのを修正 Shota FUJI authored at Shota FUJI comitted at
  281. ba500b5f gui: ワークスペース取得エラー時と空の際の UI Shota FUJI authored at Shota FUJI comitted at
  282. a90b5562 gui: Empty UI Result とか呼ばれたりすることもあるけど、用途を考えれば Empty の方が適切。 Shota FUJI authored at Shota FUJI comitted at
  283. 66531929 gui: `--foo` 形式の CustomState を利用しない 一部のバージョンの Chromium ブラウザ向けにフォールバックで利用 していたが、 Chrome がコンソールにエラーを出しやがるためやめた。 対象のバージョンのブラウザは属性を使うようになる。パフォーマンス への影響が不明だが、開発者側からはどうしようもできない短慮設計 なのでもう知らん。フォールバックを判別とかしてないし、まじでどう しようもない。 <https://chromestatus.com/feature/5140610730426368> Shota FUJI authored at Shota FUJI comitted at
  284. b6bacc5b gui: Callout が公開されてないのを修正 Shota FUJI authored at Shota FUJI comitted at
  285. 767c4238 gui: CustomElement の依存関係を declarative に表す 利用側がドキュメントや実装を見ながら手動で登録するのは error-prone なため。かといって全て登録するのはパフォーマンス的にも無駄。 Shota FUJI authored at Shota FUJI comitted at
  286. 7f84022f gui: Safari の動的 media 属性が反映されないバグについてコメント 後で見たとき用。 Bugzilla の検索が超アルティメットギガンティック ウンコだから、もしかしたらもっと適切なレポートが上がってるかも しれない。 Shota FUJI authored at Shota FUJI comitted at
  287. e2cb0e68 gui: ドキュメントの全画面表示時のアニメーション 特にテーマが同一時にわかりにくかったので。 view-transition-name だけ指定してスタイルはデフォルト任せだが、 どうやら Blink も Webkit も view-transition-name が指定されて いる場合は scale と opacity の同時アニメーションがデフォルト らしく、特に指定しなくてもいい感じになっているのでそのまま。 Shota FUJI authored at Shota FUJI comitted at
  288. 2fec305a gui: ドキュメントプレビューのフルスクリーン機能 画面の大部分を占めるような UI (e.g. Result/Empty, Layout) を書く際に 現状のプレビューサイズ、特にグリッドで列が 2 つ以上になった場合に まともな確認が難しくなるため。 リセット CSS に手を入れているのは Astro が body 内に script タグを 突っ込むため。 style も突っ込みかねないので念の為に書いた。 Shota FUJI authored at Shota FUJI comitted at
  289. e43772a1 check スクリプトを追加 型といったコードのプログラム的正当性を検査するためのコマンド。 Shota FUJI authored at Shota FUJI comitted at
  290. 3c38b9fe gui: ワークスペース一覧取得エラー時の UI Shota FUJI authored at Shota FUJI comitted at
  291. 5aa86a97 gui: 無効になったコードコメントの削除 Shota FUJI authored at Shota FUJI comitted at
  292. 0f33c4ed gui: コールアウトコンポーネント エラー表示なんかに必要なため。 Shota FUJI authored at Shota FUJI comitted at
  293. 5c9a9a0c gui: 読み込まれる CSS についてのドキュメントを作成 いちいち CSS ファイルを読み返すのは大変なので。 色とか文字組みに関しては気力が尽きたのでこのコミットには含まれず。 Shota FUJI authored at Shota FUJI comitted at
  294. 4a746bec gui: workspace.v1.ListResponse 表示 UI Protobuf のデータを受け取って表示する UI のサンプルとして実装。 そのため、足りない状態があったりエラー時の表示がテキストだけ だったりする。 Shota FUJI authored at Shota FUJI comitted at
  295. 20ed274b gui: Component という言葉の利用を限定 UI 要素の区分としても利用しているため、安易に使わないようにする。 Shota FUJI authored at Shota FUJI comitted at
  296. 6ce9c7b3 pwa: gui パッケージを導入 そもそも以前のコミットで gui パッケージが TypeScript のコンパイラバグ のせいでビルドできなくなってたり、 CustomElement として利用できな かったり (何故 Astro 上では見れていたのかは不明) していた。 なので gui 側にもちょこちょこ変更を加えている。 Shota FUJI authored at Shota FUJI comitted at
  297. 00903224 gui: <script> タグ内のインデントを一時的に廃止 markup_fmt のバグで最初の行以外インデントが効かない。 インデントがないよりも醜く見にくいためバグが直るまで インデントはかけない。 Shota FUJI authored at Shota FUJI comitted at
  298. e5c0a2b8 gui: カタログでナビゲーションが見切れるのを修正 メインが長いとナビゲーションも一緒に飛んでっちゃう。 Shota FUJI authored at Shota FUJI comitted at
  299. d8c21d6b gui: ボタンコンポーネント 必ず必要になるため。 リンクに使えるように Light DOM 仕様にしてもよかったが、 使い勝手を考えるとやはりゴリゴリと書いた単体完結のビルトイン 置き換え要素が良い。 Form の submit なんかが必要になったら `submit` 属性とかを 追加する必要はあるだろうが、現状の想定ではこれで十分。 Shota FUJI authored at Shota FUJI comitted at
  300. da8efd2d gui: スタイルガイドを Astro に変更 Vite の Multi-Page Application の DX が著しく低いため。 Astro も HTML やらモジュール周りでかなり酷いが、それでも Vite で 素の HTML を何枚も書くよりはかなりまし。 Shota FUJI authored at Shota FUJI comitted at
  301. 8de886de gui: 共有コンポーネントパッケージ 含まれているボタンコンポーネントはあくまでサンプル用で、挙動や I/F は 最終的に利用されるものとは異なる。 Shota FUJI authored at Shota FUJI comitted at
  302. dfeb6072 pwa: Gleam でワーカーの起動からリクエストまでを行う どんなものか見たかったため。正直 protobuf から生成された TS の 型定義やランタイムの検査結果を全部捨てるのは勿体ない気がする。 Gleam の protobuf コード生成も含めて方針は要検討。 Shota FUJI authored at Shota FUJI comitted at
  303. 656e5a34 pwa: パスエイリアスを設定 Gleam の JS 出力は未だに完全ではなく、 `build/` ファイルにそのまま 必要そうなファイルと一緒に出力するしかない。その結果、他のファイルを import したり、特に `src/` 直下以外から import しようとするとパスが ズレて import できない、といった問題に溢れている。 そのため、現状ではエイリアスを使って絶対パスに解決させるのが一番安全で 安定しているといえる。 Shota FUJI authored at Shota FUJI comitted at
  304. 43dab7ce pwa: Gleam の導入 流石に TypeScript で UI 書くのは論外なので。 ただ、どこまでを Gleam で書くのか、どのようなスタイルにするのかと いった部分は全く決まっていない。 Shota FUJI authored at Shota FUJI comitted at
  305. 54856622 pwa: サービスオブジェクトを参照しない @bufbuild/protobuf の生成するサービスオブジェクトはかなりファットで ランタイムなのに色々詰め込みまくっている。そのため、特に将来的に バンドルサイズに影響が出てくるので必要なメソッドのリクエスト・ レスポンスメッセージを適宜読み込む形にした。 サービスオブジェクトはそのままの JS オブジェクトで、プロパティとして スキーマやらが色々生えている。そのため、 Tree Shaking が効かない。 サービスオブジェクトを使った場合のサイズは、 ``` $ vite build vite v6.0.2 building for production... ✓ 78 modules transformed. ../dist/index.html 0.45 kB │ gzip: 0.30 kB ../dist/assets/main-DJ9_Th8G.js 78.27 kB ../dist/assets/index-DsgyLhcA.js 72.82 kB │ gzip: 19.64 kB ✓ built in 366ms ``` 使わなかった場合のサイズは、 ``` $ vite build vite v6.0.2 building for production... ✓ 67 modules transformed. ../dist/index.html 0.45 kB │ gzip: 0.30 kB ../dist/assets/main-MP79NseV.js 78.26 kB ../dist/assets/index-iIdyv0Db.js 68.83 kB │ gzip: 18.42 kB ✓ built in 359ms ``` と現状のコンパクトなサービスでもかなり違ってくる。 クライアントからのメソッド呼び出しや GUI のコードなんかが入って くるとサイズとしては誤差になるのかもしれないが、削れるのであれば 削りたい。 Shota FUJI authored at Shota FUJI comitted at
  306. 5e79853a pwa: ワークスペースの削除メソッド Shota FUJI authored at Shota FUJI comitted at
  307. d1ab1038 pwa: IDB のトランザクション終了を待つ 多分読み切ってるし問題はないと思うけど、一応ね。 Shota FUJI authored at Shota FUJI comitted at
  308. 842d1edd pwa: ワークスペースの更新メソッド Shota FUJI authored at Shota FUJI comitted at
  309. 973cf4b3 pwa: ライブラリの型エラーを tsc 実行時に無視する どうやら TypeScript の型定義と bun の型定義がバトってるみたい。 こんな感じで正直触る気がしないので無視することにした。 ``` bunx tsc ../../node_modules/@types/node/buffer.d.ts:632:19 - error TS2430: Interface 'Buffer' incorrectly extends interface 'Uint8Array<ArrayBufferLike>'. The types of 'slice(...).buffer' are incompatible between these types. Type 'ArrayBufferLike' is not assignable to type 'ArrayBuffer'. Type 'SharedArrayBuffer' is missing the following properties from type 'ArrayBuffer': resizable, resize, detached, transfer, transferToFixedLength 632 interface Buffer extends Uint8Array { ~~~~~~ ../../node_modules/@types/node/fs/promises.d.ts:56:66 - error TS2344: Type 'Buffer' does not satisfy the constraint 'ArrayBufferView'. Type 'Buffer' is not assignable to type 'Uint8Array<ArrayBufferLike> | DataView<ArrayBufferLike>'. Type 'Buffer' is not assignable to type 'Uint8Array<ArrayBufferLike>'. The types of 'slice(...).buffer' are incompatible between these types. Type 'ArrayBufferLike' is not assignable to type 'ArrayBuffer'. Type 'SharedArrayBuffer' is missing the following properties from type 'ArrayBuffer': resizable, resize, detached, transfer, transferToFixedLength 56 interface FileReadOptions<T extends NodeJS.ArrayBufferView = Buffer> { ~~~~~~ ../../node_modules/@types/node/fs/promises.d.ts:238:49 - error TS2344: Type 'Buffer' does not satisfy the constraint 'ArrayBufferView'. Type 'Buffer' is not assignable to type 'Uint8Array<ArrayBufferLike> | DataView<ArrayBufferLike>'. Type 'Buffer' is not assignable to type 'Uint8Array<ArrayBufferLike>'. The types of 'slice(...).buffer' are incompatible between these types. Type 'ArrayBufferLike' is not assignable to type 'ArrayBuffer'. Type 'SharedArrayBuffer' is missing the following properties from type 'ArrayBuffer': resizable, resize, detached, transfer, transferToFixedLength 238 read<T extends NodeJS.ArrayBufferView = Buffer>(options?: FileReadOptions<T>): Promise<FileReadResult<T>>; ~~~~~~ ../../node_modules/@types/node/globals.d.ts:370:14 - error TS2300: Duplicate identifier 'fetch'. 370 function fetch( ~~~~~ ../../node_modules/bun-types/globals.d.ts:1037:6 1037 var fetch: Fetch; ~~~~~ 'fetch' was also declared here. ../../node_modules/@types/node/module.d.ts:283:13 - error TS2687: All declarations of 'dirname' must have identical modifiers. 283 dirname: string; ~~~~~~~ ../../node_modules/@types/node/module.d.ts:289:13 - error TS2687: All declarations of 'filename' must have identical modifiers. 289 filename: string; ~~~~~~~~ ../../node_modules/bun-types/bun.d.ts:117:8 - error TS2420: Class 'ShellError' incorrectly implements interface 'ShellOutput'. Property 'bytes' is missing in type 'ShellError' but required in type 'ShellOutput'. 117 class ShellError extends Error implements ShellOutput { ~~~~~~~~~~ ../../node_modules/bun-types/bun.d.ts:434:3 434 bytes(): Uint8Array; ~~~~~~~~~~~~~~~~~~~~ 'bytes' is declared here. ../../node_modules/bun-types/globals.d.ts:1037:6 - error TS2300: Duplicate identifier 'fetch'. 1037 var fetch: Fetch; ~~~~~ ../../node_modules/typescript/lib/lib.dom.d.ts:28708:18 28708 declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>; ~~~~~ 'fetch' was also declared here. ../../node_modules/@types/node/globals.d.ts:370:14 370 function fetch( ~~~~~ and here. ../../node_modules/bun-types/globals.d.ts:1947:12 - error TS2687: All declarations of 'dirname' must have identical modifiers. 1947 readonly dirname: string; ~~~~~~~ ../../node_modules/bun-types/globals.d.ts:1950:12 - error TS2687: All declarations of 'filename' must have identical modifiers. 1950 readonly filename: string; ~~~~~~~~ ../../node_modules/bun-types/overrides.d.ts:3:29 - error TS2305: Module '"bun"' has no exported member 'PathLike'. 3 import type { BunFile, Env, PathLike } from "bun"; ~~~~~~~~ ../../node_modules/typescript/lib/lib.dom.d.ts:16004:11 - error TS2430: Interface 'MessageEvent<T>' incorrectly extends interface 'Bun.MessageEvent<T>'. Types of property 'ports' are incompatible. Type 'readonly MessagePort[]' is not assignable to type 'readonly import("worker_threads").MessagePort[]'. Type 'MessagePort' is missing the following properties from type 'MessagePort': ref, unref, addListener, emit, and 13 more. 16004 interface MessageEvent<T = any> extends Event { ~~~~~~~~~~~~ ../../node_modules/typescript/lib/lib.dom.d.ts:26068:11 - error TS2430: Interface 'WebSocket' incorrectly extends interface 'import("<repo path>/node_modules/@types/ws/index").WebSocket'. Types of property 'binaryType' are incompatible. Type 'BinaryType' is not assignable to type '"arraybuffer" | "nodebuffer" | "fragments"'. Type '"blob"' is not assignable to type '"arraybuffer" | "nodebuffer" | "fragments"'. 26068 interface WebSocket extends EventTarget { ~~~~~~~~~ ../../node_modules/typescript/lib/lib.dom.d.ts:28708:18 - error TS2300: Duplicate identifier 'fetch'. 28708 declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>; ~~~~~ ../../node_modules/bun-types/globals.d.ts:1037:6 1037 var fetch: Fetch; ~~~~~ 'fetch' was also declared here. Found 14 errors in 8 files. Errors Files 1 ../../node_modules/@types/node/buffer.d.ts:632 2 ../../node_modules/@types/node/fs/promises.d.ts:56 1 ../../node_modules/@types/node/globals.d.ts:370 2 ../../node_modules/@types/node/module.d.ts:283 1 ../../node_modules/bun-types/bun.d.ts:117 3 ../../node_modules/bun-types/globals.d.ts:1037 1 ../../node_modules/bun-types/overrides.d.ts:3 3 ../../node_modules/typescript/lib/lib.dom.d.ts:16004 ``` Shota FUJI authored at Shota FUJI comitted at
  310. 63fd0dd8 pwa: Worker が Rollup でビルドできない問題の修正 top-level await のあれ。 Shota FUJI authored at Shota FUJI comitted at
  311. 22ec9e8f proto: ワークスペース削除・更新メソッド 必要だから。UI実装時にこれがないと勢いが削がれて萎える。 Shota FUJI authored at Shota FUJI comitted at
  312. 859b35d1 pwa: IndexedDB を使ったワークスペースの作成・一覧処理 実際に書く雛形として IndexedDB へのアクセスとテストを書いた。 Shota FUJI authored at Shota FUJI comitted at
  313. 31135eff PWA での Protobuf 通信基礎 Service で定義されたリクエストとレスポンスを Web Worker 越しにやりとり する最低限のコード。今後どんなスタイル・ライブラリで書くにせよまず確実 に必要となるであろう部分を書いた。 Shota FUJI authored at Shota FUJI comitted at
  314. 8570db2a Protobuf の JS コード生成 先に Zig のコード生成をやろうとしたが、 - [zig-protobuf](https://github.com/Arwalk/zig-protobuf) は Protobuf の edition に対応していない - [gremlin](https://github.com/octopus-foundation/gremlin.zig) は Zig の v0.13 でビルドできない ため、 Zig v0.14 がリリースされる予定の 2025-01-01 までお預けすることに した。とりあえず PWA の Worker 実装だけのため、後から置き換えることは 簡単なため JS で進めて問題ない。 Shota FUJI authored at Shota FUJI comitted at
  315. cf72bdb1 労働者追加までの protobuf 定義 アプリケーションの MVP を作るにあたり、とりあえず基礎を作るのに必要な データモデル定義をする必要があった。勤怠や休暇の記録を付けるにもまず 労働者の登録が必要だったため、この定義を優先して行った。 設定ファイルやドキュメントは protobuf やそれに関連するツールの追加に 伴い必要になったもの。 Shota FUJI authored at Shota FUJI comitted at
  316. be1ef017 Markdown で footnotes を使わない GFM の独自拡張であり、各ツールのサポートがほぼない状態のため。 Shota FUJI authored at Shota FUJI comitted at
  317. c887f487 プロジェクト概要とコードチェックインの基礎 最低限のプロジェクトの説明が先に存在しないと経験上迷走しやすいため、 最優先で作成した。また、コードフォーマットに関するものも最初期から ないと後々の diff が見づらくなるので現状必要なものを作成した。 Shota FUJI authored at Shota FUJI comitted at