読者の皆さんこんにちは、末田 卓巳です。第2回となる今回は、韓国で開催されたPyCon APAC 2016 in Korea のConference Day 2日目の様子をお届けします。
Armin Ronacher氏(Flask開発者)による基調講演
Openingの後、まずはじめにArmin Ronacher氏のKeynoteがありました。 Armin Ronacher氏はmitsuhikoというハンドルネームでも知られ、Flask と呼ばれる簡素なWebフレームワークの開発で有名な人物です。
Keynoteを務めるArmin Ronacher氏
Keynoteは題して「Letters from the Battlefield」( 戦場からの手紙) 。開発の現場において、Pythonの言語仕様を念頭に置きつつどのようにコードを書くと良いかが主に語られました。
Ronacher氏ははじめに「デベロッパはコードの変更を怖がってはいけない。それはつまり、将来の大きな変更が快適に行えるようなコードを書かなければいけないということだ。」と切り出し、プログラムが内部に持つ状態(state)を適切に扱うことで変更に強いコードが書けることを説明しました。
Pythonにおいてimport文は外部のモジュールを現在のコードに取り入れる操作です。モジュールは内部に状態を持ち、常に一定とは限りません。そのうえ状態をモジュールの外から隠すこともできます。つまり、モジュール内のオブジェクトに操作が加わり状態が変わると、後で意図しない動作をきたすことがあります。Ronacher氏はこのように前置きした上で、あるモジュールがimportされる際は自分自身を含むパッケージ全体を一気にimportし、状態から起こるバグを防ぐテクニックを紹介しました。
モジュールがimportされる際、自分を含むパッケージ全体をimportする(スライドより)
また、モジュールのAPIを使う際にwith構文でスコープを分離しコードを実行、その後に状態をクリーンアップした上でスコープを抜けるという流れを理想的な状態管理の例として紹介しました。with構文のスコープより外でモジュールの状態が変更されるのを防ぐことで、状態が影響する範囲を限定でき、結果的に見通しの良いコードになるということですね。
with構文内で表示言語を指定する(スライドより)
状態について語った後はコードの持つコンテキスト(文脈)をわかりやすくするためのアドバイスに移りました。プログラマは、コードを初めて見る際にそのコードのコンテキストを理解する必要があります。氏曰く、理解しやすいコードは “ grep-able” な(検索しやすい)コードであり、デコレータや明示的かつ明確な名前付けがこれを助けると語りました。同時に、クラスによる独自の演算子オーバーロードはデバッグが難しくなるため避けるべきとの注意もなされました。
最後はWebフレームワークであるDjangoを使って、今まで紹介されたテクニックを実践する例が紹介され、Keynoteは終了しました。
Maciej Fijałkowski氏(PyPy開発者)による基調講演
本カンファレンス最後のKeynoteは、Pythonで書かれたPythonインタプリタであるPyPy を開発しているMaciej Fijałkowski氏によるものでした。ここでは多くのOSSがはらむ資金問題とその調達方法についての詳細な解説がなされました。
Keynoteを務めるMaciej Fijałkowski氏
Fijałkowski氏はGoogleのトップページを取得するサンプルコードを映し、これを構成するパッケージや技術を挙げていきました。たったこれだけの処理を行うにも、Pythonそれ自体、Requests(Pythonライブラリ) 、PIP、OpenSSL、GCCといったOSSが使われていて、Webサイトの取得に限らずこのような例は多くあります。つまり私たちはOSSに依存していることがわかります。
私たちの暮らしでは道路や電車といったインフラが使われますが、インフラもまたOSSの力を借りていることからOSSはまさに世の中全体を支える存在となっています。一方でインフラの保全や拡張のために徴収されている料金はOSSにもたらされることはありません。このような背景から、Fijałkowski氏はOSSが資金を調達することの正当性を訴えました。
ではどのように資金を調達するのか、その代表的な手法について続けて解説がなされました。パトロンになる余裕のある大企業に就職、EUなどから調達、SaaS、クラウドファンディングなどさまざまな手法がありますが、クラウドファンディングを試すも資金が集まらなかったりと一筋縄ではいかなかったそうです。最終的にうまくいったのはPyPyの商業的なサポートであり、Fijałkowski氏はBaroque Softwareという小さな企業を立ち上げ、これを行っているそうです。
OSSというインフラを収益化するために積極的に働きかけようというメッセージを最後に発信し、Keynoteは終わりました。
Sphinxを使ったドキュメントの翻訳プロセス
ここからは2日目の一般セッションをピックアップしてお届けします。
PyCon JPの理事を務める清水川貴之氏は、自身がメンテナーとして貢献しているドキュメント生成エンジンSphinxでのドキュメント翻訳について解説しました。
清水川貴之氏さんが登壇
今日のPythonの公式ドキュメントはマークアップ言語であるreStructuredText(reST)で記述され、これがSphinxの手によってHTMLに変換されたものがWeb上に公開されています。Python界ではもちろんのこと、Python以外の言語においても多くのドキュメントがSphinxで生成されています。
ドキュメントにおいて翻訳(internationalization, i18nとも)は一般的な作業ですが、原本のファイルをコピーして翻訳するだけでは内容の統一が大変といった問題が生じます。Sphinxのプラグインであるsphinx-intlを用いると、ソースコードの翻訳でよく使われるgettextライブラリと同じやり方で翻訳箇所を切り出し、効率のよい翻訳作業を実現できます。具体的には、原本から文章を切り出したpotファイルを生成し、翻訳者がこれを翻訳してlocaleフォルダ下に追加することで、複数言語のドキュメントが生成されるようになります。
CIサービスであるdrone.ioと、Webブラウザ上で複数の翻訳を同時に行えるTransifexというサービスを組み合わせて、翻訳されたらWebに自動デプロイされるシステムが構築できることを清水川氏は続けて解説しました。
あの人との嬉しい3ショット
Armin Ronacher氏と末田(左) 、芝田(右)
セッションを聴いて回る中、筆者の末田と芝田は先ほどKeynoteを発表していたArmin Ronacher (mitsuhiko) 氏がPython Software Foundation(PSF)のブースにいるのを発見。 勇気を出して突撃し、3ショットを撮らせてもらうことに成功しました。
ここで、長いこと疑問だった「ニックネームが日本語名みたいなmitsuhikoなのはなぜなのか」を聞くことができました。彼曰く「インターネットを始めた頃、あるフォーラムでこの名前を見つけて気に入ったからそれ以降使ってるよ。だから特定のアニメの登場人物の名前とかじゃないんだ。」とのことでした。なるほど!
Lightning Talk
こんにちは、芝田 将です。
Lightning Talkセッション(以下、LT)では、制限時間5分で強制終了というルールでプレゼンテーションを行います。 LTは1日目と2日目の両日開催され、発表題目の募集は当日行われます。 筆者は昨年のPyCon APAC/TaiwanにおいてLTを行った際 に、英語力や技術力に課題を感じていました。 そこでこれらを克服するべく、今回のカンファレンスでも2日目にLTを行いました。
筆者のLightning Talkの様子
LTではFeedy という筆者が開発したフレームワークを紹介しました。 LTを終えて席に戻る際に、このライブラリいいねと声をかけてくれる人がいたのが今でも印象的です。
筆者はLTのための事前準備として、PyCon 2016 やDjangoCon Europe などの動画のチェックやTalk Python To Me というPythonのPodcastを聴いていました。こういった事前準備のおかげか、昨年のLTに比べ堂々と話すことができたかなと思います。 このように成長が感じられる機会は、非常に貴重ですね。 来年は清水川氏と同じく通常のトークセッションに挑戦したいなと思います。
他の方のLTの多くは、喋りとスライドともに韓国語であったため、我々日本からの参加者は内容がほとんど理解できず少し残念でした。スライドを英語にするなどの配慮をすれば、海外からの参加者にも楽しんでいただけるのかもしれません。 この経験は9月に開催されるPyCon JP 2016で活かしたいと思います。
懇親会とPyCon APAC Koreaスタッフとの交流
こんにちは、塚本 英成です。
カンファレンスが終了したあと、現地スタッフのご厚意で日本から参加したメンバーは打ち上げに同行させてもらいました。 打ち上げにはPyCon APAC Koreaのスタッフはもちろん、スポンサーの方々、スピーカーの方々もいらっしゃっていました。
1日目に聞いたセッションのスピーカーの隣に座って素晴らしかったと感想を伝えたり、日本語を話せる現地スタッフの方と韓国の事情、PyCon KRの事情などを話せたりと、たくさんの交流が持てました。
そんな中、筆者がもっとも印象的だったのはPyCon KRのデザイナーとの交流でした。
PyCon APAC KoreaデザイナーのPark Hyunwoo氏(左)と筆者(右)
筆者はPyCon JP 2016のデザイナーをしており、そのため今回のデザイナー同士の交流は非常に貴重な機会となりました。
Park Hyunwoo氏はPyCon KRのデザイナーとして3年間活躍しているほか、本業でもPyCon APAC 2016 in KoreaのスポンサーでもあるSMARTSTUDY社 のCTOを勤めており、カンファレンス時にもスピーカーとしてセッションに登壇されていました。 彼を始めとして今年のPyCon APACを支えたスタッフの凄まじさに驚かされるような懇親会となりました。
おわりに
以上でPyCon APAC Korea 2016のレポートは終わりです。筆者3名とも初めての韓国、さらに塚本と末田の2名は海外で開催されるPyConへの初めての参加となりました。Pythonに関する学びを得るとともに、現地ではスタッフの方や各国からの参加者など気さくに話してくださり人同士の交流も沢山楽しむことができました。この場をお借りしてお礼申し上げたいと思います。
最後に日本から参加したメンバーで記念撮影