鈴木たかのりです。チェコのプラハで開催されたEuroPython 2025に参加してきました。
久しぶりのEuroPythonは、やはりUSとは雰囲気が違って異なる刺激を受けたような気がします。イベントを振り返って現地の様子をレポートしたいと思います。
EuroPythonとは
EuroPythonはヨーロッパ地域で開催されるPythonに関するカンファレンスです。毎年ヨーロッパの各地域で開催され、今年はチェコのプラハで開催されました。プラハでの開催は2023年から3年連続となっているため、おそらく来年は別の場所になると思われます。
EuroPython 2025のイベント概要は以下の通りです。
項目 | 内容 |
---|---|
URL | https:// |
日程 | チュートリアル:2025年7月14日 カンファレンス:7月16日 スプリント:7月19日 |
場所 | チェコ、プラハ |
会場 | Welcome to the Prague Congress Centre |
参加費 | 300ユーロ |
主催 | EuroPython Society |

なお筆者自身はEuroPythonには2019、2022以来の3回目の参加です。また2023年には福田隼也さん、2024年には青野高大さんがレポートを書いてくれているので、そちらも興味のある方は是非読んでみてください。
- ヨーロッパのPythonコミュニティと交流できる3日間
「EuroPython 2019」 参加レポート 記事一覧 | gihyo. jp - アイルランドで開催 ―EuroPython 2022レポート 記事一覧 | gihyo.
jp - 日本からひとりで参加した
「EuroPython 2023」 スピーカー体験レポート | gihyo. jp - EuroPython2024参加レポート | gihyo.
jp
カンファレンス前日まで
筆者は飛行機の都合で、以下の旅程で参加しました。
- 7月12日
(土) 夜に羽田を出発 - 7月13日
(日) 朝にウィーン到着→観光 - 7月14日
(月) ウィーンからプラハへ鉄道で移動 - 7月15日
(火) プラハ観光 - 7月16日
(水) 〜18日 (金) EuroPython 2025参加 - 7月19日
(土) Sprint参加→夜にプラハを出発 - 7月20日
(日) 成田に帰国
羽田空港を夜に発ちウィーンに早朝に到着します。ウィーンではシェーンブルン宮殿やウィーン楽友協会を訪問しました。ウィーンフィルのニューイヤーコンサートで見たことのあるホールが目の前にあって、感激でした。


次の日はウィーン中央駅から列車で4時間かけてプラハに向かいます。列車内は広い席と電源もあり快適に作業できました。車内販売でビール
プラハに到着したらとりあえずホテルにチェックインし、カンファレンス会場で受付を行いました。名札には自分の属性などをステッカーで貼り付けられます。

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

これらの模様は以下で写真をまとめてあるので、興味のある方はぜひ見てください。
カンファレンスDay 1
オープニング
カンファレンスのオープニングです。カンファレンスのChairからあいさつなどがありました。

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

Keynote:Savannah Bailey
- トーク概要:You don’t have to be a compiler engineer to work on Python
- スライド:savannahostrowski/
europython-2025 Slides for my keynote: "You don’t have to be a compiler engineer to work on Python" -GitHub
最初のキーノートは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/
- PEP 774 – Removing the LLVM requirement for JIT builds | peps.
python. org - PEP 774: Removing the LLVM requirement for JIT builds - PEPs - Discussions on Python.
org
また、Savannah氏はPython 3.
Savannah Bailey氏からは貢献をはじめるためのツールキットとして、以下が示されました。
- github.
com/ :CPythonのリポジトリ、issueの確認、PRの提出、コードの参照ができるpython/ cpython - peps.
python. :Pythonの大きな変更を提案、説明するドキュメントorg - discuss.
python. :機能、ガバナンスorg (管理方法)、パッケージングやアイデアに関してハイレベルな議論が行われる場所 - devguide.
python. :貢献をはじめるための必要なドキュメント一式。セットアップ、ツール、トリアージの手順、テストなどorg
まさに、コンパイラのエンジニアじゃなくてもCPythonの開発に携わって貢献できるということを、Savannah氏自身が体現していると感じました。筆者自身もできるところから貢献をはじめられるかも知れないと感じる、とても印象的なキーノートでした。
Exploring the CPython JIT
- トーク概要:Exploring the CPython JIT
- スピーカー:Diego Russo
- スライド:diegorusso/
2025 -GitHub
スピーカーのDiego Russo氏はCPythonへ2年、CPython JITへ1年程貢献し、2025年5月からCPythonのコア開発者となったそうです。トークの2ヵ月前とは、すごい最近ですね。
このトークでは、JITコンパイラとはどういうものか、CPythonのCopy and Patchとはどのように動作するかが説明されました。CPythonのJITはバージョン3.
CPythonのJITはインタープリターで生成されたSpecializedバイトコードを、μop

ここからは以下のコードがどのようにバイトコード化され、JITで最適化されるかが説明されました。また、Copy and Patchがどのようなコードで実装されているかの例も示されました。とはいえ、めちゃくちゃ難しくて筆者は雰囲気を掴んだのみです。興味のある方はぜひスライドや実際のCPythonのコードを参照してみてください。
def sum_squares(n):
total = 0
for i in range(n):
total += i * i
return total
今後の予定としてPython 3.
JITが安定して動作して将来的にCPythonの標準となるのか、楽しみです。
会場にレトロゲーム
カンファレンスのロビーにはレトロゲーム機が多数展示されていました。これはチェコのRetroHernaというプロジェクトの方々が持ち込んだもののようです。全てのゲーム機は実際に遊ぶことが可能で、休憩時間などにゲームを楽しんでいる参加者がたくさんいました。知っているゲーム機もありますが、まったく聞いたことがないゲーム機もたくさんありました。


Uncovering the magic of implementing a new Python syntax feature
- トーク概要:Uncovering the magic of implementing a new Python syntax feature
- スピーカー:Lysandros Nikolaou
このトークでは最初にPython 3.t"hello {value}"
のように書きます。f-stringと似ていますが、文字列の前にt
を付けます。t-stringを記述すると、以下のようなTemplate
オブジェクトが生成されます。
>>> value = "prague"
>>> t"hello {value}"
Template(
strings=('hello ', ''),
interpolations=(
Interpolation('prague', 'value', None, ''),
)
)
また、最近のPythonで追加された言語仕様として以下が紹介されました。詳細はリンク先の公式ドキュメントやPEPを参照してください。
- t-strings:テンプレート文字列:
t"{Hello {value}"
と書くとテンプレート文字列が定義できる(3. 14) - 型引数構文と
type
文:def max[T](args: Iterable[T]) -> T
のように書いてジェネリック関数が定義できる。type
文で型エイリアスが作成できる(3. 12) - 例外グループと新しい
except*
の構文:ExceptionGroupという新しい組み込み型を追加し、except*
でマッチできる(3. 11) - 構造的パターンマッチ:
match
文とcase
文でパターンマッチできる。(3. 10) - カッコ内のコンテキストマネージャー:複数行のコンテキストマネージャーをカッコで囲むことができる
(3. 10)

ここからはt-stringを題材に、どのように言語仕様が追加されていくかが解説されました。Tokenizer、Parser、Bytecode compiler、Interpreterの4段階で解説していきます。
Tokenizerはソースコードt"hello {value}"
は以下の6つのトークンに分解されます。Python 3.t"
をTSTRING_
と認識する処理などが追加されたことがわかります。
トークン[2] | 内容 |
---|---|
TSTRING_ |
t" |
TSTRING_ |
hello |
LBRACE | { |
NAME | value |
RBRACE | } |
TSTRING_ |
" |
次にParserは一連のトークンを受け取り、Python文法の規則に適合しているかを検証し、AST
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を構築します。

Bytecode compilerは受け取ったASTをコンパイルし、Python VMが解釈できるバイトコードを生成します。t-stringの例では以下のようなバイトコードが生成され、その後バイトコードの最適化が行われます。
バイトコード[3] | 値 |
---|---|
LOAD_ |
"hello" |
LOAD_ |
"" |
BUILD_ TUPLE | 2 |
LOAD_ |
value |
LOAD_ |
"value" |
BUILD_ |
2 |
BUILD_ |
1 |
BUILD_ |
最後のInterpreterでは受け取ったバイトコードを評価します。その結果として最初のt-stringのコード例にあったTemplate(...)
が出力されます。
なんとなく聞いていたCPythonのコードが実行されるまでの流れを、段階を践んで説明してくれたので、とても解像度が上がりました。
JITの場合は、このバイトコードを生成したあとにJITの処理が入るんだなと、全体的なつながりも見えてる内容でした。
Pythonクイズ
1日目のライトニングトークの前にPython Quizがありました。これは各参加者がスマートフォンやPCから指定されたサイトにアクセスして、クイズに同時に挑戦するというものです。Mentimeterというサービスを使っているようです。

素早く回答した方が高得点になるのですが、後半に進むに従ってクイズの内容がめちゃくちゃ難しくなります。筆者の結果は236位と全然だめでした……。ただ、とても楽しかったです。
ライトニングトーク
ライトニングトークは今年からWebフォームからの申し込みで、採択された人には午後に連絡が来ます。筆者も申し込みましたが返事が来ないため落選したようです。
最初の発表では

Pyvo
この日の夜は、チェコのローカルコミュニティ主催でPyvoというカジュアルなパーティーが行われました。この名前はチェコ語でビールのことを"Pivo"というのにかけています。
カンファレンス会場から歩いて10分くらいにある、Na Hradbáchという屋外のビアガーデンに適当に集まってビールを飲みます。ただ、別に貸し切りというわけではないので、誰がEuroPython参加者なのかよくわかりません。

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

夜も更けると楽器を持ってきた参加者が演奏を始めてみんなで歌っていました。なかなかカオスです。Pyvo自体は19時くらいから始まっていて、このときは22時半ごろです。私は全種類のビールを一通り飲んだので会場を後にし、カンファレンス1日目を終えました。
海外イベントってどんな感じなんだろう、自分も挑戦してみたいなど、興味のある方はぜひ以下のページからご参加ください。現地参加の方は終了後に懇親会もあるので、交流しましょう。