Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

【その5】Python自体にコントリビューションするには? 〜 Pythonエンジニア列伝 Vol.3 石本敦夫氏

f:id:kamekokamekame:20171211123435p:plain

お客様

f:id:kamekokamekame:20171208171227j:plain:w30 : 石本敦夫氏 @atsuoishimoto

聞き手

f:id:kamekokamekame:20171208171433p:plain:w30 : 佐藤治夫 @haru860 f:id:kamekokamekame:20171208171436j:plain:w30 : 清原弘貴 @hirokiky

Python自体にコントリビューションするには?

清原)最近でPython自体にコントリビュートしてる人は、石本さんとか、稲田さん(@methane)ぐらいしか僕は知らないですね。

石本)やはり英語だしね。

清原)あー、メーリングリストがですか。

石本)Python-Dev を見ててもスピードがすごい。すこし読むだけでも結構大変。

佐藤)パワーが要りますよね。

f:id:kamekokamekame:20171211122841p:plain:w300

石本)暇なときは何かやりたいなとは思ったり、例えばコアデベロッパー狙おうかなとか一時期思ったけどね。やはり、あれは難しい面がある。コアデベロッパーはきちんと仕事してプレゼンス出しているので、成果がすごい。

佐藤)コアデベロッパーはどういう定義なんですか?

清原)コアデベロッパーはPython自体にコミット権を持っていることですかね。

佐藤)なるほどね。Pythonにはコアデベロッパーはどれぐらいいるんですか。

石本)おそらく100〜200?昔からだから、今はもう活動してない人もいそうです。

清原)コアデベロッパー、ヨーロッパとかアメリカの人が多くて、ダイバーシティ的にどうなの?と言ってる人もいましたね。日本人が増えると良いですね。

佐藤)そうなんですね。この辺りの事情の話は面白いですね。あまり流れてない情報というか。

石本)そうですね。見てると雰囲気は分かるけど。

清原)オープンな情報だけどオープンではない。

佐藤)オープンには流れてるけど、誰が取り立ててそれをまとめて情報にしたりとかもしてないし。

f:id:kamekokamekame:20171206180755p:plain:w200

清原)例えば aodagさん*1は、Pythonのパッケージング周りのメーリングリスト、 DistUtilsSig を読んでるんですね。お酒を飲んでるときとかにそのサマリーを聞くのが僕の日課になってます。PyConJPでの aodag さんの発表もそんな感じで面白い。サマリーを知れるのはありがたいですね。まぁメーリングリストも読めて当たり前だけど、量も多いし読まないですよね。

清原メモ

python-devについてであれば「DSAS開発者の部屋 - 最近のpython-dev」を読むのがオススメです dsas.blog.klab.org

石本)メーリングリストはある程度目を通しておいとくと色々役立ちますよ。特にトラブルのときとか。例えばバグのレポートを探すとき、このモジュールがおかしいとなればその人の名前が付いたバグを探すんですよ。概ねモジュールの担当者が決まってるんですね。ソースコードを読むときも、該当箇所を一番よくメンテナンスする人の名前でパッチを探すと分かる。

佐藤)そんなにPythonのバグ踏むもんなんですか。

清原)Pythonのバグ、聞いたことないですね。

石本)ここの実装どうなってるのかなと、気になったときとかですね。

佐藤)少し趣味っぽい感じ(笑)。

石本)そうそう(笑)。中開けて調べてみる。ログとか、その人のパッチを探してみると問題の原因とか経緯が分かったりするので、見ておくと面白い。機能の経緯が分かるし。

佐藤)なるほどね。機能の経緯は面白いですよね。

清原)ちなみにC言語のスキルは必要ですか?

石本)まぁあったほうがいいですね。Python自体、C言語で書かれてるわけだし。

清原)ですよね、CPythonですよね。

若い人が取り組んだほうがいいこと

佐藤)若い人も、CPythonの実装を読んだほうがよいと思いますか?

石本)どうでしょうね。人それぞれだけど、たぶん最初からやる必要はないと思いますよ。PyQとか見てる初心者の人が見るものではないとは思う。興味があったらでよいと思いますけどね。

佐藤)仕事ではどう役に立ちますか?

石本)言語の実装を知っておくと、どのように動いてるか分かりますね。とにかくバグが分かりやすくなる。例えばエラーメッセージは意味が分からない内容が出てくるじゃないですか。処理系を知っていると、どうしてこのメッセージが出てくるのかを理解できる。理解できるとエラーメッセージを見て、すぐ直しかたが分かったりするんですよ。あとはパフォーマンス上の特性。Pythonでこう書いたら遅いのはなぜだろうとか。

f:id:kamekokamekame:20171211122826p:plain:w300

佐藤)深い。どうしてそのエラーメッセージになるかまでは、考えてないかも(笑)。

石本)読んで腑に落ちない文章、出てくるじゃないですか。単語が分からなかったりとか。そのようなことがなくなります。

佐藤)もう一歩踏み込んだ見方ができるんですね。

清原)僕個人の悩みなんですが、Pythonのパフォーマンス改善するときに cProfile ですごい頑張って見るんですけども、いまいちプロファイルの結果見てもよく分からないときがあります。そういうところに勘所みたいなのを持てたらよいなと思いますね。

石本)そう。バイトコードの動きが分かると、その辺の見方も少し違ってくるかな。

佐藤)言語マニアの傾向ある(笑)

石本)Pythonは実装がシンプルで、教科書的なところがありますね。一番単純な形式の、スタックマシンという形式の言語で、パーサーもかなりシンプルだから勉強にはちょうどよいんですよ。

清原)MINIXみたいな、イメージ的には。

石本)そうそう。

佐藤)プログラミング言語をメタで捉えてる視点がありますね。

清原)メタな話で「プログラミング言語とは」という文脈で勉強になる本はありますか?

f:id:kamekokamekame:20171211124242p:plain:w200

石本)どうだろう。僕がそういうのを覚えたのはもう40年ぐらい前の話ですね。小学校高学年、プログラミングの本もあまりなかった頃だけど。もうそのぐらいですよ、10歳くらい。

清原)10歳が抽象構文木の話とかしてたらヤバイでしょ(笑)。外で遊ぼう

石本)当時はそんな本もなかったからね、プログラミング言語自体を使わなかった。

清原)たしかに、Pythonの人として多少はPythonの深い部分もたしなんでおきたい気持ちが僕の中にありますね。

石本)あと一応C言語やっておくと、 Linuxを使った開発でも役に立つかも。LinuxがC言語の世界なんで。覚えておくと使い回しは効きそう。

清原)そのようなときのC言語はすごく難しいというか、簡素なC言語と違って関数ポインタがどうのとか、#ifdef がすごいあったり、CPythonだとPyObjectがすごいあったり。

石本)大抵のCプログラムはそんなもんだよ。

清原)そんなもんと思ってやるしかないか。頑張ろう。

佐藤)プログラミング言語を深く知っていると実際のプログラミングするときの視点が変わるのは面白いですね。

石本)例えばPythonで a + b って書くじゃないですか。熟練してくると a + b ではなくて、 PyNumber_Add(a,b) に見えてくる。

清原)死神の目(デスノート)みたいな(笑)。

石本)Pythonの内部のAPIでどのように動いていくというのが、だいたい雰囲気が分かってくる。そうなればトレースバック情報が大量に出力されたときに「ここのところでエラーがあるな。変なデータを受けてるんだな」というのが分かる。

佐藤)そのようなことも知ってると、Pythonのプログラム書いてるときの面白みがまた変わってきそうですね。

石本)知らない言語は知らない言語で面白いですけどね。

f:id:kamekokamekame:20171211124312p:plain:w150

石本)だいたいの言語は同じなんで、応用も利きますしね。

清原)それはいいですね。ところでプログラミング自体は始めたきっかけはなんですか。

石本)いや、なんでかって聞かれても覚えてないけど。

清原)覚えてない(笑)。

石本)電子工作を少しやって、それの延長ですね。当時は当然、コンピューターなんか持っていないから、紙に書いて。

清原)コンパイル。

石本)そうそう。

清原)すごい。てっきり Altair8800 とかを持ってたのかと思ってました。

石本)そんなの買えないよ(笑)

清原)買えないか。10万、30万とか。

石本)そうそう。俺が初めて買ったMac Plusだって、あれ60万ぐらいしたもん、確か。

清原)高いですね。

佐藤)Pythonの黎明期ぐらいからやってて、今のこのPython界隈をどのように思ってますか

石本)活気があって良いなと。プログラミングとかコンピューターの環境自体が過去と全然違うんで、何を言うにも違い過ぎて比較しようがないですね。

清原)石本さんがいいなっと思うのは「いや、わしのころは」って言わないことかなと思います。

石本)昔やってたことなんか、今になれば正直バカらしくなっちゃいますもん(笑)

清原)こんなことやってたのにって(笑)。

石本)一番真面目にプログラミング始めたころって、足し算とかすごい難しいんですよ。アセンブラだけで全部を書かなきゃいけないしね。

清原)難しいですね。割り算が超むずい。

f:id:kamekokamekame:20171211124354p:plain:w200

石本)四則演算ができたら一人前みたいな時代ですね。子供は外へ行って遊んでりゃいいのに、延々、足し算とか引き算とかやってるわけですから(笑)。

清原)高級言語が解決してくれますからね。

石本)今だったら少し検索すれば解決できる問題を、ずっと取り組んでたわけで。

清原)そうですね、確かに。

石本)まぁ今から考えたら、やってられなくなりますね。

清原)かと言って、アセンブラから学ばせるのが良いわけでもないですしね。高級言語を使えばと思います。

石本)だから自分がした苦労というのは、そこまで役に立つ苦労だったのかなとも思います。

清原)僕も学生時代に趣味でポケコンでやってたんですけど、ものすごくは役に立ってない。

石本)ちょっとやれば勉強にはなる。ちょっとやればいい。

f:id:kamekokamekame:20171211122841p:plain:w200

清原)考え方はとても勉強になるし、メタな部分で役に立ちますね。例えばPyQの学習コンテンツを作ってる中で、あのROTATE命令があることで云々みたい知識はとくに役立ってないですね(Z80のこと)。

石本)やる意味はあると思うけど、そう延々とやるものでもない。余計な苦労してもしょうがないんですよ。

佐藤)使えるものは使って、また新しい価値生み出したほうが生産的ですもんね。

f:id:kamekokamekame:20171211124453p:plain:w200

石本)昔と比べても全然、なんの分野でもそうだろうけど、勉強って全然やりすいんじゃないかな。

佐藤)そうですよね。

石本)だからもう、あまり余計なことを考えないでドンドンやっていけばいいと思います。

→ 次回は、 強みを掘り下げていこう です。

目次

PyQオフィシャルブログでは『Pythonエンジニア列伝』を不定期掲載します。Pythonに関わっているさまざまな人にインタビューし、これからプログラミングを学習する方にエンジニアが普段考えていることや取り組んでいる活動などを紹介していきます。

(まとめ:大村亀子 @okusama27

pyq.jp

*1:PyCon JPで最多発表数

Copyright ©2017- BeProud Inc. All rights reserved.