SlideShare a Scribd company logo
1 of 7
Download to read offline
Mypy status 201610
2016-10-22 Tetsuya Morimoto
Intoroduction
● 森本 哲也 (@t2y)
● サーバーサイドエンジニア
○ プログラミング言語歴 : Python → Java → Go
● Python Insider の翻訳: http://blog-ja.python.org/
● PyPI: https://pypi.org/user/t2y/
● はてなブログ: http://t2y.hatenablog.jp/
● Qiita: http://qiita.com/t2y
Background
● 2014-12 mypy 0.1.0
● 2015-04 mypy 0.2.0
● 2015-09 型ヒント (Type Hints)
○ Python 3.5.0 リリース
○ 型ヒントを記述するための型アノテーションの構文を標準化 (typing モジュール)
○ [翻訳] PEP 484 -- 型ヒント
○ mypy 0.2.0 から鋭意開発中の状態だった
● 2016-02 mypy 0.3.0
● 2016-05 mypy 0.4, 0.4.1
● 2016-06 mypy 0.4.2
● 2016-07 mypy 0.4.3
● 2016-08 mypy 0.4.4
● 2016-10-07 mypy 0.4.5 ← イマココ!
Rapid Release な
体制になってきた?
Dropbox 社へ
● Jukka Lehtosalo: mypy 作者
● Guido van Rossum: python 作者
Case Example
● Static types in Python, oh my(py)!
○ Tim Abbott 著 (Zulip のリード開発者)
○ [翻訳] Python の静的型、すごい mypy!
● Zulip というグループチャットアプリケーションに型アノテーションを付けた話
○ Python 2 で約50,000行、毎月数十人が数百コミット
○ GSOC で優秀な学生がほとんどの作業をしてくれた
○ そんながんばらずに適当にやってたけど、数ヶ月で完了した
○ やってみたら Python 2 から Python 2+3 両対応がすごく簡単にできた
○ mypy の実行時間は Zulip で約3秒、十分に速いし誤検知もあまりない
○ 型アノテーションがあると可読性が上がるし、リファクタリングも安心
○ 学習コストを強いるんじゃないかと不安に思ってたけど、みんな普通に対応してくれる
Discussion
● なぜ型アノテーションが Python 2+3 対応を容易にするのか?
○ str vs. Text (unicode in Python 2, str in Python 3): mypy
○ bytes vs. str: Python 3
○ str vs. unicode: Python 2
○ これらの型アノテーションをちゃんと付けた場合に限る
● 本来は Python 2 でも文字列を扱うときは全て unicode 文字列であるべき?
○ 文字列が ASCII の場合、str と unicode 文字列の型の違いが曖昧
○ str 型でもプログラムは動いてしまうことがある (str→unicodeの暗黙の型変換)
● ライブラリもテキストを unicode 文字列で扱うとは限らない
○ os (os.path)
○ csv
○ ConfigParser
標準ライブラリでさえ統一できていない
Python 3 対応で最も影響が大きい (変更が多い)
Conclusion
● 型チェッカーとしての mypy が実用レベルになったらしい
○ 型ヒントの利点を活かせるときがきた
● mypy を使うと Python 2 から 3 への移行が容易になるかも?
● 型ヒントを書いて Python における静的解析を試してみましょう!
An Aside
● 著者に翻訳の許可をとったときに翻訳記事がどのぐらい読まれたか教えてほしいと
依頼された
● Qiita の公開後の PV をみてた
○ 2.5時間: 1,000
○ 6時間 : 2,000
○ 翌日 : 6,000
○ 3日 : 9,500
過去に私が翻訳した記事の中では驚異的な数字!!!

More Related Content

What's hot

Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTdrillan
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャShiroyagi Corporation
 
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方サードパーティパッケージの歩き方
サードパーティパッケージの歩き方Takesxi Sximada
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplibShinya Okano
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発shoma h
 
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法Takuya Ueda
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Takuya Ueda
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオンTakuya Ueda
 
GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門Takuya Ueda
 
OSS Study#19_LT
OSS Study#19_LTOSS Study#19_LT
OSS Study#19_LTNaoY-2501
 
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみようGoでwebアプリを開発してみよう
Goでwebアプリを開発してみようTakuya Ueda
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?Takuya Ueda
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介shoma h
 
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Takuya Ueda
 
Go初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろうGo初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろうTakuya Ueda
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49shoma h
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたYusuke Kon
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Kir Chou
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみたShohei Tai
 

What's hot (20)

Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LT
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
 
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
 
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオン
 
GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門
 
OSS Study#19_LT
OSS Study#19_LTOSS Study#19_LT
OSS Study#19_LT
 
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみようGoでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
 
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
 
Go初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろうGo初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろう
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた
 

Viewers also liked

Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Tetsuya Morimoto
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターンMoriharu Ohzu
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューMoriharu Ohzu
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことTerui Masashi
 
Subversion Best Practices
Subversion Best PracticesSubversion Best Practices
Subversion Best PracticesMatt Wood
 
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!ペアプロはリモートでもできる!
ペアプロはリモートでもできる!Tatsuya Deguchi
 
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかたJAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかたTomoaki Imai
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」Yusuke KUROIWA
 
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」Yusuke KUROIWA
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事Hiroyuki Hiki
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 
The Physical Interface
The Physical InterfaceThe Physical Interface
The Physical InterfaceJosh Clark
 

Viewers also liked (16)

Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
 
Hyper Introduction
Hyper IntroductionHyper Introduction
Hyper Introduction
 
Subversion Best Practices
Subversion Best PracticesSubversion Best Practices
Subversion Best Practices
 
Golang
GolangGolang
Golang
 
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!ペアプロはリモートでもできる!
ペアプロはリモートでもできる!
 
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかたJAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」
 
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
The Physical Interface
The Physical InterfaceThe Physical Interface
The Physical Interface
 

Similar to PyLadies Tokyo 二周年記念パーティ LT

Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウBp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウKameko Ohmura
 
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応KyutatsuNishiura
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Ai Makabi
 
『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由Takayuki Shimizukawa
 
Ruby開発の現場を支える技術
Ruby開発の現場を支える技術Ruby開発の現場を支える技術
Ruby開発の現場を支える技術hiroponz
 
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Katayanagi Nobuko
 
Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Hironori Sekine
 
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころエキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころTakayuki Shimizukawa
 
スクレイピングとPython
スクレイピングとPythonスクレイピングとPython
スクレイピングとPythonHironori Sekine
 
Shizuoka.py #6 lt 確定申告をpythonで乗り切る
Shizuoka.py #6 lt  確定申告をpythonで乗り切るShizuoka.py #6 lt  確定申告をpythonで乗り切る
Shizuoka.py #6 lt 確定申告をpythonで乗り切るhiroshi sano
 
S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5Takeshi Akutsu
 
Python Boot Camp のお話し
Python Boot Camp のお話しPython Boot Camp のお話し
Python Boot Camp のお話しLina Katayose
 
Two sides of "Python Engineer Training Book"
Two sides of "Python Engineer Training Book"Two sides of "Python Engineer Training Book"
Two sides of "Python Engineer Training Book"Takanori Suzuki
 
Twitter apiを使って地域別のトレンドを取得する!
Twitter apiを使って地域別のトレンドを取得する!Twitter apiを使って地域別のトレンドを取得する!
Twitter apiを使って地域別のトレンドを取得する!Daiki11
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門kashew_nuts
 

Similar to PyLadies Tokyo 二周年記念パーティ LT (20)

Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウBp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
 
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
 
『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由
 
Ruby開発の現場を支える技術
Ruby開発の現場を支える技術Ruby開発の現場を支える技術
Ruby開発の現場を支える技術
 
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
 
Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編-
 
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころエキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
 
スクレイピングとPython
スクレイピングとPythonスクレイピングとPython
スクレイピングとPython
 
Shizuoka.py #6 lt 確定申告をpythonで乗り切る
Shizuoka.py #6 lt  確定申告をpythonで乗り切るShizuoka.py #6 lt  確定申告をpythonで乗り切る
Shizuoka.py #6 lt 確定申告をpythonで乗り切る
 
S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5
 
Python Boot Camp のお話し
Python Boot Camp のお話しPython Boot Camp のお話し
Python Boot Camp のお話し
 
Visasq
VisasqVisasq
Visasq
 
Introduction Pycon2010
Introduction Pycon2010Introduction Pycon2010
Introduction Pycon2010
 
Why python
Why pythonWhy python
Why python
 
Two sides of "Python Engineer Training Book"
Two sides of "Python Engineer Training Book"Two sides of "Python Engineer Training Book"
Two sides of "Python Engineer Training Book"
 
Twitter apiを使って地域別のトレンドを取得する!
Twitter apiを使って地域別のトレンドを取得する!Twitter apiを使って地域別のトレンドを取得する!
Twitter apiを使って地域別のトレンドを取得する!
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
S02 t0 get_started
S02 t0 get_startedS02 t0 get_started
S02 t0 get_started
 
S15 t0 introduction
S15 t0 introductionS15 t0 introduction
S15 t0 introduction
 

More from Tetsuya Morimoto

ビジネスパーソン x プログラミング
ビジネスパーソン x プログラミングビジネスパーソン x プログラミング
ビジネスパーソン x プログラミングTetsuya Morimoto
 
チケット駆動開発のススメ
チケット駆動開発のススメチケット駆動開発のススメ
チケット駆動開発のススメTetsuya Morimoto
 
Pythonと型チェッカー
Pythonと型チェッカーPythonと型チェッカー
Pythonと型チェッカーTetsuya Morimoto
 
ストリーミングのげんざい
ストリーミングのげんざいストリーミングのげんざい
ストリーミングのげんざいTetsuya Morimoto
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会Tetsuya Morimoto
 
Ikazuchi introduction for Europython 2011 LT
Ikazuchi introduction for Europython 2011 LTIkazuchi introduction for Europython 2011 LT
Ikazuchi introduction for Europython 2011 LTTetsuya Morimoto
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトTetsuya Morimoto
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半Tetsuya Morimoto
 
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半Tetsuya Morimoto
 
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7Tetsuya Morimoto
 

More from Tetsuya Morimoto (14)

ビジネスパーソン x プログラミング
ビジネスパーソン x プログラミングビジネスパーソン x プログラミング
ビジネスパーソン x プログラミング
 
チケット駆動開発のススメ
チケット駆動開発のススメチケット駆動開発のススメ
チケット駆動開発のススメ
 
Pythonと型チェッカー
Pythonと型チェッカーPythonと型チェッカー
Pythonと型チェッカー
 
ストリーミングのげんざい
ストリーミングのげんざいストリーミングのげんざい
ストリーミングのげんざい
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
 
PyCon 2012 紀行
PyCon 2012 紀行PyCon 2012 紀行
PyCon 2012 紀行
 
Sphinx 社内勉強会
Sphinx 社内勉強会Sphinx 社内勉強会
Sphinx 社内勉強会
 
Ikazuchi introduction for Europython 2011 LT
Ikazuchi introduction for Europython 2011 LTIkazuchi introduction for Europython 2011 LT
Ikazuchi introduction for Europython 2011 LT
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
 
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半
 
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7
 
Ex py intro-20100630
Ex py intro-20100630Ex py intro-20100630
Ex py intro-20100630
 
曖昧 RPM 講座
曖昧 RPM 講座曖昧 RPM 講座
曖昧 RPM 講座
 

Recently uploaded

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (9)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

PyLadies Tokyo 二周年記念パーティ LT

  • 1. Mypy status 201610 2016-10-22 Tetsuya Morimoto
  • 2. Intoroduction ● 森本 哲也 (@t2y) ● サーバーサイドエンジニア ○ プログラミング言語歴 : Python → Java → Go ● Python Insider の翻訳: http://blog-ja.python.org/ ● PyPI: https://pypi.org/user/t2y/ ● はてなブログ: http://t2y.hatenablog.jp/ ● Qiita: http://qiita.com/t2y
  • 3. Background ● 2014-12 mypy 0.1.0 ● 2015-04 mypy 0.2.0 ● 2015-09 型ヒント (Type Hints) ○ Python 3.5.0 リリース ○ 型ヒントを記述するための型アノテーションの構文を標準化 (typing モジュール) ○ [翻訳] PEP 484 -- 型ヒント ○ mypy 0.2.0 から鋭意開発中の状態だった ● 2016-02 mypy 0.3.0 ● 2016-05 mypy 0.4, 0.4.1 ● 2016-06 mypy 0.4.2 ● 2016-07 mypy 0.4.3 ● 2016-08 mypy 0.4.4 ● 2016-10-07 mypy 0.4.5 ← イマココ! Rapid Release な 体制になってきた? Dropbox 社へ ● Jukka Lehtosalo: mypy 作者 ● Guido van Rossum: python 作者
  • 4. Case Example ● Static types in Python, oh my(py)! ○ Tim Abbott 著 (Zulip のリード開発者) ○ [翻訳] Python の静的型、すごい mypy! ● Zulip というグループチャットアプリケーションに型アノテーションを付けた話 ○ Python 2 で約50,000行、毎月数十人が数百コミット ○ GSOC で優秀な学生がほとんどの作業をしてくれた ○ そんながんばらずに適当にやってたけど、数ヶ月で完了した ○ やってみたら Python 2 から Python 2+3 両対応がすごく簡単にできた ○ mypy の実行時間は Zulip で約3秒、十分に速いし誤検知もあまりない ○ 型アノテーションがあると可読性が上がるし、リファクタリングも安心 ○ 学習コストを強いるんじゃないかと不安に思ってたけど、みんな普通に対応してくれる
  • 5. Discussion ● なぜ型アノテーションが Python 2+3 対応を容易にするのか? ○ str vs. Text (unicode in Python 2, str in Python 3): mypy ○ bytes vs. str: Python 3 ○ str vs. unicode: Python 2 ○ これらの型アノテーションをちゃんと付けた場合に限る ● 本来は Python 2 でも文字列を扱うときは全て unicode 文字列であるべき? ○ 文字列が ASCII の場合、str と unicode 文字列の型の違いが曖昧 ○ str 型でもプログラムは動いてしまうことがある (str→unicodeの暗黙の型変換) ● ライブラリもテキストを unicode 文字列で扱うとは限らない ○ os (os.path) ○ csv ○ ConfigParser 標準ライブラリでさえ統一できていない Python 3 対応で最も影響が大きい (変更が多い)
  • 6. Conclusion ● 型チェッカーとしての mypy が実用レベルになったらしい ○ 型ヒントの利点を活かせるときがきた ● mypy を使うと Python 2 から 3 への移行が容易になるかも? ● 型ヒントを書いて Python における静的解析を試してみましょう!
  • 7. An Aside ● 著者に翻訳の許可をとったときに翻訳記事がどのぐらい読まれたか教えてほしいと 依頼された ● Qiita の公開後の PV をみてた ○ 2.5時間: 1,000 ○ 6時間 : 2,000 ○ 翌日 : 6,000 ○ 3日 : 9,500 過去に私が翻訳した記事の中では驚異的な数字!!!