SlideShare uma empresa Scribd logo
1 de 23
Pythonでも型をつけたい
だけの人生だった
あっきー
はんなりPythonの会 #20 発表会
自己紹介
所属
京都のIT会社勤務(社会人2年目)
取り組んでいること
AWSを使ったバックエンドの構築
Vue.jsなどを使ったフロントエンド開発
SORACOMのサービスを利用したIoT開発
Openblocksと戯れる日々…
アンケート
静的型付き言語(C言語、C++、Javaなど)
を触ったことがある方ー?
😫 😫
どうすれば回避できるのか
😫 😫
Pythonでも型付きで宣言したい?
大丈夫、安心してください
そう、Type Hintsならね
Pythonでも型付きで宣言できるよ
アジェンダ
静的型付きのメリット
Type Hintsとは
Mypyって?
Type Hintsの具体的な例
静的型付きのメリット
実行する前にエラーになりそうな箇所を見つけることができる
コードの可読性が上がる
バグが減る(かも)
静的型付きのメリット
実行する前にエラーになりそうな箇所を見つけることができる
⇒変数の型を縛ることで、他の型を代入した場合に、
エディタ上で強調表示させる
コードの可読性が上がる
バグが減る(かも)
間違った型を代入してるよ(str型を代入しようとしているけど、
変数の型はint型だよ)
静的型付きのメリット
実行する前にエラーになりそうな箇所を見つけることができる
コードの可読性が上がる
⇒どのような変数かがひと目見て理解できる
バグが減る(かも)
Studentクラスのリスト型の変数ということが一目瞭然
静的型付きのメリット
実行する前にエラーになりそうな箇所を見つけることができる
コードの可読性が上がる
バグが減る(かも)
⇒型を意識してプログラミングを行うことで、プログラムの深い理解を
サポートする
Type Hintsとは
Pythonのソースコード上に、型の情報を加えるもの
型情報に関係のあるPEP一覧
PEP 3107: Function Annotations
PEP 484: Type Hints
PEP 526 : Syntax for Variable Annotations
PEP 544: Protocols: Structural subtyping(static duck typing)
PEP 563: Postponed Evaluation of Annotations
定義の標準化、typingの提供など
Mypyって?
Type Hintsはあくまで型情報の付与機能しか提供していない
そもそも、型情報はコメントと同じ扱い
なので、型情報を解析して、エラーかどうかを判断するための
ツールが必要となる
Mypyがなければ、Pythonの型情報は無用の産物と化す、、、
Type Hintsの具体的な例(基本変数)
間違った型を代入してるよ(int型を代入しようとしているけど、
変数の型はbool型だよ)
Type Hintsの具体的な例(辞書)
Movieの型にはcomment属性は無いよー
Type Hintsの具体的な例(関数)
間違った型を代入してるよ(int型を代入しようとしているけど、変数の型はbool型だよ)
第一引数のint型にstr型を入れようとしてるけど、ダメだよー
第二引数のint型にsfloat型を入れようとしてるけど、ダメだよー
Type Hintsの具体的な例(定数)
定数RATEに再代入はできないよー
Type Hintsの
具体的な例
(クラス)
間違った型を
代入してるよ
(Student型を代入しよ
うとしているけど、
変数の型はint型だよ)
Type Hintsの具体的な例(OR)
間違った型を代入してるよ(float型を代入しようとしているけど、
変数の型はint型かstr型だよ)
Type Hintsの具体的な例(キャスト)
ややこしいのでほぼ使いません。。。
皆さんも良い型付きライフをお過ごし下さい
ご清聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

Php勉強会資料20090629
Php勉強会資料20090629Php勉強会資料20090629
Php勉強会資料20090629
Takako Miyagawa
 
Potato03 KotlinでAndroidアプリ開発(後編)
Potato03 KotlinでAndroidアプリ開発(後編)Potato03 KotlinでAndroidアプリ開発(後編)
Potato03 KotlinでAndroidアプリ開発(後編)
Toshihiro Yagi
 
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011PHPカンファレンス関西 2011
PHPカンファレンス関西 2011
Takako Miyagawa
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
豊明 尾古
 
2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT
Takako Miyagawa
 
20111206 GLT vol.40
20111206 GLT vol.4020111206 GLT vol.40
20111206 GLT vol.40
kashew_nuts
 

Mais procurados (20)

Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Php勉強会資料20090629
Php勉強会資料20090629Php勉強会資料20090629
Php勉強会資料20090629
 
Code igniter + ci phpunit-test
Code igniter + ci phpunit-testCode igniter + ci phpunit-test
Code igniter + ci phpunit-test
 
Potato03 KotlinでAndroidアプリ開発(後編)
Potato03 KotlinでAndroidアプリ開発(後編)Potato03 KotlinでAndroidアプリ開発(後編)
Potato03 KotlinでAndroidアプリ開発(後編)
 
CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
 
Lina katayose pyladies3周年LT
Lina katayose pyladies3周年LTLina katayose pyladies3周年LT
Lina katayose pyladies3周年LT
 
Nimで競技プログラミングを始めた話(1ヶ月)
Nimで競技プログラミングを始めた話(1ヶ月)Nimで競技プログラミングを始めた話(1ヶ月)
Nimで競技プログラミングを始めた話(1ヶ月)
 
CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010
 
React componentのコンストラクタを追いかけて
React componentのコンストラクタを追いかけてReact componentのコンストラクタを追いかけて
React componentのコンストラクタを追いかけて
 
Ninja Testing at Toteka03
Ninja Testing at Toteka03Ninja Testing at Toteka03
Ninja Testing at Toteka03
 
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011PHPカンファレンス関西 2011
PHPカンファレンス関西 2011
 
Kotlinの紹介
Kotlinの紹介Kotlinの紹介
Kotlinの紹介
 
Blocklyduinoをできるまで
BlocklyduinoをできるまでBlocklyduinoをできるまで
Blocklyduinoをできるまで
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
 
2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT
 
PHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter updatePHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter update
 
ROSを用いた天吊型スカラロボットの共同製作
ROSを用いた天吊型スカラロボットの共同製作ROSを用いた天吊型スカラロボットの共同製作
ROSを用いた天吊型スカラロボットの共同製作
 
20111206 GLT vol.40
20111206 GLT vol.4020111206 GLT vol.40
20111206 GLT vol.40
 
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころエキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
 

Semelhante a Pythonでも型をつけたいだけの人生だった

20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
akihiro uehara
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
Takahiro Fujiwara
 

Semelhante a Pythonでも型をつけたいだけの人生だった (20)

まったりフラットデザイン講座
まったりフラットデザイン講座まったりフラットデザイン講座
まったりフラットデザイン講座
 
俺 と ご褒美 Bot
俺 と ご褒美 Bot俺 と ご褒美 Bot
俺 と ご褒美 Bot
 
みんなのPython勉強会#62
みんなのPython勉強会#62みんなのPython勉強会#62
みんなのPython勉強会#62
 
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
 
プロトタイプとワークフロー Prototype and Workflow
プロトタイプとワークフロー Prototype and Workflowプロトタイプとワークフロー Prototype and Workflow
プロトタイプとワークフロー Prototype and Workflow
 
チャットボットの定義と設計
チャットボットの定義と設計チャットボットの定義と設計
チャットボットの定義と設計
 
はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会
 
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐLINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
LINE WORKSを活用したチャットボットが現場とkintoneを繋ぐ
 
Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説
 
ロボットアームをPythonで動かす
ロボットアームをPythonで動かすロボットアームをPythonで動かす
ロボットアームをPythonで動かす
 
塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ
 
Chrome拡張で改善 表紙
Chrome拡張で改善 表紙Chrome拡張で改善 表紙
Chrome拡張で改善 表紙
 
FriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみたFriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみた
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
 
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
 
なぜ今OSGiか
なぜ今OSGiかなぜ今OSGiか
なぜ今OSGiか
 
20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
 
PredictionIOのPython対応計画
PredictionIOのPython対応計画PredictionIOのPython対応計画
PredictionIOのPython対応計画
 
LINE Commumity Microsoft_ConversationalAI_20200409
LINE Commumity Microsoft_ConversationalAI_20200409LINE Commumity Microsoft_ConversationalAI_20200409
LINE Commumity Microsoft_ConversationalAI_20200409
 

Mais de hiroya akita (10)

KyotoLT_Online_27.pdf
KyotoLT_Online_27.pdfKyotoLT_Online_27.pdf
KyotoLT_Online_27.pdf
 
はんなりPython #45
はんなりPython #45はんなりPython #45
はんなりPython #45
 
Python 3.10の新機能を 俯瞰してみる
Python 3.10の新機能を 俯瞰してみるPython 3.10の新機能を 俯瞰してみる
Python 3.10の新機能を 俯瞰してみる
 
KyotoLT(Online) 第26回
KyotoLT(Online) 第26回KyotoLT(Online) 第26回
KyotoLT(Online) 第26回
 
AppSync導入のすすめ
AppSync導入のすすめAppSync導入のすすめ
AppSync導入のすすめ
 
はんなりpython#32
はんなりpython#32はんなりpython#32
はんなりpython#32
 
Hannari python#27
Hannari python#27Hannari python#27
Hannari python#27
 
変数の重要度ってどうやったらわかるん?
変数の重要度ってどうやったらわかるん?変数の重要度ってどうやったらわかるん?
変数の重要度ってどうやったらわかるん?
 
みんなのはんなりPython勉強会
みんなのはんなりPython勉強会みんなのはんなりPython勉強会
みんなのはんなりPython勉強会
 
Lt debian 20190526
Lt debian 20190526Lt debian 20190526
Lt debian 20190526
 

Pythonでも型をつけたいだけの人生だった