世界最大のPythonカンファレンス「US PyCon 2019」レポート

第1回US PyConへの道、1日目キーノート「Pythonこの10年」、注目セッション~日本からのLT参戦

US PyConとは

PyCon(Python Conference)は、プログラミング言語Pythonに関する国際カンファレンスです。アメリカで開催されるUS PyConや日本で開催されるPyCon JPを含め、世界中で開催されています。

今回レポートする「US PyCon」はPyConの発祥であり世界最大のもので、今回は約3,200人が参加しました。筆者はこのイベントに初参加であり、Posterセッションのスピーカーとしても参加してきました。日本を含めて各国のPyConに参加したことがありますが、USにはまた他とは異なるおもしろい部分がありました。キーノートなどの発表を中心にしつつ、個人的におもしろいなと思った部分についてもレポートしていきたいと思います。

US PyCon 2019Webサイト
「US PyCon 2019」Webサイト

以下は「US PyCon 2019」の開催概要です。

URLhttps://us.pycon.org/2019/
日程チュートリアル 2019年5月1日(水⁠⁠、2日(木)
カンファレンス 2019年5月3日(金⁠⁠~5日(日)
開発スプリント 2019年5月6日(月⁠⁠~9日(木)
会場Huntington Convention Center
⁠オハイオ州クリーブランド)
参加費個人400ドル(学生125ドル、企業700ドル)
主催Python Software Foundation

第1回はPyConの全体像とカンファレンス1日目までの様子をお伝えします。

PyCon会場と全体像

US PyConはHuntington Convention Centerという会場で開催されましたが、これがとにかく広いです。企業ブース、ランチ会場などがあるメイン会場は幕張メッセのホールみたいな感じで、その横にキーノートやライトニングトークが行われる2,000人とかは入りそうなホールがあります。

メイン会場のホールB, C
メイン会場のホールB, C

それとは別に2~300名入れそうな部屋が5つあり、トークセッション用に使用されます。さらに数10~100名くらい入れる会議室が20以上(Open Spaces、託児室、スタッフ用などで使用)あり、それらがほぼワンフロアにあって横移動できるという、アメリカのデカさを感じる会場でした。なお、カンファレンスのタイムテーブルは以下のリンクから参照できます。

またすべてはそろっていませんが、発表のビデオやスライドは下記のリンクから参照できます。

カンファンレンス前日まで

日本から移動してホテルに到着

私はカンファレンスの2日前(5月1日)に日本から移動しました。日本からクリーブランドへは直行便がないため、行きはワシントンD.C.で乗り換えました。乗り換え時間が短いため空港内でビールが飲めなかったのが非常に悔やまれます(良さそうな店がたくさんあった⁠⁠。

私はカンファレンス3日目のポスターセッションで発表するため、ポスターを日本から持参しました。乗り継ぎもあるしバッキバキになってないか心配だったんですが、空港のターンテーブルで無事なポスターを見てほっと一安心しました。

ポスターが折れずにちゃんと届いた
ポスターが折れずにちゃんと届いた

空港からホテルへの移動にはRTAという地下鉄を利用してみました。どこまで乗っても2.5ドル(約270円)です。空港からホテル周辺のダウンタウンまで外を見ていると、田舎という感じなのと、やはりこのあたりで地下鉄に乗ってくる客層はちょっとお金がない人なのかな?という感じでした。当然ですがアジア人の旅行者なんて誰も乗っていません(というか旅行者も私含めて3名くらいしか乗っていない⁠⁠。周りと目を合わさずに目的の駅に無事到着し、10分ほど歩いてホテルに到着しました。

この日は同じ部屋に泊まる寺田さん@terapyonや韓国のYounngun@scari_net⁠、シカゴ在住で日本に住んでいたときに友達になったJason@jason_wirthなどとクリーブランドのクラフトビールとピザを食べに行きました。

ピザがおいしかった(当然ビールも)
ピザがおいしかった(当然ビールも)

受付とオリエンテーションに参加

カンファレンス前日はまずは受付をすませておきました。受付に行って受付票のバーコードをカメラで読み取ると、プリンタから名札とTシャツ、パーティーなどあらかじめ申し込んだオプションのチケットが1枚の紙に印刷され、それを切り取って使います。すごい効率的で便利そうです。

パンフレットは会場全体図と、トークのタイムテーブルのみが印刷された、4ページ両面のシンプルなものです。詳細な情報はguidebookというスマートフォンのアプリで見てね、というスタンスのようです。たしかにトークの数もイベントの数も大量にあるので、紙だと大変なことになりそうで納得です。

名札とパンフレット
名札とパンフレット

夕方からNewcomer Orientationというイベントがあるので、USのPyConは初めてなので参加してみました。内容としてはPyConの中でどんなイベントがあるかということを詳しく紹介するというものでした。

Opening Reception

Orientationが終わると、そのまま隣のメイン会場に移動してOpening Receptionが始まります。このタイミングで通常の参加者(初参加じゃない人)も合流します。企業ブースの準備も終わっているので、ビール片手にブースを見て回ったり、参加者同士で交流したりとカジュアルで楽しいイベントでした。このタイミングでブースを回りまくってTシャツなどのグッズを集める人もいるようです。

ビール片手にブースを回る
ビール片手にブースを回る

ブース自体は写真のように本格的ですが、カジュアルに会話をしていていい感じだなと思いました。スポンサーブースで名札のバーコードを読み取ってもらうと、スポンサーに参加者個人の情報が提供されるようになっているようで、システム的にもしっかりしていました。

GoogleとSlackは2番目に大きいブース
GoogleとSlackは2番目に大きいブース
MicrosoftとFacebook+Instagramが1番大きいブース
MicrosoftとFacebook+Instagramが1番大きいブース

オープニング

いよいよ5月3日となってカンファレンスが開始しました。オープニングはConference ChairのErnest W. Durbin IIIさん@ewdurbinさんの進行ですすめられました。最初に「Welcome」で参加者にようこそと伝えて、⁠Thank Yous」というタイトルで関係者へのお礼などを言っていく感じです。

3番目の話が「Code of Conduct(行動規範⁠⁠」の話でした。Code of Conductについては毎日オープニングでも触れられていて、重要に考えていると感じました。また、Code of Conductがあるだけではなく、なにかあったら連絡をちょうだいと「電話番号とメールアドレス」が用意してあるのはよいなと思いました。いきなりSNSに書き込まれて炎上することは誰にもメリットがないと思うので、連絡先を明記するのは大事だなと思いました。

Conference ChairのDurbin氏によるオープニング
Conference ChairのDurbin氏によるオープニング

あとは会場案内や食事やスポンサー、5トラック95セッション(すごい数ですね)あること、Open Spacesなどの案内がありました。

また「PyCon Hatchery」という名前でいくつかの新しい試みの紹介がされていました。スペイン語トラックのLas PyCon Charlas、The Art of Python、Maintainers Summitなどです。他にはパックマンルールといって、輪になって話をするときには人が入れるスペースを作ろうって話などがありました。写真に写りたくない人はネームタグに専用の赤いリボンをつけてくださいというアナウンスも、感心しました。

そしてなにより驚いたのが、このオープニングをはじめすべてのキーノート、トークに英語の字幕がリアルタイムに付いていると言うことです。おそらくリアルタイムでプロの方が入力していると思うのですが、すごいです。耳が聞こえにくい人だけでなく、私のように英語を聞き取る能力が低い人にとっても「なにについてしゃべっているかわかる!!」となるので、とてもありがたいなと感じました。

トークに字幕がついてわかりやすい!
トークに字幕がついてわかりやすい!

キーノート:Russel Keith-Magee

オープニングに続いて1日目のキーノートであるRussel Keith-Magee氏の発表が始まりました。ビデオとスピーカー自身によるテキストの書き起こし(ありがたい)がブログから参照できます(項末参照⁠⁠。

Russel Keith-Magee氏
Russel Keith-Magee氏

氏はDjangoのコアデベロッパーであり、世界中のPyConやDjangoConで発表してきたそうです。Djangoは2006年からコアチームに入っていますが、オーストラリアの西海岸にあるパースに住んでいることもあり、2008年まで他のコアメンバーには会っていなかったそうです。

まず最初にブラック・スワン理論になぞらえて、Pythonで過去10年間に発生したブラック・スワンな(予測できない)できごとについて語りました。それは以下の4つです。

ブラックスワン1: 誰もがノートPCを使っている
以前はデスクトップやサーバーしかなかった。10年間で誰でもノートPCやタブレットでプログラミングができるようになった。
ブラックスワン2: Pythonはサーバーにとどまる
すべてのPythonがノートPCで動作するわけではなく、Webアプリケーションを書くためにもPythonを使用できる
ブラックスワン3: インストールは解決済みの問題
xkcd: Python EnvironmentでPythonのパッケージ管理について複雑であるというマンガがありますが、現在はその問題は解決しています
ブラックスワン4: コード配布は問題にならない
作成したPythonのコードをどのように配布するかの方法は統一されていないが、そこは問題にはならない

続けて、現在氏はBeeWareプロジェクトで活動しているという話がありました。このプロジェクトは1つのコードからLinux、Windows、macOS、Android、iOS、ブラウザ(Django)で動作するアプリーケーションを作成するというものです。現在は概念実証(Proof of Concept)の状態だそうです。

後半はアメリカズカップ(ヨットの国際大会)で、1983年にはじめてアメリカ以外のチーム(オーストラリアのパース)が優勝した話になぞらえて、チームの重要性などの話がありました。個人的に印象的だったのは、バーンアウト(燃え尽き)についての話です。氏は15年間Djangoのメンテナーをしているそうですが、2015年初頭にDjangoコミュニティでの自身の貢献に対して大きなプレッシャーがあり、燃え尽きたそうです。現在もコミュニティの一員ではあるが、少し距離を置いているそうです。

最後にコミュニティを健全に進めていくために、以下のようなアクションをとろうという提案がありました。

  • アクション1:ブラックスワンについて考えはじめる
  • アクション2:維持管理とR&Dのためのリソースを改善する
  • アクション3:貢献者とその貢献を評価する
  • アクション4:寄付をする

私自身、コミュニティの継続性や燃え尽きなどについては考えさせられる部分がありました。自分がとれるアクションをしていきたいなと感じました。

スピーカーによるブログ
Where do you see Python in 10 years? -Ceci n'est pas un blog

1日目の発表から

1日目のトークからいくつか紹介します。

API Evolution the Right Way ―A. Jesse Jiryu Davis

このトークはライブラリをメンテナンスしていく上で、APIを考えなしに拡張していくとキメラになっていくので、気をつけようという話です。オライリーの表紙っぽい蛇とかキメラの絵が気になるプレゼン資料でした。

内容としては、以下の10個の約束が提案されていました。

  • 第1の約束:悪い機能を避ける
  • 第2の約束:機能を最小限にする
  • 第3の約束:機能の範囲を狭くする
  • 第4の約束:実験的な機能に「Provisional」と印をつける
  • 第5の約束:機能を丁寧に削除する
  • 第6の約束:Changelogをメンテナンスする
  • 第7の約束:バージョン番号の付け方を選択する
  • 第8の約束:アップグレードガイドを書く
  • 第9の約束:互換性があるようにパラメータを追加する
  • 第10の約束:徐々に動作を変える

私自身はライブラリのメンテナンスなどはしていませんが、自分が書いているコードや社内のコードでも活かせる部分がありそうな、参考になる発表でした。

スピーカーによるブログ
API Evolution the Right Way -A. Jesse Jiryu Davis

Migrating Pinterest from Python 2 to Python 3 ―Jordan Adler, Joe Gordon

このトークはタイトルの通りPinterestのコードをPython 2から3に移行した話です。2人のスピーカーがスライドごとに入れ替わって話をするスタイルでした(卓球のダブルスみたいだなーと思いながら見ていました⁠⁠。

スライド
Jordan Adler, Joe Gordon - Migrating Pinterest from Python2 to Python3 -Speaker Deck

PinterestのWebサイトはDjangoベースでできている巨大なコードベースです。

  • 2,600万行のコード
  • 10年間で1000人以上がメンテナンス
  • 450人以上の開発者で毎月に3,500の変更

Python3への移行は以下のようにゆるやかに進めたそうです。

  1. コードをPython 3でも動くようにする
  2. 依存パッケージをアップグレードする
  3. コードベースをFuturizeする
  4. Pytnon 2とPython 3でテストする
  5. 本番環境をPython 3に移行する
  6. Python 2サポートを削除する
  7. Python 3のみの機能を追加する

依存パッケージのアップグレードでは依存関係グラフの下の方(他に依存していないもの)から進めていきます。caniusepython3というツールも使ったそうです。

Python 3化での移行で良かった点として、libfuturizelib2to3があげられていました。どちらもソースコードを書き換えて、Python 2と3両方で動くようなコードにするものです。具体的にどういう変更が行われるかを、コードの差分を交えて解説が行われました。

逆に良くなかった点として、数値やバイト列、文字列に関するPython 2と3で動作が違う箇所があげられていました。数値だと/演算子での割り算がPython 2ではintとなるが3ではfloatとなることや、丸め処理をするround()関数の動作の違いなどがあげられていました。このあたりは地道にコードを修正していくしかなさそうなので、テストで見つけては修正していくという感じなのかなと思われます。

実際のプレゼンテーションでは「Python 2ではこういう出力だけど、Python 3だとどうなる?」と質問をして会場から答えるという感じで、さながらPythonクイズのようになっていました。

2020年でサポートが切れるため、Python 2から3へ移行しているプロジェクトは世界中に存在すると思います。このプレゼンテーションの内容が進め方の参考になるかも知れないので、ぜひ参照してみてください。

Making Music with Python, SuperCollider and FoxDot ―Jessica Garson

このトークはぜひビデオを見てほしいのですが、SuperColliderとFoxDotを使ってリアルタイムで音楽を作っているというプレゼンテーションです。

私は詳しくないのですがSuperColliderというのは音響合成用のプログラミング環境とプログラミング言語で、ただ言語が独自なためさまざまなプログラミング言語から実行するラッパーが存在するようです。その1つがPythonラッパーのFoxDotで、実際にライブでコーディングしながら音楽を作っていました。

面白いというかPythonの言語仕様を奪っている感じなので、以下のようなコードが書かれてなんとなくなにやっているかはわかるけど、Python的になんでこういう書き方するんだ?という感じになっています。

FoxDotでのコードの例
   print(SynthDefs)
   p1 >> noise()
   p1 >> noise([2, 5, 8])
   di >> play('Hello PyCon')

ぜんぜんついて行けませんでしたが、Atomでコードを書いて保存するとどんどん音楽が変わっていく感じは見ているだけでも面白いものでした。

スライド
Making Music with Python SuperCollider and FoxDot

1日目ライトニングトーク

カンファレンス中には毎日1時間程度のライトニングトークがあります。ライトニングトークのスピーカーの選び方は少し変わっており、毎日話したい人が申し込みするボードが用意されます。発表をしたい人はここに名前、メールアドレス、タイトルを記入します。そして、選ばれた10名にメールで連絡が来るという形式のようです。完全な早い者勝ちではなく、なおかつ多すぎる候補から選ばなくていいのでなかなかよい手法だなと思いました。

Lightning Talksの申し込みボード
Lightning Talksの申し込みボード

そして1日目のライトニングトークで日本から参加したHirataさんが見事選ばれました。以下はHirataさんのライトニングトークでの発表についての感想です。

Squareのパーティー

この日の夜はどこに飲みに行こうかなと思っていたところ、到着日(5月1日)にも飲みに誘ってくれたJasonから「Square主催のパーティーがあるから申し込んで行こう」というメッセージが来ました。このように、PyCon開催中には企業主催のパーティーも何カ所かで行われているようです。なんとLyft(配車サービス)のクーポンコードも提供してくれるという大盤振る舞いです。

会場はPunch Bowl Socialという、ボウリングや古いアーケードゲーム、でかいジェンガとかがおいてある謎の店です。ディナーはなかなかおいしかったし、地元クリーブランドなどのクラフトビールを扱っていていいお店です。

Squareのパーティー
Squareのパーティー

7時過ぎから飲み始めて、10時にパーティーは終わったんですが、そのあともここで飲み続けて遊んでいました。すると地元の黒人の人(Ericさん)が来てなぜか「4目並べて対戦しようぜ」と声をかけられて、対戦。結果は2勝1敗で勝つことができました。めちゃめちゃくやしがっていて、リアクションがとても面白い人でした。そのあと「じゃあダブルスやろうぜ」となって、私とEricさんペア、ymotongpooとJasonペアで対戦しましたが、負けてしまいました。こういう謎な交流があることも醍醐味ですね。

4目並べをダブルスで対戦
4目並べをダブルスで対戦

まとめ

1日目のレポートは以上です。

初参加でまずは規模の大きさにびっくりしつつも、楽しく過ごすことができたPyCon初日まででした。クリーブランドはローカルのクラフトビールもたくさんあって(私にとっては)いいところだなーと感じました。

次回レポートではカンファレンス2日目の衝撃のキーノートやPSF Directorへのインタビュー、PyLadiesオークションなどの様子をお伝えします。

おすすめ記事

記事・ニュース一覧