EuroPython 2025参加レポート

#01EuroPython 2025開幕までの道のり⁠Day 1の注目セッション

鈴木たかのりです。チェコのプラハで開催されたEuroPython 2025に参加してきました。

久しぶりのEuroPythonは、やはりUSとは雰囲気が違って異なる刺激を受けたような気がします。イベントを振り返って現地の様子をレポートしたいと思います。

EuroPythonとは

EuroPythonはヨーロッパ地域で開催されるPythonに関するカンファレンスです。毎年ヨーロッパの各地域で開催され、今年はチェコのプラハで開催されました。プラハでの開催は2023年から3年連続となっているため、おそらく来年は別の場所になると思われます。

EuroPython 2025のイベント概要は以下の通りです。

項目 内容
URL https://ep2025.europython.eu/
日程 チュートリアル:2025年7月14日(月⁠⁠、15日(火)
カンファレンス:7月16日(水⁠⁠~18日(金)
スプリント:7月19日(土⁠⁠、20日(日)
場所 チェコ、プラハ
会場 Welcome to the Prague Congress Centre
参加費 300ユーロ(約51,700円)
主催 EuroPython Society
EuroPython 2025サイト
EuroPython 2025サイト

なお筆者自身はEuroPythonには2019、2022以来の3回目の参加です。また2023年には福田隼也さん、2024年には青野高大さんがレポートを書いてくれているので、そちらも興味のある方は是非読んでみてください。

カンファレンス前日まで

筆者は飛行機の都合で、以下の旅程で参加しました。

  • 7月12日(土)夜に羽田を出発
  • 7月13日(日)朝にウィーン到着→観光
  • 7月14日(月)ウィーンからプラハへ鉄道で移動
  • 7月15日(火)プラハ観光
  • 7月16日(水)〜18日(金)EuroPython 2025参加
  • 7月19日(土)Sprint参加→夜にプラハを出発
  • 7月20日(日)成田に帰国

羽田空港を夜に発ちウィーンに早朝に到着します。ウィーンではシェーンブルン宮殿ウィーン楽友協会を訪問しました。ウィーンフィルのニューイヤーコンサートで見たことのあるホールが目の前にあって、感激でした。

シェーンブルン宮殿の大ホール
シェーンブルン宮殿の大ホール
ウィーン楽友協会ホール
ウィーン楽友協会ホール

次の日はウィーン中央駅から列車で4時間かけてプラハに向かいます。列車内は広い席と電源もあり快適に作業できました。車内販売でビール(0.8EURと激安!)も飲みました。

プラハに到着したらとりあえずホテルにチェックインし、カンファレンス会場で受付を行いました。名札には自分の属性などをステッカーで貼り付けられます。

プラハへ向かう列車から(左)、カンファレンス会場の入り口(中)、EuroPython 2025の名札(右)
プラハへ向かう列車から(左)、カンファレンス会場の入り口(中)、EuroPython 2025の名札(右)

この日(カンファレンス2日前)の夕方は、Museum of Bricksという個人コレクション!のレゴを展示する美術館に行きました。いったいいくらかかったんだろう……。夜は日本と台湾から参加したメンバー数名で、U Pinkasuという伝統的なチェコのビアホールで夕食を食べました。

カンファレンス前日は1日歩き回ってプラハ観光をしました。旧市街広場天文時計など素敵な建物がたくさんあって、噂通りのきれいな街並みでした。

Museum of Bricksの入り口(左)、旧市街広場(中)、天文時計(右)
Museum of Bricksの入り口(左)、旧市街広場(中)、天文時計(右)

これらの模様は以下で写真をまとめてあるので、興味のある方はぜひ見てください。

カンファレンスDay 1

オープニング

カンファレンスのオープニングです。カンファレンスのChairからあいさつなどがありました。⁠初めてEuroPythonに参加した人は?」という呼びかけには、半分くらいの人が手を上げていたようです。多いですね。

オープニングの模様
オープニング

プログラムチームからはキーノートなどの紹介がありました。また、オープンスペースとライトニングトークの申し込みがWebフォームになったというアナウンスがありました。PyCon US同様、ここにも電子化の波が!

5名のキーノートスピーカー
5名のキーノートスピーカー

Keynote⁠Savannah Bailey

最初のキーノートはSavannah Bailey氏による「You don't have to be a compiler engineer to work on Python」です。日本語にすると「コンパイラのエンジニアじゃなくてもPythonに携わることができる」といった感じでしょうか。

Savannah Bailey氏のトークの模様
Savannah Bailey氏のトークの模様

Savannah氏は2020年頃プロダクトマネージャーとして働いていました。自身の所属するチームがLanguage Serverなどをやっており、その頃にPythonの動作を学んだそうです。また、チームとしてはtypeshed[1]に貢献していたそうです。

Pythonへの貢献としてはCPythonのインタプリターを開発する作業もありますが、それ以外にも以下のような細かい作業も大事だという話をしていました。

  • issueのトリアージ:重要な課題をとりあげたり、そうでもない課題や重複している課題を閉じたりする作業
  • 公式ドキュメントの更新:typoの修正や翻訳など
  • テストカバレッジの改善
  • 標準ライブラリへの貢献:Pythonで実装されているものが多く、Cの知識が不要

このように、CPythonのインタープリターがどのように動作しているかを知らなくても、Pythonに貢献できるということが語られました。興味があれば、学びながら貢献ができます。実際にSavannah氏もできるところからCPythonへの貢献をはじめたそうです。

地道な貢献が評価され、Savannah氏をCPythonのコア開発者チームのメンバーにする提案が2024年11月に行われ、賛成多数によりSavannah氏はコア開発者の一人となりました。

また、自身にDevOpsの経験があるため、CPythonのJITありバージョンのCI/CDやビルドについて貢献し、さらに、PEP 774の作者としてJITのビルドについて提案をしています。

また、Savannah氏はPython 3.16と3.17のリリースマネージャーとなるそうです。すごい活躍です。

Savannah Bailey氏からは貢献をはじめるためのツールキットとして、以下が示されました。

  • github.com/python/cpython:CPythonのリポジトリ、issueの確認、PRの提出、コードの参照ができる
  • peps.python.org:Pythonの大きな変更を提案、説明するドキュメント
  • discuss.python.org:機能、ガバナンス(管理方法⁠⁠、パッケージングやアイデアに関してハイレベルな議論が行われる場所
  • devguide.python.org:貢献をはじめるための必要なドキュメント一式。セットアップ、ツール、トリアージの手順、テストなど

まさに、コンパイラのエンジニアじゃなくてもCPythonの開発に携わって貢献できるということを、Savannah氏自身が体現していると感じました。筆者自身もできるところから貢献をはじめられるかも知れないと感じる、とても印象的なキーノートでした。

Exploring the CPython JIT

スピーカーのDiego Russo氏はCPythonへ2年、CPython JITへ1年程貢献し、2025年5月からCPythonのコア開発者となったそうです。トークの2ヵ月前とは、すごい最近ですね。

このトークでは、JITコンパイラとはどういうものか、CPythonのCopy and Patchとはどのように動作するかが説明されました。CPythonのJITはバージョン3.13ではbuildオプションを指定する必要がありますが、3.14では実行時のオプションとなります。

CPythonのJITはインタープリターで生成されたSpecializedバイトコードを、μop(micro-op)トレース→最適化されたμopトレース→マシンコードと変換します。

CPython JITでソースコードがどのようにマシンコードに変換されるか
CPython JITでソースコードがどのようにマシンコードに変換されるか

ここからは以下のコードがどのようにバイトコード化され、JITで最適化されるかが説明されました。また、Copy and Patchがどのようなコードで実装されているかの例も示されました。とはいえ、めちゃくちゃ難しくて筆者は雰囲気を掴んだのみです。興味のある方はぜひスライドや実際のCPythonのコードを参照してみてください。

def sum_squares(n):
	total = 0
	for i in range(n):
		total += i * i
	return total

今後の予定としてPython 3.15のJITではスタックの巻き戻しサポートスレッドセーフ化、パフォーマンス改善を行い、現在より40%高速化することを目標としているそうです。

JITが安定して動作して将来的にCPythonの標準となるのか、楽しみです。

会場にレトロゲーム

カンファレンスのロビーにはレトロゲーム機が多数展示されていました。これはチェコのRetroHernaというプロジェクトの方々が持ち込んだもののようです。全てのゲーム機は実際に遊ぶことが可能で、休憩時間などにゲームを楽しんでいる参加者がたくさんいました。知っているゲーム機もありますが、まったく聞いたことがないゲーム機もたくさんありました。

任天堂のバーチャルボーイ
任天堂のバーチャルボーイ
ColecoVision
ColecoVision

Uncovering the magic of implementing a new Python syntax feature

このトークでは最初にPython 3.14の新しい機能、言語仕様としてt-stringが紹介されました。t-stringはt"hello {value}"のように書きます。f-stringと似ていますが、文字列の前にtを付けます。t-stringを記述すると、以下のようなTemplateオブジェクトが生成されます。

>>> value = "prague"
>>> t"hello {value}"
Template(
    strings=('hello ', ''),
    interpolations=(
        Interpolation('prague', 'value', None, ''),
    )
)

また、最近のPythonで追加された言語仕様として以下が紹介されました。詳細はリンク先の公式ドキュメントやPEPを参照してください。

Lysandros Nikolaou氏のトーク
Lysandros Nikolaou氏のトーク

ここからはt-stringを題材に、どのように言語仕様が追加されていくかが解説されました。Tokenizer、Parser、Bytecode compiler、Interpreterの4段階で解説していきます。

Tokenizerはソースコード(一連の文字列)を受け取り、それを意味のある単位に分解して、トークンとして出力します。たとえば先ほどのt"hello {value}"は以下の6つのトークンに分解されます。Python 3.14のTokenizerではt-stringに対応するため、t"TSTRING_STARTと認識する処理などが追加されたことがわかります。

トークン[2] 内容
TSTRING_START t"
TSTRING_MIDDLE hello
LBRACE {
NAME value
RBRACE }
TSTRING_END "

次にParserは一連のトークンを受け取り、Python文法の規則に適合しているかを検証し、AST(Abstract Syntax Tree:抽象構文木)を構築して出力します。

t-stringの文法仕様は10. 完全な文法仕様から抜粋すると以下のように書かれています。先ほどのトークンが以下の仕様と適合しているかを順番に見ていきます。

tstring_replacement_field:
    | '{' annotated_rhs '='? [fstring_conversion] [tstring_full_format_spec] '}' 
tstring_middle:
    | tstring_replacement_field
    | TSTRING_MIDDLE 
tstring:
    | TSTRING_START tstring_middle* TSTRING_END 

適合している場合は以下のようなASTを構築します。

t-stringsのAST
t-stringsのAST

Bytecode compilerは受け取ったASTをコンパイルし、Python VMが解釈できるバイトコードを生成します。t-stringの例では以下のようなバイトコードが生成され、その後バイトコードの最適化が行われます。

バイトコード[3]
LOAD_CONST "hello"
LOAD_CONST ""
BUILD_ TUPLE 2
LOAD_NAME value
LOAD_CONST "value"
BUILD_INTERPOLATION 2
BUILD_TUPLE 1
BUILD_TEMPLATE

最後のInterpreterでは受け取ったバイトコードを評価します。その結果として最初のt-stringのコード例にあったTemplate(...)が出力されます。

なんとなく聞いていたCPythonのコードが実行されるまでの流れを、段階を践んで説明してくれたので、とても解像度が上がりました。

JITの場合は、このバイトコードを生成したあとにJITの処理が入るんだなと、全体的なつながりも見えてる内容でした。

Pythonクイズ

1日目のライトニングトークの前にPython Quizがありました。これは各参加者がスマートフォンやPCから指定されたサイトにアクセスして、クイズに同時に挑戦するというものです。Mentimeterというサービスを使っているようです。

クイズに532名が参加!
クイズに532名が参加!

素早く回答した方が高得点になるのですが、後半に進むに従ってクイズの内容がめちゃくちゃ難しくなります。筆者の結果は236位と全然だめでした……。ただ、とても楽しかったです。

ライトニングトーク

ライトニングトークは今年からWebフォームからの申し込みで、採択された人には午後に連絡が来ます。筆者も申し込みましたが返事が来ないため落選したようです。

最初の発表では「Lessons for a Lightning Talk」と題して、ライトニングトークそのものについて話していました。ライトニングトークをすると自分のことを知ってもらえる、1回で700名に対して自己紹介できるのでやるべきだ、という話をしていました。私も全く同意です。

Lessons for a Lightning Talk
Lessons for a Lightning Talk

Pyvo

この日の夜は、チェコのローカルコミュニティ主催でPyvoというカジュアルなパーティーが行われました。この名前はチェコ語でビールのことを"Pivo"というのにかけています。

カンファレンス会場から歩いて10分くらいにある、Na Hradbáchという屋外のビアガーデンに適当に集まってビールを飲みます。ただ、別に貸し切りというわけではないので、誰がEuroPython参加者なのかよくわかりません。

Pyvoの会場の様子
Pyvoの会場の様子

PyvecとEuroPythonのサポートによりフードも多少は提供されるのですが、参加人数が多いため私も小さいハンバーガーを1つ確保するのが精一杯でした。また、イベントの途中でDjangoのコミュニティからDjango 20周年を記念したケーキの差し入れがありました。とてもかわいらしいケーキです。

Django 20周年ケーキ
Django 20周年ケーキ

夜も更けると楽器を持ってきた参加者が演奏を始めてみんなで歌っていました。なかなかカオスです。Pyvo自体は19時くらいから始まっていて、このときは22時半ごろです。私は全種類のビールを一通り飲んだので会場を後にし、カンファレンス1日目を終えました。

カオスなPyvo

「EuroPython & PHPers Day 2025 参加報告会」のお知らせEuroPython 2025に日本からの参加したメンバー4名と、ポーランドで開催されたPHPers Dayに参加したことみん氏が、それぞれの体験を語る「EuroPython & PHPers Day 2025 参加報告会」というイベントを8月26日(火)に開催します[4]。渋谷の現地会場とオンラインのハイブリッド開催です。

海外イベントってどんな感じなんだろう、自分も挑戦してみたいなど、興味のある方はぜひ以下のページからご参加ください。現地参加の方は終了後に懇親会もあるので、交流しましょう。

おすすめ記事

記事・ニュース一覧