EuroPython2017で2名登壇しました。
2017/08/18
  • このエントリーをはてなブックマークに追加
エンジニアの和田と大串です。
イタリアのRiminiという場所で開催されたEuroPython2017というイベントで登壇したので、そのレポートを書きます。

記事の概要

記事の構成は下記のようになっています。
  • 発表概要:
    • 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’の中にあるバグになりそうなコードを自動で検出してくれるツールの紹介でした。下記のサイトで試すことができます。

    https://lgtm.com

    所感


    • 和田
      • 普段社内で開発しているとあまり感じませんが、このような大規模な国際イベントに参加することで、Pythonが多くの人に愛され使われている言語なんだな、ということを改めて体感しました。また、アジアパシフィックのPython界隈もどんどん盛り上げていきたいです。
    • 大串
      • 過去に国際学会でポスター発表の経験がありましたが、30分の英語発表は初めてでした。そのため、発表練習は多めにしましたが本番では緊張してしまいました。リゾート地が発表会場だったので、プライベートでも行きたい場所でした。


    おまけ


    リミニについて


    イタリア半島のちょうど付け根にあたるエミリア・ロマーニャ州。北はミラノに近いピアチェンツァ、南はマルケ州です。州内には9つの県があり、リミニ県が一番南の県となっています。私たちはミラノから鉄道でリミニまで移動しました。その乗り換えの際に親切に案内してくれたり、荷物を運んでくれた人がいましたがお金せびられました。読者の皆様もイタリアに行く際はご注意下さい。

    リミニはイタリア半島東側のアドリア海沿いに位置し、夏の観光地としてヨーロッパからたくさんの人がバカンスに訪れるので、「イタリアのマイアミ」とも呼ばれてるみたいです。
    海岸沿いにはホテルが並んでいて、所有している海岸がわかるようにパラソルの色などで区画分けされていました。




    料理





    会場の雰囲気


    発表会場は”Anfiteatro 1”、”Anfiteatro 2”、”Arengo”、”PythonAnywhere Room”、”PyCharm Room”の5つでした。部屋の名前に”PyCharm”がついていてさすがPyCharmと思いました。


    LTの内容で面白かったのが”泳いでいる間にパンツ盗まれた”という内容でLTしていて男のパンツでも盗まれるのかと思いながら聞いてました。


    イベント情報


    今回のEuroPythonの報告会を社外の人向けに行います。
    内容はEuroPythonに参加した2名の発表と参加して特に印象に残っている内容について話す予定です。
    詳細及び参加方法は下記になりますので興味のある方は下記リンクから申し込みお願いします。

    EuroPython2017報告会

    募集


    最後に、 カブクではPythonエンジニアやフロントエンドエンジニア、機械学習エンジニアを募集しています。興味ある方、一度オフィスまで遊びに来て下さい!

    参考


    EuroPython2016で登壇しました
    リミニについて