鈴木たかのりです。2019年の個人的な挑戦として「海外のPythonカンファレンスにトークやポスターを応募しまくって、採択されたら行く」ということを行っています。今回レポートするPyCon Malaysiaは5ヵ国目です。過去のレポートもgihyo.jpに掲載していますので、ぜひ興味のある国のレポートを読んでみてください。
PyCon Malaysiaとは
PyCon はプログラミング言語Pythonに関する国際カンファレンスです。アメリカや日本をはじめ世界中で開催されています。
PyCon Malaysia 2019 Webサイト
PyCon Malaysia は2014に第1回が開催されました。2017にはPyCon APAC in Malaisiaとして、アジア太平洋地域のPyConが開催されました。そのときの模様は以下のレポートで確認できます。
以下はPyCon Malaysia 2019の開催概要です。
日本からの大荷物
今回日本からの移動は思いがけない大荷物となりました。きっかけは韓国のYounggun氏 からの以下のようなメールでした(Younggun氏はPSF:Python Software Foundationの2016年の理事でPyCon KRの立ち上げメンバーでもあります) 。
The PSF will have a booth at PyCon MY (Aug 24-25), PyCon JP (Sep. 16-17), PyCon TW (Sep.20-22)
I'll attend JP and TW but unfortunately, I can't make it to MY due to biz trip. So the problem is how to send the booth kit to MY from KR.
I'm thinking if we can deliver the kit from/to countries we've scheduled for travels like below:
KR -> JP (Arai)
JP -> MY (Takanori)
MY -> JP (Takanori)
JP -> TW (Younggun, will attend both)
これはどういう内容かというと、PSFがスポンサーしているイベントではPSFがブースを出してPythonステッカーなどを参加者に配っています。また、ブースには通常PSF Conference KitというPythonロゴが入ったバックパネルを設置しています。そのKitは東アジアではYounggun氏が管理しているのですが「マレーシアに行けないのでtakanoriが持って行ってくれない?」というお願いでした。
PSF Conference Kit(イメージ)
「まぁ、やります」と返事をして、Iqbalさん(元PyCon JP理事)が韓国から日本に持ち帰ったKitが宅配便で自宅に届けられました。そして、そのデカくて重たいKitを持って空港へと向かいました。
Conference Kitとカバン
いつもは、現地での移動には(楽しいので)できるだけ公共交通を使うのですが、さすがにこの大荷物なのでGrab(配車サービス)を使って車で移動しました。
Conference Kitの設営、オープニング
次の日はカンファレンスの1日目です。早めにConference Kitを持って会場に移動し、PyCon Malaysia 2019のChairであるJames氏とあいさつをして会場に設営しました。
各国PyConでボランティアスタッフをしている(私には)おなじみのNoah氏と一緒にConference Kitを組み立てました。そのときに衝撃の事実が発覚しました。なんとバッグの中にキャリーが入っていたのです。がんばって家から空港まで運んだあれはなんだったのか……。
Noah氏とConference Kitを組み立て中
まぁ、悔やんでもしょうがないので、Conference Kitを組み立ててメイン会場に設置しました。大仕事を終えたな!!という感じです。
Conference Kitができあがった
その後時間となりイベントのオープニングとなりました。先ほど話したJames氏のあいさつでPyCon Malaysia 2019が始まりました。
PyCon Malaysia 2019のオープニング
私の発表 ―「Automate the Boring Stuff with Slackbot」
1日目の午前中にさっそく私の発表です。発表の準備をしていたので、オープニングとキーノートはあまり聞けませんでした。
基本的な発表内容はフィリピンで開催されたPyCon APAC、PyCon Thailandのものと同じです。しかし、トークの導入部分、Slackのメッセージ例やまとめなど、ちょこちょこ地域ごとに手を入れています。
発表の様子
今回は、発表の最初に「写真を撮ってTweetは大歓迎」と伝えたり、全スライドに自分のTwitter idを入れるという工夫をしました(PyCon ThailandでKatieさんが行っていたものをリスペクトしました) 。その甲斐あってか、Twitterにもいろいろとリアクションがもらえてうれしかったです。
2日目のキーノートスピーカーでもあるCarol氏が最前列で聞いていて、最初は少しプレッシャーを感じましたが、私の発表をうなずいて聞いていてくれているので、楽しく発表できました。あとで確認すると、Carolさんも私の発表をTweetしてくれていました。とてもありがたいです。
質疑応答では「Botをどこで動かすのか?」という質問があり「EC2やHerokuなどのサーバー上で動かすのがおすすめ。開発時は自分のPCで動かすだけで試せるので簡単だよ」という回答をしました。他の参加者から「サーバーを使わずにAWS Lambdaとかを使ってBotを作るのもありだよ」というフォローがありました。「 このSlackbotのフレームワークはLambdaでは動かすのは面倒だと思うけど、一般論としてはそういうのもありだと思う」という説明をして、なんとか今回も質疑応答をやり終えました。
ランチ
ランチはビュッフェスタイルです。基本的においしいものが多くていいですね。
ランチはビュッフェスタイル
ランチの料理はマレー、中華、インドの料理が混ざっている感じでしょうか。デザートにスイカやメロンなどの果物があって、それもおいしかったです。
米、玉子、チキンカレー、野菜炒めなど
テーブルで隣に座った女性が日本語が少しできる方で、最近大阪と東京の旅行に行っていたそうです。旅行中はすき家にばっかり行っていたそうです。とはいえ、彼女はイスラム教なので牛丼は食べられません。もっぱら魚のメニューを食べていたそうです。
Django with GraphQL ―Manuel Riel
Manuel Riel氏
この発表はPython製のWebフレームワークであるDjangoにGraphQLを加えていく手法や、具体的にGraphQLの内容について説明がありました。最初にREST APIの課題について説明がありました。
REST APIはゆるい標準化がされており、複数のモデル間の関係を表すことが難しいという課題があげられていました。また、Over Fetchingという必要もないフィールドの情報を全て取ってきてしまったり、逆にUnder Fetchingといって必要な情報を取得するために何回もREST APIを呼び出さないといけないことも課題であると説明していました。
それに対してGraphQL では必要な情報を問い合わせるための、検索用の言語(QL:Query Language)を提供しています。GraphQLでリクエストを投げれば、必要な情報が1回でまとめて返ってくるということで便利そうです。
次にGraphQLの基本的な以下のコンセプトとその文法が紹介されていました。
Types:データベースのモデルを反映するもの。String、Intなどの型が指定できる
Queries:デフォルトの操作。指定したデータを取得する
Mutations:データを変更する
Arguments:クエリの再利用とデータの受け渡し
Nesting:ネストした属性が要求できる
Subscriptions:Subscribeしたデータの更新をリアルタイムに受け取る
Fragments:複数のクエリで同じフィールドを使うときに使い回せる
次にVue.jsとDjangoを使用したデモを行いました。Django側の実装はGraphene-Python というパッケージを利用しています。そして以下のようなコードを書くことでGraphQLで検索できるようになるそうです。
class Query(graphene.ObjectType):
all_persons = graphene.List(PersonType)
def resolve_all_persons(self, info):
return Person.objects.all()
ただこれだけだと誰でもどんなデータにでもアクセスできてしまうので、認証などの仕組みが必要になるとのことでした(確かに) 。
DjangoにGrapheneを導入すると確かに簡単にGraphQLには対応できそうです。実際に使ってみないとどういう苦労があるかはわかりませんが、試してみるのもありかなと思いました。
ティーブレイクで日本人と遭遇
午後のティーブレイクではおやつとミルクティーで休憩です。コーヒーとティーが提供されていますが、どちらも最初からミルクと砂糖が入っており、東南アジアだなーと感じました。写真の餃子っぽい物は、中がカレーでカレーパンっぽい食べ物でした。
おやつとミルクティー
Twitterで私の発表に対するリアクションを見ていると、日本から参加しているっぽい人(kzfm (@fmkz___) )がいました。
Twitterで声をかけてみると日本の方のようです。ランチの時には見つけられなかったのですが、ティーブレイクに会うことができました。以前は静岡に住んでいたそうで、共通の知り合いに@aodag がいました。世間は狭いですね。
kzfmさんと会えた
Scarling AirAsia 3.0 ―Tevanraj Elengoe
PyCon MalaysiaのスポンサーであるAirAsiaのエンジニアによるトークです。そもそも「なんでAirAsiaがPyConのスポンサーしているんだろう?」と思って企業ブースで少し話したんですが、AirAsiaはシステムを内製しておりエンジニアは結構いるようです。このスポンサーもよいエンジニアを採用したいために行っているそうです。ちなみにスピーカーのTevanraj Elengoe氏はRubyConf MY 18のOrganizerだそうです。
まず最初にAirAsiaは「Travel Technology Company」であることが述べられました。AirAsiaは他の航空会社と異なり、トップページにホテル予約やショッピングの情報があります。またこれらの情報にはスマートフォンのアプリからも参照可能であること、事業規模としてはExpediaなどと比べても大きいそうです。
AirAsiaのトップページ
サイトとしては最大で3万リクエスト/秒をさばいており、毎日2,000~4,000のコンテナがAPIのために動いているそうです。彼らはAASET(AirAsia Software Engineering and Technology)という部門で働いており、その部門にはエンジニア、QA、DevOps担当が合計で100名以上いるそうです。職場はバンガロール、クアラルンプール、シンガポールの3拠点とのこと。
APIサーバーは以前は.Netで作られていましたが、現在はPythonに移行してGoogle App Engine上で動作しているそうです。Kong というOSSのAPI Gatewayを使用しているとのこと。現在、Kubernetesに載せ替えようとしているそうです。APIはSOAPで作成していたが現在はREST APIとなっており、SOAPのAPIをRESTに変換して使っているといいます。またMulti-cloud companyと言っており、AWS、GCPだけでなくAzure、Alibaba Cloudも使用しているそうです。
AirAsiaはmulti-cloud company!
大規模システムを運用しながらいろいろなところにチャレンジしている感じがして、AirAsiaの技術部門はすごいなーと感じる発表でした。積極採用しているそうなので、興味のある方は同社のキャリア採用のページ を見てみてください(回し者ではありません) 。
ディナー
カンファレンス1日目の夜はスピーカー、スタッフなどを招待したディナーがありました。場所は豪華なホテルにあるビュッフェレストランです。
豪華なホテルのロビー
マレーシア料理だけでなく、中華、イタリアン、寿司などもあるバラエティ豊かなものでした。
豪華そうなシーフード
しかしビールがないので、いつもどおりビールを探しに移動です。Noahを誘ってPAUS というクラフトビールを扱っているお店へ。この店は壁に空き瓶と空き缶が並んでいて、それがそのままメニューになっています(おしゃれ) 。こうして、PyCon Malaysiaの1日目は終了しました。
空き瓶と空き缶がメニュー
キーノート「Practical Python and Jupyter for Data Science and Beyond」―Carol Willing
Carol Willing氏
カンファレンス2日目のキーノートはCarol Willing氏です。Carol氏はPythonの仕様策定を行うPython Steering Councilのメンバーの1人で、US PyConでのCouncilメンバーによるキーノートで初めて知りました。その様子については以下のレポートを参照してください。
参考:
第3回 3日目朝のLT紹介、キーノートはPython仕様策定のキーパーソンによるパネル:世界最大のPythonカンファレンス「US PyCon 2019」レポート
Carol氏はProject Jupyter のSteering Councilでもあり、Core開発者としてJupyteHub、BinderHubなどの開発をしているそうです。またnteract というJupyter NotebookのUIやデータ可視化を強化したアプリケーションのコアメンテナーでもあるそうです。
最初に「実践的なデータサイエンス」にはPython、Jupyter、Knowledge、Communityが必要であると述べて、それぞれの要素について深掘りしていきました。
Python
Pythonは成長(Growth)しており、サードパーティーのライブラリを開発する強いコミュニティがあります。Pythonはデータサイエンスだけでなく、Web、科学、DevOps、組み込みシステム、教育などさまざまな分野で使用されています。
言語の運営(Governance)については、PEP 8016 によってGuidoがBDFL(最終的な言語策定者)を引退した後に、Steering Councilによる運営が決まりました。現在はCarol、Guidoを含めた5名のCouncilメンバーで運営されています。
Python 3.8は現在beta4がリリースされており、試すことが可能です。位置指定のみ引数、代入演算子、fリテラルの =
記号など新機能についても紹介がありました。
最後にPython 2へのお別れということで、py3readiness.org というサイトでは最もメジャーな360のパッケージが全てPython 3に対応していること、pythonclock.org でPython 2.7のサポート期限切れまでがカウントダウンされていることが紹介されました。
Jupyter
Carolさんは2014年にIPython Notebook(Jupyter Notebookの以前の名前です)を使ってPythonを教えていたそうです。そこから5年でGitHub上には500万以上のNotebookファイルが置かれるようになりました。
また、Project Jupyterは2017年にACM Softoware System Award を受賞しており、そのときのプロジェクトののビデオが紹介されていました。
VIDEO
Knowledge
最初にPythonでデータサイエンスをするための準備(Prepare)が必要であるとの説明がありました。最初はWebブラウザ上でBinder などを使って試し、次にPythonをインストールして、Python上に必要なライブラリをインストールします。そしてエディタなどのツールを選択しましょうという説明でした。パッケージ管理ではpip
とconda
両方を説明していました。
次にデータの探索(Exploration)について説明がありました。自分が興味ある分野からはじめ、PandasやMatplotlibなどのライブラリのチュートリアルを試し、書籍やカンファレンスのビデオで学び、コミュニティに参加しようという提案がされていました。また、最新の情報を追いかけるために、Talk Python to Me などが紹介されていました。
そして次にプロトタイプの作成(Prototyping)について説明がありました。実際にシステム化する前にプロトタイプを作成することが説明されていました。さまざまなライブラリを活用して、データをJupyter Notebook上で可視化するサンプルが紹介されていました。
最後は実際にシステムを製造(Production)するフェーズです。データサイエンスのシステムをスケールさせるため、以下のツールが紹介されていました。
これらのツールを使用した具体的なデータ分析システムのアーキテクチャーも紹介されていました。
Community
最後にコミュニティについて述べられました。コミュニティによって作成されたプログラミング言語によって、このPyCon Malaysiaのように素晴らしいイベントが開催されていることについて触れられました。コントリビューターが開発などで時間的な貢献をし、スポンサーが金銭的な貢献をすることで、プログラミング言語とコミュニティが継続的に発展しています。そしてPythonの未来はここにいるみんなに依存しているというメッセージがありました。
PythonやJupyterの基本的な情報から、データサイエンスで実際に開発するためのノウハウなど、非常に幅広い内容のキーノートでした。また、このキーノートとは直接関係ありませんが、Carol氏はさまざまなトークに最前列で参加して積極的に質問もしており、非常に前向きにこのイベントに参加していることを感じました。
ちなみに娘さんが日本在住だそうで「日本に来るときはぜひ連絡ください」と伝えておきました。
ランチミーティング
ランチタイムを利用してアジア各国で集まったPyConのメンバーとCarolさんでミーティングを行いました。テーブルについたのはCarolさんとマレーシア、インドネシア、シンガポール、フィリピン、台湾、日本のメンバーです。ここでは各国のPythonコミュニティについて、どのようにPythonを広げているか、今後の予定などについて情報交換をしました。Carolさんが「PSFではこういうサポートができるよ」みたいに具体的にアドバイスをしていることが印象的でした。
アジア各国のPyConメンバーでランチ
クロージング
最後はクロージングです。ChairのJames氏から、最初にボランティア、スピーカー、参加者への感謝の言葉が述べられました。2016年のPyCon Malaysiaでは女性の参加者はたった2名だったそうです。Women Who Codeなどとも協力して女性の参加者が増えたそうです(発表者も女性が多いなという印象でした) 。また今後は他のPyConに行くための奨学金制度を始めるとのことです。そして2020年はPyCon APACをマレーシアで開催したいと考えているそうです。最後に2020年のスタッフ募集の告知をしてPyCon Malaysia 2019は閉会しました。
クロージング
Conference Kit
私が日本から重たい思いをして持って行ったPSFのConference Kitですが、これを日本に持ち帰る必要があります(次回はPyCon JPで使用予定) 。参加者のみなさんがそこで楽しそうに記念撮影しているところを見ていると「持って行ってよかったな」と思いました。
記念撮影
終わりに
以上でPyCon Malaysiaは終了です。終了後はNoahと一緒に、コアスタッフの1人であるIvyさんに連れられてビールと食事に行きました。1軒目のビールのお店「The Great Beer Bar 」は、カンファレンス前日にも1人で飲みに行った店でした。
Ivyさんとクラフトビール
2軒目はローカル感漂う「Kee Hiong Klang Bak Kuh Teh」という店でバクテー(肉骨茶)を食べました。私以外は中華系なので中国語で店員とやりとりをしており、なにを言っているのかまったくわかりません。おまかせ状態で待っていると、いい感じのバクテーがでてきておいしくいただきました。ローカルの方に案内してもらえると安心ですね。
バクテー(どれもおいしかった)
私のPyConツアーは、次は9月の日本と台湾です。PyCon JPに参加される方とはどこかで会えるとうれしいです。