US PyConとは
PyCon (Python Conference)は、プログラミング言語Pythonに関する国際カンファレンスです。アメリカで開催されるUS PyConや日本で開催されるPyCon JPを含め、世界中で開催されています。
今回レポートする「US PyCon」はPyConの発祥であり世界最大のもので、今回は約3,200人が参加しました。筆者はこのイベントに初参加であり、Posterセッションのスピーカーとしても参加してきました。日本を含めて各国のPyConに参加したことがありますが、USにはまた他とは異なるおもしろい部分がありました。キーノートなどの発表を中心にしつつ、個人的におもしろいなと思った部分についてもレポートしていきたいと思います。
また、6月25日に筆者を含めたUS PyCon参加メンバーでの報告会「US PyCon 2019 Debrief Session」を開催します。この記事の執筆時点では一般枠はすでに満席ですが、キャンセルもあると思うので今からでもぜひ申し込んでください。学生優先枠と女性優先枠にはまだ空きがあるので、ぜひご参加ください。
「US PyCon 2019 」Webサイト
以下は「US PyCon 2019」の開催概要です。
第1回はPyConの全体像とカンファレンス1日目までの様子をお伝えします。
PyCon会場と全体像
US PyConはHuntington Convention Centerという会場で開催されましたが、これがとにかく広いです。企業ブース、ランチ会場などがあるメイン会場は幕張メッセのホールみたいな感じで、その横にキーノートやライトニングトークが行われる2,000人とかは入りそうなホールがあります。
メイン会場のホール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番目に大きいブース
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氏によるオープニング
あとは会場案内や食事やスポンサー、5トラック95セッション(すごい数ですね)あること、Open Spacesなどの案内がありました。
また「PyCon Hatchery」という名前でいくつかの新しい試みの紹介がされていました。スペイン語トラックのLas PyCon Charlas、The Art of Python、Maintainers Summitなどです。他にはパックマンルールといって、輪になって話をするときには人が入れるスペースを作ろうって話などがありました。写真に写りたくない人はネームタグに専用の赤いリボンをつけてくださいというアナウンスも、感心しました。
そしてなにより驚いたのが、このオープニングをはじめすべてのキーノート、トークに英語の字幕がリアルタイムに付いていると言うことです。おそらくリアルタイムでプロの方が入力していると思うのですが、すごいです。耳が聞こえにくい人だけでなく、私のように英語を聞き取る能力が低い人にとっても「なにについてしゃべっているかわかる!!」となるので、とてもありがたいなと感じました。
トークに字幕がついてわかりやすい!
VIDEO
キーノート:Russel Keith-Magee
オープニングに続いて1日目のキーノートである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:寄付をする
私自身、コミュニティの継続性や燃え尽きなどについては考えさせられる部分がありました。自分がとれるアクションをしていきたいなと感じました。
VIDEO
スピーカーによるブログ
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の約束:徐々に動作を変える
私自身はライブラリのメンテナンスなどはしていませんが、自分が書いているコードや社内のコードでも活かせる部分がありそうな、参考になる発表でした。
VIDEO
スピーカーによるブログ
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への移行は以下のようにゆるやかに進めたそうです。
コードをPython 3でも動くようにする
依存パッケージをアップグレードする
コードベースをFuturizeする
Pytnon 2とPython 3でテストする
本番環境をPython 3に移行する
Python 2サポートを削除する
Python 3のみの機能を追加する
依存パッケージのアップグレードでは依存関係グラフの下の方(他に依存していないもの)から進めていきます。caniusepython3 というツールも使ったそうです。
Python 3化での移行で良かった点として、libfuturize とlib2to3 があげられていました。どちらもソースコードを書き換えて、Python 2と3両方で動くようなコードにするものです。具体的にどういう変更が行われるかを、コードの差分を交えて解説が行われました。
逆に良くなかった点として、数値やバイト列、文字列に関するPython 2と3で動作が違う箇所があげられていました。数値だと/
演算子での割り算がPython 2ではintとなるが3ではfloatとなることや、丸め処理をするround()
関数の動作の違いなどがあげられていました。このあたりは地道にコードを修正していくしかなさそうなので、テストで見つけては修正していくという感じなのかなと思われます。
実際のプレゼンテーションでは「Python 2ではこういう出力だけど、Python 3だとどうなる?」と質問をして会場から答えるという感じで、さながらPythonクイズのようになっていました。
2020年でサポートが切れるため、Python 2から3へ移行しているプロジェクトは世界中に存在すると思います。このプレゼンテーションの内容が進め方の参考になるかも知れないので、ぜひ参照してみてください。
VIDEO
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でコードを書いて保存するとどんどん音楽が変わっていく感じは見ているだけでも面白いものでした。
VIDEO
スライド
Making Music with Python SuperCollider and FoxDot
1日目ライトニングトーク
カンファレンス中には毎日1時間程度のライトニングトークがあります。ライトニングトークのスピーカーの選び方は少し変わっており、毎日話したい人が申し込みするボードが用意されます。発表をしたい人はここに名前、メールアドレス、タイトルを記入します。そして、選ばれた10名にメールで連絡が来るという形式のようです。完全な早い者勝ちではなく、なおかつ多すぎる候補から選ばなくていいのでなかなかよい手法だなと思いました。
VIDEO
Lightning Talksの申し込みボード
そして1日目のライトニングトークで日本から参加したHirataさんが見事選ばれました。以下はHirataさんのライトニングトークでの発表についての感想です。
初めてのライトニングトークでの発表
Tetsuya Hirata(@JesseTetsuya )
ステージに立つ前までは、とても緊張していました。なぜなら、ライトニングトークを日本でもやったこともなければ、他の人がやっていたのを実際に見るのも2、3回程度であったためです。こんな人数でこんなにもでかいスクリーンの前で話すのは、人生で一度もありません。
また、US PyConのステージにアジア人(特に日本人)で登壇してる人が少ないということもあり、日本人である自分の考えや意見を自信を持って伝えることでUSのPythonコミュニティに何かまた新鮮な感覚をもたらすことができるのではと思っていました。そう思いながら、会場に向かいました。
24人から選ばれる10人の発表者は、一列目の席に発表の順番に座ることになっていました。私は、緊張のあまり両脇に座っていた人に「I'm so nervoursssss. What should I do ?(とても緊張している。どうしたらいい?) 」と言ってました。右側の人(僕のトークの前の人)は「おれ、全然準備してないから俺のスライドみたらもっと楽になるんじゃない?」と言われて見せてもらったら「スライド、めっちゃ準備してきてるじゃん」と思い、ここで自分のトークへの自信をなくしました。次に左側の女性(僕のトークの後の人)に聞いたら、「 OMG, I'm getting more nervous(私も緊張してきたよ) 」と言われて、「 え、僕のせい?!ごめん」となっていました。
いざ、ステージに上がるとみんなが温かい目でトークを聞いてくれている感覚があり、思っていた以上に緊張せずに話しきることができました。
Hirataさんの発表の様子
発表が終わって、多くの人に名前と顔を覚えてもらえました。Guidoにも「君のトークを聞いてたよ、よかったよ」と言ってもらえました。他にも、いきなり知らない人(SprintでのPackaging Summitを仕切っていた人)に「君のトークよかったぜ」と言われて飲みに誘われて行きました。
一番印象的だったのは、US PyConに参加していた何人かのアジア系の方々に「I'm impressed. Well done.(感動した。よくやった。) 」と言い寄られたことでした。このとき、日本では感じ得られないようものを感じました。
総じて、US PyConの多様性を重視する姿勢を感じることができ、これは現地にきてコミュニケーションをしないと感じ得られないことだと思いました。この多様性を受け入れる姿勢、この言語化できないような感覚は日本でもチームワークを上手く進める上で忘れずにコアな考えとして大事にしていきたいと思います。
HirataさんとGuido氏
Squareのパーティー
この日の夜はどこに飲みに行こうかなと思っていたところ、到着日(5月1日)にも飲みに誘ってくれたJasonから「Square主催のパーティーがあるから申し込んで行こう」というメッセージが来ました。このように、PyCon開催中には企業主催のパーティーも何カ所かで行われているようです。なんとLyft(配車サービス)のクーポンコードも提供してくれるという大盤振る舞いです。
会場はPunch Bowl Social という、ボウリングや古いアーケードゲーム、でかいジェンガとかがおいてある謎の店です。ディナーはなかなかおいしかったし、地元クリーブランドなどのクラフトビールを扱っていていいお店です。
Squareのパーティー
7時過ぎから飲み始めて、10時にパーティーは終わったんですが、そのあともここで飲み続けて遊んでいました。すると地元の黒人の人(Ericさん)が来てなぜか「4目並べて対戦しようぜ」と声をかけられて、対戦。結果は2勝1敗で勝つことができました。めちゃめちゃくやしがっていて、リアクションがとても面白い人でした。そのあと「じゃあダブルスやろうぜ」となって、私とEricさんペア、ymotongpooとJasonペアで対戦しましたが、負けてしまいました。こういう謎な交流があることも醍醐味ですね。
4目並べをダブルスで対戦
まとめ
1日目のレポートは以上です。
初参加でまずは規模の大きさにびっくりしつつも、楽しく過ごすことができたPyCon初日まででした。クリーブランドはローカルのクラフトビールもたくさんあって(私にとっては)いいところだなーと感じました。
次回レポートではカンファレンス2日目の衝撃のキーノートやPSF Directorへのインタビュー、PyLadiesオークションなどの様子をお伝えします。