EuroPython 2025参加レポート

#02EuroPython 2025 2日目キーノート⁠3日目突然のLT登壇⁠そしてクロージング⁠スプリントへ

カンファレンスDay 2

EuroPython 2025のレポート第2回は、カンファレンス2日目の模様からお届けします。

キーノート⁠Brett Cannon

Brett Cannon氏はPythonのコア開発者の一人で、2019年から2023年までSteering Councilを務めた方です。このトークではタイトル「Why it took 4 years to get a lock files spec」の通り、Pythonのロックファイルの仕様をまとめるまでに4年かかった話が語られました。

Brett Cannon氏のキーノート
Brett Cannon氏のキーノート

最初に現在のPythonパッケージを作成するためのファイル構成について説明がありました。pyproject.tomlsdistフォーマット、wheelなどが紹介されました。

そして、パッケージ間の依存関係の指定にはいろいろな書き方があるため、これを解決することはとても難しいそうです。パッケージのすべての依存関係を記述するファイルとしてrequirements.txtpoetry.lockpdm.lockuv.lockがあり、ツールごとにバラバラという状況です。そこで、Pythonのロックファイルを標準化したが、そのためには4年の月日がかかったとのことです。

標準化されたpylock.tomlファイルの仕様は以下で確認できます。

ロックファイルは以下のような設計方針で仕様を検討したそうです。

  • ソフトウェアで作成し、人間にも読みやすい
  • デフォルトで安全な設定
  • 依存関係の解決をせず素早くインストールできる
  • ロックファイルの生成ツールとインストーラーは異なるツールもありえる
    • インストーラーはPython製である必要はない
  • 単一と複数環境のそれぞれのシナリオに対応する

そして、pylock.tomlの細かいファイル仕様について説明が行われました。ファイル名のとおりフォーマットはTOML形式です。ファイルレベルの詳細情報としては以下が必要です。

lock-version = "1.0"
environments = ["..."]
requires-python = "..."
extras = ["..."]
dependency-groups = ["..."]
default-groups = ["..."]
created-by = "..."

[[packages]]以下に具体的なパッケージの情報が記述されます。詳細は上記のファイル仕様を確認してください。

なぜ4年かかったのか

トークの後半では、タイトルの「なぜ仕様の策定に4年かかったのか」の話となります。はじまりは4年どころか2019年に遡ります。

古いWebサイト(おそらくTwitter)で、Brett氏がある人の発言に対して「そのロックファイルはPythonのオフィシャルではなくツール固有のものなので、安定性はツールの作者に聞いて欲しい」と返し、それに対してTzu-ping Chung氏から「交換可能なロックファイルフォーマットの議論をした方がよさそう」と返事、Brett氏が「そうですね、頭の片隅で考えています」という返答をしていました。ちなみに、Tzu-ping氏はPyCon TaiwanのメンバーでEuroPythonにも参加しており、筆者も仲良くさせてもらっています。

ロックファイルについてのやりとり
ロックファイルについてのやりとり

2019年にrequirements.txt v2についての議論が行われて106ポスト、2020年にも継続して43ポストが投稿されました。

2021年にはPEP 665が提案され、359ポストの議論が行われ、最終的に却下されました。

その後2024年にPEP 751が提案され、974ポストの議論が行われました。

PEP 751は最初の提案から2度の改変を経て、2025年1月に提案したバージョンで承認されました。

ここに至るまで4年間で1,800件以上の投稿があったということで、ものすごく大変な作業だったなと感じました。こうして作成されたロックファイルの仕様ですが、すでに各種ツールが対応しているそうです。

  • メインのロックファイルとして使用:PDM
  • インストール対応:PDM、uv
  • 生成に対応:PDM、uv、pip

このように、長い年月をかけて仕様が策定されたロックファイル(pylock.toml)ですが、すでに各種パッケージング関連のツールも対応しており、今後標準として活用されていくと思われます。

こうした、たくさんの人たちの議論の上に仕様が策定されることがわかり、中心を担ったBrett Cannonさんには本当にお疲れさまと思いました。

A new safe external debugger interface for CPython

本トークでは、Pythonのコア開発者でありSteering CouncilのメンバーでもあるPablo Galindo Salgado氏により、CPython 3.14の新機能である安全な外部デバッガ用のインターフェースについて、どのように作成されたか裏側が紹介されました。

Safe external debuggerはPEP 768で提案され、CPython 3.14から有効になります。この機能により、実行中のCPythonに対して安全にアクセスできるデバッグ用のインターフェースが提供されます。

あわせてPythonのデバッガであるPDBに、このインターフェースに接続する機能が追加されました。以下のコマンド例のように-pオプションでプロセスIDを指定すると、そのプロセスのリモートデバッグができます。

python -m pdb -p 1234
Pablo Galindo Salgado氏のトーク
Pablo Galindo Salgado氏のトーク

現代は脳の検査をする際にはMRIなどが使用できますが、Pythonの動作しているプログラムを調べるには、この絵のように外から見ることしかできません(面白い絵ですね⁠⁠。この状況を改善するためにPEP 768が提案され、機能が追加されました。それ以降、リモートデバッグがどのように動作するか、内部の動作が詳細に説明されました。そしてデモが行われ、動作しているプロセスにデバッガがアクセスするとそこで処理が止まり、安全に内部の情報を取得できることが確認できました。

CPython 3.14の新機能により、動作しているプログラムのデバッグが便利にできそうで楽しみです。

Performance improvements in 3.14 and maybe 3.15

Mark Shannon氏はCPythonのコア開発者で、Faster CPythonというPythonを高速化するチームをリードしています。今回のトークでは3.14と3.15でのCPythonのパフォーマンス改善について語られました。

Mark Shannon氏のトーク
Mark Shannon氏のトーク

上の写真のスライドにあるように、CPythonの高速化には「銀の弾丸はない」ということが語られていました。CPythonでどの処理にどれだけの時間を使っているかを調べてみると、以下のようになります。まんべんなく時間を使っているため、どこか1ヵ所(たちえばインタープリター)を速くしただけではパフォーマンスは大きく改善しないということです。

  • インタープリター:20%
  • JIT:9%
  • メモリの割り当てと解除:20%
  • GC:12%
  • lookupとdynamic:15%
  • それ以外:32%

CPython 3.15では「Top-of-stack Caching」という仕組みが入る見込みで、c = a + bというコードを例に、スタックの読み込みと書き込みの回数がキャッシュによって減るということが示されました。

以下のような単純なコードを例にして実行してみると、Python 3.10では28452ms、Top-of-stack Cachingに対応したPythonでは64msとなっていました(ただこれはPython 3.10と比べているので、Python 3.14と比べた場合にパフォーマンスがどこまで改善しているのかが気になりました⁠⁠。

import time

def loop(n):
    t = 0
    if n < 0:
        raise ValueError  # Put breakpoint here
    for i in range(n):
        t += 1
    return t

t = time.monotonic_ns()
loop(10_000_000)
d = time.monotonic_ns() - t
print (f"{d/1000_000:.0f} ms")

このほか、CPython 3.14ではIncremental garbage collectionが導入され、少しGCが速くなり、一時停止の時間も短くなるとのことです。3.15では"Candidate root" garbage collectionが導入されるかもとのことです。

最後に、CPythonの継続的なパフォーマンス改善のために資金を提供して欲しいという呼びかけがありました。Pythonの運用に多額の費用をかけていて、パフォーマンス向上から利益が得られる会社は、ぜひ話をしにきてほしい、とのことです。

CPythonは継続的にパフォーマンスが改善していますが、そのためにはコア開発者の方々の貢献が必要です。資金の援助は重要な問題だなと感じました。

キーノート⁠Sebastián Ramírez

カンファレンス2日目夕方のキーノートスピーカーは、FastAPIの作者であるSebastián Ramírez氏です。このキーノートでは「Behind the scenes of FastAPI and friends for developers and builders」と題して、FastAPIを作成して広めていく過程でSebastián氏がどのようなことをしてきたか、という内容が語られました。

Sebastián氏はEuroPythonに参加することは初めてだそうです。トークの冒頭で「今日は話すことがたくさんあるので、Pabloより速くしゃべるよ」と言って会場の笑いをとっていました。Pablo氏は早口だと筆者も思っていましたが、共通認識のようです。

Sebastián Ramírez氏のトーク(スライドのイラストがかわいい)
Sebastián Ramírez氏のトーク(スライドのイラストがかわいい)

トークの前半はFastAPI自体の簡単な紹介です。Webフレームワークとして非常に多くのGitHubスターを持っており、日々大量にダウンロードされています。Python Developer Surveyの調査でも利用が伸びており、PythonでWeb APIを構築するためのフレームワークとして広く利用されていることがわかります。

次にSebastián氏の過去について振り返ります。コロンビア出身のSebastián氏は、幼稚園の段階でドロップアウトしたそうです。その後は自宅で勉強しながら、コンピューター、ビデオ編集、楽曲制作、グラフィックデザイン、Web開発、親の仕事用のシステム開発をしていたそうです。

コンピューターにはまり、couseraedXUdacityのようなオンラインコースで世界中の人と一緒に学びました。似たようなプロダクトを0から開発することを繰り返す中で、似たような複雑な処理があることに気づきました。このような問題を解決するために、FastAPIなどのプロダクトを開発していると述べました。

プロダクトを開発するためのTipsとしてたくさんのポイントが示されました。

「メンテナーではなく、ユーザーのために最適化する」では以下のTipsが紹介されました。

  • ユーザーの視点を持つ
  • まずUXをデザインし、それに合わせて内部を作成する
  • 型ヒントを指定してオートコンプリートに対応する
  • 型ヒントに依存したインラインエラー
  • 明示的な引数にする、**kwargsは使わない

「新しいユーザーを捕まえる」ためのTipsは以下です。

  • 新鮮な目を持つ
  • 情報の空白になっている箇所を見つける
  • 初心者から意見を取り入れる

「情報の重複を減らす」ためのTipsは以下です。

  • コードの重複のことではない
  • 変数や設定の重複を減らす
  • 情報の重複は「キャッシュ」である
  • 重複が必要な情報は近くに配置する
  • 同期されない状態を減らす

「よいドキュメントを書く」では非常にたくさんのTipsが示されました。

  • 事前に説明すべきことは何か?
  • コンセプトを表すグラフ
  • すべてを説明する
  • 読み直して書き直して、きれいにする、文章を削る
  • コンセプトの重複を減らす
  • ユーザーが最小限の努力で最大の価値を得られるようにする
  • 空白、画像、絵文字、メモを入れて読みやすくする
  • 用語と概念の一貫性を保つ
  • 用語と概念のスタイルを設定する
  • パワーユーザーにも対応する
  • ドキュメント主導で開発する
  • ドキュメント上でサンプルコードがテストできる

トークの後半では大規模プロジェクトを管理するためのTipsがいくつも示されました。ここでは作業量、課題の管理、プルリクエストの処理、レビューの進め方などが説明されました。また、大規模プロジェクトの運営は「得るものもあれば、痛みを伴うこともある(Yes gain, yes pain⁠⁠」とまとめられました。最後に「問題を解決しよう(Solve a problem⁠⁠」と伝えてトークが締めくくられました。

人気があり大規模プロジェクトでもあるFastAPIの作者Sebastián氏から示された多数のTipsは、⁠確かにそれ大事だよな」と思わせる説得力のあるものでした。そして、1つ1つは当たり前のことだったりするのですが、その当たり前のことを当たり前にやり続けているであろうSebastián氏とFastAPIチームのすごさを感じました。

なおSebastián氏はPyCon JP 2025にキーノートスピーカーとして来日します。本トークのような素晴らしいトークが聞けると思います。筆者も日本での再会を楽しみにしています。

ソーシャルイベント

この日はSocial Eventです。会場はStřelecký Islandという川の中にある島です。ちなみに、この島がある川がヴルタヴァ川(モルダウ)です。

Social Event会場の島(上)と会場の入り口(下)
Social Event会場の島(上)と会場の入り口(下))

Social Eventでは食事が提供され、ドリンクも最初の1杯は無料です。Bubenečという地元のクラフトビールがお店を出していたので、ここのビールを飲んでいました。

いろんな人と話をしましたが、途中であいにくの雨となり、テントがあるところからあまり動けなくなったのが残念です。途中で入り口にもなっている建物の方にも行ったんですが、なぜか台湾と韓国から来たメンバーが3DSでマリオカートで遊んでました。なぜここでマリオカートを…

他のビールも飲みたいなと思い、会場を後にしてSibeeriaというクラフトビールの店に行きました。この店は日本に海外唯一の支店があり、チェコのクラフトビール情報を仕入れようと事前に訪問していました。無事チェコのSibeeriaに行くことができたので、個人的には大満足です。

チェコのSibeeriaに来たぞ!
チェコのSibeeriaに来たぞ!

カンファレンスDay 3

カンファレンス3日目はいよいよEuroPythonのカンファレンスとしての最終日です。

コミュニティ主催者のオープンスペースとランチ

カンファレンス3日目の午前中から午後にかけては、寺田さん(下記のコラム参照)と同じく、コミュニティ主催者のオープンスペースとランチに参加しました。これは名前の通り、PyConなどPython関連コミュニティを主催している人たちで集まって、さまざまなディスカッションをする場です。ヨーロッパを中心にたくさんの人たちが集まって共有、ディスカッションしていました。

筆者も日本であった課題について共有し、オープンスペースの終了後に友人でもあるGeorgiさんから助言をもらうことができました。

オープンスペースのあとは、そのままコミュニティ主催者のみのランチ会場に移動です。いくつかの丸テーブルにわかれてランチを楽しみました。⁠そっちのPyConはどんな感じなの?」といった情報交換をしました。

コミュニティ主催者向けランチのもよう
コミュニティ主催者向けランチ

キーノート⁠"Python: the Documentary" screening and Q&A

このキーノートでは"Python: the Documentary"というドキュメンタリーフィルムを見て、その裏側について著名な開発者がパネルディスカッション形式で回答するというものです。冒頭ではドキュメンタリーの20分の短縮版が上映されましたが、Pythonの過去と現在を知ることができる興味深い内容でした。

このドキュメンタリーのフルバージョンが、8月29日にYouTubeで公開されました。1時間24分となかなかのボリュームですが、ぜひ時間を作ってご覧になってください。

ドキュメンタリーを見た後は、パネリストの3名がその感想やPythonの歴史、課題などについて議論しました。後半は参加者からの質問もあり、55分にわたってさまざまなディスカッションが行われました。

すでにパネルディスカッションのビデオも公開されているので、興味のある方はぜひ見てみてください。

パネルディスカッションの様子
パネルディスカッションの様子

まさかのライトニングトーク

EuroPython最後のライトニングトーク(LT)です。⁠私が考えるベスト・ワーストのオリンピックマスコット」⁠水中ロボットの開発チーム」⁠自作の電動自転車でスイスから来た人」など、個性的な発表が続きます。

「自作の電動自転車」のLT
「自作の電動自転車」のLT

そのとき、事件が起こりました。後ろから肩を叩かれ「Takanori、LTできるか?」と声をかけられたのです。声をかけてきたのはプログラムチームのRodrigoさんです。急遽LT枠にキャンセルができたため、声をかけてきたようです。私が前の方に座っていたため、見つけられたということもあると思います。一瞬考えて「やります」と返事をし、LTの準備をはじめました。

今のLT発表が終わったら次が私の番とのこと。まじか!!と思いながら急いでスライドの内容を確認しました。時間が無いので、発表スライドはPyCon US 2024のLTスライドをそのまま使います。順番がきたのでステージに上がり「ついさっき『LTできる?』と聞かれたので、スライドはPyCon US 2024のままです」といった言い訳をしつつ、テンパりながらなんとか発表を終えることができました。

筆者のLTの様子(スライドの日付がPyCon US 2024)
筆者のLTの様子

発表内容は日本語の学習の難しい点(文字、単語間のスペースなし、漢字の読み)を共有し、それらの課題をPythonの自然言語ライブラリを使用して解決するというものです。LT発表をしたことで「さっきのトーク良かったよ」といった感想をさまざまな方からもらいました。イベントギリギリで幸運が転がり込み、EuroPythonに爪痕を残すことができました。

この発表の裏側や体験について、先日開催されたEuroPython & PHPers Day 2025 参加報告会で発表しました。こちらのスライドとビデオは公開済みですので、興味のある方は見てみてください。

クロージング

私のLT発表が終わると別の方が壇上に上がり、PCでSuperColliderというシンセサイザーエンジンをPythonから操作するデモがはじまりました。⁠あれ、私のLTが最後じゃないの」と思いながら発表を見ていると、ある曲のコードパターンの演奏をはじめました。

それはAlways Look on the Bright Side of Lifeという曲で、モンティ・パイソンのメンバーであるエリック・アイドルが作詞作曲、歌唱した有名な曲です(日本でもテレビCMで使われたことがあります⁠⁠。

そしてPCとウクレレの伴奏にあわせて会場中で大合唱がはじまり、非常に盛り上がりました。後半は他の仲間も楽器をもって壇上で演奏してまた大合唱。1日目の夜のPyvoで演奏していた人たちと同じだと思われます。

みんなで大合唱

演奏が終わるとクロージングです。主催者やEuroPythonのメンバーなどが壇上に呼ばれ拍手が起こります。最後はボランティアスタッフも含めて壇上に上がり、多くの人たちのサポートによってEuroPythonが開催されたことがわかります。

主催者とボランティアスタッフのみなさん
主催者とボランティアスタッフのみなさん

会場から外に出ると、先ほどLTで発表していた電動自転車がありました。みんな興味津々で、作者の方と会話しながら写真を撮ったり、中を見せてもらったりしていました。これから家族3人(夫婦+お子さん)でスイスへと10日ほどかけて帰っていくそうです。すごい。

ebikeの実物、上にソーラーパネルがある
ebikeの実物、上にソーラーパネルがある

夜は終わらない

この日の夜は、アジア系メンバーで集まってThe Beer Spotという、チェコのクラフトビールのお店に行きました。先日行ったSeeberia以外にも、チェコのクラフトビールがいろいろあることを知れました。16名くらいでワイワイと「次はどこ行くの?」⁠また会おうね」といった会話をしました。

私の席にあるのはビアフライトで好きなビールが試せます。ビアフライトは175ml、5杯となかなか量が多いです。これはチェコスタイルなんだろうなーと思いました。

アジア系メンバーの集い
アジア系メンバーの集い

さらに数名で、近くにあるKlub Újezdというお店で二次会に行きました。いつも通り、よく飲んだPythonカンファレンスでした。

開発スプリント

4日目は開発スプリントです。各開発テーマで集まって開発をします。筆者はこの日の夜のフライトだったので、昼過ぎくらいまでスプリントに参加しました。

スプリント会場

スプリント会場は昨日までのカンファレンス会場とは違い、WPP Pragueという企業のオフィスで行われています。ホテルから荷物を持って会場まで行きましたが、駅周辺は階段しかなかったり、道路は石畳だったりと、スーツケースがあると移動が結構大変です。東京はスーツケースで移動しやすいよなーと思いました。

スプリント会場のWPP Prague
スプリント会場のWPP Prague

スプリント会場は以下のような雰囲気で、カフェスペースにたくさんの人が集まっています。2階も解放されており、とてもおしゃれな場所でした。

スプリント会場内の様子
スプリント会場内の様子

お菓子と交流

会場に到着したら主催の方にあいさつしてから「日本から持ってきたお菓子が余ったんだけど、お菓子用のテーブルを作れませんか?」とお願いしました。手前側のテーブルにお菓子を置いてからDiscordで「Free Snackテーブル作ったよ」とお知らせしたところ、後でテーブルを見に行くと各国のお菓子が増えていました。

ちなみに、写真にある「抹茶もち」は筆者が持っていったものではなく、ドイツの女性が日本に行ったときに買って帰ったものだそうです。⁠もち大好き」と言ってました。

お菓子の交換テーブル
お菓子の交換テーブル

このお菓子テーブルの周辺や、席で作業をしている時など、いろんな人と雑談をしました。その中の一人としてRodrigoさんに声をかけられました。RodrigoさんはカンファレンスDay 3で、私に「LTできない?」と声をかけてきた人です。⁠トランプにいろんな人にサインをしてもらっているので、書いてくれないか」とのことなので、快諾してローマ字とひらがなで私の名前を書きました。Rodrigoさんとはその後LinkedInでつながって、私を前の方の席で見かけたので、LTできないかを聞きに来たそうです[1]

Rodrigo氏と筆者
Rodrigo氏と筆者

スプリント会場では11時過ぎにお菓子とサンドイッチが並びはじめました。Discordでの主催者からの説明によると、これはランチではなく「おやつ」だそうです。パンにチーズが挟まっていたり、別テーブルでは小さなシュニッツエル(牛カツ)も提供されており、Discordでも「これランチじゃないの?」といったやりとりがされていました。これがチェコ流なんでしょうか。ただ、朝食を食べて来ていない筆者にはありがたかったです。

ランチはちゃんと13時過ぎくらいに提供されました。米、鶏肉、豆、芋などが提供され十分です。ランチで同席した方がチェコ在住の日本語がしゃべれる方でびっくりしました。つくばに住んでいたそうで、赤倉温泉でリゾートバイトしていたときの話をしました。まさかプラハでかんずり(上越地方の郷土食品の1つ)の話をするとは。

スプリント会場にあるコーヒーブレイクのおやつ?(左)と正式なランチ(右)
コーヒーブレイクのおやつ?(左)と正式なランチ(右)

この日の夜の便で日本に戻るため、15時過ぎにいろいろな方にあいさつをしてからスプリント会場を後にしました。

日本へ

会場からトラムとバスを乗り継いで空港へと向かいます。行きはウィーンから陸路だったのでプラハ空港は初めてです。帰りはポーランド航空でワルシャワ経由で帰ります。

機内からプラハの街並みが見えました。真ん中にあるタワーがテレビ塔で、旧市街は左手前側です。

空から眺めるプラハの街並み
空から眺めるプラハの街並み

ワルシャワから成田空港に無事到着し、今回の7泊8日(うち機内2泊)のEuroPythonの旅は終わりました。

終わりに

EuroPython 2025のレポートは以上です。ただの参加者となる予定だったカンファレンスですが、最後に滑り込みでライトニングトークをできたことはラッキーでした。日本から参加した4名はPyCon US 2025にも参加しており、こんなもの好きが日本に4人もいるんだなと感じました。

なお、筆者が行っているYouTubeライブPyCon JP TVでもEuroPython 2025について紹介しています。寺田さんの写真を中心としたレポートで、異なった目線からの感想もあります。ぜひご覧になってください。

オフィシャルの発表動画は、EuroPythonのYouTubeチャンネルで順次公開されています。以下のページで確認してください。

来年のEuroPythonはどこで開催されるのでしょうか。また行きたいなぁ。

キーノートスピーカーのSebastián氏と会話する筆者
Sebastián氏と会話する筆者

おすすめ記事

記事・ニュース一覧