# スプリント カンファレンスのあとは開発スプリントです。 スプリントとは、Python関連のオープンソースのプロジェクトに参加し、一緒に開発をするというイベントです。 PyCon US 2025のスプリントは5月19日(月)から22日(木)の4日間開催されます。筆者は1日目のみ参加しました。 スプリントの一覧は以下のページで確認できます。 CPython、mypy and mypyc、t-strings、Read the Docs、PyLadiesCon Web Portalなどさまざまなプロジェクトがあります。 * [Development Sprints - PyCon US 2025](https://us.pycon.org/2025/events/dev-sprints/) 会場に行くと、ボードにどの部屋でどのプロジェクトが行われているかが書いてあります。 参加者はこのボードを見て参加したいプロジェクトの部屋に行きます。 たとえば「First-Time CPython Contributors(初めてのCPythonへの貢献)」はRoom 315であることがわかります。 CPythonのコアチームは隣のRoom 316で行われており、初めての人と経験者の部屋を分けるようになったようで、良いアイデアだと思います。 ```{figure} images/sprints-board.jpg :width: 200 スプリントの部屋割りボード ``` スプリントの各部屋には丸テーブルがあり、一緒に開発やディスカッションを進めます。 筆者はトークとライトニングトークでだいぶ疲れていたため、プロジェクトには参加せず、自分のタスクを進めていました。 ```{figure} images/nishimotz-sprints.jpg :width: 400 スプリントに参加する西本さん ``` スプリント会場の廊下ではGuidoさんとDongheeさん(Steering Councilの一人)が膝をつき合わせて会話していました。 なにの話をしているかはわかりませんが、Python開発の進め方について語っているのでしょうか。 ```{figure} images/guido-donghee.jpg :width: 400 語り合うGuidoさんとDongheeさん ``` ````{admonition} First-time CPython Contributions 橘祐一郎([@whitphx](https://github.com/whitphx))です。 スプリントでは、First-time CPython Contributionsのテーブルに参加しました。 CPythonへの貢献を初めてやってみようというテーブルで、CPython開発者の方がその場にいて親切に導入してくれたり、議論や相談に乗ってくれます。 これがあるのはPyCon USとEuroPythonくらいではないかと思います。せっかくPyCon USに来たので飛び込んでみました。 結果的に、3.13から導入された新しいREPLに関する [issue](https://github.com/python/cpython/issues/127960) に取り組み、[PR](https://github.com/python/cpython/pull/134275)を出してマージされるところまでできました。 スプリントに参加したら、まず取り組むissueを決めます。 CPythonリポジトリでは初心者が取り組みやすい簡単なissueに [`easy` label](https://github.com/python/cpython/issues?q=is:issue%20state:open%20label:easy)がついていて、ここから探すのが一般的です。 しかし今回は `easy` issueの数が参加者に対して全然足りておらず、空いているissueがすぐに無くなってしまったため、`easy` 以外のissueから探しました。 その結果 [#127960](https://github.com/python/cpython/issues/127960) を見つけました。 Python 3.13から[新しくなったREPL](https://docs.python.org/ja/3/whatsnew/3.13.html#a-better-interactive-interpreter)では相対インポートの挙動が従来のものと違っているという指摘です。 自分の手元で最新のコミットでも問題を再現できることを確認し、修正点のアテをつけてから issue に自分がスプリントで取り組みたい旨の[コメント](https://github.com/python/cpython/issues/127960#issuecomment-2891721324)を残しました。 早々に関連する箇所を見つけ、Pythonコードに1行足すだけでissueの指摘事項を直せることが分かりました。 しかしその修正はなんともその場限りのものだったので、問題の根本的な原因を探って一貫性のある修正を模索してみました。するとCで書かれた部分にまで手が及び、さらに元の実装の意図と衝突する修正を導入してしまうことになりました。 このまま頑張っても手戻りのリスクが大きいと判断し、この時点でスプリントリーダーに相談しました。 すると、新REPLのメイン実装者の[Pablo](https://github.com/pablogsal)にその場で繋いでくれました。こういうことが気軽に起きるのがオフライン開催のスプリントの良い点です。 Pablo に上記の懸念を伝えると、以下のような返答でした。 * issue としてはエッジケース寄りなのであまり大きな修正は労力の割に合わないだろうから無理しなくてもよく、現状を正として、ここでの議論をコメントに残しつつ issue を close するのも選択肢である。 * 一方で実装を頑張るなら、説明された実装方針自体には同意できるしレビューするのも問題ない。 私としてはせっかくなのでまず実装を頑張ってみて、どうしようもなくなったら妥協してissueに議論の過程だけ残して撤退することにし、Pabloにもその方針を伝えました。 撤退も視野に入れつつ最初の実装を終えていざdraft PRを作ったところで、テストコードで担保されている、つまり元の実装者が意図的・明示的に選択した挙動を破壊してしまうことが判明しました。ここで1日目が終わり、draft PRをそのまま寝かせていたら、後日、別のコア開発者[Łukasz](https://github.com/ambv)が議論に加わってくれて、私の実装方針を支持してくれ、当該テストコードを削除してくれました。また[Tomas](https://github.com/tomasr8)が、REPLのimportの挙動を変えるとautocompleteにも修正が必要である点を指摘してくれました。 これらの後押しを受けて実装とテストコードを拡充し、最終的にマージされるところまで至りました。 プログラミング言語そのもののリポジトリに自分のコードが入るのは初めての経験でした。 このスプリントは、CPythonのような大きなOSSに対して何らかの貢献を始めるために、とても良い助走の機会を提供してくれたと思います。コア開発者の方々が気軽に議論に加わってサポートしてくれるため、大きなハードルを感じずに、出したPRがマージされるところまでやり切れました。 また月並みな感想ですが、最近のAIの性能向上によって、CPythonのようなプロジェクトの実装に新しく参加するハードルは下がっていると実感しました。 この時自分はCursorを使っていましたが、AIがコードリーディングの速度をかなり上げてくれました。それなりに長いCやPythonのコードの依存関係をジャンプしながら全容を把握する代わりに、AI chat に説明させることでかなり短時間でコードベースを把握して、スプリント中に実装を進められたと思います。 ```` ````{admonition} PyCon US 2025 t-strings Sprint このコラムは清水川(@shimizukawa)がお届けします。 私は今回が **PyCon US初参加** でした。一番楽しかったのは、 "t-strings スプリント" に参加し、Python 3.14の最新の技術に触れられたことです。また、参加者との交流も貴重な経験となりました。 スプリントでは、t-stringsの[PEP-750](https://peps.python.org/pep-0750)オーサーのPaul Everittさん、Dave Peckさん、青野高大さん([@koxudaxi](https://github.com/koxudaxi))と協力して、作業を進めました。 "t-strings"はPython 3.14で導入される新しい文法です。 t-stringsの核心は「安全な文字列処理」にあります。従来のf-stringsとの違いは、すぐに文字列にはならない点です。 ```python >>> user_input = "" >>> f"