yamori

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

Commits at d8a11ea513cfca68585d6a8214b622f5e50dbfb6

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