海外PyCon発表修行レポート2015

第3回EuroPython 2015参加レポートと、Sphinxに関する発表(前編)

清水川です。

2015年7月20日(月⁠⁠~26日(日)にかけて、スペインのビルバオでEuroPython 2015が行われました。EuroPythonは毎年ヨーロッパ地域で行われるPythonカンファレンスで、今年は14回目の開催です。最初の開催は2002年で、世界で初めてボランティアによって開催されたPythonカンファレンスです。アメリカで開催されているPyConよりも、1年早く開催されたんですね。

EuroPython 2015
EuroPython 2015

EuroPythonの開催地は、ヨーロッパ各国からの立候補を受けて、EuroPython Societyのボードメンバーが決定します。昨年はドイツのベルリンで開催され、日本人は筆者を含む4人が参加しました。今年は日本からは筆者のみの参加でした。

本記事では、EuroPython 2015の様子について2回に分けて紹介します。今回は、開催都市について、カンファレンスの様子、発表内容をいくつか紹介します。次回は、EuroPythonの発表者支援プログラム、筆者の発表(Sphinxのautodocに関するもの⁠⁠、パーティー、そしてSprintの様子について紹介します。

参考リンク:

ビルバオってどんなところ?

ビルバオはスペインの北部、バスク地方にある芸術の街です。筆者は今回EuroPythonが開催されるまで、ビルバオの名前を知りませんでした。ビルバオにはEuroPython 2015サイトの背景画像に使われている、グッゲンハイム美術館があります。この美術館は建物自体が有名で、現代建築として評価が高いそうです。そして市街地に大小多くの公園があり、緑がとても多かったのが印象に残っています。

グッゲンハイム美術館と、ジェフ・クーンズ作『パピー』
グッゲンハイム美術館と、ジェフ・クーンズ作『パピー』

ビルバオには、日本からフランス経由で18時間かかりました。日本との時差は7時間です。交通費はエールフランスで往復約20万円でした。

ビルバオでの公共の移動手段は、バス、トラム(路面電車⁠⁠、鉄道があります。バスとトラムは一律1.5ユーロ(約200円⁠⁠、都市鉄道はゾーン内であれば1.5ユーロです。トラムの路線は観光向きな場所に敷設されていますが、あいにくEuroPythonの開催期間中はストライキが行われており、運行本数が半分以下になっていたようです。筆者は今回、会場との行き来は徒歩で移動しました。観光のために公共交通機関をそれぞれ利用しましたが、混んでいるということもなく、とても快適でした。

バス、トラム、鉄道で使用できるBarikカード
バス、トラム、鉄道で使用できるBarikカード

Barikカードは交通機関用の電子マネーカードです。カードの購入に3ユーロ(約400円)かかり、最低チャージ金額は5ユーロからです。初期コストがありますが、このカードを使うと交通機関の金額が約半額になります。また、複数人で1枚のカードを使用できるので、のべ4回以上乗車すれば元が取れます。

ビルバオでのインターネット接続のために、筆者は到着してすぐにSIMカードを買うつもりでした。しかし、空港にSIMカードを売っているところはなく、また日曜日到着だったため市内でもSIMカードは購入できませんでした。翌日以降、市内の販売店を何ヵ所かまわりましたが、販売していなかったり、1GBで30ユーロ(4,000円)と割高だったりしたため、最終的にはSIMカードを購入しませんでした。

ビルバオ滞在中のインターネット接続については、ホテルやカンファレンス会場、公共のWi-Fiを利用することで充分でした。また、ビルバオのバスではWi-Fiを提供しているため、ほとんどの場面でSIMカードはなくても問題ありません。地図を見たい場合でも、数分あるけばWi-Fi電波を捕まえられる、というくらい公共のWi-Fiは充実していました。唯一困ったのは、バルで美味しいワインを飲みながらFacebookやSwarmでチェックインできなかったことですね。

バルTXALUPAの様子
バルTXALUPAの様子

スペインでの会話はほとんどがスペイン語で、英語が話せる人はホテルのフロントや空港など、ごく限られています。SIMカードを購入しようとしたときも、半分の店舗では英語が話せませんでした。また、市街にあるバルやレストラン、スーパーでも英語は使えないと思ったほうが良いでしょう。筆者は、0から6までの数字と、⁠Una cerveza porfavor(ビール1杯ください⁠⁠Una esta porfavor(これ1つください⁠⁠La cuenta porfavor(お勘定お願いします⁠⁠」という3つの言葉を覚えました。

コンセント形状はCタイプで、ヨーロッパの多くの地域で使われている形状です。日本のコンセント形状はAタイプなので、コンセントを使うには変換プラグが必要になります。電圧は、ほとんどのノートPCの電源アダプタやUSB充電器などは100V~240Vに対応しているので、対応電圧を確認して大丈夫であればそのまま使えると思います。

Sprintではコンセントも国際色豊か
Sprintではコンセントも国際色豊か

EuroPythonの様子

公式サイトhttps://ep2015.europython.eu/en/
期間2015年7月20日(月⁠⁠~26日(日)
構成基調講演を含む5トラック(英語セッションと、一部スペイン語セッション)+トレーニングセッション3トラック
参加費用早期割引230EUR、通常440EUR(1EURは約138円)
会場Euskalduna Conference Center (ECC)
参加人数約1,100人

7月20日(月⁠⁠~24日(金)は5つのキーノート、170個のトークセッション、25個のトレーニングの並行開催でした。トレーニングはそれぞれ3時間前後で、Python入門やDjango Girlsワークショップといった入門編から、DevOpsやNumpy、pytest、Lego for Scrumなどさまざまです。筆者はトレーニングセッションには参加せず、主にトークセッションに参加しました。

受付からオープニング

カンファレンスデイ初日、7月20日(月)は9:00からオープニング、9:30からキーノートの予定でしたが、オープニングは40分ほど遅れて始まることになりました。筆者はホテルが近かったためのんびり出発して8:50頃に会場に着きました。しかし、この時点で受付待ち行列ができており、150人くらい並んでいました。筆者はスピーカーなので並ばずに受付できましたが、名札が見つからず、当日参加受付列に並んで臨時の名札をもらうことになりました。どうやら、一部の名札がどこかに紛れてしまったらしく、名札を探す時間で受付が混雑してしまったようです。1,100名分の名札を並べて探すのは簡単ではなかったようで、座長が来年以降の改善点にしたいと言っていました。

ノベルティのTシャツと袋にリアルなヘビの印刷、プログラム冊子、アルミの水筒
ノベルティのTシャツと袋にリアルなヘビの印刷、プログラム冊子、アルミの水筒

EuroPythonでは、遠方からの参加者を意識した観光案内などにも力を入れていました。ノベルティの袋にはビルバオ市内の観光スポットが記載された地図が同封されていました。さらにオープニングでは、グッゲンハイム美術館のチケットを10ユーロで提供することを紹介していました。正規に購入するには、美術館で並んで13ユーロで購入する必要があります。この10ユーロは翌年の遠方支援費への寄付になるそうです。筆者はこれを聞いて、参加者とカンファレンス、そして街の特徴とがとてもうまく繋がった構成になっていると感じました。

また、遠方からの参加者は、長期休暇を兼ねて家族連れでカンファレンスに参加することがあります。筆者もビルバオへ家族を連れて行きました。そこで、家族向けのイベントPARTNER PROGRAMとして、ビルバオや近郊の観光スポットを訪れるツアーが毎日用意されていました。ツアーは有料で事前申し込みでした。カンファレンスだけでなく、訪れた都市の文化に触れる機会を持つのも楽しいと思います。次の機会にはビルバオをボートで巡るツアーに参加してみたいですね。

キーノート紹介

キーノートは毎日朝9時半から行われました。ここでは2つのキーノートを紹介します。

キーノート:Django Girls

初日のキーノートは、2014年7月に開催されたEuroPythonでDjango Girlsを立ち上げたOla SitarskaとOla Sendeckaの2人によるものでした。2人はDjango Girlsを始めた経緯などを童話形式のスライドで紹介しました。IT技術に魅せられたリスが、テクノロジーの森で孤軍奮闘するなかで仲間を見つけた、という話を絵本タッチのスライドで紹介していました。ストーリーでは、Squirrel(リス)がBadgers(アナグマ、動詞で⁠くどくど質問する⁠⁠)のなかに1匹まざって奮闘する、というシーンが紹介されています。これは女性だけに限らず、誰もがプログラミングを始めたばかりの頃に体験する話だと感じました。

キーノート:Django Girls
キーノート:Django Girls

タイトルのIt's Dangerous To Go Alone. Take This: The Power of Community(一人で行くのは危険、コミュニティーの力を手に進もう⁠⁠」はこのキーノートの内容を良く表していました。ストーリーはわかりやすく、どのようなことに困っていたのか、その後、仲間がいることで勇気づけられPythonを楽しんでいる、といったことが伝わる内容でした。

発表後には会場中が立ち上がり、長い時間惜しみない拍手を贈っていました。まさに、1週間のPythonカンファレンスのキーノートにふさわしい内容でした。

最近、日本でもDjango Girls TokyoPyLadies Tokyoなど、Pythonに限らず女性のみのワークショップやイベントが増えてきています。なぜ女性に限定したイベントが必要とされているのか、この発表はそういった疑問への答えにもなっていると思います。気になる人は、ぜひ一度、動画を見てみることをお勧めします。

It's Dangerous To Go Alone. Take This: The Power of Community

Guido Van Rossum 氏の キーノートとセッション

Pythonの生みの親、Guidoのキーノートとセッションについて紹介します。

キーノート:Python now and in the future

Python now and in the future

Guidoのキーノートは、2日目の朝イチに行われました。キーノートは、⁠Pythonの今とこれから」と題して、最初から最後まで質問に答えるスタイルで行われました。前半は、よく聞かれる質問とその答えをスライドで用意してありましたが、後半は会場からの多くの質問に、冗談を交えながら答えていました。その中からいくつかの質問と回答を紹介します。

  • Q1. Python3に切り換えるべき理由はなに?
    • 切り換えるべき、とは言わないけど、切り換えてくれたら良いなあと思う
    • Python3は本当により良い言語になったんだ
    • Python3.5は素晴らしく、多くの良い機能が追加された
  • Q2. なぜPython2.8はリリースされないの?
    • 2.7と比較して新しい機能を提供できないから
    • なぜなら、Python3の全ての機能をPython2で使えるように移植できない
    • Python2とPython3の、もっとも大きな変更はUnicodeの扱いなんだ

このほかにも、好きなPython3.5の機能は? Pythonは将来どうなるの? といった質問の回答が紹介されました。また、会場からは、GIL問題についてどう取り組んでいますか? という難易度のとても高い質問もあれば、好きなWebフレームワーク/Textエディタ/テストライブラリ/Pythonの例外、などの質問もありました。好きなPythonの例外を聞かれたGuidoは思わず吹き出していました。

各質問の回答については、ぜひ動画を見てみてください。

Type Hints for Python 3.5

Type Hints for Python 3.5

Guidoはキーノートだけでなく、通常のセッションでもスピーカーとして登壇し、Python3.5の新機能であるType Hints (PEP 484)について紹介しました。

Type Hintsは、Python3から導入された関数アノテーションという文法で、関数の引数や返値の型を明示します。関数アノテーションは例えば以下のように記述します。

def greeting(name: "name to say") -> "message":
    return 'Hello ' + name

"name to say"name引数のアノテーションで、"message"が関数からの返値のアノテーションです。ここでは文字列をアノテーションに使いましたが、Pythonのオブジェクトであればなにを指定してもかまいません。その代わり、Python自体はアノテーションに対してなにも責任を持ちません。使い方は利用者に任されています。

このアノテーションに、型を明記することで、型チェックツールやIDEが実装を検査できるようにする、というアイディアがType Hintsです。Python3.5で導入されるのは、Type Hintsとして使用できる型の定義と、書き方のルールです。Type Hintsに準拠した書き方は以下のようになります。

from typing import Iterable, Callable

def greeting(name: str) -> str:
    return 'Hello ' + name

def greetings(names: Iterable[str]) -> Iterable[str]:
    return ['Hello ' + name for name in names]

def async_query(on_success: Callable[[int], None],
                on_error: Callable[[int, Exception], None]) -> None:
    ...

Python3.5はType Hintsのチェックツールを提供しません。つまり、これまで関数アノテーションを書いていたコードがPython3.5で壊れて動かなくなったりもしません。型をチェックするには外部のツールを使うことになります。これまでもmypyPyCharmなどが独自にチェック機能を提供してきました。今後はそういった複数のツールがPEP 484に準拠することで、ユーザは好きなツールを組み合わせて使えるようになっていくでしょう。

Pythonのお父さん、Guidoの発表
Pythonのお父さん、Guidoの発表

セッションでは、Type Hintsの歴史と、Python3.5でType Hintsを公式に導入する理由について紹介していました。Type Hints機能に反対する声も多く、そういった声への反論として、次のように述べていました。

「今はPyCharmやGoogleそれぞれが独自に型情報ファイル(スタブ)を用意してがんばってるけれど、各自が独自に頑張るのではなく公式に提供するのは良い方法。またType Hintsはオプショナルな作りになっているので、Python3.5が既存のなにかを壊す事はない。」

Python3.5で提供される使い方の他にも、いくつかの書き方の提案があったものの、最終的に今の形になったのだそうです。選択の際には、Python3.5だけでなくPython3.2~3.4でも使えるように文法互換性があることに気をつけたそうです。筆者はこの発表を聞いて、後方互換性の考慮と新機能の導入のバランス感覚がとてもすごいと感じました。

その後の発表は、Type Hints機能の仕組みや、どのように使うのか、一部で使いたくない場合はどうすると良いのか、といった、実際の開発で必要となりそうな詳細な情報が紹介されました。

詳しくは動画を確認してみてください。

そのほかの発表

筆者は、他にも多くのセッションに参加しました。全ては紹介できませんので、ここではいくつかの概要を紹介したいと思います。

Writing quality code

Writing quality code

発表は、コードの品質には外側の品質と内側の品質があり、内側の品質をどうやって測って、基準をもって維持、改善していくかという内容でした。読みやすさ、メンテナンスのしやすさ、といった品質の種類を紹介し、そういった品質がいかに開発にとって重要なのか、図とグラフを用いてとてもわかりやすく紹介していました。

発表の後半では、いくつかの指標と測定ツール、サポートツールなどが紹介されていました。測定ができて、指標があれば、コードの維持はずっとやりやすくなります。筆者もそれらをさっそく試してみているところです。

紹介されたツール:

How you can benefit from type hints

How you can benefit from type hints

発表者は、PyCharmの開発者で、Type Hints (PEP 484)の策定にも貢献している方です。発表では、⁠よくあるドキュメントは言葉が多すぎるし、各引数の型や値の意味をそれぞれ文章で説明していて、とてもわかりにくい。」と、型を文章で説明するしかない現状の問題点について紹介していました。Type Hintsがあれば自動生成ドキュメントに読みやすい明確な型情報を含められ、またPyCharmの型チェック機能の精度もあがります。

発表の後半では、APIへの型情報の設定方法や、外部ライブラリ等の編集できないコードにType Hints情報を付け加えるにはどうすればいいのか、といった実践的な課題の解決方法を紹介していました。

RinohType, a document processor inspired by LaTeX

RinohType, a document processor inspired by LaTeX

RinohTypeは、外部ライブラリへの依存を最小にした、reStructuredTextからPDFへの変換ツールです。依存ライブラリはdocutilsのみで、それ以外はTeXLiveなどにも依存していません。単体で動作するだけでなく、Sphinxのビルダー拡張としても動作するため、SphinxドキュメントをRinohTypeを使ってPDF出力できます。

この発表にはとても興奮しました。SphinxのPDF出力はLaTeXを経由して行うのが一般的ですが、LaTeXはとても複雑で利用する難易度が高いため、RinohTypeが今後多くのシーンで利用できるようになって欲しいと思います。発表を聞きながらさっそく試してみたところ、その時点では日本語などの非ASCII文字にはまだ対応していませんでした。今後、どのように開発が進んでいくのか、とても楽しみです。

次回

次回は、EuroPythonの発表者支援プログラム、筆者の発表(Sphinxのautodocに関するもの⁠⁠、パーティー、そしてSprintの様子について紹介します。

おすすめ記事

記事・ニュース一覧