PyCon US 2024参加レポート

#02PyCon US 2024 Day 2⁠CPythonコンパイルの新たなパイプライン

PyCon US レポートの2回目は、カンファレンス2日目の様子をお伝えします。さまざまなトークに加え、Diversity & Inclusionパネル、PyLadiesオークションといったPyCon USならではの特色あるイベントが開催されました。

Diversity & Inclusionパネル

2日目の朝はDiversity & Inclusionパネルです。各国のコミュニティメンバーがパネリストとして登壇し、ディスカッションをするというよりは、それぞれの経験や考えを共有するということがメインに行われた印象でした。アジアからはインドネシアのDima氏が登壇していました。

Dima氏は昨年東京で開催されたPyCon APAC 2023に参加して、クロージングで「PyCon APAC 2024はインドネシア」とアピールしていたので、日本で見たことがある人もいると思います。Dima氏は2019年にPyCon Indonesiaにボランティアとして参加し、2020年からリードオーガナイザーとして活動してきたとのこと。

Dima Dinama氏
Dima Dinama氏

Abigail氏は0日目のパーティーで同じテーブルにいた方でした。2017年にガーナで開催されたDjango Girlsに参加し、その後ガーナのPythonコミュニティやPyDataガーナに参加し、自らPyLadiesガーナを立ち上げたそうです。

挑戦したことや大変だったことは?という話では、Abigail氏はコミュニティを立ち上げるのは大変で、維持するのはもっと大変だということを語っていました。Dima氏はPyConを始めたときにどうやってスポンサーや人を探すのかがわからなかった、PSFがカンファレンス開催に助成金を出してくれるのは本当に助かったと語っていました。またブラジルではCOVID-19後、多くの小さなコミュニティが孤立し分裂している問題があるそうです。カンファレンスが健全な場となるために、安全な場所を作る必要があるという話が印象的でした。

国を超えても似たような課題もあれば、まったく異なる課題もあると感じるパネルディスカッションでした。

Day 2 Keynote⁠Simon Willison

2日目のキーノートスピーカーのSimon Willison氏はDjangoの共同作成者ですが、最近はAIとLLM(大規模言語モデル)に取り組んでおり、トークはこれらについての内容でした。

Simon Willison氏
Simon Willison氏

まずAI(人工知能)はArtificial Intelligenceの略ですが、ChatGPT、Google Gemini、ClaudeやLlamaは「AIではなくImitation Intelligence(模倣知能)だ」と語られました。知能を模倣すれば有用なことができるということです。

このようなサービスができることは文中の次の単語を予測するだけで、統計的にオートコンプリートしているだけです。ただ、より良いオートコンプリートになると便利になるということです。筆者もこの考え方には非常に同意しました。

どのモデルを使うのがよいか?という質問に対しては「Vibes(雰囲気で⁠⁠」と語っていました。参考になるサイトとしてLMSYS Chatbot Arena Leaderboardが紹介されました。このサイトではLLMをランク付けしています(2024年6月21日版ではGPT-4oが1位、次いでGeminiが2位でした⁠⁠。

多くのモデルはオープンなライセンスモデルですが、オープンソースではありません。iPhoneを使っている人にはMLC Chatというアプリをインストールすると、オープンソースライセンスのMistralというモデルが使えるためおすすめだそうです。ここでは例としてPythonでCSVを解析する方法を質問し、ほぼ正しいコードが回答されていました。

Simon氏の現在のメインプロジェクトであるdatasette.ioについても紹介していました。このサイトはデータを探索して公開するためのツールで、さまざまな形式のデータを分析、探索して、対話的なWebサイトやAPIとして公開することができるそうです。このサイトにLLMを活用した機能の追加をしているそうですllm.datasette.io⁠。非構造化された大量のテキストから、LLMを使って活用できる構造化されたデータに変換するというものです。例としてPSFの議事録ページから構造化したデータを取得していました。このツールとWebサイトは普通に便利そうだなと思いました。

他にもAIとLLMに対して、ここでは書き切れないほどさまざまな知見が紹介されていました。興味のある方はぜひビデオを確認してみてください。

食事がおいしいPyCon US

筆者は過去PyCon US 2019(クリーブランド)とPyCon US 2023(ソルトレイクシティ)に参加しました。その様子は以下の記事でも参照できます。

その過去2回と比べると、今回はダントツでカンファレンスで提供される食事がおいしい!!といううれしいことがありました。カンファレンス会場によるものなのか、イベント主催者側の意向かは不明ですが、朝食も昼食もとても豪華でおいしいため、食事の時間も非常に楽しみだったことが印象的です。筆者はホテルで朝食を食べていましたが、この内容なら朝食無しのホテルでも全然問題ないなと思いました。来年も同じくらいおいしい食事だといいなぁ。

フルーツがたくさんの豪華な朝食
フルーツがたくさんの豪華な朝食
ビュッフェスタイルのおいしいランチ
ビュッフェスタイルのおいしいランチ

CPython's Compilation Pipeline

本トークはCPythonのコア開発者であるIrit Katriel氏による、Pythonのコードを解析して実行するパイプラインをPython 3.13でどのように変更するか、という内容です。Pythonのコード実行には2つのステージがあります。PythonコードからバイトコードというCPythonの内部表現へのコンパイル処理のステージと、バイトコードを実行して結果を得るステージです。このトークで扱うのは前半のステージを改良した話です。

Irit Katriel氏と新しいパイプライン
Irit Katriel氏と新しいパイプライン

現在のコンパイルのステージは以下のような流れ(パイプライン)です。

  1. トーカナイザーがPythonのコードをトークンに変換
  2. パーサーがトークンをAST(抽象構文木)に変換
  3. コンパイラーがASTをバイトコードに変換

Python 3.13で導入される新しいコンパイルのステージは、AST以降が以下のようなパイプラインに変わるとのことです。

  1. AST optimizerでASTを「最適化されたAST」に変換
  2. コード生成で最適化されたASTを疑似命令に変換
  3. peephole otimizerで疑似命令を「最適化された疑似命令」に変換
  4. アセンブラで最適化された疑似命令をバイトコードに変換

このように変更したモチベーションとしては、⁠ユニットテスト、特にpeephole otimizerのテストがしやすくなること」を挙げていました。他の理由としては「コードの構造の改善」「柔軟性」が挙げられていました。

トークの後半ではASTや疑似命令のコードに対して、どういった最適化が行われるかを例をで示していました。ASTの最適化の例では、サブノードに「1 + 2」が存在したらそこは「3」に置き換えるというものでした。疑似命令の最適化では、if文とfor文の組み合わせでJUMPが2回存在するところを1回にまとめるという例を挙げていました。

これらの処理は新しいPython APIとして_testinternalcapiモジュールに含まれています。これは、標準ライブラリに含めるにはPEP(Pythonの拡張提案)を書く必要があるため、現在は仮のモジュール名となっているそうです。また、この新しいパイプラインの動作を可視化して確認するツールもIrit氏は作成しています。興味がある方は以下のリポジトリを参照してみてください。

めちゃくちゃ難しい内容でした。ただCPythonの内部がどんどん書き換えられていってるんだなと感じました。

Day 2 ライトニングトーク

2日目のライトニングトークです。ライトニングトークではPure Pythonを標準ライブラリを使ってクラッシュさせる話、ソフトスキルとしてレビュー時のコメントをChatGPTを使って優しくする方法、NumPy 2.0で追加された可変長文字列の紹介などがされました。

アジアからの参加者では、朝のパネルにも出ていたDima氏が発表していました。Dima氏は政府で働いており、オフィス製品を使うつまらない仕事がたくさんあるそうです。そこで、PyAutoGUIでマウスとキーボード操作を自動化したり、PDFをReportlabで自動的に処理したりして時間を作り、たくさん眠ったそうです。仕事が終わっていると上司にバレると新しい仕事が来るので気をつけてくださいとのことです。

もう一人は韓国のJoeun Park氏で、Joeun氏は自身のストーリーを共有しました。現在2児の母でもあるJoeun氏は育児休暇を取得した後に以前の仕事に戻ることができず、新しい仕事を探す必要ができました。子育て中にPythonのチュートリアルビデオを作り始め、少しの空き時間でもビデオを作成して公開を続けたそうです。古いMacbookとQuickTimeを使い、編集をほぼしていないそのチュートリアル動画の公開を続け、現在そのチャンネルには25,000人のチャンネル登録者がいるとのことです(すごい!⁠⁠。このチャンネルがきっかけで、Pythonでのテキスト分析の書籍を出版したり、さまざまな大学、企業などで講義をするようになっていったそうです。

Joeun Park氏
Joeun Park氏

Joeun氏のYouTubeチャンネルは以下です。339本の動画、2.5万人の登録者、一番人気のpandasに関する動画は5.1万回も再生されています。ただただすごいなと感じました。

PyLadiesオークション

2日目の夜はPyLadiesオークションです。このイベントはコミュニティメンバーやスポンサーから提供された物品を、参加者がオークション形式で競り落とすというイベントです。集まったお金はすべて寄付金となり、PyLadiesの運営資金となります。おいしい食事を食べながら、面白おかしく展開するオークションを見られるため、とても楽しいイベントです。

最初にオークションに出品されているアイテムを見て、どれに入札するかを考えます。今年はなんか品数が多いぞ?と思いました。

なぞの帽子
なぞの帽子

写真の「Release Developer Hats」には何か変わった帽子が6つあります。これはいったいどういうものなのかと思ったら、このアイテムのオークションがはじまるときに説明がありました。Python 3.10と3.11のリリース時に、ライブ中継をしながらコア開発者が集まって新機能を紹介したり、リリース作業をしていたようです。そのときにコア開発者やリリースマネージャーが被っていた帽子が今回出品されたものです。リリース時の動画は以下で参照できますが、コア開発者が確かにみんな変な帽子を被っています。おもしろいことを考えますね。

オークションでは競りが始まる前に、アイテムをよく見てもらうためにスタッフがアイテムを持って会場を練り歩きます。それがこの帽子のときには実際にコア開発者が出てきて帽子を被って歩きました。

ノリノリのコア開発者たち
ノリノリのコア開発者たち

他には、PSFのブースに展示されていたGuido van Rossum氏の等身大じゃないパネル2枚も出品されていました。写真を見ると上半身はほぼ同じです。この日のために衣装を合わせてきたんでしょうか。

Guido van Rossum氏とそのパネル
Guido van Rossum氏とそのパネル

当初思った通りアイテム数が多く、なかなかオークションが終わりません。18:45から開始し、19:20ごろからご飯を食べ始めたPyLadiesオークションですが、22時を過ぎてもまだアイテムが残っていました。最後の方は数点をまとめて「PyCon Taiwanセット」みたいな感じになってました。そして寄付金額は当初の目標としていた50,000USDを大きく越えて終了しました。

PyLadiesオークションが終わって会場の外に出てみると、橋がPython色にライトアップされていました。長い一日が終わりました。

ライトアップされた橋
ライトアップされた橋

おすすめ記事

記事・ニュース一覧