PyCon US 2025参加レポート

#02今だから聞きたい「ダイバーシティ&インクルージョン」パネル⁠「遊び」大切さを説くキーノート ーPyCon USカンファレンス2日目レポート

カンファレンス2日目です。今日も会場での朝食からスタート!!

朝食の提供テーブル
朝食の提供テーブル

ライトニングトーク

2日目朝のライトニングトークからはEric Matthes氏によるdjango-simple-deployを紹介します。

django-simple-deployはDjangoのプロジェクトを各種プラットフォームに簡単にデプロイできるライブラリです。現在はFly.io、Platform.shとHerokuに対応しており、実際にデプロイするデモを行いながらトークを進め、今後さらに対応プラットフォームを増やしたいので協力して欲しいという話をしていました。

Eric Matthes氏によるライトニングトーク
Eric Matthes氏によるライトニングトーク

ダイバーシティ&インクルージョンのパネル

ダイバーシティ&インクルージョン(D&I)のパネルディスカッションは、以下の5名により行われました(写真の左から右の順番です⁠⁠。

  • Keanya Phelps氏:モデレーター。ソフトウェア開発者、PyCon US初参加
  • Naomi Ceder氏:長年Pythonコミュニティに関わっており、2022年にPSF Distinguished Service Awards | Python.orgを受賞
  • Jay Miller氏:Black Python Devsの創設者。PyCon US 2024のキーノートスピーカー[1]
  • Cristián Maureira-Fredes氏:スペイン語圏コミュニティのPython Españaの主催者
  • Alla Barbalat氏:モデレーター。弁護士でPython愛好家であり、サンフランシスコのSF Pythonの主催者

パネラーのCristián氏はベルリン在住ですが、それ以外はアメリカ在住であり、昨年のD&Iパネルとは異なる方向性の話となりました[2]

ダイバーシティ&インクルージョンのパネル
ダイバーシティ&インクルージョンのパネル

最初にPythonコミュニティで長年D&Iに取り組んできたNaomi氏に現状について質問をすると「心配している、がっかりしている、怒っている。しかし希望も持っている」と語られました。これはおそらく最近のアメリカの国内・国際情勢について触れていると思われます。今回のPyCon USへの渡航に際し、入国が厳しいのではないか、スマートフォンの中身を見られる[3]といった情報が事前にあり、筆者も少し気にしていました。実際にアメリカに住んでいるパネラーの皆さんにとっても、いろいろと変化があるのだなと感じられました。

Cristián氏はベルリンからの参加だったため、やはり無事にアメリカに入国できるか少し心配だったようです。ただ「自分たちはハッキングすることが得意だから、うまく行く方法を見つけようとしている」という話をしていました。たしかにその考え方はエンジニア全般に通じるものがあるなと感じました。

Jay氏は昨年、PyCon USに来たがホテルでクレジットカードが通らず保証金が支払えない知人がおり、すぐにホテルに向かって代わりに支払ったそうです。これは元々の知り合いじゃないとなかなかできないことですが、確かに現実で発生しそうなことだなと思いました。筆者も2025年のPyCon APACでフィリピンのホテルに着いたときに、保証金が現金のみと言われ、他のメンバーに現金を借りました(危ない⁠⁠。

構造的な支援が薄れていく中でなにができるか?という質問に対して、Jay氏からは率直に「財政的に支援が必要」と述べられました。PyLadiesやDjango Girlsやローカルのコミュニティが継続して欲しいなら寄付をしてほしい、と伝えました。Cristián氏はローカルのミートアップやカンファレンスの運営を手伝う、ということを述べていました。Jay氏はさらにPython EspañaやPAO(Python Asia Organization)のように、言語や国を越えたコミュニティが発展していることは素晴らしいと語られました。

キーノート⁠Lynn Root

カンファレンス2日目のキーノートはLynn Root氏です。Lynn Root氏は現在SpotifyのエンジニアでPyLadiesのChairであり、Python Software Foundationのフェローメンバーでもあります。

そんな多才なLynn氏ですが、イタリアの会議からロシアの会議に向かう予定の中、ものすごく燃え尽きた状態になったそうです。このときは昇進する数ヵ月前であり、ハードに仕事をこなしていましたが、燃え尽きた状態となり「家に帰りたい、ネコに会いたい!!」と思い、ロシアの会議をキャンセルしてアメリカに帰ったそうです。

Lynn Root氏
Lynn Root氏

話は学生時代に戻り、子どもから大人になる悩みの話となりました。大人になる過程で遊ぶことを置き去りにすることが大事であると考えていましたが、大人になっても遊び(Play)は重要であると考えが変わったそうです。

Peter Gray博士は遊びを5つの特徴で定義しました。

  • 遊びはプロセスが重要で、結果ではない
  • 自ら選択して遊ぶ(人から強要されて遊ぶわけではない)
  • ルールがある。ルールはプレイヤーによって作られる
  • 想像力に富んでいる
  • リラックスして覚醒状態で行われる

そしてLynn氏は燃え尽きから回復するために、積極的に遊んだそうです。まずはスカイダイビング。次に100日間プロジェクトとして絵を描き続けたそうです。うまくなりたいわけではなく、ただ過程を楽しむために。その後Spotifyの社員バンドで高校生以来のベースを演奏したそうです。そのバンドで現在の婚約者と出会ったそうです。

最後に小説家のKurt Vonnegut氏の「We're here on Earth to fart around.」という言葉を引用しました。これは「私たちはくだらないことをするために地球にいる」という意味になります。そして聴衆に「みんな楽しんでふざけ回りましょう」と伝えてトークは終わりました。

とても共感できる内容のトークでした。また、スライド全編にLynn氏による手描きのイラストが使われており、これも100日絵を描き続けた成果なのかな?と思いました。

Why len('😶‍🌫️') == 4 and other weird things you should know about strings in Python

このトークではPythonでは文字列をどのように扱っているか、またUnicodeの詳細についても触れていきます。最初に以下のようなコードがスライドで示されました。この段階で「え?なにがどうなってるの?」と思いながらトークがはじまります。うまいフリだなと思いました。

冒頭で示されたコード例(このコードをコピペしてもうまく動きません、すいません)
>>> "naïve" == "naïve"
True
>>> "naïve" == "naïve"
False
>>> int("৪")
4
Yngve Mardal Moe氏(左)とMarie Roald氏
Yngve Mardal Moe氏(左)とMarie Roald氏

トークは文字列のエンコーディング、比較、スライスの3つのパートに分かれて進みます。Pythonは87種類の文字列のエンコーディング[4]に対応しています。2バイトでは65536文字に対応していますが、Unicodeでは4バイトを使用して100万以上の文字に対応しています。同じ文字列でもエンコーディングによってサイズが変わります。

またUnicodeの各文字にはカテゴリがあり、unicodedataモジュールのcategory()関数で取得できます。以下の'Nd'は十進数を意味します。

>>> from unicodedata import category
>>> category("৪")
'Nd'

ここで冒頭の謎に迫るわけですが、この文字列をint()に変換するとなぜか4になります。name()関数で名前を取得すると「ベンガル文字の4」であることがわかります。

>>> int("৪")
4
>>> from unicodedata import name
>>> name("৪")
'BENGALI DIGIT FOUR'

文字列の比較では、Pythonでは"y" is "y"とすると==じゃないの?」と警告が出ますが、結果としてはTrueが返ります。これは時間とメモリの節約のために、Pythonではいくつかの文字を1度だけメモリ上に格納しているためです[5]。しかし全ての文字ではないため、文字列の比較では==を使いましょう。

Unicodeでは見た目が同じでも異なる文字の場合があります。たとえば"\u000E5""\u0061\u030A"というコードはどちらも同じ見た目の"å"となります。前者は1文字ですが、後者は2文字のUnicode文字が結合しています。この2つの文字列を比較するとFalseとなります。

>>> a1 = "\u00E5"
>>> a2 = "\u0061\u030A"
>>> a1, a2
('å', 'å')
>>> a1 == a2
False

このような場合にunicodedataモジュールのnormalize関数を使用すると、正規化されて文字列として等価であることが確認できます。

また、面白いことにPythonの識別子は正規化をしているそうです。

>>> normalize("NFKC", a1) == normalize("NFKC", a2)
True
>>> 𝕞𝕖ſ𝚜𝒂𝙜𝓮= "Hello world"
>>> 𝕡𝗋𝓲𝗇𝔱(𝔪e𝕤𝘀𝓪ᵍₑ)
Hello world

他にもいろいろPythonでの文字列やUnicodeの扱いについて深い話が面白い例とともに示されて、とても興味深いトークでした。

面白いなーと思って聞いていると、最後のまとめのところで「昨日、鈴木たかのりの日本語のテキスト処理のクールなトークを見たよ。見てなかったらYouTubeでチェックしてね」と私の発表について触れてくれてびっくりしました(ビデオの22分45秒頃⁠⁠!! 質疑応答が終わった後にお二人に「私の発表を紹介してくれてありがとう」とお礼の言葉を伝えました。

ライトニングトークに申し込み

ライトニングトークはカンファレンス中に4回(1日目夕、2日目朝、夕、3日目朝)開催されます。2日目夕方のライトニングトークに日本から来ていたshimizukawaさんとwhitphxさんが落ちた(10/58という狭き門)という話を聞いて、申し込みが電子化されたメリットでもありデメリットでもあるなと感じました。

「記念受験として出してみるかー」と思い、3日目朝のライトニングトークに申し込みました。タイトルと簡単な概要文を書いて申し込みます。この時点で発表のアイデアはありますがスライドはありません。するとフォーム締め切り後の16時頃にメールがあり、私のライトニングトークが当選しました!! 明日の朝まで時間はあまりありませんが、ここからは集中して発表の準備を進めました。

ライトニングトークがAcceptされた!
ライトニングトークがAcceptされた!

PyLadies Auction

カンファレンス2日目の夜は毎年恒例のPyLadies Auctionです。このイベントはPyCon USの関係者がグッズを提供し、オークション形式で購入するというものです。落札されたお金は全てPyLadiesに寄付されて運営資金となる、というチャリティオークションです。

Guidoさんパネルと巨大Pythonぬいぐるみ
Guidoさんパネルと巨大Pythonぬいぐるみ

丸テーブルでおいしい食事を食べながら、楽しくオークションに参加します。とはいえ、あっという間にすごい金額になるため、オークションそのものには全然参加できませんでした。

オークションの食事風景
オークションの食事風景

オークションで全ての商品が終わった後に会場から「ペン!!」という声があがりました。これは、商品を写すモニターに写り込んだペンをオークションしよう、という悪乗りです。ペンのオークションが始まり300ドルになった頃に「他にこの○○のステッカーを付けます」みたいにMCがおまけを追加していたら、会場中の人がどんどん自分のコミュニティのステッカーを置き始めました。さらに悪乗りした人が現金を置いて、さらに各国の参加者がさまざまなお金を置き始めて、カオスな状態になりました。最終的にバッグが提供され、そのバッグにペンと全てのグッズを入れて落札者に渡され、オークションは終わりました。

ペンと雑多なグッズと現金
ペンと雑多なグッズと現金

こうしてカンファレンス2日目は21時40分くらいに終わりましたが、このあと私はライトニングトークの資料作成があるため、ホテルに戻った後に夜なべしてスライドを作成していました。

おすすめ記事

記事・ニュース一覧