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

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

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

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機能の仕組みや,どのように使うのか,一部で使いたくない場合はどうすると良いのか,といった,実際の開発で必要となりそうな詳細な情報が紹介されました。

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

著者プロフィール

清水川貴之(しみずかわたかゆき)

ドキュメンテーションツールSphinxのメンテナ。2003年にZope2と出会い,それがオープンソース等のコミュニティー活動を始めるきっかけとなった。

Sphinx-users.jp運営。一般社団法人PyConJP理事。株式会社ビープラウド所属。

著書/訳書:「Pythonプロフェッショナルプログラミング第2版」「Sphinxをはじめよう」「Pythonプロフェッショナルプログラミング」「エキスパートPythonプログラミング」。

運営・参加イベント:Python mini Hack-a-thon主催,Sphinx+翻訳Hack-a-thon主催,PyCon JP 2011-2014運営

サイト:http://清水川.jp/
Twitter:@shimizukawa

コメント

コメントの記入