nikkie-ftnextの日記

イベントレポートや読書メモを発信

『ロバストPython』読み始めました 📘「あなたの書くPython、将来の開発者に意図、伝えていますか?」 私(Python歴5年)「すいませんでしたあああ!🙇‍♂️ やり方マジで教えてください」

はじめに

やよいっち、おめでとう〜! nikkieです。

ζ*'ヮ')ζ<うっうー
ζ*'ヮ')ζ<うっうー
ζ*'ヮ')ζ<うっうー

そんなめでたい日に、こちらの本も世に解き放たれましたよ、『ロバストPython』!
すっごく楽しみにしていた一冊で、大著なのでまだ読み切ってはいませんが、この本で扱っていることは完全理解した(と思う)ので、アウトプットしてみます。

目次

ロバストPython

2023/03のオライリーさんの新刊です🎉

(追記 2023/03/26)書籍で紹介されるコードはこちらみたいです

(追記終わり)

The Global Dev Studyで知ってたよ

Forkwellさんの勉強会シリーズ The Global Dev Studyの中にPython特集回「Past, Present and Future of Python」があります。

ここで著者のPatrick Viaforeさんが話されていて、書籍の存在は知っていました。
日本語訳出ると知ってからは発売をかなり楽しみにしていました

監訳はHayaoさん

(追記 2023/03/26)監訳エントリ

(追記終わり)

HayaoさんはPyCon JPや国内のPyCon miniでトークやLT1など定期的に発表されていますし、近年はかなりの数の技術書の査読2をされています。
最近のトークで私にはすごく勉強になったのが2020年のインメモリー ストリーム活用術3

ロバストPython』は章でいうと4分の1くらい読みましたが、訳がまさしくrobustで(訳者の長尾さん素晴らしい👏)、すごく読みやすいです。
Python機械学習プログラミング』の福島さんの監訳注4を彷彿とさせるくらい、Hayaoさんによる監訳注が充実しています。
typoの類は読んだ範囲に見つかっていないのも驚嘆。

"ロバスト"なPython

ロバスト(robust)には「強靭な」「頑丈な」「健全な」といった意味があるようです(ウィズダム英和辞典)。
1章ではロバストクリーン(=意図を表現)+保守性が高いと定義されます(副題のクリーンで保守しやすいコードの通りですね)。
なお、私はロバスト(頑健)と聞くと、筋骨隆々な感じを勝手にイメージしちゃうのですが、この本のロバスト柔軟性による強さ、例えるならとのことです。
柔よく剛を制す!

1章を読んだところ、この本が中心に置いていると私が理解した問いは以下です:

あなたの書くコードは、価値を提供している。
コードは新たな価値を提供するためにどんどん変更され、あなたの手を離れることもある。

では、あなたのコードは、未来のメンテナがあなたと同じように素早く価値を提供できるように、意図を伝えていますか

Pythonのコードで意図を伝えるテクニックが4部・全24章で指南されます。
なお、この本はリファレンスではなく、議論するための本ということで(はじめに)、読んでて「このテクニックはいまはまだ飲み込めないな(判断保留)」という箇所もありました。
読書会をやると非常によさそうな本です(どなたかご一緒しませんか〜?📣)

正論のガトリング👊👊👊👊👊🥺

1章はマジで正論パンチ5の連打、すなわち、正論ガトリングでした(あいたたたたた...🥺)。
正論すぎて泣いちゃった...🥺
心に余裕があるときに読むのをオススメします

  • コードを介し、時を超えたコミュニケーション(今の開発者=私と、将来の開発者)
  • 将来の開発者が自信を持ってコードを変更できる(=ロバストPython
  • -> 将来の開発者たちは、あなたの決断の上に成り立つ
  • 1.3で例。コンテナ型(リストや辞書など)や反復処理(for文、while文)の実装は選択肢の中から1つを選んでいるという点で意図を伝えている
  • すべての抽象は選択の結果であり、すべての選択は意図的なものであれそうでないものであれ、何かを伝える。(1.4)

ぐう正論...

1章を読んだ私の感想なのですが、

書いているコードの選択=意図を伝えているという側面にあんまり目を向けずに
ぼーっとPython書いてんじゃねーよ6

で貫かれた感覚です🥺

もうちょっとマイルドに言ってみると

「意図を表現したコードが書けないのにソフトウェア開発とか、なめているのですか?」7

🥺 🥺 🥺

この本は1章でかなり打ちのめしてきた後、きちんと意図を伝えるPythonの書き方を教えてくれます8
書籍ページにもありますが、型ヒントにかなり重きをおいていて、学びがいくつもありました。
学んだことはちょっとずつ1日1エントリでアウトプットしていきます〜

なお1章を読んでいて、正論パンチを受けきれなくなったなと思ったら、そこでいったん閉じてもいいと私は思います。
書籍には通し読み以外に、つまみ読みという立派な読み方もありますので!
私は通読にこだわりすぎず、書籍の知見を(ごく一部だけだったとしても)自分の文脈に活かすことを重視した立場です。

偉い。偉いよ。よく、耐えた。9
そのページまでよく読みました!自分を褒めましょう!!
用法用量を持って、楽しみましょう!

終わりに

ロバストPython』がどんなことを扱っているのか、現時点の理解をアウトプットしました。
手元のコードの将来の開発者に、Pythonで意図を伝えるテクニック!

一人で読んでたら受け止めきれない正論ガトリングも、みんなで読んだら怖くない(かも)。
議論のための本とのことですし、ホント読書会向きな気がしますね〜


  1. このLT、大好きです
  2. Curriculum Vitae of XaroCydeykn - 何かを書き留める何か の「技術書査読」をどうぞ
  3. ここで得た知識が趣味プロジェクト(シオン・プロジェクト)やひいてはメンテしてるSpeechRecognitionに活きましたからね!🙌 発表ありがとうございました
  4. 福島さんによる注がめちゃめちゃ手厚いです ref: 2月のみんなのPython勉強会は"機械学習新刊特集"!予習積ん読リスト📚 #stapy - nikkie-ftnextの日記
  5. チコちゃんのつもり
  6. お隣の天使様のつもりです。マイルドになってなかったらほんとごめんなさい🙏
  7. あれ、これ、Twitterで流れてきた洗脳的なやり方かも
  8. #かがみの孤城 🐺🏰を、観てください!🥺 - nikkie-ftnextの日記 (界隈ではここアキとして有名なあのシーンです)