PyCon JP 2025 Logo
広島国際会議場
JPEN
HASEBA Junya

HASEBA Junya

Pythonによる契約プログラミング入門

フェニックスホール日本語
05:05 - 05:3530min
DAY 2
09/27
SAT

「関数の戻り値が期待と違ってデバッグに時間を費やした」「引数にNoneが渡ってエラーになった」「リファクタリングが怖くて手を付けられない」など、Pythonの柔軟性が裏目に出て、コードの堅牢性が損なわれるケースは少なくありません。これらの問題は、動的型付け言語であるPythonの特性から来るものですが、実は契約プログラミングの考え方を取り入れることで、これらの課題を大幅に軽減することが可能です。

本セッションでは、バグの原因特定に時間を費やしているPython初心者〜中級者、コードレビューで関数の前提条件に悩むチームメンバー、より堅牢なコードを書きたいがアプローチが分からない方に向けて、「明日から使える実践的手法」から「高度なライブラリ活用」までの段階的な契約プログラミング導入法をお伝えします。

他言語での契約プログラミングと比較しながら、Pythonらしい実装方法を4段階で紹介します。「完璧を求めず、重要な部分から少しずつ」というメッセージを込めつつ、現実的な導入アプローチを提示し、デバッグ効率の向上、コードの意図の明確化、安全なリファクタリングの実現を手助けします。

同じ苦労を味わうPythonistaを一人でも減らし、より良いPythonコードを書く喜びを共有したいという想いを込めて、契約プログラミングの第一歩を踏み出すきっかけを提供します。


トーク詳細 / Description

聞いてくれた方に「自分のプログラムにも少しずつ契約プログラミングを取り入れてみたい」と思ってもらうことをゴールに、以下の構成で発表を行う予定です。

  1. 導入
    • 契約プログラミングとは何か
    • Bertrand Meyerの「契約による設計」
    • 事前条件・事後条件・不変条件の概念
  2. 他言語での契約プログラミング
    • Clojureの例
    • Kotlinの例
    • 各言語でのアプローチの違い
  3. Pythonにおける契約の段階的実装
    • Level 0: 型ヒント - 静的な契約
    • Level 1: assert文 + docstring - 実行時契約の基礎
    • Level 2: pydantic - データ契約
    • Level 3: dealライブラリ - 高度な契約
  4. 実践における考慮点
    • デバッグ環境 vs プロダクション環境
    • テスト戦略との関係
    • チーム導入のステップ
  5. まとめ
    • Pythonでの契約プログラミングの現実解
    • 明日から試せること
HASEBA Junya

HASEBA Junya

プロフィール

PythonとClojureをこよなく愛するAndroidエンジニアです。サークル「Thunder Claw」で技術同人誌を書いています。クイズマジックアカデミーでは「ちーぽんせんてん」、雀魂では「シアンフロこ」で活動中です。埼玉西武ライオンズとU-NEXT Piratesを応援しています。