アイリッジ開発者ブログ

アイリッジに所属するエンジニアが技術情報を発信していきます。

PyCon mini Hiroshima 2019に登壇しました

こんにちは、アイリッジの鈴木です。 2019年10月12日に広島市立大学サテライトキャンパスにてPyCon mini Hiroshima 2019が行われました。

hiroshima.pycon.jp

今回、『Pythonで楽しむ初等整数論』という題目で発表を行いました。 CfPの応募から当日の登壇までを振り返りたいと思います。

CfP応募まで

2019年9月に開催されたPyCon JP 2019にいくつかCfPに応募していましたが、1つだけ補欠になった以外は不採用でした。 その中から、自分が面白いと思っていた初等整数論を題材に広島で発表としようと思い立ちました。 会場が広島市立大学であり、学生もある程度集まるかなとか、 「AIだけじゃない?Pythonを知ろう!」というテーマなので科学技術計算よりのテーマがあってもいいかな、と考えていました。

初等整数論は予備知識を必要とせず学ぶことができ、かつ面白い数学の分野の一つです。 Pythonやライブラリを使って初等整数論に関する問題を書いて解いて数学とPythonを楽しみましょう。

という概要を書き、提出しました。 採択の連絡が来るまでドキドキしていましたが、無事採択されました。

中身を考える

数学を題材にプログラミングをするならば、2つのアプローチがあります。 1つは定理のステイトメントをそのまま実装する、もう1つは定理の証明を実装する、です。

定理のステイトメントを実装する場合は何らかの等式を含むものがわかりやすいです。 例えば、今回の発表で扱ったピタゴラスの定理やピタゴラス数はa^{2}+b^{2}=c^{2}をそのまま実装すれば実現できます。 また、ベルトランの仮説「p _ {n} n番目の素数とすると、 p _ {n+1} \lt 2p _ {n}である。」も条件をif文で書けば実現できます。 様々なfor文を組み立てる際には標準モジュールであるitertoolsモジュールが非常に役に立ちました。

定理の証明を実装する場合、構成的な証明、つまり何らかのアルゴリズムが導ける証明はプログラミングしやすいです。 今回の発表で扱った無限降下法はその典型です。 元々は素数が無限個あることのユークリッドによる証明を扱う予定でしたが、 調べていくうちに、ピタゴラス数とも関係のあるフェルマーの2平方和定理の方が前半の内容との親和性が高く、かつ面白いなと感じ始めて急いで書き換えました。 とはいえ、無限降下法を実際にPythonやSymPyで実装するのはちょっと大変でした。

発表練習は会社で2回ほど実施しました。 多くの人にレビューをしていただきました。 特に、@bbrfkrさんには有益なコメントをいただき、内容がブラッシュアップされて非常に助かりました。

発表当日

元々、前日の10月11日午前中に広島に向かう計画を立てていました。 台風19号が本州に接近していたので本当に行けるのか不安でしたが機体が少し揺れた程度で無事に到着できました。 発表スライドはSpeakerDeckにあります。

speakerdeck.com

いざ発表しようとHDMIケーブルを接続しましたが、なぜが画面に表示されずに非常に焦りました。 直前にアップロードしていたおかげで、最前列にいた@koedoyoshidaさんにPCを貸してもらい、無事発表できました。 30分で理解するには、特に後半が難しく大変ですが、スライドやGitHubにあるJupyter Notebookを参考に手を動かして理解いただければと思います。

github.com

最後に

PyCon mini Hiroshima 2019は非常に面白い発表が多く、とても有意義なカンファレンスでした。 実行委員会の皆様に感謝したいです。 また、会社には旅費やプレゼンテーションのレビューを含めて多大な支援を受けました。 非常に助かりました。

自分の発表をきっかけに数学やPythonに触れる機会が増えればいいなと願っています。