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

第6回(最終回) PyCon Korea 2015参加レポートとSphinx発表

清水川です。

スピーカーとして各国のPyConを巡る修行、今回は5カ国目となる韓国からお届けします。

2015年8月29日(土⁠⁠、30日(日)に、韓国のソウルでPyCon Korea 2015が行われました。

http://www.pycon.kr/2015/

http://www.pycon.kr/2015/

PyCon Koreaは韓国で今年2回目となるPyConです。昨年初めて開催した際には、どのくらいの需要があるのか分からなかったそうですが、400枚のチケットは想定を越える速度で売り切れ、イベントは大成功だったそうです。今回は規模を650名に拡大しましたが、参加チケットは発売から2時間で完売したそうです。来年はPyCon APAC開催を予定している韓国の勢いはすごいですね。

筆者はこのカンファレンスでSphinxの自動ドキュメンテーション機能(autodoc)について発表してきました。

韓国ってどんなところ?

東京から韓国の金浦国際空港までは2時間、時差はありません。日本から最も近い外国です。筆者は羽田発8:55の飛行機に乗り、11:20に到着しました。韓国の通貨は韓国ウォン(KRW)で、1KRW=約0.1円です。今回空港で両替しなかったため、空港でのレートは不明です。

空港から会場最寄り駅のDigital Media Cityまで、KORAIL空港鉄道(通称A'REX)で約10分です。料金は1450KRW(145円)でしたが、乗車券は片道1回分の購入でも電子カードで発行されるため、保証金500KRW(50円)が上乗せされて、合計1950KRW(195円)でした。保証金は払い戻し機で返してもらえますが、50円なので記念にカードを持ち帰ってきました。A'REXは7分から16分間隔で運行されています。今回、空港から会場までの1駅しか電車にのらなかったのですが、来年は色々な電車に乗ってみたいですね。

A'REXの乗車券と改札
A'REXの乗車券と改札

今回筆者は、PyCon韓国準備委員会の計らいで、スタッフの서재원(ソ・ジェオン)さんが車で空港まで迎えに来てくれました。空港から会場のあるNuri Dream Squareまでは車で50分ほどかかりました。

韓国での会話は、ほとんどが韓国語です。ホテルや空港など一部の施設では英語か日本語で会話ができました。車で迎えに来てくれたジェオンさんは日本への留学と仕事の経験があるそうで、日本語が堪能でした。彼以外にも、日本語を少し話せるPyCon Koreaスタッフは何人かいて、学生時代に外国語の授業で日本語を学んだのだそうです。

筆者(左)とジェオンさん
筆者(左)とジェオンさん

韓国では2013年から公共無線LANの整備を進めているそうです。今回は滞在期間が1日半ということもあり、また、ホテルと会場には無線LANがあることが分かっていたため、SIMカードを購入しませんでした。観光など、訪れる場所が限定されない場合はSIMカードの購入を検討した方が良いでしょう。

韓国の気候は日本とほぼ同じです。気温も湿度も似ている印象でした。公共の場所ではクーラーが効いているため多少羽織るものがあったほうが良いでしょう。コンセントの形状はCタイプで、ヨーロッパと同じです。ですが、ホテルでは日本と同じAタイプのコンセントも用意されていました。1つ驚いたのは、ほとんどのトイレに温水洗浄便座が付いていたことです。今回の海外PyCon参加修行で5カ国に行きましたが、温水洗浄便座が付いているのは韓国だけでした。

PyCon Koreaの様子

公式サイトhttp://www.pycon.kr/2015/
期間2015年8月29日(土⁠⁠、30日(日)
構成基調講演を含む3トラック(韓国語30セッション、英語3セッション)
参加費用15,000KRW(1KRWは約0.1円)
会場Nuri Dream Square
参加人数約650人

筆者は8月29日の午後から参加しました。このため、残念ながらオープニングセッションを聴くことができませんでした。スピーカーはチケット購入をしていないこともあり、名前を伝えて受付してもらいました。その後、ノベルティと名札を受取りました。

名札とノベルティーのトートバッグ、Tシャツ、プログラム冊子、シール、クッキー
名札とノベルティーのトートバッグ、Tシャツ、プログラム冊子、シール、クッキー

スピーカーには専用のTシャツが用意されていました。表面のプリントは一般Tシャツと同じですが、写真にあるように、裏面には⁠I'm very proud of being a Speaker⁠とプリントされていました。前回のPyCon.MYのレポートで、Tシャツの仕掛けを紹介しましたが、こういうちょっとした工夫が面白いですね。

1日目タイムテーブルと、オープンスペース
1日目タイムテーブルと、オープンスペース

カンファレンスは、3トラックのトークセッションとオープンスペースがありました。トークセッションは40分、質疑応答10分、休憩10分、という構成でした。オープンスペースは自由発表枠で、部屋がいくつか用意されていて、使いたい人がテーマを付箋に書いて貼ります。今回のPyCon Koreaではランチやコーヒーブレイクなどを提供していなかったため、タイムテーブルだけを見ると、朝から夜まで昼休みなしでセッションが行われているように見えますね。

メインの大会議場は400人ほどが座れる広さで、オープニングや基調講演はここで行われました。現地の参加者によると、多くの韓国企業は仕事で軽量プログラミング言語(LL言語)を使う事に懐疑的なため、Pythonの利用事例はとても少ないそうです。そんな中でもPythonを使いたいユーザーはいま増えて来ているそうです。そのような事情もあってか、中級、応用のトークセッションよりも、入門、基礎を扱うトークセッションへの参加者が多かったように見えました。

約400人の大会議場がいっぱいになる入門向けセッションもありました
約400人の大会議場がいっぱいになる入門向けセッションもありました

PyCon Koreaの発表紹介

PyCon Koreaでは2つのキーノート、30個のトークセッションがありました。そのうち、英語での発表は3つでした。筆者は韓国語が分からないため、英語の発表と合わせて5つのセッションに参加し、残りの時間はオープンスペースでSphinxについての話をしていました。

基調講演

2日目のキーノートは、NettyというJava製のフレームワークを開発したTrustin Leeさんの発表でした。

NettyはJava製のイベント駆動非同期ネットワークアプリケーションフレームワークです。Pythonで同様のフレームワークと言えばTornadoが近いでしょうか。彼がNettyを開発してオープンソースで公開してから13年が経ちました。13年のNetty開発を通して起きたこと、OSSプロジェクトの良い成長になにが必要か、といったことについて紹介していました。

最初に、彼がなぜNettyをオープンソースとして公開したのか? という事に触れていました。楽しみのためなのか、みんなの関心を集めたかったのか、正直なところ当時どうしてそうしようと思ったのかは分からない、とのことでした。後で聞いた話ですが、韓国ではいまIT系大企業がオープンソースプロジェクトに関わっている技術者を積極的に採用しているらしく、多くの参加者は、オープンソースプロジェクトを立ち上げる、公開する、参加する、ということにとても関心があるのだそうです。

過去13年間で面白かったことは、自分自身のプロジェクトなので、開発やリリース速度のコントロールを自由にできたそうです。そのため、だれかがバグで困っているときに、すぐに修正してその日のうちに公開することでユーザとの信頼関係を築くことができたそうです。逆に面白くなかったこととして、プロジェクトの成長とともにPull Requestの数よりもバグレポート(Issue)の数が圧倒的に多くなってしまい「開発すればするほど仕事が増える」ことを挙げていました。

Netty 13年
Netty 13年

そんな課題をどのように解決してきたのか、いくつか紹介してくれました。

全て自分一人でやっていないか?

自分で全てを解決することは必要ではなく、人や機械に委任できることは自分の手から離すことが重要。例えばPull Requestをくれる人を開発チームに誘う、コードレビューの機械的なチェックを自動化する、など。

機能の要望にどう対応するのが良いのか?

誰かが「こういう理由でこの機能は絶対必要」という要望に対して時間を掛けずに急いでリリースした機能は、使い物にならず負債になってしまう場合が多かった。よく考えて、アイディアを熟成させ、充分なユーザからのフィードバックを得てから実装したほうが良い。

全てを否定的に見ていないか?

バグレポートに対して過剰反応するキーボードウォーリアー(ネットで言葉に過剰反応してキーボードに怒りをぶつけるように文字を入力する様子)にならないように気をつけよう。私に問題があるのか、プロジェクトの何かが問題なのか、状況をちゃんと聞くことが必要。

どうして全ての問題が私に?

それはあなたがプロジェクトを良くしたからです! プロジェクトが成長すれば、開発に使える時間よりも、Issueの数が圧倒的に多くなります。Work-Life-"OSS"バランスを良く保つように注意しましょう。

最後に、会場の参加者に向けて、みんなも始めてみよう、と呼びかけていました。ここまで紹介してきたように、色々な課題が出てきてそれらを解決していく必要があります。ですが、こういったことを心配しすぎて始められない、となってしまうのは禁物です。自分が作りたいものの開発を正しく進めて、開発の成果をプロモーションし、自分以外の誰かと一緒に作業し、新しいアイディアや変化を受け入れる、そうすることで、OSSは良い方向に成長していきます。と発表を締めくくっていました。

Google TranslatorのOCR機能でスライドを翻訳
Google TranslatorのOCR機能でスライドを翻訳

基調講演は韓国語でのみ行われたため、筆者は発表を聞きながらGoogle TranslatorアプリのOCR翻訳機能でスライドを読みました。英語への通訳がなかったことが残念でしたが、発表スライドの内容はすばらしく、自分がSphinxのメンテナとして気をつけたいことなど考えさせられるものでした。

Sphinxの発表、オフィスアワー、オープンスペース

Sphinx発表

カンファレンス1日目、8月29日(土)の15:00から、Sphinxのautodoc機能についての発表を行いました。この発表では、Sphinxの自動ドキュメント機能を使うと、Pythonプログラムの充実したドキュメントを手軽に作れることを紹介しました。発表の大筋はPyCon APAC 2015で行った発表で紹介していますので、割愛します。

Sphinx autodoc の発表を見に来てくれた皆さん(演台から撮影)
Sphinx autodoc の発表を見に来てくれた皆さん(演台から撮影)

発表では、これまでの海外PyCon発表修行と同様、はじめに演台からの撮影を行いました。PyCon Koreaでは英語の案内や発表がほとんどなかったため、どのくらいの人が来てくれるか心配だったのですが、撮影時点で70名ほど、最終的には100名ほどの参加者が発表を聴いてくれました。

発表の始めに、韓国語で挨拶したところ大きな拍手をもらえたので、こういう小ネタをちょっと挟んでおくとお互いの緊張がほぐれて良いですね。緊張がほぐれたところで、Sphinxとドキュメンテーションに関する4つの質問を行いました。

  • Sphinxを知っていますか?-60%
  • Sphinxを使っていますか?-30%
  • Docstringを知っていますか?-90%
  • docstringを使ってAPIドキュメントを書いたことがありますか?-10%

筆者はこの結果を見ておどろきました。これまで台湾、シンガポール、マレーシアで同じような質問をしてきましたが、Sphinxの知名度はそれほど高くありませんでした。しかし韓国では多くの人がSphinxに関心をもっていました。

発表を40分で終え、その後のQ&Aでは10個の質問をもらいました。ほとんどの質問が韓国語で、2つは日本語で質問をいただきました。司会を務めてくれたジェオンさんが、韓国語での質問を日本語に翻訳してくれました。筆者はこれに英語で答えたので、会場は韓国語、日本語、英語の飛び交うちょっと面白い状態でした。

質問の内容は、以下のように幅広い内容でした。

  • Sphinxはパッケージではなく1モジュールでもautodocの対象にできますか?
  • 日本でSphinxを使って出版した事例はありますか?
  • Sphinxを使って出版物を書くメリットは何ですか?
  • SphinxでREST APIのドキュメントを自動生成できますか?
  • Swaggerと連携できますか?
  • どうやってSphinxのメンテナになったのですか?
  • reSTのインデントは3スペースだけど、なにか慣例はありますか?
  • Sphinxのdoctestから自動的にテストを生成できますか?

Sphinxを出版に使用するメリットはいくつかあります。一つ目は、著者がテキストエディタ上だけでなく、SphinxのHTMLやPDFの出力を閲覧することで視点が変えられること。2つ目は、SphinxのBuilderプラグインを実装することで提出原稿のフォーマットを出力できるため、Sphinxの原稿だけをみていられることです。

Q&Aでこのように多くの方から質問をもらったのはPyCon Koreaが初めてだったため、韓国で多くの人がSphinxに興味を持ってくれていると感じられました。Q&Aは次のセッションがはじまる時間いっぱいまで続きました。

Sphinxオフィスアワー

発表のあとはオフィスアワーです。オフィスアワーは、発表者がこの時間帯はここにいるよ、という企画で、だれでも発表者に質問したり相談したりできます。

Q&Aを終え、オフィスアワーの部屋へ向かう途中、홍민희(ホン・ミンニ)さんと話をしました。PyCon Korea座長の배권한(ベ・グォナン)は、彼のことを韓国のSphinxスターだと言って筆者に紹介してくれました。彼は5年前からSphinxを使い始めたそうなので、ユーザ歴は筆者と同じかもしかしたら長いかもしれません。

筆者(左)と、ミンニさん(右)
筆者(左)と、ミンニさん(右)

ミンニさんの話では、彼がSphinxを使い始めた頃はドキュメンテーションへの関心がほとんどなかったけれど、2014年末にThe Hacker's Guide to Pythonの韓国語版が発売されてから、ドキュメンテーションへの関心が高くなり、多くの人がSphinxに興味を持ったそうです。この本の3章で、ドキュメンテーションの方法としてSphinxとautodocが紹介されています。本と同じautodocについて、ちょうど関心が高まった今回のPyCon Koreaで紹介できたのはとても良いタイミングでした。

ドキュメンテーションへの関心が高まってきていますが、実践している人はそう多くないそうです。ミンニさんによると「韓国ではドキュメントを書かない人が多い」のだそうです。同様に本を書く人も少なく、Python本は翻訳本に頼っている状況で「日本では多くの人が日本語でPythonの本を書いていてうらやましい」ということでした。日本でPythonがよく使われるようになった頃は、日本語で書き下ろされたPython本はほとんどなく、そういった本が増えてきたのはここ数年のことです。また、ドキュメントを書かないということについても、日本でもよく聞く話です。そういった日本での状況をミンニさんに伝え、Sphinxのようなツールを使う事でドキュメントを楽に書く方法が広まって、書くことが楽しいと感じられれば、みんな書くようになるんじゃないか、と伝えました。

autodocのトラブルシューティング中
autodocのトラブルシューティング中

オフィスアワーには、他にRead the Docsでautodocがうまく動作しないことについて相談が持ち込まれました。Read the DocsはSphinx専用のドキュメントホスティングサービスです。reSTファイルに書いた内容のドキュメントビルドだけでなく、autodoc機能にも対応しているのですが、彼の環境ではなぜかautodocのドキュメント部分だけがうまくビルドできない状況でした。原因は、Pythonバージョンの違いによるもので、ビルドログを見て原因がわかったため、Pythonのバージョン指定を変更してすぐに解決できました。

The Hacker's Guide to Pythonの翻訳本や、筆者の発表をきっかけにして、autodocを使ったドキュメント生成やSphinxの利用事例が、こらからもっと増えていくことを期待しています。来年はそういう方達とまた色々な話ができると嬉しいですね。

Sphinxオープンスペース

オープンスペースは、だれが何を話してもよい自由発表枠です。参加登録は、付箋になにをやるか書いて空いている枠に貼るだけです。

知り合いのスタッフから、オープンスペースやろうよ、と勧められたこともあり、筆者は2日目の夕方にオープンスペースの時間を持ちました。韓国語が話せないため、⁠Sphinx(English⁠⁠」と書いて貼ったところ、⁠この人Sphinxのメンテナ⁠という紹介が書き足されていましたが、Englishと書いたためかSphinxの話をしに部屋に来たのは서승효(ソ・スンヒョ)さん1人でした。

“この人Sphinxのメンテナ⁠と紹介された
“この人Sphinxのメンテナ”と紹介された

スンヒョさんとはたくさんの話をしましたが、そのなかに、どうやってSphinxのメンテナになったのですか? という質問がありました。発表のQ&Aでも同じ質問があり、また、これまでの海外PyCon発表修行をしている中でも、オープンソースのメンテナになる方法は何度か訊かれました。ここでは、筆者がSphinxのメンテナになった経緯について紹介します。

筆者は初めはユーザの1人でした。当時のSphinxの多言語化機能は色々な問題があり、そこで遭遇した問題を報告したり、Pull Requestで修正パッチを送ったりしていました。それを続けていた頃に、作者のGeorgがSphinxのメンテナンスにあまり時間を割けなくなったこともあり、メンテナを募集したのでそこに手を挙げて参加しました。運良くメンテナになれた、とも思いますが、その前からバグ報告やパッチ作成を継続していたことでメンテナとして開発に参加する準備ができており、手を挙げる勇気を持てたのだと思います。

難しいのはメンテナを続けることです。メンテナ募集のタイミングで筆者も含め10人がメンテナとして参加しました。しかし、8人は3年間で一度もコードをコミットせず、あと1人も数ヶ月活動したのち音信不通になってしまいました。筆者はそれほど開発速度が速いほうではありませんが、かわりに時間をかけてSphinxをメンテナンスしています。時間の割になかなか数をこなせないのは心苦しいところがありますが、メンテナンスを継続し、チケットやMLを通してユーザとの対話を続けることも重要だと思っています。これからもWork-Life-"OSS" バランスを保ちつつ、続けていきたいと思います。

Sphinxのメンテナは不足しています。やってみたい、と思う方はぜひご連絡ください

PyCon Korea 2015参加レポートのおわりに

PyCon Korea 2015参加者集合写真-@PyConKR

PyCon Korea 2015参加者集合写真-@PyConKR

今回、PyCon Koreaでは言葉が分からない中でも、オフィスアワーやオープンスペースを使う事でSphinxについてのディスカッションを持つことができました。PyCon APACの夜市のときのように、多くの人にSphinxのことを伝えることも重要ですが、一開発者として今回のような深い議論ができる機会はとても楽しいものでした。来年、韓国ではPyCon APACが開催されます。海外からの参加者がどのくらいの割合になるのかは分かりませんが、APAC地域の多くのPythonエンジニアが集結するイベントになると思います。筆者もそこに参加して、新しいSphinxのネタを共有したり、他の技術者たちと議論したいと思います。

おわりに

今回のレポートで「海外PyCon発表修行レポート2015」は終わりとなります。2月のプロポーザル作成から8月末のPyCon Koreaまで、およそ7ヵ月間のあいだPyConの発表準備とレポート執筆に充ててきました。実のところ、短期間でたくさんのカンファレンスに参加したこともあり、最後のほうは多少疲れも出てきていました。しかし、どのカンファレンスでも思いがけない技術や人との出会いがあり、また自分から行動することで常に多くのフィードバックを得ることができました。多少大変なところはありましたが、とても楽しい時間を過ごせました。これから英語のリスニングを鍛えて、来年も海外PyConで発表や参加する機会を持ちたいと思います。

日本では10月9日(金⁠⁠~12日(月)PyCon JP 2015が開催されます。筆者もこのカンファレンスでSphinxのautodocについて発表させていただきます。参加するみなさんは、ぜひスピーカーに質問したり、海外から来て困っている人に話しかけてみてください。きっとかけがえのない体験ができると思います。そして是非、海外カンファレンスでの発表にもチャレンジして、この楽しさを体験してもらえればと思います。

おすすめ記事

記事・ニュース一覧