yamori

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

Commits at 6553b2c595c3bfad99aa0f308fa34ab9b05d43f4

  1. 6553b2c5 Bun のテキストロックファイルに移行 `bun i` の度に更新されたり元々やばかったが、バイナリファイルなのが 輪をかけてやばかった。何が更新されたのか全くわからないので正直実用は 論外というレベルだったのでテキストロックファイルが導入されてなけれ ば別のランタイム・パッケージマネージャーに乗り換えていた。 Shota FUJI authored at Shota FUJI comitted at
  2. 1c4e2281 react_ui: カレンダーページ 現状表示しかできないため、実質何も有用なデータは表示されないが...。 Shota FUJI authored at Shota FUJI comitted at
  3. dde158b4 react_ui: 未使用の空ファイルを削除 実装初期に I/F どうしようか色々試行錯誤していた際の消し忘れ。 Shota FUJI authored at Shota FUJI comitted at
  4. a246dbf9 idb_backend/react_ui: Incremental Build を有効化 正直そこまで速度の差がないから本当に動いているのかわからない けど、 `*.tsbuildinfo` が生成されているので多分大丈夫。 Shota FUJI authored at Shota FUJI comitted at
  5. 6191c819 wireit を導入 Bun のスクリプトランナーがダメダメなので。具体的には、 * 依存関係を考慮せずにコマンドを実行する(ドキュメントに反する)。 <https://github.com/oven-sh/bun/issues/13239> * `--filter` を使って実行した際のログが超見づらい。 このせいで proto をビルドせずに pwa で `bun check` してしまったり、 依存先が古いままビルドしてしまったり、という状況が発生していた。 Shota FUJI authored at Shota FUJI comitted at
  6. 412ddd23 react_ui: 労働者ダッシュボードへの遷移ができないのを修正 Shota FUJI authored at Shota FUJI comitted at
  7. 734055de react_ui: 労働者ダッシュボードページ 登録がまだできないので現状 useless だが、労働者個別のパスをハンドル する仕組みの基礎としてのコミット。 Shota FUJI authored at Shota FUJI comitted at
  8. 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
  9. 724bb7e0 idb_backend: デバッグログを削除 テストだけど、一応。 Shota FUJI authored at Shota FUJI comitted at
  10. ad60c421 idb_backend: 有給休暇管理機能 Shota FUJI authored at Shota FUJI comitted at
  11. 5adbacb9 proto: 年次有給休暇の登録時に付与日を指定する これをしないと残数の取得時なんかに都度レコードを総ざらいして 現在の数値を計算する必要があるため。少なくとも「どの付与日の 年次有給休暇を利用したのか」は登録時にはっきりしているし、 前年の繰越分を必ず優先して使わなければならないというルールも ないためそのイレギュラー対応をしようとなるとになる。 基本は余っている年次有給休暇のうち消滅日が最も近いものとし、 明示的に指定された場合はそれを利用することで現状想定される 全てのユースケースに対応できる。 Shota FUJI authored at Shota FUJI comitted at
  12. 701a57fa idb_backend: DBデータからのメッセージ成形をシンプル化 データが複雑になるにつれ、データの依存関係も複雑になりパラメータ として依存データを受け取る形では無理が出てきたため。 例えば Worker の場合、 workRecords のマスクがない場合は WorkRecords コレクションへのアクセスを行わない。 Shota FUJI authored at Shota FUJI comitted at
  13. cbb3bf89 proto: 年次有給休暇付与データとメソッド Shota FUJI authored at Shota FUJI comitted at
  14. 3470cf44 idb_backend: 勤務履歴登録メソッド Shota FUJI authored at Shota FUJI comitted at
  15. 977faa02 idb_backend: 無用な export を削除 Shota FUJI authored at Shota FUJI comitted at
  16. ceae2673 proto: 勤怠記録更新メソッド Shota FUJI authored at Shota FUJI comitted at
  17. 0421468c proto: workspace.v1.AccessError を削除 全てのコードから消し去ったので。 Shota FUJI authored at Shota FUJI comitted at
  18. 85ba6bee react_ui: WorkspaceAccessError を使わない 削除予定のため。 Shota FUJI authored at Shota FUJI comitted at
  19. d8a11ea5 idb_backend: workspaceAccessError を使わない 削除予定のため。 Shota FUJI authored at Shota FUJI comitted at
  20. 9fc50f43 idb_backend: 労働者単体取得メソッド Shota FUJI authored at Shota FUJI comitted at
  21. 1d711627 proto: workspace_access_error を非推奨 not_found で事足りるため。エラーが分散するのが想像以上に使いづらい というのもある。 Shota FUJI authored at Shota FUJI comitted at
  22. 2862ca59 proto: コピペコメントを修正 Shota FUJI authored at Shota FUJI comitted at
  23. 381ffd32 proto: 労働者の単体取得メソッド Shota FUJI authored at Shota FUJI comitted at
  24. 7b1e421d proto: 勤怠記録を労働者に追加 サービスとして定義しておくと削除とかが結構面倒。 メッセージに付けちゃえば deprecated にして放置 -> その後削除と いうフローが使えて楽なので。 Shota FUJI authored at Shota FUJI comitted at
  25. d69d177f proto: WorkingDay と WorkRecord をスワップ 改めて見返して「逆じゃね?」って思ったので。 Shota FUJI authored at Shota FUJI comitted at
  26. 916c9a37 idb_backend: 労働者データのマスク Shota FUJI authored at Shota FUJI comitted at
  27. 123959dd react_ui: 一覧ページで労働者データをマスクする データが多くなることは自明なので。 Shota FUJI authored at Shota FUJI comitted at
  28. 59e2fb5f proto: 労働者データのフィールドマスク 今のうちにやっておかないと後で面倒だと思ったので。 Shota FUJI authored at Shota FUJI comitted at
  29. 8edc71d1 pwa: SPAルーティングを設定 し忘れていた。 aws プロバイダのバージョンを上げたのはチュートリアルに あった古いバージョン (v4) はメンテナンスされておらず、 Cloudfront Functions の v2 runtime に対応していなかったため。 Shota FUJI authored at Shota FUJI comitted at
  30. a79badc2 pwa: ホスティングとデプロイ Shota FUJI authored at Shota FUJI comitted at
  31. cf282ed8 react_ui: Storybookにfaviconを設定 たまにわからなくなるので。 本当はロゴとかも変えたかったけど、 Storybook の API が 💩すぎて設定してらんなかった。画像URL指定だったりシステムの ダークモード設定が考慮に入ってなかったり...。 Shota FUJI authored at Shota FUJI comitted at
  32. 42666fec react_ui: ReactのSVGに関する警告を解消 Shota FUJI authored at Shota FUJI comitted at
  33. 632445aa pwa: favicon を設定 タブがたまに迷子になるので。 Shota FUJI authored at Shota FUJI comitted at
  34. 748b2fa6 react_ui: ロゴ Shota FUJI authored at Shota FUJI comitted at
  35. 0ebeeb9f react_ui: 休暇・休業種別削除UI Shota FUJI authored at Shota FUJI comitted at
  36. db0f4340 idb_backend: 休暇休業定義削除メソッド Shota FUJI authored at Shota FUJI comitted at
  37. f3860efa proto: 休暇休業の削除メソッド 更新はなくても、削除 → 作成とすれば一先ずの代替となるため。 Shota FUJI authored at Shota FUJI comitted at
  38. 9c6c5000 react_ui: 休暇休業定義の編集メニュー メニュー内容はどれもまだ利用できないが、将来的な操作イメージを 持てるので。必要な操作の洗い出しにもなる。 Shota FUJI authored at Shota FUJI comitted at
  39. 84447917 react_ui: 休暇休業作成時の運用開始日フィールド Shota FUJI authored at Shota FUJI comitted at
  40. 295cf883 idb_backend: 既存の日付データを利用する 結局フロントエンドでもバックエンドも proto で定義された Date を 使うため、敢えて避ける必要はない。保存用のデータとしてはそもそも 詰め込まれた数値型だし。 Shota FUJI authored at Shota FUJI comitted at
  41. bb6191c2 react_ui: AppBarとナビがスクロールされてしまうのを修正 Shota FUJI authored at Shota FUJI comitted at
  42. 8e16a062 react_ui: 休暇・休業登録ページ Shota FUJI authored at Shota FUJI comitted at
  43. 1d919655 react_ui: 休暇休業のバージョンを表示する Shota FUJI authored at Shota FUJI comitted at
  44. 9db0c27d idb_backend: 休暇休業をバージョン管理する Shota FUJI authored at Shota FUJI comitted at
  45. 54bd908d idb_backend: proto変更時にテストが失敗するのを修正 新規フィールド追加時にアサーションが外れるのは流石にない。 Protobuf の設計理念にも反する。 Shota FUJI authored at Shota FUJI comitted at
  46. ba2445f9 proto: 休暇休業の属性をバージョン管理 途中で変わる可能性があるため。また、今後の労働者の 属性なども同じようにバージョン管理する必要があり、 設計テストとして丁度いい題材である。 Shota FUJI authored at Shota FUJI comitted at
  47. 4a9065c0 react_ui: ヘルプUIのコンポーネント化 色々なところで必要になるが、殆どスタイルは共通で繰り返しが 多くなりそうな (というか既になってる) ので。 Shota FUJI authored at Shota FUJI comitted at
  48. dfafc0ab react_ui: 休暇休業一覧画面 Shota FUJI authored at Shota FUJI comitted at
  49. 22a9fdc5 react_ui: クリップボード書き込みの結果を通知する サイレントでできたかどうかわからなかったので。 Shota FUJI authored at Shota FUJI comitted at
  50. f93cd3a8 idb_backend: 休暇休業定義の作成・取得機能 Shota FUJI authored at Shota FUJI comitted at
  51. 47a2c997 idb_backend: 休暇休業定義作成キーをAPIで返す Shota FUJI authored at Shota FUJI comitted at
  52. 8f854e6e idb_backend: DBデータからのprotoデータ変換処理 繰り返しが多くミスが起きそうだったので。 Shota FUJI authored at Shota FUJI comitted at
  53. f32a7b97 idb_backend: 休暇休業定義作成キーをDBに追加 Shota FUJI authored at Shota FUJI comitted at
  54. 267d1d66 proto: 休暇休業定義追加メソッド Shota FUJI authored at Shota FUJI comitted at
  55. 0fed61db react_ui: ワークスペース読込中表示 Shota FUJI authored at Shota FUJI comitted at
  56. 4a3f96a2 react_ui: エラー系の画面に Empty UI を適用 Shota FUJI authored at Shota FUJI comitted at
  57. dfefaccc react_ui: Empty UI をコンポーネント化 コピペされていたので。これからのページや既存のとりあえずの プレースホルダに必要になってくる。 Shota FUJI authored at Shota FUJI comitted at
  58. e5b0cabb pwa: 外部コードのライセンス表記 Shota FUJI authored at Shota FUJI comitted at
  59. daf7b3e8 react_ui: 著作権表記UI Shota FUJI authored at Shota FUJI comitted at
  60. 959e4301 react_ui: ワークスペースの取得フィールドをマスクする キーとか一覧でもらっても邪魔なだけなので。 Shota FUJI authored at Shota FUJI comitted at
  61. e34ee3c1 react_ui: ワークスペースを単体取得する 一覧は無駄すぎるので。 Shota FUJI authored at Shota FUJI comitted at
  62. 09f30015 idb_backend: ワークスペースを返すメソッドでマスクをする Shota FUJI authored at Shota FUJI comitted at
  63. fd70a66d idb_backend: マスク処理を汎用化 他のメソッドやメッセージで必ず必要になるため。 Shota FUJI authored at Shota FUJI comitted at
  64. ea2ba769 proto: ワークスペースを返すメソッド全てにマスクを追加 休暇休業データやそれに伴い増えるキーを考えると早めに実装 したほうが良さそうだったので。 Shota FUJI authored at Shota FUJI comitted at
  65. f88b189b idb_backend: ワークスペース単体取得メソッド Shota FUJI authored at Shota FUJI comitted at
  66. 5de14608 exactOptionalPropertyTypes を無効にした まさに百害あって一利なしだった。 key のチェックなどでは 確かに安心だろうが、既存のライブラリがこれらを一切考慮し ていないためエラー地獄。 Shota FUJI authored at Shota FUJI comitted at
  67. a09bf3b0 proto: ワークスペース単体取得メソッド パフォーマンス的にも利便性的にも必要だった。 Shota FUJI authored at Shota FUJI comitted at
  68. 5a67e0e3 idb_backend/pwa: 依存パッケージが間違ったモジュールにあるのを修正 Shota FUJI authored at Shota FUJI comitted at
  69. 4bc1c5d8 idb_backend: 開発に必要なパッケージが欠けているのを修正 1ab81605383a0f098f1c61ba916808339798823d で fake-indexeddb が抜け落ちてしまっていたが、 Bun が喜んで削除後のパッケージを node_modules に入れっぱなしにしていたせいでコードが動いて しまっており気づかなかった。別のマシンで `bun check` と `bun test` が失敗しているのを見て発覚。 Bun のパッケージマネージャーはまじでだめかもしれない。 Shota FUJI authored at Shota FUJI comitted at
  70. 774aa0c6 proto: 休暇休業定義をワークスペースに追加 まだ取得のみなので noop 。 実際に取得するイメージを持ち、システムデフォルトの休業を作成するための 定義。 Shota FUJI authored at Shota FUJI comitted at
  71. 4d2e6d88 proto: 労働実績モデル このシステムの最も重要となるデータ。 Shota FUJI authored at Shota FUJI comitted at
  72. 19d3f9fc ロックファイルを更新 新規で `bun i` をやったら差分が出た。 Bun のロックファイル周りの挙動は怪しすぎる。 Shota FUJI authored at Shota FUJI comitted at
  73. 11e11d81 react_ui: 労働者登録画面 Shota FUJI authored at Shota FUJI comitted at
  74. 1fcbb208 react_ui: 権限がない場合は労働者登録へのリンクを表示しない Shota FUJI authored at Shota FUJI comitted at
  75. 5c78ada0 react_ui: URLPattern 内の不正な正規表現を修正 polyfill はエラーにならないが、 Chrome だとエラーだった。 よく見てみると urlpattern-polyfill は仕様をちゃんと再現 しようとすらしてないっぽい? URLPattern API を使わないこと も含めて今後の方針は検討したほうがよさそう。 Shota FUJI authored at Shota FUJI comitted at
  76. 4632404e react_ui: トーストUI ワークスペース作成画面でフィードバックがなくわかりづらいと 感じたため。同じ問題は労働者登録画面でも起きるのでこの時点 で対応することにした。 Shota FUJI authored at Shota FUJI comitted at
  77. 591bf727 react_ui: Storybook 内でリンクを2回クリックする必要があるのを修正 useEffect がうまく動いていないのか、クリックリスナが連続して発火 している模様。 Shota FUJI authored at Shota FUJI comitted at
  78. 30a740c2 react_ui: ページをルーティングで構成 ページの追加をできる状態まで持っていった。 Shota FUJI authored at Shota FUJI comitted at
  79. 3f519c2c pwa: deprecated な React props を削除 ちゃんと動かないが暫定的な対応なので問題ない。 Shota FUJI authored at Shota FUJI comitted at
  80. 84d27db1 react_ui: ルーティング機能 UX としてはボタンで API を呼び出すのではなくアンカーリンクを使いたい ため。パスもこのパッケージが持つことになってしまうが、個別に管理する 手間を考えるとそこまでのドローバックでもないかなって気がする。 Shota FUJI authored at Shota FUJI comitted at
  81. 737d0300 pwa: 労働者一覧画面を表示する Shota FUJI authored at Shota FUJI comitted at
  82. 4ecc0205 idb_backend: WorkerService が必ずエラーになるのを修正 Shota FUJI authored at Shota FUJI comitted at
  83. fda542a9 react_ui: WorkerListPage が import できないのを修正 Shota FUJI authored at Shota FUJI comitted at
  84. 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
  85. 58c06980 react_ui: clean コマンドが types/ を削除しないのを修正 Shota FUJI authored at Shota FUJI comitted at
  86. 57305e72 react_ui: ワークスペース選択イベント 必要なのに忘れていた。 ロックファイルの更新は謎。トップレベルで `bun i` したら出てきた...。 Shota FUJI authored at Shota FUJI comitted at
  87. aa871258 react_ui: 労働者一覧画面 Shota FUJI authored at Shota FUJI comitted at
  88. 45ea1c74 react_ui: ワークスペース選択後画面のレイアウト 労働者系の画面を表示する際に必要になるため。 無くても MVP としてはどうにかなるが、実際にアプリケーション としてのイメージを持たせるためには必要。 Shota FUJI authored at Shota FUJI comitted at
  89. a7550f5d proto/idb_backend: KeyValueStorageBasedWorkspaceService を削除 これで WorkspaceService へのマイグレーションは完了。 Shota FUJI authored at Shota FUJI comitted at
  90. 53635089 react_ui: WorkspaceService へ移行 Shota FUJI authored at Shota FUJI comitted at
  91. fe83035b idb_backend: WorkspaceService をハンドルする 中身は KeyValueBasedStorageWorkspaceService と同じなので 処理は丸々使える。 Shota FUJI authored at Shota FUJI comitted at
  92. 09274fb4 idb_backend: WorkerService が登録されていないのを修正 しかもサービス名も間違えてたし。 実際にクライアントから叩いてないから気づかなかった。 Shota FUJI authored at Shota FUJI comitted at
  93. fd1eda20 proto: WorkspaceService を追加 KeyValueStorageBasedWorkspaceService は流石に長過ぎた。 Capability Key システムを導入したので、デスクトップ版で一覧や 削除ができない問題もなんとかなりそうなので思い切って改名する。 Shota FUJI authored at Shota FUJI comitted at
  94. 47f52d41 idb_backend: 労働者一覧取得メソッド Shota FUJI authored at Shota FUJI comitted at
  95. 5e9b3725 proto: 労働者一覧取得メソッド Shota FUJI authored at Shota FUJI comitted at
  96. a75ac4ce idb_backend: 労働者追加メソッド Shota FUJI authored at Shota FUJI comitted at
  97. 3edf4244 idb_backend: IndexedDBのデータを型付け `any` が原因となるエラーやミスが既に何度かあったため。 Shota FUJI authored at Shota FUJI comitted at
  98. 4b1ed95d idb_backend: ワークスペース削除・更新の capability worker_add はそもそも労働者追加メソッド自体がないため未実装。 Shota FUJI authored at Shota FUJI comitted at
  99. 3a0f59a3 proto: Capability ベースの権限管理機能 PWA 版ではワークスペースの管理はフルにできるが、デスクトップ版では ワークスペース = ファイルとなるためアプリケーション側から削除、 というのはあまりよろしくないので見せたくない。将来的なマルチユーザ なクラウド環境を考えても権限・サポートを capability として表現すれ ば UI 的にも API 的にも堅実に実装・設計ができる。 セキュリティコンテキストにおける capability の丁度いい日本語が 見つからない...。 Shota FUJI authored at Shota FUJI comitted at
  100. b0c86aa7 pwa: 無駄な余白を削除 Shota FUJI authored at Shota FUJI comitted at
  101. 6361e543 react_ui: 依存パッケージをバンドルしないように修正 Shota FUJI authored at Shota FUJI comitted at
  102. d2a9a17e react_ui: ワークスペース新規作成機能 Shota FUJI authored at Shota FUJI comitted at
  103. 222bd43e react_ui: ワークスペース選択画面のレイアウト Shota FUJI authored at Shota FUJI comitted at
  104. 9275bb5c react_ui: ワークスペース作成フォーム Shota FUJI authored at Shota FUJI comitted at
  105. f3934e43 react_ui: ワークスペース読み込みエラー表示 エラー表示はとても大切。汎用化して後で楽できるようにしておいた。 Shota FUJI authored at Shota FUJI comitted at
  106. 758e85c1 react_ui: Storybook上でRPCを動かす これがないとテストできてないも同然なので。 Shota FUJI authored at Shota FUJI comitted at
  107. a2544b33 idb_backend/pwa: バックエンド処理を別パッケージ化 react_ui の Storybook で使いたかったため。 Shota FUJI authored at Shota FUJI comitted at
  108. 0d574860 react_ui/pwa: RPC をUIパッケージ内で行う 基本的に UI は可能な限り全て共有とするため、通信層も揃える。 Shota FUJI authored at Shota FUJI comitted at
  109. d604dd56 Gleam 関連の設定を削除 少なくとも現状では使わなくなったため。 Shota FUJI authored at Shota FUJI comitted at
  110. 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
  111. 80acc21c gui: 単一セクションレイアウト Shota FUJI authored at Shota FUJI comitted at
  112. 666b23c8 gui: ドキュメントプレビューの padding をとれるようにした レイアウト系の UI を書くにあたり邪魔になってくるので。 Shota FUJI authored at Shota FUJI comitted at
  113. 8e364252 gui: ドキュメント内リンクのスタイル 他のテキストと同じで分かりづらかったため。 Shota FUJI authored at Shota FUJI comitted at
  114. 9556e8a3 gui: ドキュメントのコードスタイルの適用範囲が狭すぎるのを修正 具体的には yamori-workspace-list のページ先頭にあるリンク内の コードにスタイルが当たっていなかった。 Shota FUJI authored at Shota FUJI comitted at
  115. e6ed661d gui: lit-html の導入 頑張って素の DOM 操作でやってきたが、部分更新などでやはり無理 が出てきたためライブラリを導入した。 lit-html にした理由はこれが一番薄いから。なるべく素の Custom Element にするためには View 層にだけ専念したライブラリが必要 になる。 lit なんかは状態管理やら CustomElement の定義やらに 干渉してくるため、これが一番無難。また、利用者数も多く安定し ており、フロントエンド界隈では比較的枯れている。 Shota FUJI authored at Shota FUJI comitted at
  116. 18811534 gui: Empty が公開されていないのを修正 Shota FUJI authored at Shota FUJI comitted at
  117. ba500b5f gui: ワークスペース取得エラー時と空の際の UI Shota FUJI authored at Shota FUJI comitted at
  118. a90b5562 gui: Empty UI Result とか呼ばれたりすることもあるけど、用途を考えれば Empty の方が適切。 Shota FUJI authored at Shota FUJI comitted at
  119. 66531929 gui: `--foo` 形式の CustomState を利用しない 一部のバージョンの Chromium ブラウザ向けにフォールバックで利用 していたが、 Chrome がコンソールにエラーを出しやがるためやめた。 対象のバージョンのブラウザは属性を使うようになる。パフォーマンス への影響が不明だが、開発者側からはどうしようもできない短慮設計 なのでもう知らん。フォールバックを判別とかしてないし、まじでどう しようもない。 <https://chromestatus.com/feature/5140610730426368> Shota FUJI authored at Shota FUJI comitted at
  120. b6bacc5b gui: Callout が公開されてないのを修正 Shota FUJI authored at Shota FUJI comitted at
  121. 767c4238 gui: CustomElement の依存関係を declarative に表す 利用側がドキュメントや実装を見ながら手動で登録するのは error-prone なため。かといって全て登録するのはパフォーマンス的にも無駄。 Shota FUJI authored at Shota FUJI comitted at
  122. 7f84022f gui: Safari の動的 media 属性が反映されないバグについてコメント 後で見たとき用。 Bugzilla の検索が超アルティメットギガンティック ウンコだから、もしかしたらもっと適切なレポートが上がってるかも しれない。 Shota FUJI authored at Shota FUJI comitted at
  123. e2cb0e68 gui: ドキュメントの全画面表示時のアニメーション 特にテーマが同一時にわかりにくかったので。 view-transition-name だけ指定してスタイルはデフォルト任せだが、 どうやら Blink も Webkit も view-transition-name が指定されて いる場合は scale と opacity の同時アニメーションがデフォルト らしく、特に指定しなくてもいい感じになっているのでそのまま。 Shota FUJI authored at Shota FUJI comitted at
  124. 2fec305a gui: ドキュメントプレビューのフルスクリーン機能 画面の大部分を占めるような UI (e.g. Result/Empty, Layout) を書く際に 現状のプレビューサイズ、特にグリッドで列が 2 つ以上になった場合に まともな確認が難しくなるため。 リセット CSS に手を入れているのは Astro が body 内に script タグを 突っ込むため。 style も突っ込みかねないので念の為に書いた。 Shota FUJI authored at Shota FUJI comitted at
  125. e43772a1 check スクリプトを追加 型といったコードのプログラム的正当性を検査するためのコマンド。 Shota FUJI authored at Shota FUJI comitted at
  126. 3c38b9fe gui: ワークスペース一覧取得エラー時の UI Shota FUJI authored at Shota FUJI comitted at
  127. 5aa86a97 gui: 無効になったコードコメントの削除 Shota FUJI authored at Shota FUJI comitted at
  128. 0f33c4ed gui: コールアウトコンポーネント エラー表示なんかに必要なため。 Shota FUJI authored at Shota FUJI comitted at
  129. 5c9a9a0c gui: 読み込まれる CSS についてのドキュメントを作成 いちいち CSS ファイルを読み返すのは大変なので。 色とか文字組みに関しては気力が尽きたのでこのコミットには含まれず。 Shota FUJI authored at Shota FUJI comitted at
  130. 4a746bec gui: workspace.v1.ListResponse 表示 UI Protobuf のデータを受け取って表示する UI のサンプルとして実装。 そのため、足りない状態があったりエラー時の表示がテキストだけ だったりする。 Shota FUJI authored at Shota FUJI comitted at
  131. 20ed274b gui: Component という言葉の利用を限定 UI 要素の区分としても利用しているため、安易に使わないようにする。 Shota FUJI authored at Shota FUJI comitted at
  132. 6ce9c7b3 pwa: gui パッケージを導入 そもそも以前のコミットで gui パッケージが TypeScript のコンパイラバグ のせいでビルドできなくなってたり、 CustomElement として利用できな かったり (何故 Astro 上では見れていたのかは不明) していた。 なので gui 側にもちょこちょこ変更を加えている。 Shota FUJI authored at Shota FUJI comitted at
  133. 00903224 gui: <script> タグ内のインデントを一時的に廃止 markup_fmt のバグで最初の行以外インデントが効かない。 インデントがないよりも醜く見にくいためバグが直るまで インデントはかけない。 Shota FUJI authored at Shota FUJI comitted at
  134. e5c0a2b8 gui: カタログでナビゲーションが見切れるのを修正 メインが長いとナビゲーションも一緒に飛んでっちゃう。 Shota FUJI authored at Shota FUJI comitted at
  135. d8c21d6b gui: ボタンコンポーネント 必ず必要になるため。 リンクに使えるように Light DOM 仕様にしてもよかったが、 使い勝手を考えるとやはりゴリゴリと書いた単体完結のビルトイン 置き換え要素が良い。 Form の submit なんかが必要になったら `submit` 属性とかを 追加する必要はあるだろうが、現状の想定ではこれで十分。 Shota FUJI authored at Shota FUJI comitted at
  136. da8efd2d gui: スタイルガイドを Astro に変更 Vite の Multi-Page Application の DX が著しく低いため。 Astro も HTML やらモジュール周りでかなり酷いが、それでも Vite で 素の HTML を何枚も書くよりはかなりまし。 Shota FUJI authored at Shota FUJI comitted at
  137. 8de886de gui: 共有コンポーネントパッケージ 含まれているボタンコンポーネントはあくまでサンプル用で、挙動や I/F は 最終的に利用されるものとは異なる。 Shota FUJI authored at Shota FUJI comitted at
  138. dfeb6072 pwa: Gleam でワーカーの起動からリクエストまでを行う どんなものか見たかったため。正直 protobuf から生成された TS の 型定義やランタイムの検査結果を全部捨てるのは勿体ない気がする。 Gleam の protobuf コード生成も含めて方針は要検討。 Shota FUJI authored at Shota FUJI comitted at
  139. 656e5a34 pwa: パスエイリアスを設定 Gleam の JS 出力は未だに完全ではなく、 `build/` ファイルにそのまま 必要そうなファイルと一緒に出力するしかない。その結果、他のファイルを import したり、特に `src/` 直下以外から import しようとするとパスが ズレて import できない、といった問題に溢れている。 そのため、現状ではエイリアスを使って絶対パスに解決させるのが一番安全で 安定しているといえる。 Shota FUJI authored at Shota FUJI comitted at
  140. 43dab7ce pwa: Gleam の導入 流石に TypeScript で UI 書くのは論外なので。 ただ、どこまでを Gleam で書くのか、どのようなスタイルにするのかと いった部分は全く決まっていない。 Shota FUJI authored at Shota FUJI comitted at
  141. 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
  142. 5e79853a pwa: ワークスペースの削除メソッド Shota FUJI authored at Shota FUJI comitted at
  143. d1ab1038 pwa: IDB のトランザクション終了を待つ 多分読み切ってるし問題はないと思うけど、一応ね。 Shota FUJI authored at Shota FUJI comitted at
  144. 842d1edd pwa: ワークスペースの更新メソッド Shota FUJI authored at Shota FUJI comitted at
  145. 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
  146. 63fd0dd8 pwa: Worker が Rollup でビルドできない問題の修正 top-level await のあれ。 Shota FUJI authored at Shota FUJI comitted at
  147. 22ec9e8f proto: ワークスペース削除・更新メソッド 必要だから。UI実装時にこれがないと勢いが削がれて萎える。 Shota FUJI authored at Shota FUJI comitted at
  148. 859b35d1 pwa: IndexedDB を使ったワークスペースの作成・一覧処理 実際に書く雛形として IndexedDB へのアクセスとテストを書いた。 Shota FUJI authored at Shota FUJI comitted at
  149. 31135eff PWA での Protobuf 通信基礎 Service で定義されたリクエストとレスポンスを Web Worker 越しにやりとり する最低限のコード。今後どんなスタイル・ライブラリで書くにせよまず確実 に必要となるであろう部分を書いた。 Shota FUJI authored at Shota FUJI comitted at
  150. 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
  151. cf72bdb1 労働者追加までの protobuf 定義 アプリケーションの MVP を作るにあたり、とりあえず基礎を作るのに必要な データモデル定義をする必要があった。勤怠や休暇の記録を付けるにもまず 労働者の登録が必要だったため、この定義を優先して行った。 設定ファイルやドキュメントは protobuf やそれに関連するツールの追加に 伴い必要になったもの。 Shota FUJI authored at Shota FUJI comitted at
  152. be1ef017 Markdown で footnotes を使わない GFM の独自拡張であり、各ツールのサポートがほぼない状態のため。 Shota FUJI authored at Shota FUJI comitted at
  153. c887f487 プロジェクト概要とコードチェックインの基礎 最低限のプロジェクトの説明が先に存在しないと経験上迷走しやすいため、 最優先で作成した。また、コードフォーマットに関するものも最初期から ないと後々の diff が見づらくなるので現状必要なものを作成した。 Shota FUJI authored at Shota FUJI comitted at