こんにちは、taisa です。第2回となる今回は、「 PyCon APAC 2018 in Singapore 」のカンファレンスデイ2日目の様子をお届けします。「 キーノート」や「セッション」のレポートの他にも「はじめて海外カンファレンスに参加してみて」や「夜の懇親会について」「 シンガポールについて」のコラムもありますので合わせてご覧ください。
キーノート:"Introduction to object detection" ―Alan Descoins
(家治亮)
2日目のKeynoteにはTryolabs 社CTOのAlan Descoins 氏が登壇しました。Tryolabs社では企業を対象とした機械学習プロダクトの構築支援を行っており、 Alan Descoins氏は研究開発と全プロジェクトに関わるコンサルティング業務を担っています。
このセッションでは、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)を利用した物体検出(object detection)アルゴリズムの解説と、Luminoth というツールの紹介が行われました。
キーノート開始直前の様子
まず導入として、画像分類(classification)を題材に、どのようにしてCNNが画像からパターンを抽出するかが説明されました。次に、物体検出アルゴリズムの具体例として Faster R-CNN を取り上げ、 CNNの中間層から得られる特徴マップ (activation mapまたはfeature map) が物体候補領域の推定に利用されること、その推定結果から物体のクラス分類と矩形領域の回帰計算を行うことが説明されました。
最後にLuminothの紹介とそのデモが行われました。Luminothは、TensorFlowを基にしたディープラーニングのツール群およびライブラリです。作成したモデルの学習、評価を一貫して行うためのCLIツールが用意されている他、ライブラリとして既存のアプリに組み込むこともできます。現在Luminothはまだアルファ版であり、物体検出のみをサポートしている状況です。しかし「but we are aiming for much more」とのことですので、今後の発展に期待しましょう。
セッションの感想
画像を対象にしたアプリケーションで、ディープラーニングは当然のごとく使われるようになりました。有名なモデルであればGitHubで既に公開されているので、TensorFlow実装のモデル を用意し、目的に応じて再学習 (可能なら転移学習) させることによって所望のモデルが得られます。
そのくらい一般的な技術になったので、私も手を動かすことを怠らず、必死でこの分野をキャッチアップしていかなくてはと強く実感しました。
Elements of Programming Interviews in Python―Tsung-Hsien Lee
(新井正貴 )
Googleのhiring committeeに所属していて、コーディング試験についての書籍も出版している専門家によるトークでした。
発表の中では、選考の進み方やコーディング試験の具体例を示していました。またコーディング試験の対策として、「 普段からエディタは好きなものを使っていいけど、補完機能には頼るな。ホワトボードを使った試験の場合に困るぞ!」とのアドバイスがありました。
最後にアルゴリズム系のコーディング試験でよく使うPythonの標準ライブラリ・サードパーティライブラリが紹介されました。そして「Pythonicなコードを書くことが成功の鍵だ!」という言葉と、自身の書籍の紹介とともにトークが締めくくられました。
セッションの感想
今回のAPACでは、数多くの高校生が参加していました。シンガポールではいつものことらしく、教育水準の高さを垣間見ることができました。その中でも特にこのコーディング試験の発表は、将来の就職・インターン採用につながるからか彼らが真剣に聞いていたのがとても印象的でした。
このようなコーディング試験を扱うトークというものは日本のカンファレンスでは聞いたことがなかったので、新鮮で面白かったです。このように他国のエンジニア文化を肌で感じられるのも、海外カンファレンスに参加する醍醐味といえるでしょう。
セッション:Streaming data processing pipelines with Apache Beam [in Python, naturally!]―Markku Lepistö, Solutions Architect -APAC and Japan, Google Cloud Platform at Google
(清田史和 )
Apache Beamsの解説とリアルタイムにPOS(point of sales)データを処理をする実演が行われた初級~中級者向けのトークでした。まず、Apache Beamの名前の由来の話がありました。 "batch"と"streaming"のワードの頭文字を組み合わせて、beamと名付けたらしいです。
次に、 PCollectionとPTransformの話がありました。
PCollectionは、バッチ処理の場合有限(bounded)状態で、ストリーミング処理の場合は無限(unbounded)状態になります。PCollectionを生成する時の入力ソースによって状態が決まります。一度生成されたオブジェクトは変更ができない(Immutable)そうです。あと、いくつかの特徴 があるので確認しておくと良いと思います。
PTransformは、パイプラインのロジックのことで、単一(or 複数)の"PCollection"をインプットとして受け取り、そこから、単一(or 複数)の"PCollection"を新たに生成します。準備したそれぞれのPTransformは、完全に独立した並列処理になります。Pythonは、2系しかまだサポートしていないとのことです。
一通りApache Beamの基本的な機能の説明を行った後、持参したバーコードリーダーで、テストで準備してあったいくつかの商品のバーコードを読み込み、POSデータをApache Beamで処理しDataflowへデータを流す実演を行いました。
セッションの感想
実際の処理の流れを視覚的に確認すると、具体的なイメージが湧きやすく良かったです。データをStreamingして、処理を連続的に行い、最終的に機械学習やデータ解析のデータを動的に構築できるということだと思うのですが、クラウドを使って簡単にそれができる時代になったのだなと実感しました。バーコードリーダーを買って、自分で簡単にPOS解析システムができてしまうので、すごい世の中になったなと思いました。
PyCon APACの開催国となったシンガポールについて
(吉田俊輔 )
PyCon JP 2017 / 2018 座長の吉田です。PyCon APACの開催国となったシンガポールについて紹介します。
Day1のレポートで紹介したPyCon APACツアーが企画されていましたが、私を含め数名はツアーとは別スケジュールで独自に航空チケットや宿泊を手配して行動しました。ここではツアースケジュール外でのアクティビティについて紹介します。
私はPyCon APACツアー参加者と同じ便で、早朝にシンガポールに到着しました。一緒にタクシーでホテルに移動して荷物を置き、その後シンガポール中心部に戻って名物のマーライオンなどを観光しました。そして夕方、現地にいる去年のPyCon JPスタッフや、日本からスポンサー参加したHDE社の方、スピーカーのヨナス氏などと合流し、会食をしました。
参加者の集合写真
ツアー関係者は基本的にタクシーやGrab を使って移動していました。乗り合いをすれば、それが一番楽でかつ割り勘をすれば安くもなります。シンガポール チャンギ空港からPyCon APAC会場の大学までタクシーで40分、30~40シンガポールドル(約2,400~3,200円)程度だったと思います。
私はツアーとは別に宿や飛行機を別に手配したので、単独行動を多くしていました。交通手段としてはタクシーより安く上がるMRT(Mass Rapid Transit、いわゆる鉄道)やバスを使用していました。バスやMRTであれば、シンガポール チャンギ空港からPyCon APAC会場の大学まで(MRTの駅までは遠かったが)3シンガポールドル(約240円)程度で移動可能です。
単独行動で行った場所はいくつかありますが、2ヵ所紹介します。まずはレゴランド(LEGOLAND® Malaysia Resort )です。といってもレゴランドはシンガポールにはありません。隣国マレーシアのジョホールバルにあります。
マレーシアと言えば、去年開催のPyCon APACはマレーシア開催でした。なぜ去年行かずに今年行ったのか、それはPyCon APAC 2017はマレーシア首都クアラルンプールで開催されましたが、クアラルンプールはジョホールバルから数百キロ離れており、気軽に行く距離ではないのです。しかし、シンガポールはジョホールバルから数十キロ程度の距離であり、( 国境さえ越えれば)気軽に行くことができます。
行きはシンガポール中心部から出ている国際タクシーを使用し、タクシーに乗ったまま国境を越えるVIPコースを使いました。これは定額で70シンガポールドル (約5,600円) かかり、値段の割にクレジットカードは使えないと言った点はありましたが、乗ったままイミグレーションを受けることができて、トータル1時間半程度でレゴランドまで直行するので、非常に快適でした。帰りは時間があったのでGrabで国境イミグレーションまで移動した後、バスで国境を越える一番安いパターンで移動してみました。国境は数ドルで移動できました。
しかし長時間マレーシア側のイミグレーションに並び、満員のバスに詰め込まれてバス移動し、シンガポール側のイミグレーションに移動し、また満員のバスに詰め込まれ、トータル3時間ほどかかりました。これはほぼ苦行ですね。そのままシンガポール市内でバスを乗り換えて宿泊先まで深夜移動しましたが、治安も良く特に問題ありませんでした。
海外でのバス移動は難しく思うかもしれません。シンガポールでは、プリペイドカードを入手し、下車する停留所をスマートフォンの地図で推測できれば何とかなります。プリペイドカードは、( 空港など)主要駅でバス/MRT共通の乗車券となるez-linkカードを購入しておきます。停留所については、バス乗車中にアナウンスが無いので、Google Mapで現在地を確認しながらバス停止ボタンをタイミングを見計らって押す必要があり、慣れるまで大変でした。
PyCon APACカンファレンスの翌々日は日本への移動日でしたが、ツアー参加者は普通に昼間移動だったのであまり観光する時間は無かったようです。私は帰りも深夜便で移動するチケットを取ったため、昼間はMRTとバスを使ってスタジアム近くの温泉(Yunomori Onsen & Spa )に行きました。
シンガポールにはあまり日本スタイルの温泉はありません。ここは日系の会社がやっているようで、日本のスーパー銭湯に非常に近いスタイルで楽しめる場所でした。しかし、温泉と書かれた湯船はラベンダー色で明らかに入浴剤が入っていて、本当に日本基準の「温泉」なのかどうかは判断が付きませんでした。まあシンガポールなので、これもありかなと思って移動疲れを癒やすことができました。
シンガポールは日本から7時間程度で行くことができ、夜行便などを使えばより時間を有効に使用することができます。また、MRTやバスを使えばタクシーよりも安く行動することもできます。シンガポールでカンファレンスが開かれる際は観光なども合わせて楽しんでみてはいかがでしょうか。
海外カンファレンスに参加してみて
(家治亮)
今回のPyCon APACで初の海外カンファレンス参加を果たしました。セッション内容については既に多くの内容が紹介されていますので、このコラムでは個人的な話として、参加のきっかけと今後の課題の二点について紹介します。
参加のきっかけ
もともと今年中に海外カンファレンスへ参加しようという希望がありました。もちろん日本国内でも、東京を筆頭に多くの魅力的なイベントが開催されていますし、そこでも技術的な情報を得るチャンスは十分にあると思います。しかしながら、海外のソフトウェアエンジニアと顔を合わせて交流すること、彼らとの接点を得るチャンスがあることは、私にとって代え難いモチベーションでした。
今年の3月下旬から渡航先を本格的に検討していたところ、同時期にPyCon JP Blogのツアー参加者募集の記事 が公開されました。それまでにシンガポールの渡航経験がなかったことに不安があったため、航空券およびホテルの手配をお任せできることは、非常にありがたいものでした。このため、ツアーに申し込んで、このレポートを執筆しているメンバーと一緒にシンガポールへ渡航しました。改めて振り返ってみても、やはりツアー参加で大正解だったと改めて感じます。
今後の課題
今後の課題として、様々な英語のアクセントに慣れることが重要だと感じました。PyCon APAC の参加者だけでなく、シンガポールの方々も、人によってそれぞれ異なった英語のアクセントを持っていました。
もちろん彼らとの英語での意思疎通は可能なのですが、相手の言葉を聞くために集中力を要しました。彼らの言うことをうまく聞き取れないこともしばしば起こり、会話をすることは予想以上の大変さを感じました。しかし、このアクセントの違いは多様性と表裏一体だと私は捉えています。肯定的に受け止めて、今後の自分の糧にしたいと思います。
2日目の夜について
(寺田学)
カンファレンスのもうひとつの醍醐味である、ソーシャルイベントという名の飲み会についてご紹介します。
シンガポールでの懇親会
カンファレンスには、公式の懇親会がある場合やスピーカーなどが集まるパーティーが開かれることもあります。しかし、今回のカンファレンスには公式の懇親会などは無く、参加者同士で行きたい人だけが集まって飲みに行ったり夕食に行ったりしていました。過去のシンガポールで開催されたPyConでも同様に懇親会やパーティーはありませんでした。文化的なことなのだと思っています。
その日の懇親会開催の経緯
日本からの参加者同士でビールを飲みに行きたいという事になりました。そこで、韓国から来ていたPSF(Python Software Foundation)でも活動しているKim Younggun氏や台湾から来ておりPyCon JPのスタッフでもあるNoah Chen氏を誘ってビールが飲めるレストランに行くことにしました。そこまではタクシーで20分程度でしたので、タクシーを呼んで約10名で移動することにしました。
タクシー待ちに向かう時に、現地で仲良くなったタイからの参加者がいたので声を掛けこれからビールを飲みに行く旨を話したところ、合流したいということになり、一緒に行くことになりました。そのタイからの参加者に続いて、他の国々から来ている人がどんどん増えていきました。
日本からの参加者で、タクシーを3台呼んでいました。これで十分に乗れると思っていたのですが、参加者が6人近く増え徐々に誰が参加したいのかすらもわからなくなってきました。1台目のタクシーには、日本からのメンバーだけを乗れるだけ乗ってもらい、2台目には私が先のタイからの参加者とその知人を乗せて移動を開始しました。他の日本からのメンバーはもう1台に乗り、他の海外からのメンバーには、集合場所を教えてそこで待ち合わせを行いました。案の定、1台のタクシーがはぐれ、先についたメンバーはビールを飲み始めていて、状況が混沌としてきました。
ここで便利だったのは、はぐれた人とやり取りできたFacebookチャットでした。Facebookチャットには現在位置をピンしてお知らせする機能がありそれを使い、お互いの現在地を確認し、10分程度待った後に全員が集合できました。
懇親会とビール
シンガポールは酒税が高く、ビールも高価です。ただ、19時や20時まではハッピーアワーという名のもと、比較的安くビールが飲めます。これを利用し、ピッチャーで頼んだりしビールを楽しみました。しかし、ここは国際色が強い分アルコールを飲まない人も数名います。この様な方にはソフトドリンクをお勧めしたり、食事の注文をお願いしたりをして楽しんでもらいました。
食事は、日本流のシェアをお勧めし、ピザやチップスなど多めに頼み食べました。
参加者
日本からは7人が参加しました。他に、韓国、台湾、タイ、インド、インドネシア、ナイジェリア、オーストラリアから集まり総勢17名でした。
多国籍な懇親会集合写真
まとめ
2時間程度ビールや会食を楽しんだ後、会計をすることになりました。日本流で割り勘を試みたのですが大変苦戦しました。カードで支払いたい人や、飲食の量と比例しない可能性をどのように許容してもらうかということが発生しました。そこは、多く飲んだ人は多めに、カードでの支払い希望者は一緒に来ていた知人と相談して現金を借りてもらったりしてなんとか支払いを済ませることができました。
このような、さまざまな国の人たちとPythonという技術を通じて知り合いになり、視野を広げられたことは、海外カンファレンスを楽しむ大事な要素だと思います。
終わりに
(taisa )
以上でPyCon APAC 2018 in Singaporeのレポートは終わりです。今年はPyCon JPスタッフと元スタッフの7名でレポートを書きました。また日本からはHDE さんがプラチナスポンサーとして参加しました。
PyCon APACへの参加を通じてPythonに関する学びを得るとともに、日本から参加したエンジニアメンバーと交流をしたり、現地スタッフや参加者、スポンサーと交流したり食事をしたり、観光したり、短い間ながら非常に充実した時間を送ることができました。このレポートを通じて、海外のカンファレンスへ行ってみようと思う人が少しでも増えてくれたらうれしいです。