EuroPython2017で2名登壇しました。

2017/08/18
このエントリーをはてなブックマークに追加

エンジニアの和田と大串です。
イタリアのRiminiという場所で開催されたEuroPython2017というイベントで登壇したので、そのレポートを書きます。

記事の概要

記事の構成は下記のようになっています。

  • 発表概要:
    • OpenAPIとは
      • OpenAPIを利用するためのツール
      • Swagger Coreツール
      • その他のツール
    • OpenAPIを利用したカブクにおける開発事例
      • 事例紹介

    How to apply deep learning for 3D object: 大串

    How to apply deep learning to 3 d objects from Ogushi Masaya

  • 発表内容:
  • 内容は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!

    Type Annotations in Python: Whats, Whys and Wows! from Andreas Dewes

    プログランミング言語における型の役割から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 it right! A beginner’s guide to world of tests and mocks, Maciej Polańczyk from Pôle Systematic Paris-Region

    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

    Europy17_dibernardo from GIUSEPPE DI BERNARDO

    ハイパフォーマンスな環境でヴィジュアライゼーションを行う場合のプラットフォームのMPCDFの紹介とユースケースを話していました。

    Introduction to Nonparametric Bayesian Models

    ベイズモデルの紹介を線形回帰から行っていました。

    How Booking.com serves Deep Learning model predictions

    ホテルの予約でおなじみのBooking.comでの深層学習のユースケースと実際にどのようにデプロイやバージョン、大規模な要求に対して耐えるための構成にするか話していました。Kubernetesを用いたデプロイの話や以下にレイテンシを抑えて最適化しているかの工夫まで言及していました。

    Deep Learning your Broadband Network @HOME

    EuroPython 2017 – PyData – Deep Learning your Broadband Network @ HOME from HONGJOO LEE

    家で観測したネットワークの速度計測データを元に時系列データを学習し予測モデルからネットワークの調子が悪くなりそうなタイミングを予測するために深層学習も使ったという話でした。様々な統計モデルを提供している’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

    EuroPython 2017 – How to make money with your Python open-source project von Max Tepkeev

    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で登壇しました
    リミニについて

    その他の記事

    Other Articles

    2022/06/03
    拡張子に Web アプリを関連付ける File Handling API の使い方

    2022/03/22
    <selectmenu> タグできる子; <select> に代わるカスタマイズ可能なドロップダウンリスト

    2022/03/02
    Java 15 のテキストブロックを横目に C# 11 の生文字列リテラルを眺めて ECMAScript String dedent プロポーザルを想う

    2021/10/13
    Angularによる開発をできるだけ型安全にするためのKabukuでの取り組み

    2021/09/30
    さようなら、Node.js

    2021/09/30
    Union 型を含むオブジェクト型を代入するときに遭遇しうるTypeScript型チェックの制限について

    2021/09/16
    [ECMAScript] Pipe operator 論争まとめ – F# か Hack か両方か

    2021/07/05
    TypeScript v4.3 の機能を使って immutable ライブラリの型付けを頑張る

    2021/06/25
    Denoでwasmを動かすだけの話

    2021/05/18
    DOMMatrix: 2D / 3D 変形(アフィン変換)の行列を扱う DOM API

    2021/03/29
    GoのWASMがライブラリではなくアプリケーションであること

    2021/03/26
    Pythonプロジェクトの共通のひな形を作る

    2021/03/25
    インラインスタイルと Tailwind CSS と Tailwind CSS 入力補助ライブラリと Tailwind CSS in JS

    2021/03/23
    Serverless NEGを使ってApp Engineにカスタムドメインをワイルドカードマッピング

    2021/01/07
    esbuild の機能が足りないならプラグインを自作すればいいじゃない

    2020/08/26
    TypeScriptで関数の部分型を理解しよう

    2020/06/16
    [Web フロントエンド] esbuild が爆速すぎて webpack / Rollup にはもう戻れない

    2020/03/19
    [Web フロントエンド] Elm に心折れ Mint に癒しを求める

    2020/02/28
    さようなら、TypeScript enum

    2020/02/14
    受付のLooking Glassに加えたひと工夫

    2020/01/28
    カブクエンジニア開発合宿に行ってきました 2020冬

    2020/01/30
    Renovateで依存ライブラリをリノベーションしよう 〜 Bitbucket編 〜

    2019/12/27
    Cloud Tasks でも deferred ライブラリが使いたい

    2019/12/25
    *, ::before, ::after { flex: none; }

    2019/12/21
    Top-level awaitとDual Package Hazard

    2019/12/20
    Three.jsからWebGLまで行きて帰りし物語

    2019/12/18
    Three.jsに入門+手を検出してAR.jsと組み合わせてみた

    2019/12/04
    WebXR AR Paint その2

    2019/11/06
    GraphQLの入門書を翻訳しました

    2019/09/20
    Kabuku Connect 即時見積機能のバックエンド開発

    2019/08/14
    Maker Faire Tokyo 2019でARゲームを出展しました

    2019/07/25
    夏休みだョ!WebAssembly Proposal全員集合!!

    2019/07/08
    鵜呑みにしないで! —— 書籍『クリーンアーキテクチャ』所感 ≪null 篇≫

    2019/07/03
    W3C Workshop on Web Games参加レポート

    2019/06/28
    TypeScriptでObject.assign()に正しい型をつける

    2019/06/25
    カブクエンジニア開発合宿に行ってきました 2019夏

    2019/06/21
    Hola! KubeCon Europe 2019の参加レポート

    2019/06/19
    Clean Resume きれいな環境できれいな履歴書を作成する

    2019/05/20
    [Web フロントエンド] 状態更新ロジックをフレームワークから独立させる

    2019/04/16
    C++のenable_shared_from_thisを使う

    2019/04/12
    OpenAPI 3 ファーストな Web アプリケーション開発(Python で API 編)

    2019/04/08
    WebGLでレイマーチングを使ったCSGを実現する

    2019/03/29
    その1 Jetson TX2でk3s(枯山水)を動かしてみた

    2019/04/02
    『エンジニア採用最前線』に感化されて2週間でエンジニア主導の求人票更新フローを構築した話

    2019/03/27
    任意のブラウザ上でJestで書いたテストを実行する

    2019/02/08
    TypeScript で “radian” と “degree” を間違えないようにする

    2019/02/05
    Python3でGoogle Cloud ML Engineをローカルで動作する方法

    2019/01/18
    SIGGRAPH Asia 2018 参加レポート

    2019/01/08
    お正月だョ!ECMAScript Proposal全員集合!!

    2019/01/08
    カブクエンジニア開発合宿に行ってきました 2018秋

    2018/12/25
    OpenAPI 3 ファーストな Web アプリケーション開発(環境編)

    2018/12/23
    いまMLKitカスタムモデル(TF Lite)は使えるのか

    2018/12/21
    [IoT] Docker on JetsonでMQTTを使ってCloud IoT Coreと通信する

    2018/12/11
    TypeScriptで実現する型安全な多言語対応(Angularを例に)

    2018/12/05
    GASでCompute Engineの時間に応じた自動停止/起動ツールを作成する 〜GASで簡単に好きなGoogle APIを叩く方法〜

    2018/12/02
    single quotes な Black を vendoring して packaging

    2018/11/14
    3次元データに2次元データの深層学習の技術(Inception V3, ResNet)を適用

    2018/11/04
    Node Knockout 2018 に参戦しました

    2018/10/24
    SIGGRAPH 2018参加レポート-後編(VR/AR)

    2018/10/11
    Angular 4アプリケーションをAngular 6に移行する

    2018/10/05
    SIGGRAPH 2018参加レポート-特別編(VR@50)

    2018/10/03
    Three.jsでVRしたい

    2018/10/02
    SIGGRAPH 2018参加レポート-前編

    2018/09/27
    ズーム可能なSVGを実装する方法の解説

    2018/09/25
    Kerasを用いた複数入力モデル精度向上のためのTips

    2018/09/21
    競技プログラミングの勉強会を開催している話

    2018/09/19
    Ladder Netwoksによる半教師あり学習

    2018/08/10
    「Maker Faire Tokyo 2018」に出展しました

    2018/08/02
    Kerasを用いた複数時系列データを1つの深層学習モデルで学習させる方法

    2018/07/26
    Apollo GraphQLでWebサービスを開発してわかったこと

    2018/07/19
    【深層学習】時系列データに対する1次元畳み込み層の出力を可視化

    2018/07/11
    きたない requirements.txt から Pipenv への移行

    2018/06/26
    CSS Houdiniを味見する

    2018/06/25
    不確実性を考慮した時系列データ予測

    2018/06/20
    Google Colaboratory を自分のマシンで走らせる

    2018/06/18
    Go言語でWebAssembly

    2018/06/15
    カブクエンジニア開発合宿に行ってきました 2018春

    2018/06/08
    2018 年の tree shaking

    2018/06/07
    隠れマルコフモデル 入門

    2018/05/30
    DASKによる探索的データ分析(EDA)

    2018/05/10
    TensorFlowをソースからビルドする方法とその効果

    2018/04/23
    EGLとOpenGLを使用するコードのビルド方法〜libGLからlibOpenGLへ

    2018/04/23
    技術書典4にサークル参加してきました

    2018/04/13
    Python で Cura をバッチ実行するためには

    2018/04/04
    ARCoreで3Dプリント風エフェクトを実現する〜呪文による積層造形映像制作の舞台裏〜

    2018/04/02
    深層学習を用いた時系列データにおける異常検知

    2018/04/01
    音声ユーザーインターフェースを用いた新方式積層造形装置の提案

    2018/03/31
    Container builderでコンテナイメージをBuildしてSlackで結果を受け取る開発スタイルが捗る

    2018/03/23
    ngUpgrade を使って AngularJS から Angular に移行

    2018/03/14
    Three.jsのパフォーマンスTips

    2018/02/14
    C++17の新機能を試す〜その1「3次元版hypot」

    2018/01/17
    時系列データにおける異常検知

    2018/01/11
    異常検知の基礎

    2018/01/09
    three.ar.jsを使ったスマホAR入門

    2017/12/17
    Python OpenAPIライブラリ bravado-core の発展的な使い方

    2017/12/15
    WebAssembly(wat)を手書きする

    2017/12/14
    AngularJS を Angular に移行: ng-annotate 相当の機能を TypeScrpt ファイルに適用

    2017/12/08
    Android Thingsで4足ロボットを作る ~ Android ThingsとPCA9685でサーボ制御)

    2017/12/06
    Raspberry PIとDialogflow & Google Cloud Platformを利用した、3Dプリンターボット(仮)の開発 (概要編)

    2017/11/20
    カブクエンジニア開発合宿に行ってきました 2017秋

    2017/10/19
    Android Thingsを使って3Dプリント戦車を作ろう ① ハードウェア準備編

    2017/10/13
    第2回 魁!! GPUクラスタ on GKE ~PodからGPUを使う編~

    2017/10/05
    第1回 魁!! GPUクラスタ on GKE ~GPUクラスタ構築編~

    2017/09/13
    「Maker Faire Tokyo 2017」に出展しました。

    2017/09/11
    PyConJP2017に参加しました

    2017/09/08
    bravado-coreによるOpenAPIを利用したPythonアプリケーション開発

    2017/08/23
    OpenAPIのご紹介

    2017/07/26
    3DプリンターでLチカ

    2017/07/03
    Three.js r86で何が変わったのか

    2017/06/21
    3次元データへの深層学習の適用

    2017/06/01
    カブクエンジニア開発合宿に行ってきました 2017春

    2017/05/08
    Three.js r85で何が変わったのか

    2017/04/10
    GCPのGPUインスタンスでレンダリングを高速化

    2017/02/07
    Three.js r84で何が変わったのか

    2017/01/27
    Google App EngineのFlexible EnvironmentにTmpfsを導入する

    2016/12/21
    Three.js r83で何が変わったのか

    2016/12/02
    Three.jsでのクリッピング平面の利用

    2016/11/08
    Three.js r82で何が変わったのか

    2016/12/17
    SIGGRAPH 2016 レポート

    2016/11/02
    カブクエンジニア開発合宿に行ってきました 2016秋

    2016/10/28
    PyConJP2016 行きました

    2016/10/17
    EuroPython2016で登壇しました

    2016/10/13
    Angular 2.0.0ファイナルへのアップグレード

    2016/10/04
    Three.js r81で何が変わったのか

    2016/09/14
    カブクのエンジニアインターンシッププログラムについての詩

    2016/09/05
    カブクのエンジニアインターンとして3ヶ月でやった事 〜高橋知成の場合〜

    2016/08/30
    Three.js r80で何が変わったのか

    2016/07/15
    Three.js r79で何が変わったのか

    2016/06/02
    Vulkanを試してみた

    2016/05/20
    MakerGoの作り方

    2016/05/08
    TensorFlow on DockerでGPUを使えるようにする方法

    2016/04/27
    Blenderの3DデータをMinecraftに送りこむ

    2016/04/20
    Tensorflowを使ったDeep LearningにおけるGPU性能調査

    →
    ←

    関連職種

    Recruit

    →
    ←

    お客様のご要望に「Kabuku」はお応えいたします。
    ぜひお気軽にご相談ください。

    お電話でも受け付けております
    03-6380-2750
    営業時間:09:30~18:00
    ※土日祝は除く