Guidoさんに学ぶPythonが愛される理由
みんなのPython勉強会 #100
1/25, 2024
辻 真吾 (TSUJI, Shingo)

自己紹介
•

•

辻真吾（つじしんご）• 大学の研究所に勤めています•Pythonを使ったデータ分析が得意です•

www.tsjshg.info

略歴•

工学部計数工学→大学院修士→創業したてのITベンチャー（入社時社員7人）••

2年半で退職

大学院博士課程（バイオインフォマティクス）•

2005年博士（工学）•バイオインフォマティクス、エネルギーシステム、教育などにデータサイエンスを応用する研究活動•

2005年頃JavaからPythonに乗り換え•

2024年は良いことしか起こらないような気がしているおもな著書プログラミング未経験者向

Pythonでデータサイエ

講談社データサイエンス

けに書いたPythonの入門

ンスを実践するために必要な基礎ツールの解説。数学の章を執筆

入門シリーズの1冊。大学書。いちばん売れたPythonの入門書として有名（2010,2018改訂）（2018, 2022改訂）

初等レベルのアルゴリズ
ムとデータ解析の基礎をPythonで学ぶ本（2019）

データサイエンスをRとPythonの両方で学べる本。小学校の同級生との共著（2021）『Pythonデータ分析 実践ハンドブック』が昨年9月にでました！

リリースサイクル（自己紹介スライドの3枚目）

毎年10月に新バージョン5年でEOL（End of Life）を迎えるサイクル

https://devguide.python.org/versions/まずはじめに 〜Pythonの基本〜•

プロジェクトを始めた人••

最初のバージョン••

1991年に公開

何でつくられているか？
••

Guido van Rossum（グイドヴァンロッサム）氏

C言語で作られたCPythonが広く利用されているどうしてこんなに人気なのか？
• 今日のテーマ

Guido van Rossum
1956年生まれ（67歳）のオランダ出身プログラマ

https://gvanrossum.github.io/ただの天才1974年開催の国際数学オリンピックで銅メダルを獲得している！

fi

https://www.imo-of cial.org/participant_r.aspx?id=10303

NEC C&C賞を受賞！

2023年11月の受賞式のため来日
JDLA（日本ディープラーニング協会）とPyCon JP Associationがイベントを開催
https://www.candc.or.jp/kensyo/2023/group_b.html

まとめ記事と当日の動画あります

https://gihyo.jp/article/2023/12/guido-talkshow

https://www.youtube.com/watch?v=aaZuEPmHiQY

個人的にはまず、Guidoさんに謝りたい・・・なぜ謝りたいか？

•

時々「なぜPythonはこんなに流行っているの？」と聞かれたとき、「偶然の産物じゃないですかねー」と答えていただいぶ前に読んだこの本からの影響

https://www.hayakawa-online.co.jp/shopdetail/000000006787

徹底的なユーザ目線

ユーザが何を求めているかを知ることは難しいのでまず作る→使ってもらう→フィードバックをもらう→改良する
これが30年以上ずっとPythonがやってきたことフィードバックは重要だけど、••ユーザが求めるものをそのまま新機能として実装してはいけない
なぜユーザがそれを求めるのかを掘り下げて考え、機能を追加する必要がある

起業の失敗大全に書いてある•••MVP（Minimum Viable Product）を作って顧客のフィードバックをもらう
求められるがままに新機能を追加
一部の顧客のためだけ、さらに悪いときは誰の役にも立たない機能を追加してしまう•

これは「フライング」というカテゴリーに分類される•フライングを防ぐには、”顧客の真のニーズを理解することが重要”とある

https://www.diamond.co.jp/book/9784478113851.html

ABCの失敗からこの教訓を得たようです
からの抜粋

Basicに代わる初級者向け言語としてABCを開発するも流行らず。
時間をかけて失敗を考察
インターネットが無い時代だったのでフィードバックを得ることが困難でユーザへの一方通行になってしまった
https://neopythonic.blogspot.com/2016/04/kings-day-speech.html

Pythonの哲学

この質問の背景とGuidoさんの回答を理解するために、まず周辺知識を紹介

The Zen of Python

Pythonインタープリタを起動してimport thisとするとPythonの哲学が出てくる
作者はTim Peters（Guidoさんではない）

Tim Peters0.9.1（90年代初期）からPythonの開発に参加
2006年米国ダラスで開催されたPyConでのインタビュー動画よりhttps://www.youtube.com/watch?v=1wAOy88WxmYTimSortの開発者•

ソートとは、数字や文字を順番に並べ替えること•

これまでのコンピュータサイエンスの研究の成果で、いろいろなやり方（アルゴリズム）が開発されている• ソートについて詳しく知りたい方は拙著『Pythonで学ぶアルゴリズムとデータ構造』など•

2001年、TimがPythonのためにTimSortを開発•

性能が良い（実世界のデータで速い）ため、その他の言語でも使われている

https://bookclub.kodansha.co.jp/product?item=0000276050

Pythonの哲学

Pythonと似た言語にPerlがある
Perlはいろいろな書き方ができるので、同じ機能を実現するコードがプログラマによって変化する
Pythonはユーザ目線で分かりやすさ（読みやすさ）を重視

詳しく解説したブログもあります

https://python-history.blogspot.com/2009/01/pythons-design-philosophy.html
日本語訳もあります

https://python-history-jp.blogspot.com/2009/04/python.html

誰が書いても同じようなコードになることの意味
からの抜粋

GoogleやFacebookのコアはアイディア（うまく設計された）プログラミング言語を使えば、アイディアを簡潔に伝わりやすい形で表現できる！
実際、Googleの共同創業者Larry PageとSergey Brinは最初の検索エンジンのアイディアをPythonで表現した
https://neopythonic.blogspot.com/2016/04/kings-day-speech.html

GIL（ぎる）の解消とPythonの高速化

まずは、用語の解説から

Global Interpreter Lockとは？（1/2）
インタープリタ（プロセス）が実行するスレッド
はある瞬間には1つのCPUしか使えないという制限

CPUをレジ、スレッドをお客さんの列とするとCPU

スレッド

1CPU（レジ）に1列（スレッド）なら何の問題もない

Global Interpreter Lockとは？（2/2）

CPU

スレッド

CPU（レジ）が2つあって、スレッドが2つ（お客さんが2列）あるのにレジを同時には使えない（ある瞬間はどちらか1つ）（注）multiprocessingモジュールなど、いまでもこれを解決する手段はある

GILの制限を解放する•

実装がシンプルになるなどの利点も多いが、議論の的になってきたのも事実•

Sam GrossさんによるGIL無しPythonのプロトタイプがすでにある•

3.13（2024年10月のリリース予定）からGIL無しCPythonを選べる•

ただし、まだ道半ば。この先5年くらいかけてじっくり取り組む•

その他JIT（Just In Time）コンパイラの導入も検討されている•

ただ、高速化は思ったより難しいので、簡単にはいかないと思う

https://www.linkedin.com/in/samgross/流行の大規模言語モデルを使った生成AIについて•

単純な作業をさせるのはいい
プログラミング初心者の手助けにはなるだろう
ただ、クリエイティブではない•「OSを設計しろ」とかいっても無理•「Pythonを高速化するには？」とか聞くと通り一遍の回答しか返ってこ•ないしね
ただ、コンピュータサイエンス分野が面白いことになってきているのは事実••

Guidoさんに活動を見てもらうLT

我らがnikkie登壇！

個人的にはこれが1番

市販の電子辞書に無理矢理Linuxを入れる@puhitakuさん
Guidoさんも感想で「Super Cool」と絶賛

Follow your heart, Be curious!

•

高校卒業から大学入学の時期についての質問
数学と物理は得意だったので、数学を専攻（副専攻に物理を選択）•

2年経ち、数学は難しい、物理はもっと厳しいことが分かった•でも大学ではじめて出会ったコンピュータは楽しかった！
• 当時はパンチカードでプログラミングだけどね•「会場にいるであろう18歳の質問者へ一言」という司会への返答がタイ•

トルの言葉

Pythonが愛される理由••

徹底的なユーザ目線にたった開発• 失敗から学ぶ事は重要•GuidoさんによるとTimもユーザ目線の人•

外部ライブラリの開発者もユーザの1人

Pythonの根底にある強固な哲学•••

誰が書いても似たコードになるアイディアの表現、交換に使える

結局、Guidoさんの人柄か？
•例）司会者からGIL（ぎる）の質問を受けたとき、第一声でglobal
interpreter lockと言い直す

ご静聴ありがとうございました
今年もよろしくお願いいたします