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

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

この記事を読むのに必要な時間:およそ 6 分

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

著者プロフィール

鈴木たかのり(すずきたかのり)

一般社団法人PyCon JP,副代表理事,株式会社ビープラウド所属。

部内のサイトを作るためにZope/Ploneと出会い,その後必要にかられてPythonを使い始める。PyCon JPでは2011年1月のPyCon mini JPからスタッフとして活動し,2014年-2016年のPyCon JP座長。他の主な活動は,Pythonボルダリング部(#kabepy)部長,Python mini Hack-a-thon(#pyhack)主催など。

共著書に『Pythonによるあたらしいデータ分析の教科書(2018 翔泳社刊)』『Pythonプロフェッショナルプログラミング 第3版(2018 秀和システム刊)』『Pythonエンジニア ファーストブック(2017 技術評論社刊)』『いちばんやさしいPythonの教本(2017 インプレス刊)』などがある。

最近の楽しみはPython Boot Campの講師で訪れた土地で,現地のクラフトビールを飲むこと。2019年は世界各国のPyConでの発表に挑戦している。趣味は吹奏楽とボルダリングとレゴとペンシルパズル。

Facebook:takanory.net

Twitter:@takanory

Github:takanory