Slide 1

Slide 1 text

Python の型事情について 株式会社coroutine 東川 諒央

Slide 2

Slide 2 text

自己紹介 1 Python 3.10 までの型ヒントとは? 3 Python が TypeScript に近くなっている 4 Python の型とは? 2 5 まとめ

Slide 3

Slide 3 text

自己紹介 1 株式会社 coroutine 東川 諒央 @biwakonbu 大学教員 ゲームバックエンド フリーランス 経歴 Go Python JavaScript 実績言語 Ruby 技術顧問 エンジニア教育 業務 設計 プログラミング インフラ etc… Rust Haskell TypeScript 学習中言語

Slide 4

Slide 4 text

> Python の型とは?

Slide 5

Slide 5 text

Python の型とは? 2 ❏ Python は動的型の言語 ❏ じゃあ TypeScript みたいにコンパイル時チェックでバグを抑制できないのか ? ❏ これは出来ます ❏ Python ではバージョン 3.5 から型ヒント (type hint) というものが実装されました ❏ 現時点では 3.11 が最新の安定版 ❏ 3.5 ~ 3.11 まででかなり内容が変更されているので 注意 ❏ 型ヒントというのは、ヒントであって強制ではない事にも 注意 ❏ Python で型ヒントを扱うためのライブラリを使う事で型検査が出来る

Slide 6

Slide 6 text

型ヒントを使う 3 ❏ IDE, エディタ で使う ❏ LSP に対応したプラグインを導入する事でエディタ上で型検査ができる ❏ VSCode なら Pylance を使いましょう ❏ MS 謹製の拡張です ❏ 静的解析ツールを使う ❏ Mypy ❏ Python 型検査のデファクトスタンダード ❏ 最新の 1.5 は Python 3.12 を部分的にサポート ❏ pytype ❏ 型アノテーションが無くても型推論によって検査できる ❏ 型注釈を Python ソースに組み込む事も可能 ❏ 最新は Python 3.8 ~ 3.10 までサポートとの事

Slide 7

Slide 7 text

> Python 3.10 までの型ヒントとは?

Slide 8

Slide 8 text

Python 3.10 の型ヒント事情 3 ❏ typing --- 型ヒントのサポート — Python 3.10.12 ドキュメント ❏ 公式ドキュメントで詳細は確認できるので特筆したいものを紹介します

Slide 9

Slide 9 text

おすすめの型ヒント 4 ❏ TypedDict ❏ 辞書のキーの存在とその型を定義できる

Slide 10

Slide 10 text

おすすめの型ヒント 4 ❏ リテラル型 ❏ 特定のリテラルのみ許容される型を定義できる

Slide 11

Slide 11 text

おすすめの型ヒント 4 ❏ ジェネリクス ❏ 特定の型を呼出時に決定できる

Slide 12

Slide 12 text

おすすめの型ヒント 4 ❏ 共用体型 (ユニオンタイプ) ❏ 複数の型を持つ事を表現できる

Slide 13

Slide 13 text

おすすめの型ヒント 4 ❏ Final ❏ 上書きできない変数を定義する

Slide 14

Slide 14 text

おすすめの型ヒント 4 ❏ TypeAlias ❏ 別名型を定義できる

Slide 15

Slide 15 text

おすすめの型ヒント 4 ❏ TypeGuard ❏ 静的型解析時に型の絞り込みを正確に行うことができる

Slide 16

Slide 16 text

> Python が TS に近くなっている

Slide 17

Slide 17 text

Python が TypeScript に近くなっている 5 ❏ 紹介した機能は TS でも良く使われる機能 ❏ ジェネリクス、リテラル型、ユニオン型、 Final、TypeGuard など ❏ バージョンが上がる毎に便利で typing モジュールなしになってきている ❏ 非常に便利で強力な機能だけど、便利に使うには参考書が欲しい ❏ ロバスト Python を読みましょう!

Slide 18

Slide 18 text

まとめ 6 ❏ Python は年々見え難い部分が進化しています ❏ 型周りは Python が力を入れているので習熟が今後重要になると思います ❏ 既存の PJ には pytype の導入が良さそうです ❏ 新規なら Mypy だと細かくできますが、面倒なら pytype でも可 ❏ Pyre (パイヤー) という OCaml 製の静的型解析ツールが気になっています ❏ 本当はここの話をしたかったけど話したい内容が多かったので次回にします ❏ Python 3.12 では typing モジュールの利用を更に減らす施策が入ります ❏ type キーワードが入り、ますます TS チックになります ❏ 構文や解析周りの進化が本当に激しいのでこれからの発展に期待しましょう

Slide 19

Slide 19 text

P.S. エンジニアのための学習・交流を行うコミュニティスペースを作ります 未経験者・学生・社会人・フリーランス歓迎、プログラミング等は教えます 色々なご相談にも対応します ・就活・キャリアアップ相談 ・業務に関する相談 ・個人的な学習の相談 大阪でのエンジニアコミュニティを応援します ・勉強会場として無料で場所貸し ・むしろ開催応援のギフト券なども考えています ・長く続く開発者コミュニティ作りを実行します

Slide 20

Slide 20 text

おわり