鈴木たかのりです。2019年の個人的な挑戦「海外のPythonカンファレンスに応募しまくって、採択されたら行く」も終盤戦です。今回レポートするPyCon Singaporeは8ヵ国目です。過去のレポートもgihyo.jpに掲載していますので、ぜひ興味のある国のレポートを読んでみてください(PyCon JPのみ運営スタッフによるレポートです)。
PyCon Singapore
シンガポールは2010年からPyConを開催しており、日本よりも歴史のあるカンファレンスです(アジアではインドが最も歴史があるようです)。この2010年のPyCon APAC(初回はAPACという名前でした)に日本から参加した4名が出会ったことがきっかけとなって、2011年にPyCon JPが初開催されました。
以下はPyCon Singapore 2019の開催概要です。
筆者自身は2014年に訪れて以来、5年ぶり2度目のPyCon Singaporeです。
カンファレンス前夜
カンファレンス前夜は、シンガポール在住の元PyCon JPスタッフ(神谷さん、斧田さん)と食事に行きました。せっかくなので私以外の日本人スピーカー2名(どちらもシンガポール在住)と、日本から参加する他のメンバーとも一緒に交流しました。
店はChin Chin Eating Houseというローカルに人気の中華料理店です。お昼は結構混んでいるそうです。特に名物の蒸し鶏はとてもおいしく、結局丸々1羽を7人で食べました。
この前夜祭での筆者の重要なタスクの一つに、「Python Boot CampTシャツ」を神谷さんに渡すというものがありました。神谷さんはPyCon JPスタッフだけでなく、2016年に私と一緒にPython Boot Campを立ち上げてくれたスタッフです。しかし、Tシャツを作り始めた2018年にはすでにシンガポールに住んでおり、ずっとこのTシャツを渡せずにいました。今回こうしてTシャツを直接渡すことができて、3年越しで立ち上げの恩に少しだけ報いることができたかなと思います。本当にありがとうございました。
オープニング
会場はシンガポールの北部にあり、マレーシアの国境に近いWoodlandsという地区にあります。中心部のホテルからGrabで30分ほど移動して会場に到着しました。会場のRepublic PolytechnicはPyCon Singaporeの立ち上げメンバーであるLiew Beng Keat氏の職場でもあります。ちなみに彼は今年のPyCon APACのキーノートスピーカーでもありました。
さて、会場に着くとすでに参加者が朝食を食べながら交流していました。私も朝食をとってマレーシアから参加した知人などとあいさつをしました。
時間となったのでオープニング会場に移動です。オープニングの進行はOrganizerのMartin氏です。Martin氏は以前参加したPyCon Singaporeでも見た記憶があり、継続的にイベントを主宰しているんだなと思いました。オープニングでスポンサー一覧と合わせてスピーカーの一覧も表示されました。私も左下の方にいます。
Keynote:「Accelerating AI in Singapore」―Laurence Liew
Laurence Liew氏はAI SingaporeというプロジェクトのDirectorです。AI Singaporeとは、シンガポールでAIの人材を育成してエコシステムを構築するという国家プロジェクトです。
最初に「RかPythonか」という問いかけがあり、Googleトレンドによると世界的にもシンガポールでもPythonの人気が高まっているということが示されました。また、2017年にデータ分析、データサイエンスなどの分野でPythonを利用している人の数がRを超えたそうです。
続けてある人の生活を例にして、AIはすでに生活の中に溶け込んでいるという話をしました。その内容は、AIスピーカーで音楽をかけ、Googleマップで会社までのルートを調べ、顔認証でオフィスに入り、メールではスパムをはじき、ランチを食べて安全にカードで支払いをし、家に帰っておすすめリストから映画を見るというものです。ちなみに、このときに例として「OK Google...」と言ったら、参加者のスマートフォンが反応していました(笑)。
次に「AIは魔術ではない」と題して、その元となる理論について解説しました。線形回帰、ニューロン、ニューラルネットワーク、深層学習、自然言語処理、音声認識などについて概要が語られました。
その次は「AIとJob(仕事)」と題して、AIは仕事を置き換えるのではなく作業(Task)を置き換えるものだと説明がありました。たとえば「ある人が1日に6個の作業ができるとしたら、そのうち2つの作業をAIができるようになれば、その人は別の2つの作業ができるようになる。」という説明です。この説明は、AIが職を奪わないという説明としてとてもわかりやすいなと感じました。
最後にAI Singaporeの紹介や今後のビジョンについて説明がありました。現在はPhase Iで2020年からPhase IIが始まるそうです。またAI人材を開発するプロジェクトを2017年から進めており、最初はプロフェッショナル向けだったものからだんだん初級者向けと裾野を広げているそうです。今後は学生や子ども向けなども進めていくそうです。
締めくくりに、「AIは私たちをより人間らしくする」と述べて発表を終わりました。
シンガポールが国をあげてAIに力を入れているということと、その方向性が感じられる発表でした。首相がC++でプログラムを書く国はすごいなと感じました。
ランチ
ランチはビュッフェスタイルです。PyCon Singaporeでは朝食、ランチ、午後のおやつが提供されます。ランチは中華系でおいしいです。相変わらずPyConに行くとデブ活が捗ります。台湾やマレーシアと違って、コーヒーや紅茶に砂糖がデフォルトで入っていないのがせめてもの救いです。
自分の発表:「Automate the Boring Stuff with Slackbot」
いつものSlackbotについての発表です。基本的な構成は台湾から変えていませんが、時間が45分あるのでコードの説明を丁寧にしました。
発表しながら会場を確認すると、うなずいて聞いている方かいらっしゃったので、ある程度は伝わっているのかなと感じました。ビールについての小ネタもそこそこウケたので個人的には満足です。
質疑応答の時間がとれなかったのですが、終了後に「シンガポールのビールの場所教えるよ」と声をかけてくれる方がいました(スライドの中に「おいしいビールのお店を教えてください」というメッセージを入れてあります)。以下がその人(Joshさん)からのメッセージです。
日本からの参加者との出会い、そしてビールへ
日本からの参加メンバーは知り合いのnao_y(@NaoY_py)とnikkie(@ftnext)だけだと思っていましたが、午後に筆者が発表の準備をしていると日本語で声をかけられました。それがKeisuke Nishitani(@keinstn)さんです。PyCon APACにも参加されていたそうですが、そのときは他の日本からの参加者に声をかけるタイミングがなかったそうです。また、このレポートも読んでいて「自分もチーム・ジャパンとして出たい」と言ってました(笑)。せっかくなので日本からの参加メンバーで写真を撮りました。
カンファレンス終了後はビールだよね!! ということで、他のアジアから参加したメンバーに声をかけて、Joshさんに教えてもらったSGTapsに向かいました。お店に着くとJoshさんと彼のお友達(シンガポール在住)がビールをすでに飲んでいました。そこに日本人4名、インドのVaibhav(@reach_vb)、フィリピンのJosef(@josefmonje)も混ぜてもらってビールを楽しみました。このお店、オーナーが日本人だそうで、オーナーが注文を取りに来ると急に日本語で話しかけられるので、なんだか不思議な気分でした。
ビールのあとnao_y、nikkie、Josefと歩いて近くのホーカーセンターに向かいました。3人はシンガポールチキンライスを食べていましたが、私はさすがにお腹いっぱいなのでアイスカチャン(かき氷)を食べてカンファレンス1日目が終了しました。
「Building a Data Pipeline using Apache Airflow(on AWS/GCP)」 ―Yohei Onishi
日本人スピーカーの発表です。Yohei Onishi(@legoboku)氏はシンガポール在住のデータエンジニアです。彼とはPyCon APACで知り合って「私がシンガポールに行ったときには、また会いましょう」と言っていたんですが、無事再会できました。
発表の内容は、Apache Airflowを使用してデータパイプラインをAWS、GCP上に構築するという話です(タイトルのままですね)。実務で使用している例がベースとなっており、具体的なAirFlowのコードも出てくる発表でした。またAWSとGCP両方で構築した経験を元に、GCPを環境としておすすめされていました。
発表が早めに終わったものの、そのあとの時間にかなりたくさんの質疑応答が行われていたのが印象的でした。
「2FA, WTF」―Phil Nash
タイトルがちょっとアレですが、2FA(2要素認証)についての発表です。スピーカーのPhil Nash(@philnash)氏はTwilioのエンジニアです。
まず最初にパスワードのみの認証は危険だという例として、Mat Honanさんの悲劇について触れました。私はこの事件を知らなかったんですが、悪意のあるユーザーにiPhone、MacBook、Twitter、Googleアカウント、Gmailなどが乗っ取られデータが削除されたそうです。恐ろしすぎます……。
また、Ashley Madisonというサイトから数100万のアカウントが盗まれ、そこにはパスワードが平文で入っていたそうです。で、最も使用されているパスワードは「123456」だそうです。120,511ユーザーが使用しているそうで、これはひどい……。
まとめとしては当然ですが、難しいパスワードは覚えられないので1Password、LastPassなどのパスワードマネージャーを使いましょうというものでした。
次に2要素認証の話です。2要素認証の主な手法としてSMS、トークン、プッシュの3つがあげられていました。それぞれコードの例と利点、欠点があげられていました。
- SMS
- SMSで認証コードを送信する仕組み
- 利点:多くの人が使用できる
- 欠点:SMS送信にお金がかかる。電波が必要。SMSは壊れている(SIMを盗まれたりなど簡単になりすませる)
- トークン
- HOTP、TOTPといったワンタイムパスワードを生成。pyauth/pyotpを使用したトークン生成のデモを実施していました
- 利点;無料、オフラインでも利用可能
- 欠点;スマートフォンが必要、リカバリー用のバックアップコードが必要
- プッシュ
- Webで操作すると専用のスマートフォンアプリケーションに通知をする仕組み
- 利点;よりよいユーザー体験、最も安全
- 欠点;スマートフォンとネイティブアプリが必要。オフラインでは利用できない
最後に「2要素認証を使おう」というまとめで発表は終わりました。TOTPなどのワンタイムパスワードを生成するためにpyotpを使用してると簡単そうだなと思いました。
Keynote:Rich Jones
Rich Jones氏はPython製のサーバーレスフレームワークZappaの作者です。
この「Hello」から始まるスライドは400枚を超えており、終始ハイテンションでしゃべりまくるエネルギッシュなキーノートでした。50分間1人でライトニングトークをし続ける、といった感じでした。ただ、しゃべっている内容はスライドにだいたい書いてあるので、英語を聞き取るのが苦手な私もわかりやすい発表でした。
前半は「Zappaでサーバーレスにしよう」と題して、AWS LambdaとAPI Gatewayを使用して、超スケーラブルなサービスを作ろう、という話をしていました。Zappaを使えばVPSに比べてコストも安く済み、メンテナンスも不要になる(その結果運用チームを解雇できるよ)とのことでした。基本的なZappaが提供しているコマンドの紹介や、さまざまなケーススタディでZappaを使用する例について紹介していました。
しかし後半の「なぜZappaを使うべきではないのか」というところから、話の方向が変わっていきます。Amazonがコミュニティに対して何度も敵対しているという話から始まります。AWSはOSSコミュニティと敵対し、結果としてMongoDB、Redis、ElasticSearchのライセンスが変更になりました。
またAmazonは税金を払っていない、アメリカの小さな街を破壊した、従業員を低賃金で働かせすぎているとすごい勢いで批判を続けます。ここで「AmazonはPyCon Singaporeのスポンサーじゃないよね?」と確認していました(笑)。
そこで「自分たちのLambdaを作ろう!」ということでOpenFaaSの紹介をしました。PLONK(Prometheus、Linkerd、OpenFaas、NATS、Kubernetes)というスタックでオープンなAWS Lambda、API Gatewayの代わりとなるものを作っているそうです。そしてOpenFaasを使用して実際にファンクションを作成して動作させる手順について説明がありました。
そして自身のプロジェクトであるFashionの紹介です。FashionはOpenFaasの機能をPython的に使用できるライブラリだそうです。使い勝手などを知りたいので、ぜひ利用してみてほしいと呼びかけていました。
最後に「新しいインターネットを作ろう」というタイトルで、ピアツーピア(P2P)のWeb技術を紹介しました。いくつかP2PのWeb技術があるそうですが、ここではdat://を紹介していました。datはgitとBitTorrentとHTTPを併せたようなもので、データサイエンティストが大きなデータセットを共有するために設計されたそうです。「Google、Twitter、Facebook、Netflix、Slackなどを置き換えなければならない」と呼びかけていました。そして「広告のない世界で生きていきたい!」と語っていました。
いわゆるハッカーだなという感じのRichさんのキーノートでした。一部過激な内容もありましたが、個人的にも頷ける部分があるなと思いました。
Rich氏も交えてビールへ
カンファレンス2日目が終了しました(PyCon Singaporeの3日目はチュートリアルデーです)。ライトニングトークやカチッとしたクロージングもなかったのですが、それがSingapore流のようです(以前もそんな感じでした)。
終了後はキーノートスピーカーのRich氏や知り合い、その場にいた人に声をかけてビールを飲みに行きました。Rich氏(帽子をかぶっている人)はアメリカ人、タイ在住のロシア人、マレーシア人、イスラエル人、シンガポール在住の日本人とバラエティ豊かなメンツで一緒に楽しくビールを飲みました。会計を担当してくれたイスラエルの女性が、誰が何を頼んだかを確認してセント単位まで細かく金額計算をしていたのが印象的でした。
ちなみにこの店は、2018年にSlackで寺田さん(@terapyon)から「どこかいいビールの店をたのむ」と言われて、参加していない私が検索してよさそうなので紹介した店でした。一年越しで来られて満足しました。
スタッフ打ち上げに合流
PyCon Singapore 3日目はチュートリアルデーのため、私はこちらには参加せずに日帰りでLEGOLAND Malaysiaに行ってきました。チュートリアル終了後のスタッフ打ち上げにnikkie氏が誘われており、私もMalaysiaから戻って合流しました。会場はDin Tai Fung(鼎泰豊)です。まさか台北で行けなかった鼎泰豊にシンガポールで行くことになるとは(笑)。
参加者はMartin氏をはじめとしたスタッフ4名、キーノートのRich氏と日本から参加した4名です。すでにひととおり注文をしていたようですが、ものすごい量の料理が一気に来てテーブルにまったく乗り切らず、一時小籠包などの入った蒸籠(せいろ)が6段くらい積み上がっていました。おいしい中華料理を「これはなにかの大会か?」と思いながら、一心不乱に食べました。
スタッフに話を聞いてみたところ、イベントの主催者として動いているのはだいたいここにいるメンバーが全員で、Martin氏(右奥)がメールとのやりとりなどをほとんどしていたそうです。Martin氏はオープニング、キーノート紹介、クロージングを行っており、写真撮影もしていたので「大変そうだなぁ」と思って見ていました。確かに、私がスピーカーとしてメールをやりとりしていた相手もMartin氏でした。今後イベントを主催するスタッフが増えて、PyCon Singaporeが継続的に開催されることを期待します。
鼎泰豊のあとはMartin氏、Rich氏と一緒に近くのドイツビールの店でビールを飲み、私はそのあとさらにLittle Creatures Singaporeに移動してクラフトビールを楽しみました(このお店もJoshさんとお友達におすすめしてもらいました)。Little Creaturesはオーストラリアが発祥で、現在は東南アジアや東アジアに支店があるようです。
おわりに
以上でPyCon Singaporeのレポートは終了です。知り合いと数年ぶりに再会したり、新しい出会いもあったりというカンファレンスでした。ちなみに、このレポートにたびたび登場しているNoah氏ですが、当然PyCon Singaporeにもボランティアスタッフとして参加していました。彼はカンファンレンス1日目(10月10日)の終了後に、PyCon India(10月12日~15日)のボランティアに向かいました。タフすぎます。
私の2019年のPythonカンファレンスツアーも残り1ヵ国(インドネシア)となりました。初めて参加するPyCon Indonesiaはどんなカンファレンスなのか楽しみです。