はじめに
清水川です。
2015/6/17(水)~6/19(金)にかけて、シンガポールでPyCon SG 2015 が行われました。PyCon SGは毎年シンガポールで行われるPythonカンファレンスで、今年で6年目です。シンガポールは、APAC(アジア太平洋)地域のPythonカンファレンスPyCon APAC を初めて開催した国です。PyCon APACは2010年から2012年までの3年間はシンガポールで開催され、2013年には日本で、昨年と今年は台湾で開催されました。
筆者はこのイベントでPyCon APAC 2015 と同様に、Sphinxの多言語化機能を紹介する発表を行ってきました。本記事では、PyCon SG 2015の様子について紹介します。また、このカンファレンスでの筆者の発表と、発表プロポーザルの書き方について筆者が気に掛けた点について紹介します。
参考リンク
第1回 PyCon APAC 2015 in TaiwanでのSphinxに関する発表:海外PyCon発表修行レポート2015
台湾で開催された「PyCon APAC 2015」参加レポート
Sphinxの公式ドキュメント(日本語)
Sphinx-users.jpサイト
Software Design 2015年4月号 「Sphinxで始めるドキュメント作成術」
シンガポールってどんなところ?
シンガポールは東京から直行便で7時間、時差は1時間です。筆者はシンガポールのチャンギ国際空港に17時半に到着しました。空港から市街地まで旅行会社の送迎で1時間ほどかかりました。18時頃は帰宅ラッシュで道路はだいぶ混雑していました。
シンガポールのタクシーは日本よりもずっと安く、ちょっとした移動に便利です。しかし、朝と夕方のラッシュ時は料金25%増し、21時以降朝までは50%増しだそうです。筆者はカンファレンス会場への行き来など、ラッシュの時間帯に移動することが多かったため、主にMRT(シンガポールの地下鉄)を利用しました。
写真1 MRTのチケット。ペラペラの紙に電子タグが入っています
MRTの料金は距離によって変わります。チケットは紙のカードで、中に電子タグが入っていて、このチケットに切符の購入情報を記録して何度も使います。券売機で最初に買うときには10セントのデポジットを支払いますが、3回目に乗るときに10セント還元され、6回目にはさらに10セント割り引きになります。6回使うか、発券から30日経過するとこのカードは使えなくなります。
シンガポールでのインターネット通信のために、筆者は空港でSIMカードを購入しました。シンガポールにはSingTel、Starhub、M1という3つの通信キャリアがあります。入国審査後の銀行でお金をシンガポールドル(SGD)に換金した際に、銀行で売っていたSingTelのSIMカードを購入しました。30SGDで10日間、通信上限は通常7GBのところ期間限定で100GB利用可能でした。ちなみにこのときの1SGDは約92円でした。SIMカードは市内のセブンイレブンなどでも購入できるようです。データ通信で利用するにはSMSによる設定が必要なので、日本からPoketWiFiなどの通信デバイスを持参する場合は、SMS受信できる機器かどうか確認しておいたほうが良いでしょう。
写真2 SingTelのSIMカード
シンガポール滞在中に困ったことはほとんどなく、快適に過ごせました。ただ、シングリッシュと呼ばれる、発音が独特の英語は聞き取ることが難しく、タクシーでカンファレンス会場の「シンガポール・ポリテクニック」が伝えられず、地図で名称を見せたら「アァ-、ポリテニィ」とわかってもらえたりしました。
シンガポールの気候は、1年を通して平均28℃くらいです。滞在中はスコールにも遭わず過ごしやすかったと思います。ただ、ホテルや、カンファレンス会場、MRTなど、建物の中はエアコンが強めに効いていて、少し厚めのパーカーを用意するなど、防寒対策は必須です。建物の内と外とで寒暖の差が激しいため、体調を崩さないように注意が必要でした。
もう一つ忘れてはいけないのが、コンセントの形状についてです。シンガポールではBFタイプが一般的です。日本のコンセント形状はAタイプなので、コンセントを使うには変換プラグが必要になります。電圧は230Vですが、ほとんどのノートPCの電源アダプタやUSB充電器などは100V~240Vに対応しているので、対応電圧を確認して大丈夫であればそのまま使えると思います。筆者は、変換プラグを1つと電源タップを持っていき、複数の機器の充電は電源タップ経由で行いました。
写真3 シンガポールのコンセント形状はBFタイプ
PyCon SG の様子
公式サイト
https://pycon.sg/
期間
2015年6月17日(水) ~19日(金)
構成
基調講演を含む2トラック(すべて英語でのセッション)(17日は別枠の有料チュートリアル)
参加費用
早期割引 180SGD、通常 240SGD(1SGDは約92円)
会場
Singapore Polytechnic
参加人数
約100人
6月17日(水)のチュートリアルは、キーノートスピーカーが講師として参加するものを含め7つ用意されていました。この、キーノートスピーカーが教えるスタイルは、PyCon APAC 2015でも採用されていました。なお、筆者は残念ながらPyCon SGのチュートリアルには参加しませんでした。
カンファレンスデイ初日、6月18日(木)は9:00からのオープニングとキーノートで始まりました。筆者は30分ほど前に到着して受付を済ませ、ノベルティと名札を受け取りました。参加人数は全体で100人くらいだったため、受付はまったく混み合うこともありませんでした。
写真4 名札とノベルティーのTシャツ、シール
Opening Keynote by Lynn Root
短いオープニングアナウンスのあと、Lynn Rootさん(@roguelynn )のキーノートセッションが始まりました。彼女はPyLadiesサンフランシスコ支部 の創設者で、Spotify のエンジニアです。Spotifyは、58の国、2千万人の有料利用者、7500万人のアクティブユーザーをもつ音楽配信サービスの会社です。セッションでは、SpotifyがなぜPythonを使っているのか、どうやって使っているのかについて紹介していました。SpotifyではCPUバウンドではなくIOバウンドの処理がほとんどなため、Pythonとの親和性が高いそうです。また、Pythonはレビューしやすく、コードを書く量も少ないため、素早い開発サイクルを実現しているということでした。他にもJavaやC++などの言語も使っているそうで、その中でどこでPythonを使っているのか、どんな課題があるのかなど、実体験に基づいた事例を紹介していました。
なお、Lynn Rootさんは今年のPyCon JP 2015 でもキーノートを行います。どんな話をしてくれるのか、楽しみですね。
写真5 オープニングキーノート Lynn Rootさん (CC BY SA 2.0)
Tea Break & Lunch
キーノートの後はすぐに30分のTea Breakです。Tea Breakが1日に2回あり、昼の休憩時間も長く、カンファレンスは全体的にゆったりしていました。そのため、休憩時間を使って多くの人が交流していました。筆者も、ランチ時間に複数人で話をしている人のところに行って会話にまぜてもらいました。複数人の会話に参加するのは、話題に困ることなく交流を持てるので、コミュニケーションが苦手な人にもオススメの方法です。
写真6 筆者(中央)と、マレーシアから参加したJim(左)とSian(右)
一緒にランチを取ったJimとSianは、マレーシアからの参加でした。JimはPyConマレーシア の運営にも関わっているそうです。話をしているうちに共通の知り合いがいることがわかり、Pythonを軸に国境を越えて人と人の繋がりが広がっていることが実感できました。また、好きな技術を軸にした交流はとても楽しいものだと再認識できました。
写真7 ランチの料理はシンガポール、中華、インド、など
ランチの料理は多国籍で、ナシゴレン、ミーゴレンといった料理に、餃子や豆腐料理、カレーなどがありました。謎のデザート「シーココナッツ」はこれまで食べたことがない味で、ライチのようなものかと思ったのですが、聞いてみると、マレーシアやシンガポールで食べられる椰子の実なんだそうです。どの料理も美味しく、コーヒーや紅茶などもあり、他の参加者との交流だけでなく、食べ物を楽しむことのできるランチタイムでした。
PyCon SGの発表紹介
PyCon SGでは、2日間2トラック構成で(PyCon SG schedule ) 、キーノート3つを含む約24の発表が行われました。PyDataと呼ばれる、機械学習やデータ処理関連の発表が3割くらいと多めでした。それ以外の分野としては、デバッグ、セキュリティー、Jenkins連携、IPythonカーネル開発、インタプリタ実装、テスト、ドキュメント、といった発表がそれぞれ1つずつ、という感じでバラエティに富んだ構成でした。
Lightning Talk(LT)では1人2分の持ち時間で、飛び入りを含めて8人の発表がありました。それぞれ、スポンサー紹介、他国のPyCon紹介、ユーザーグループ紹介、といった内容が多く、日本のLTでよく見るような技術的な話は1つだけでした。一般的なLTは5分ですが今回は2分という短い時間でした。現地の参加者に聞いてみたところ、2分のLTは初めてだそうなので、このカンファレンス特有なのかもしれません。
Closing Keynote by Jessica McKellar
筆者は、PyCon SGで10個くらいのセッションに参加しました。その中でも特に印象に残った、1日目のクロージングキーノートを紹介したいと思います。
写真8 クロージングキーノート Jessica McKellarさん (CC BY SA 2.0)
Jessica McKellar(@jessicamckellar )さんは、Python Software Foundation(PSF) のディレクター、兼、副座長で、Pythonのエバンジェリストとして様々な活動をされている方です。その活動が評価され、2013年にはO'reilly Open Source Awardを受賞 しました。彼女はオープンソースソフトウェアの開発者としても活発に活動していて、OpenHatch やTwisted といったいくつかのオープンソースプロジェクトを管理しています。
このセッションでは、現在のPython利用者数の推移、Pythonを今後広めていくための改善ポイントの見つけ方、議論すべき重要な事、それをどのように改善していくのか、などが紹介されました。
よくある議論の中には、Pythonを広めるうえで重要ではないものも多く、そういう「自転車置き場の議論(bikeshedding argument) 」にとらわれないように、と言っていました。例えば、GILやPythonが遅い、といった議論は重要ではない、としていくつかの項目を挙げていました。
写真9 Pythonを広める上で重要ではない議論
ではいま解決すべき課題はなにか、という点について以下の3つを挙げていました。
写真10 Pythonを広めるのに重要なのは何か
1.インストールしやすさ(Best installation experience)
特にWindows向けについては、開発者がWindows向けバイナリ配布に積極的でないため、インストールできずにあきらめてしまう例が多い、という事例を紹介。これは、Lynn Rootさんもキーノートで課題として挙げていました。
2.学びやすさ(Best onboarding experience)
Pythonの公式ページにはGetting Started ページがありますが、選択肢が提示されすぎていて、初めてその言語に触れるユーザーは必要な情報がどこにあるのかわかりません。「 こんなにあったらPythonの始め方をGoogleで検索しちゃう。Rubyのチュートリアルは素敵よね」と、Rubyサイトでは最初にTry Ruby! に誘導しているという事例を紹介。初めてPythonに触れるユーザーをつまづかせないように、Rubyサイトのように改善したほうが良いだろうと言っていました。
3.教育での利用を増やそう(Accelerated adoption in schools)
コンピュータサイエンスの授業でPythonを使うのはメリットがあります。
Pythonは、間違って直してを繰り返しても4時間あれば色々出来るようになりますが、JavaやC++ではそうはいきません。Pythonならプログラミングを素早く学べます。
例えば、PyCon SG会場のPolytechnicでの現状を見ると、授業で使う言語は全てC++かJavaです。こういった状況を変えていくには、カリキュラムを作成する先生たちをサポートする仕組みが必要でしょう、と言っていました。
締めくくりとして、「 今年はみなさんそれぞれが、好きなPythonプロジェクトの「課題」を何か1つ選んで、手助けしてみてはどうでしょう。そのための方法として、ワーキンググループを立ち上げて、指標を定義し、実行してみてください。そうすれば、そのPythonプロジェクトの良さが今よりも広まるでしょう。」と提案していました。
写真11 1つ、手助けしよう
筆者は、Sphinxのメンテナとして多くの質問や相談に触れています。その中でも多くを占めるのが、Sphinxを使い始める際の難しさについてです。わかっている人には充分な情報があるように見えても、初めて触れる際にはインストールのコマンドかどうかすら見分けるのが難しいことがあります。このセッションはそういうった基本的な課題への取り組み方について、気付くきっかけになりました。メンテナとして機能を拡充したり不具合を修正するばかりでなく、そういった基本的な課題を1つ選び、取り組んでいきたいと思います。
Sphinxによる貢献しやすい翻訳プロセスの発表
カンファレンス1日目、6月18日(木)15:30からSphinxの国際化機能について発表を行いました。
この発表は、PyCon APAC 2015で行った発表 と同じスライドですが、前回得られたフィードバックを元に、以下の4点について手を加えました。
1.どのくらいの人がオープンソースソフトウェア(OSS)に貢献しているか聞く
筆者は、OSSを使うこと自体が最初の貢献だし、そのOSSを他の人に伝えることも貢献だと考えています。この発表では、OSSを使うことの次のステップとして、ドキュメントを自国語に翻訳して、さらに多くの利用者に触れる機会を増やせると良いよね、というような、参加者が目的を共有できるような導入にしてみました。
2.翻訳例をシンガポールで一般的な言語に修正する
サンプルをわかりやすく見てもらうために、参加者の自国語に翻訳しました。
3.この資料で紹介するツールの名前と役割を明確にする
発表ではいくつかのツールとサービスを組み合わせていきます。このため、最初にどのようなツールが登場するのかを明確にしました。
4.ライブデモを追加する
言葉の説明だけだとわかりにくいため、短いデモを用意して当日のプレゼンテーションに組み込みました。
写真12 Sphinx i18n の発表中 (CC BY SA 2.0)
このような工夫により、全体としては改善されたと思うのですが、今回の発表では別の問題がありました。
シンガポールの公用語は何か、と現地で知り合った参加者に聞いたところ、「 英語」でした。強いて言えば標準中国語(マンダリン)を話せる人が多いけれど、学校を卒業するには英語の習得が必須なんだそうです。こういった事情もあり、筆者の「翻訳プロセス」についての発表は、参加者が13人でした。それでも、参加者にはSphinxの国際化機能について、その価値を提供できたんじゃないかと思います。
写真13 Sphinxの発表を見に来てくれた13人のみなさん(筆者が演台から撮影)
発表のはじめに、どのくらいの人がOSSを使ったことがあるか聞いて手を挙げてもらったところ、10人ほどの人が手を挙げてくれました。何かOSSへ貢献したことがあるか聞くと、手を挙げてくれたのは2人でした。手を挙げてくれる人数が激減するのは想定していたので、OSSを使うこと自体が最初の貢献だし、そのOSSを他の人に伝えることも貢献ですよ、ということを伝えました。
3つめの質問として、「 ドキュメントを翻訳したら喜んでくれる知り合いがいるか」と聞いたところ、3人が手を挙げてくれました。大多数の人が手を挙げてくれる想定でいたのですが、英語が公用語の国では予定通りには行きませんでした。そこで、「 日本では英語に慣れ親しんでいる技術者はそれほど多くないので、翻訳ドキュメントはそのソフトウエアを広めるのにも、使い始めるのにもとても有用です」という共感を得られそうな例を紹介しました。
参加人数が大分少なくて、内心ガッカリしていた部分もあるのですが、発表後には2人から質問をもらい、発表中にうまく伝わっていなかった事のフォローや、疑問への回答ができました。マレーシアから参加されたLucasさんは、「 マレーシアには英語に不慣れな人が多いので、翻訳しないと読めない人が多い」という話をしてくれました。「 教育に使うドキュメントの翻訳に今日聞いた話を役立てたい、さっそく使ってみたいのでスライドを共有して欲しい」と、とても熱心な様子でした。こういう方に出会えるのはとても嬉しいですね。
写真14 スピーカー記念品のDrawdio
発表後にスピーカーの記念品を頂きました。木製の箱にPyCon SGロゴのレーザー彫刻入り。中身は、Drawdio という鉛筆デバイスでした。鉛筆の芯を通して通電すると抵抗値によって異なる音が鳴ります。こういうプレゼントも面白いですね。
プロポーザルの書き方について
今回、一連のカンファレンスへのプロポーザル提出時に、気をつけたことについていくつか紹介します。
プロポーザル(発表提案)は、「 自分はこのような発表をしますよ」ということを主催者へ伝える道具です。カンファレンス毎に一定のフォーマットがあって、そのフォーマットに合わせる必要がありますが、大抵は「タイトル(Title) 」 「 要約(Abstract) 」 「 説明(Description) 」の3項目で伝えます。カンファレンスによっては「対象参加者(Audience) 」と「アウトライン(Outline) 」の項目があります。
筆者は2014年までPyCon JPのプロポーザル審査をしていたこともあり、発表の魅力が伝わるプロポーザルの要素について考える機会が多くありました。概要と詳細が同じだったりすると、審査する側としては良い発表になりそうかどうか判断する情報が少なくなってしまい、似たような別のプロポーザルと比較できなくなります。逆に言えば、先ほど紹介した5項目を明確に書き分けていればそれだけでも充分に採用候補になり得ます。
具体的には、筆者は以下のようにプロポーザルを書きました。
1.タイトル(Title)
検索キーワードになりそうな単語の組み合わせで、この発表を聞いたらこういう事が得られそう、と思ってもらえるようなタイトルを考えました。
2.要約(Abstract)
要約は最も多く読まれる項目です。
文字数制限もあり、英単語100個くらい(日本語では500文字前後)が一般的なようです。
そこで筆者は、短い文章で具体的に伝わるように、以下の3文にまとめました。
Sphinxには○○という機能があります
あなたは○○を使って△△できます
この発表では、○○を使って△△を自動化する仕組みを紹介します
3.説明(Description)
要約の文章をより具体的にしました。例えば、「 従来の方法ではこういった手順が考えられますが」といった共感をえる情報を付け足しました。
4.対象参加者(Audience)
具体的に「~~したい人」「 ~~で困っている人」と3パターンくらい列挙しました。
5.アウトライン(Outline)
発表の内容を箇条書きにしました。
また、大項目ごとに発表にかかる時間を想定して「( 10分) 」といった情報を付けました。
こういった内容を揃えるには、発表スライドを作ったほうが早いんじゃないかと思えるくらい時間がかかります(実際のスライド作成にはその何倍も時間がかかりました) 。しかし、この段階で伝えたいことの核心を明確にすることで、審査員や参加者に充分な情報を伝えられます。また実際に発表資料を作る際にも、どんな事を伝えるのかブレずにプレゼン資料の作成に集中できます。
このようにプロポーザルを作成したおかげか、PyCon APACでは2つのプロポーザルが審査を通り、PyCon SG、EuroPython、PyCon.KRでも無事プロポーザルが承認されました。PyCon APACではプログラム担当のスタッフから「あなたのプロポーザルは目的が明確で、飛び抜けて良い内容だった」と言ってもらえたりしました。
筆者が提出したプロポーザル をblogに載せていますので、参考にしてみてください。
次のPythonカンファレンスへ
写真15 PyCon SG 参加者集合写真 (CC BY SA 2.0)
今回のPyCon SGでは、Sphinxを多くの人に紹介はできませんでしたが、ドキュメント翻訳をサポートする仕組みを必要としている方に、Sphinxの手法を伝えられたと思います。また、Jessicaさんのキーノートを通して、筆者がこれからSphinxに対して行っていくべきことの指針が得られました。
次は、6月27日(土) 、28日(日)のPyCon Korea 2015 に参加する予定だったのですが、MERSの影響のためPyCon.KRは8月に延期されました。延期は開催3週間前に決定されましたが、KRのスタッフにとって、とても大きな決断だったと思います。8月にPyCon.KRで多くの人に会えるのを楽しみにしています。
次は、7月20日(月)から1週間にわたって開催されるEuro Python 2015 に行ってきます。