開発振り返り - 2025年12月13日
開発振り返り - 2025 年 12 月 13 日
総評
今週は刷新中のアプリにおける「起動時の初期化フロー」の理解や、DB 移行(MariaDB → MySQL)の調査を中心に進めた。 技術的な学びが多かった一方で、調査でエラーにハマってしまい工数を溶かしてしまったのが反省点である。
また、今月に入ってから「週末が近づくにつれてコンディションが悪くなり、パフォーマンスが落ちる」という傾向を感じている。技術力以前に、日々の生活リズムを整える工夫が必要だと痛感した 1 週間だった。
学んだこと
1. Python の dict と defaultdict の使い分けと副作用
dict で配列を回していたところ、defaultdict を使用する方がより可読性が高まると知った。しかし、defaultdict には下記のデメリットもあることを学んだ。
dict と defaultdict の比較
| 項目 | dict | defaultdict |
|---|---|---|
| 存在しないキーへのアクセス | KeyError が発生 | 自動でデフォルト値を生成 |
| 可読性 | キー存在チェックが必要 | シンプルに書ける |
| 副作用 | なし | 参照だけでキーが生成される |
| 推奨用途 | 書き込みが発生する共有状態 | 読み取り専用、ローカルスコープ |
defaultdict はキーが存在しない場合に自動で初期値を生成してくれるため便利だが、想定しないキーを参照しただけでも、そのキーが生成されて辞書が肥大化するという副作用がある。
ここから得た学び
- 読み取り専用の場合:イミュータブル(不変)が保証されているなら
defaultdictでも問題ない - 書き込みが発生する場合:インスタンスを使い回して各所で書き込みを行うような実装だと、予期せぬキーが生成され、バグやパフォーマンス悪化の原因になる
今後は用途に応じて通常の dict と慎重に使い分けていく。
2. Storybook の役割と「ビジュアルドキュメント」としての価値
アプリ刷新に伴い、Storybook のドキュメントを確認・整理した。
Storybook は単なるカタログではなく、ビジュアルドキュメントとしての側面が強いという再認識である。Markdown 等の設計書が「仕様・動作(文字ベース)」の説明であるのに対し、Storybook は「実際の見た目・操作感(ビジュアル)」を担っている。
Storybook 導入のメリット
| 観点 | メリット |
|---|---|
| 開発効率 | アプリ全体を起動せずとも、特定のエラー画面などをピンポイントで確認できる |
| 品質保証 | 全バリエーションを網羅的にテストできる |
| チーム共有 | 非エンジニア(デザイナーや PM)がコードを読まずに UI を確認・フィードバックできる |
| ドキュメント鮮度 | UI 変更時は Story の整備を必須とすることで、常に最新状態を保てる |
API エラーなど「特定の状態にしないと見られない画面」こそ、Storybook での管理が有効だと感じた。
3. Clean Architecture における Query Service
アーキテクチャの実装方針を確認する中で、Application 層の設計について学んだ。
Query Service(クエリサービス) Clean Architecture における「Application 層」のインターフェースで、主にデータの読み取り専用操作を担当する。
データの更新系(Command)と参照系(Query)の責務を明確に分離することで、コードの見通しが良くなることを理解した。
4. MariaDB から MySQL への DB 移行調査とエラー対応
データ量の多い店舗の DB に切り替えて検証を行った際、以下のエラーが発生した。
Cannot create a string longer than 0x1fffffe8 characters
この原因調査と解決に、工数の大半を使ってしまった。
教訓:
小規模なデータでは顕在化しない問題が、本番相当のデータ量で初めて発覚することを再認識した。
自己解決できないタスクは他メンバーへの相談を早めにして、できるタスクから取りかかれたことは良い優先順位の判断だった。
まとめ
今週のポイントを整理する。
- Python:
defaultdictの副作用(肥大化)を理解し、共有状態では慎重に扱う - Storybook: 再現困難な UI(エラー画面等)こそ Storybook で管理し、チームの共通言語にする
- DB 移行: 設定値エラーに注意し、本番相当のデータ量での検証を早めに行う
- 体調管理: 週末にかけてパフォーマンスが落ちないよう、規則正しい生活を意識する
来週は初期化フローの実装完了と、今回の DB 調査の結果共有を進める。そして何より、体調管理を第一に安定したパフォーマンスが出せるよう心がける。