EuroPython2017で2名登壇しました。
エンジニアの和田と大串です。
イタリアのRiminiという場所で開催されたEuroPython2017というイベントで登壇したので、そのレポートを書きます。
記事の概要
記事の構成は下記のようになっています。
- EuroPythonとは
- 弊社発表内容
- カテゴリ別発表
- Python系: 7件
- A Python for Future Generations
- Type Annotations in Python 3: Whats, whys & wows!
- Write more decorators (and fewer classes)
- Programming in Parallel with Threads
- Pythonic Refactoring: Protecting Your Users From Change
- Pythonic Refactoring: Protecting Your Users From Change
- Abstract Base Classes: a smart use of metaclasses
- ウェブ開発系: 3件
- Asynchronous I/O and the real-time web
- Python and Angular, a perfect match?
- Pythonist view on Microservices & Containerization
- 機械学習: 6件
- GPU Acceleration of a Global Atmospheric Model using Python based Multi-platform
- Big Data Analytics at the MPCDF: GPU Crystallography with Python
- Introduction to Nonparametric Bayesian Models
- How Booking.com serves Deep Learning model predictions
- Deep Learning your Broadband Network @HOME
- Large-scale data extraction, structuring and matching using Python and Spark
- 高速化: 1件
- その他: 6件
- Best Practices for Debugging, Testing and Maintenance
- Hi, my name is README! – A Look at Why Docs are So Important
- Rendering Complex 3d-geodata using Pyrt
- How to make money with your Python Open-Source Project
- Developing elegant workflows in Python code with Apache Airflow
- Finding bugs for free: The magic of static analysis.
- 所感
- おまけ:
- リミニについて;o>
- 会場の雰囲気
- イベント情報
- 募集
- 発表内容:
EuroPythonとは
ヨーロッパで最大級のPythonのイベントです。世界最大のPythonイベントはPyConUSで、参加者人数規模で言うと世界で2番目に大きいPythonのイベントということでした(EuroPython2017には、50カ国以上の国から1000-1100人の参加者がいたとのこと。ちなみにPyConJP2016は参加者が720名らしいので、Pythonイベントの中では世界で見てもかなり大きい方に入るのではないかと思います。
開催地は、毎年点々と変わっており、今年はイタリアRiminiのPalacongressi di Riminiという場所で開催されました。
EuroPyton2017のすべての講演はYouTubeでLivestreamingされ、イベント終了後には同様にすべての講演を YouTube上で見ることが可能です。
弊社発表内容
OpenAPI development with Python: 和田
API仕様の記述フォーマットであるOpenAPIについて発表しました。OpenAPIは、広くSwaggerとしても知られており(2016年にOpenAPIに名称が変更)、多くの開発で使用されています。今回の発表では、OpenAPIの概要から、OpenAPIを利用するためのツール、OpenAPIを利用した弊社の開発事例について述べました。OpenAPIについては、2017年9月開催のPyConJP2017でも登壇する予定ですので、是非お越しください。
- OpenAPIとは
- OpenAPIを利用するためのツール
- Swagger Coreツール
- その他のツール
- OpenAPIを利用したカブクにおける開発事例
- 事例紹介
How to apply deep learning for 3D object: 大串
内容は2章に分けて発表しました。最初の章で深層学習の分野は常に新しい技術が発信されており、フレームワークも多数あるためどのような進め方、基準で行うか不明瞭な部分も多いため、私が実際に行ったアプローチ方法を説明しました。次の章で具体的なユースケースとして3次元データを用いた弊社の場合の利用方法について話しました。発表の概要は下記になります。
- 深層学習を使う場合のアプローチ方法
- どのような問題に深層学習を用いるか
- 具体的な手法を調査する場合のアプローチ方法
- 最初は効果的なキーワードを知らないのでどのようにして効果的なキーワードを探すか
- 実際の実装に関する注意点
- データが手に入って学習を始める前にチェックすべきこと
- 精度を上げるためのアプローチ方法
- リソースに合わせたオススメのアプローチ方法について
- 具体的なユースケース
- 3次元データに適用するためのVoxNetについてコードを交えて説明
- 3次元データ特有のData augmentationの掛け方について具体的なコードを交えて説明
カテゴリ別発表内容
Python系: 7件
A Python for Future Generations
Flaskの作者としても知られるArmin RonacherのKeynoteです。CPythonの実装や、ライブラリ、GILなどに言及しつつ、Pythonの将来を考えた時に今のままでいいのか、変化が必要な部分もあるのではないか、といったことを投げかける講演でした。
Type Annotations in Python 3: Whats, whys & wows!
プログランミング言語における型の役割からPythonにおける型の役割であるType Hintについて具体的な使用例についての発表でした。自動チェックツールのMypy、2系での記述方法、headerファイルのようなpyiファイルを用いた方法、それぞれの手法を用いた時のメリット、デメリットまで言及してくれたので充実している内容でした。
Write more decorators (and fewer classes)
デコレータについての話しでした。デコレータ使えばクラスが少なくできるよって話しでした。
Programming in Parallel with Threads
並列処理についての話しでした。18000のシミュレータをpythonのライブラリを効果的に処理するための施作について話していました。
Pythonic Refactoring: Protecting Your Users From Change
ユーザーに影響を与えないように工夫していかにしてリファクタリングするかの話でした。インターフェースは一定に保つ方が良いことを言及しており、そのための手段として弊社でも利用しているSwaggerについて紹介していました。
Mock it right! A beginner’s guide to world of tests and mocks.
Mockモジュールを使用してPythonのテストを書くときの基本を紹介した発表でした。オブジェクトに直接的にMockを適用できる場合にはMockを適用し、そうでない場合にはPatchを使うと良い、とまとめていました。
Abstract Base Classes: a smart use of metaclasses
スライド
抽象クラスを利用したプログラミングについての発表でした。実装の複雑さに応じてレベルを分けて紹介していました。Pythonの抽象クラスをよく知らない、復習したいという方は内容を見てみてはいかがでしょうか?
ウェブ開発系: 3件
Asynchronous I/O and the real-time web
非同期処理のライブラリであるAsyncioをウェブサイトに適用した場合の話しでした。
Python and Angular, a perfect match?
Pythonをバックエンドにし、Angularでフロントエンドを構築したプロジェクトの紹介でした。カブクでも使用している組み合わせですが、この発表ではフロントとバックエンドをWebSocketで接続するというもので、一風変わっており新鮮でした。
Pythonist view on Microservices & Containerization
マイクロサービスの概念や考え方の紹介から始まり、Pythonで実装されたnamekoというフレームワークの紹介や、Dockerを使用して実際にマイクロサービスを実装するにはどうすればよいかという実装面についても簡単に言及していました。
機械学習: 6件
GPU Acceleration of a Global Atmospheric Model using Python based Multi-platform
PyMIPというマルチなGPU環境でも動作するライブラリの紹介をしていて、GPUを意識しない実装は良いなと思いました。
Big Data Analytics at the MPCDF: GPU Crystallography with Python
ハイパフォーマンスな環境でヴィジュアライゼーションを行う場合のプラットフォームのMPCDFの紹介とユースケースを話していました。
Introduction to Nonparametric Bayesian Models
ベイズモデルの紹介を線形回帰から行っていました。
How Booking.com serves Deep Learning model predictions
ホテルの予約でおなじみのBooking.comでの深層学習のユースケースと実際にどのようにデプロイやバージョン、大規模な要求に対して耐えるための構成にするか話していました。Kubernetesを用いたデプロイの話や以下にレイテンシを抑えて最適化しているかの工夫まで言及していました。
Deep Learning your Broadband Network @HOME
家で観測したネットワークの速度計測データを元に時系列データを学習し予測モデルからネットワークの調子が悪くなりそうなタイミングを予測するために深層学習も使ったという話でした。様々な統計モデルを提供している’StatsModel’についても知れたのが良かったです。
Large-scale data extraction, structuring and matching using Python and Spark
PythonとPySparkを使用して扱いづらいpdfのファイルから構造化されたデータを抽出するためのノウハウを話してくれました。Pythonベースなのでpandasと繋げて扱いづらいデータを効率よく構造化する手順にまで言及していた点が良かったです。
高速化: 1件
A faster Python? You Have These Choices
Pythonで高速化させるための手法とその選び方、特徴について詳しく述べていました。
その他: 6件
Best Practices for Debugging, Testing and Maintenance
Pythonにおけるテストやメンテナンスしやすくなるためのツールについての話を体系的にまとめていたトークでした。
Hi, my name is README! – A Look at Why Docs are So Important
READMEの重要性について語っていました。READMEによって、第一印象が変わるため、OSSでは特に重要な位置付けになるようです。良いREADMEは下記が揃っているとのことでした。
- ストーリー(なぜ作ろうと思ったかのシチュエーションを語る)
- どんな問題を解決するか
- どうやって動かすか
- どうやって導入するか
- どのように貢献するか
Rendering Complex 3d-geodata using Pyrt
JavaScriptを使用せずにレンダリングを行うために発表者が作成したライブラリPYRTの紹介をしていました。
How to make money with your Python Open-Source Project
OSSでお金を稼ぐ方法について語っていました。今回、紹介していたモデルはフリーミアムというモデルで、最初の触りの部分はOSSのフリーソフトとして提供し、より高度な機能が欲しい場合には、課金して提供すると良いという話でした。他の方法として寄付や広告がありますが、アクセスが大量に必要となりターゲットを絞りづらいので、フリーミアムがおすすめとのことでした。
Developing elegant workflows in Python code with Apache Airflow
Airbnbが使っているワークフローをコードで管理するAirflowの紹介です。Pythonで記述されているのは初めて知りました。
Finding bugs for free: The magic of static analysis.
github, bitbuccketの中にある’Python, Java, Javascript’の中にあるバグになりそうなコードを自動で検出してくれるツールの紹介でした。下記のサイトで試すことができます。
所感
- 和田
- 普段社内で開発しているとあまり感じませんが、このような大規模な国際イベントに参加することで、Pythonが多くの人に愛され使われている言語なんだな、ということを改めて体感しました。また、アジアパシフィックのPython界隈もどんどん盛り上げていきたいです。
- 大串
- 過去に国際学会でポスター発表の経験がありましたが、30分の英語発表は初めてでした。そのため、発表練習は多めにしましたが本番では緊張してしまいました。リゾート地が発表会場だったので、プライベートでも行きたい場所でした。
おまけ
リミニについて
イタリア半島のちょうど付け根にあたるエミリア・ロマーニャ州。北はミラノに近いピアチェンツァ、南はマルケ州です。州内には9つの県があり、リミニ県が一番南の県となっています。私たちはミラノから鉄道でリミニまで移動しました。その乗り換えの際に親切に案内してくれたり、荷物を運んでくれた人がいましたがお金せびられました。読者の皆様もイタリアに行く際はご注意下さい。
リミニはイタリア半島東側のアドリア海沿いに位置し、夏の観光地としてヨーロッパからたくさんの人がバカンスに訪れるので、「イタリアのマイアミ」とも呼ばれてるみたいです。
海岸沿いにはホテルが並んでいて、所有している海岸がわかるようにパラソルの色などで区画分けされていました。
料理
会場の雰囲気
発表会場は”Anfiteatro 1”、”Anfiteatro 2”、”Arengo”、”PythonAnywhere Room”、”PyCharm Room”の5つでした。部屋の名前に”PyCharm”がついていてさすがPyCharmと思いました。
LTの内容で面白かったのが”泳いでいる間にパンツ盗まれた”という内容でLTしていて男のパンツでも盗まれるのかと思いながら聞いてました。
イベント情報
今回のEuroPythonの報告会を社外の人向けに行います。
内容はEuroPythonに参加した2名の発表と参加して特に印象に残っている内容について話す予定です。
詳細及び参加方法は下記になりますので興味のある方は下記リンクから申し込みお願いします。
募集
最後に、 カブクではPythonエンジニアやフロントエンドエンジニア、機械学習エンジニアを募集しています。興味ある方、一度オフィスまで遊びに来て下さい!
参考
その他の記事
Other Articles
関連職種
Recruit