PyCon JP 2025 Logo
広島国際会議場
JPEN
加藤雅也

加藤雅也

Pythonで実現する堅牢なシステム設計 - イミュータブルがもたらす恩恵

ラン日本語
01:30 - 02:0030min
DAY 1
09/26
FRI

本発表では、Pythonにおけるイミュータブル(不変)なデータ構造の重要性と、それを活用した堅牢なシステム設計について解説します。

多くのPython開発者は、リストや辞書などのミュータブル(可変)なデータ構造を日常的に使用していますが、これらが原因で発生する予期しない副作用やバグに悩まされた経験があるのではないでしょうか。特に、複数のモジュール間でデータを共有する際や、並行処理を行う際には、ミュータブルなオブジェクトが思わぬ問題を引き起こすことがあります。

本発表では、実務でのシステム開発で蓄積された知見をもとに、以下の内容を扱います:

  • ミュータブルなコードが引き起こす典型的な問題パターン
  • frozen dataclassesやプロパティを活用したイミュータブルな設計手法
  • Webアプリケーションでの活用事例(データベースなど)

発表では、実際のプロダクションコードから抽出した具体例を交えながら、すぐに現場で活用できる実践的なテクニックを紹介します。Pythonの型ヒントとイミュータブルデザインを組み合わせることで、より安全で保守性の高いコードベースを構築する方法を学ぶことができます。

対象者は、Pythonでシステムを開発している方、チーム開発でコードの品質向上を目指している方々を想定しています


トーク詳細 / Description

  1. イントロダクション(3分)

    • ミュータブルなコードが引き起こした実際のインシデント事例
    • なぜ今イミュータブルが重要なのか
  2. ミュータブルの罠(5分)

    • デフォルト引数の罠(def func(items=[])など)
    • 意図しない参照共有による副作用
    • リストの直接変更がもたらす追跡困難なバグ
    • 実際の失敗例
  3. イミュータブルデザインパターン(10分)

    • frozen dataclassesの活用方法と注意点
    • プライベート属性とプロパティによる読み取り専用設計
    • 実務を例にした値オブジェクトの実装など
  4. 実践的な活用方法(5分)

    • 既存のミュータブルなドメインオブジェクトの改善など
    • Webアプリケーションでの活用事例(データベースなど)
  5. まとめとQ&A(2分)

    • チームへの導入方法
    • パフォーマンスへの影響と対策
加藤雅也

加藤雅也

プロフィール