ありがとうございました!!
け-04 Everlasting Diaryに来ていただいた方、誠にありがとうございました #技書博
— nikkie / にっきー 技書博 け-04 Python型ヒント本 (@ftnext) 2024年5月12日
立ち読みされる方には途中から「Pythonで型ヒント書いてますか?」と聞くようにし、そこで色々伺えたので更新の方向性が見えた気がします。フィードバックに感謝です
boothで購入いただいた方もありがとうございます https://t.co/5O79urXa75
目次
『引数の型ヒントをlistにしてはいけません』って、何よ
告知ブログをどうぞ
以下のようにcollections.abc.Iterable
を使う型ヒントの書き方を扱った小冊子です。
from collections.abc import Iterable def plus_one(numbers: Iterable[int]) -> list[int]: return [n + 1 for n in numbers]
電子版頒布中です。
頒布の経緯
「なんで書いたのですか?」を何回も話したので、こちらにも。
購入者がアクセスできる最新版には追加済みです
元ネタとしては、公式ドキュメントに書いてあるんですよ!!
https://docs.python.org/ja/3/library/typing.html#typing.List
Note that to annotate arguments, it is preferred to use an abstract collection type such as Sequence or Iterable rather than to use list or typing.List.
意訳 関数の引数に型ヒントを書くときは、list
やtyping.List
を使うよりも、Sequence
やIterable
のような抽象コレクション型を使うのが好ましいことに注意すること
ただ私がこれまでに出会ってきたコード(例:書籍にあるコード)は、引数の型ヒントがlist
になりがちなんですよね。
ドキュメントのこの箇所を念頭に置いた上で、こだわりを持ってあえてlist
を使っているならそれはそれでよいと思いますが、どうもドキュメントのこの箇所は読まれていないように思われます。
また、人は易きに流れがちなので、「Iterable
? list
でいいじゃん」となりがちなのかなと想像します
私はドキュメントに沿って好ましいPythonを書きたいというこだわりがあるので、投げ込んだ今回の小冊子1
引 数 の 型 ヒ ン ト を list に し て は い け ま せ ん
Python 3.9のリリース(2020年)を機に、私はこちらを知りました。
【オンライン】はんなりPython #34 python3.9を語る LT会 - connpass
頒布中に調べていたんですが、ベストプラクティスとしてドキュメント化されていました。
各種公式ドキュメントたちよ、もっと声高々に主張していこう!
(1) https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html#standard-duck-types
Use Iterable for generic iterables (anything usable in "for"),
(2) https://typing.readthedocs.io/en/latest/source/best_practices.html#arguments-and-return-types
- arguments(引数)は抽象型
- return values(返り値)は具体的な型
当日の様子
設営完了
設営完了!
— nikkie / にっきー 技書博 け-04 Python型ヒント本 (@ftnext) 2024年5月12日
したと思う! #技書博
everlasting diary
け-04
『引数の型ヒントをlistにしてはいけません』
です。よろしくお願いします!https://t.co/rxAGbCz7sp pic.twitter.com/zgLL0esG0B
広がるSNS上での反響、ありがとうございます!
一部抜粋
boothで買うた👀 https://t.co/c7N9KCpsTB
— 高橋 かずひと@闇のパワポLT職人 (@KzhtTkhs) 2024年5月12日
とりあえず買ってみた > 「引数の型ヒントをlistにしてはいけません」を Everlasting Diary で購入しました! https://t.co/doJH0g1Ypd #booth_pm
— からあげ (@karaage0703) 2024年5月12日
へー。Python初心者だから興味あるなー。電子版で買えたりするのかな?(よく分かってない)
— SHIIBA Mitsuyuki (@bufferings) 2024年5月12日
5/12(日)の #技書博 10でPythonの型ヒントについての小冊子を頒布します(け-04)。『引数の型ヒントをlistにしてはいけません』 - nikkie-ftnextの日記 https://t.co/inoBrsD6dq
ふりかえりゾーン
- この小冊子(新刊)、着手したのは5/8です。見本誌提出期限のその日に爆誕しました
- PyCon US 2023諦めなどと同じコースに入っていたと思うのですが、今回は捻じ曲げたぞ!!!!
- 諦めずに書き切れたのは、毎日1記事で小さい分量であろうとも記事を書く習慣の力かなあ
- とはいえ私の課題は、長期を計画して遂行する必要があるタスクに対して、より短期的なときめきで動きまくってしまうのをどうするか
- ありがとう、キンコーズさんのセルフコピー(小冊子だからなんとかなった)
- 小冊子以外は落としました(運営の皆さま、大変ごめんなさい)
- サークルカット
- サークルアピール
- 当日の訴求がとても大事そう
- 立ち読みした方(買わなかった方も含む)とお話しできたのが、めっちゃよかった
- フィードバックが大収穫!
- ポスター発表に近かったってことかな
- 型ヒントを書いたことがない方には、むしろ小冊子をオススメしませんでした(順を追うべきだと思うので)
- 私のこだわりは
Iterable
ですが、それだと辞書を含むのがネックという議論ができたのがめちゃありがたい- 一人で考えていても出てこなかった見方に出会えた
- (
Sequence
にする案も浮かぶが、Iterator
も受け取りたいよね。宿題)
- フィードバックが大収穫!
- お話ししたことでいただいた示唆
- 「型ヒントとは何か」といった前提を盛り込んでから深い話という構成の可能性
- なんのために型ヒントを書くか、も書けそう
- 読みやすいコードはチームの文脈によって変わるんだろうな〜
- 私は
Iterable
にこだわりがあるけれど、チーム開発で常時採用できるわけではないということかな - それでも私は公式ドキュメントに沿ったPythonコードを世界に増やしたいんだ!
- 私は
- 「型ヒントとは何か」といった前提を盛り込んでから深い話という構成の可能性
終わりに
技書博10、ありがとうございました!
プロジェクトの進行としては致命的でしたが、逆転頒布できて本当によかったです。
いただいたフィードバックを元に、今回の題材はブラッシュアップできそう! これがとても嬉しいです。
次回は半年くらい後の2025年1月。
マリネリアってISFの会場でもおなじみなんですよね。
逆転不要になるような自分にあったやり方を見つけて、また出展したいなあと思っています(もしかしてこのブログみたいに絶えず書く可能性!?)
【⚓超重要告知⚓】#技書博 11の開催が決定!
— 技術書同人誌博覧会(技書博) (@gishohaku) 2024年1月29日
2025年(打ち間違いではない)の技術同人誌初めは技書博から!
日時:2025年1月25日(土)
場所:横浜産貿ホール マリネリア(https://t.co/K19FDbRGGy)
にて開催する事となりました!
技書博10も近いですが、楽しみが増えましたね!
P.S. 「こだわり」はこの記事の影響です
さすが、ばんくし王👏
- 私がやっていることは、劇場の至るところに「野球をしてはいけません」を貼る琴葉ちゃんっぽいなと思っています。つまり、nikkieは琴葉ちゃんなんだ!↩