NINOMIN BLOG

開発振り返り - 2025年12月13日

7 min read
reflection
learning
development
python
storybook
mysql
health

開発振り返り - 2025 年 12 月 13 日

総評

今週は刷新中のアプリにおける「起動時の初期化フロー」の理解や、DB 移行(MariaDB → MySQL)の調査を中心に進めた。 技術的な学びが多かった一方で、調査でエラーにハマってしまい工数を溶かしてしまったのが反省点である。

また、今月に入ってから「週末が近づくにつれてコンディションが悪くなり、パフォーマンスが落ちる」という傾向を感じている。技術力以前に、日々の生活リズムを整える工夫が必要だと痛感した 1 週間だった。


学んだこと

1. Python の dict と defaultdict の使い分けと副作用

dict で配列を回していたところ、defaultdict を使用する方がより可読性が高まると知った。しかし、defaultdict には下記のデメリットもあることを学んだ。

dict と defaultdict の比較

項目dictdefaultdict
存在しないキーへのアクセス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 調査の結果共有を進める。そして何より、体調管理を第一に安定したパフォーマンスが出せるよう心がける。