プラットフォーム開発部の白石です。
先日、弊社がシルバースポンサーをつとめたPyCon JP 2017に参加してきました!
PyCon JP 2017に関して参加して得られた知見・会場の雰囲気などをレポートします。
まず、PyCon JPって何ですか?という方もいらっしゃるかと思いますので、PyCon JPについて軽く説明します。 PyCon JPのホームページから引用させていただくと以下のようです。
PyCon JPは、Pythonユーザが集まり、PythonやPythonを使ったソフトウェアについて情報交換、交流をするためのカンファレンスです。 PyCon JPの開催を通じて、Pythonの使い手が一堂に集まり、Pythonにまつわる様々な分野の知識や情報を交換し、 新たな友達やコミュニティとのつながり、仕事やビジネスチャンスを増やせる場所とすることが目標です。
PyCon JP 2017では「Output & Follow」をテーマに据えました。 Pythonをキーワードに多様な人たちが、いろいろ楽しめて、新しい可能性が生まれるカンファレンスを目指して、スタッフ全員で企画を進めています。
Pythonを軸にあらゆるイベント盛りだくさんで、言わばPythonのお祭りです!
PyCon JP 2017の雰囲気
そんなイベント盛りだくさんなPyCon JP 2017の雰囲気は、国内外問わず知らない人と一緒にランチしたり、
Pythonの話で盛り上がれるといった印象です。
現場の雰囲気が少しでも伝わるよう、入り口からトークセッションルームまでの写真を貼ります。 会場は早稲田大学の西早稲田キャンパス63号館で行われました。
駅近で迷うことなく、キャンパスにいけます!
会場の入り口はこんな感じ。
入り口で受付を済ませ、名札を記入すると…
なんと超豪華な朝食&戦利品がいただけます!!
ちなみに弁当は選択できて、豪華&ボリューミー!!
イベントに集中しやすいような設営に感謝ですね。
道なりに進むと、ブースがあったり本を売っています。
会場の構成は、学会に似ています。
ブース付近の扉を開くと、基調講演・トークセッション・LTの会場です。
大体600人程度は参加していたと思うので、後ろからの景色は圧巻ですw
ディスプレイが複数設置されていたので、後ろの席からでもばっちり見えたのでご安心を!
この会場で行われたトークセッションの中でも、個人的に勉強になったトークセッションを取り上げます。 ちなみにトークセッションの映像はYouTubeにあがってます。 PyCon JPで発表資料や写真、ビデオ、blogについては順次アップデートして下さるそうです。 基調公演/トークに関して、既にYouTubeのPyCon JPのチャンネルにあがっていますので、 過去の映像もご覧になりたい方は是非みてください。
トーク
Pythonにおけるドメイン駆動設計(戦術面)の勘どころ
まず、1つ目は普段の開発に役立つ実践的な内容を紹介して下さった「Pythonにおけるドメイン駆動設計(戦術面)の勘どころ」です。
ウェブ開発やロボット開発でドメイン駆動設計を適用してきた体験を元に、
Python でドメイン駆動設計を実践する際によくある課題や失敗、
役に立つ設計やライブラリ、考え方についてお話します。
DDDの概念を本で読んだり説明を聞いても、 実際に手を動かそうとするとどうすれば良いか分からない方は多いと思います。 そんな方に分かりやすくどう実装すればよいか、DDDの戦術面に焦点をあてて説明しています。
開発チームでもPythonでドメイン駆動設計に基づき開発を進めているのですが、 理解がおいついていなかったので、 当日のセッションで使われた神スライドと コードを再度見直して勉強させて頂きます。
Pythonと機械学習によるWebセキュリティの自動化
機械学習・自然言語処理・GA等を組み合わせて、製品開発した実例も紹介されていました。
Webアプリの脆弱性を見つけ出すWebアプリ診断。
この業務は、セキュリティエンジニアのスキルと経験に大きく依存するため、長年、人手不足が叫ばれています。
また、その業務の特殊さ故に、自動化は難しいとも言われてきました。
本セッションでは、このWebアプリ診断業務を「Python+機械学習」を駆使して自動化を試みた際のテクニックやノウハウなどをお話いたします。
webアプリの脆弱性検出を自動化の実現方法を詳しく説明してくれているため、
機械学習をどのようにビジネス活用するかイメージの湧かない方はスライドを参考にすると良いと思います。
検査対象のWebアプリの挙動に合わせ少ない試行回数でXSSの自動検出を行うようにしています。
大まかな流れは、以下の通りです。
- step1: webアプリをクローリングしながら擬似攻撃
- step2: webアプリの反応を分析して脆弱性判定(XSS検出)
- HTML構文の理解:LSTM
- JS構文の理解:LSTM
- 防御機構の回避:MLP、Q学習,GA
Pythonで大量データ処理!PySparkを用いたデータ分析のきほん
自分が無知な分野に関して、知るきっかけとなったセッションもありました。
Sparkは、pandasで扱うことが難しい、数GB以上といった大量データの処理を行うのに適したライブラリです。 1つのライブラリでリスト処理やSQLライクな処理を行うことができ、機械学習やストリーム処理を行うAPIも用意されています。 米国で毎年行われているSparkSummitでは、今年の参加人数は3000人を超え、ディープラーニングの事例なども多数報告されています。 SparkにはPython以外に、Scala、Java、R等のインタフェースがありますが、 データサイエンス場面での利用により、PySparkユーザの割合が拡大しています。 講演前半においては、大量データをどうやって効率的に処理するのか、そのアーキテクチャを紐解いて解説します。
Spark(OSSの並列分散処理フレームワーク)で分散処理すると高速になるとは耳にしますが、 分散処理は本当に速くなるの?、どれだけ利点があるの?と無知だったため、 この講演を聴きました。 SparkではRDDまたはDataFrameで開発するそうなのですが、 RDDの中でNumpyやScipyを使用できる利点はあるものの、RDDPythonは遅いのに対し、 DataFrameならScalaと同程度の速度がでるそうです。 DataFrameはテーブル構造なのでSQLライクにデータを操作できるようなので、 これからDataFrameで開発を試そうかと思います。
Pythonにおけるデバッグ手法
また、初心者の方向けに直ぐに役立つトークをして下さったのが「Pythonにおけるデバッグ手法」です。
様々なところでバグは発生します。それらのバグの解消を速やかに行えるように、デバッグのツールやノウハウが進化しています。 このセッションではデバッグの意義から、実際に使えるノウハウやバッドプラクティスを解説します。
printデバッグしがちですが、詳しく処理を追いたいときはデバッグツールは便利ですよね。
pythonの色々なデバッグツールを紹介して下さっており、
unittest
・ nose
・ celery
・ jupiter
時にデバッグツールを有効化にする方法もまとめて下さっていました。
デバッグツール気になっている方は是非ご覧ください。
PyCon JPは勉強になるトークを聞けるだけでなく、 多くのPythonエンジニアと交流も図れるます。
懇親会の時にオススメして頂いた「IPython データサイエンスクックブック」を気づいたら
買ってしまいました。
来年はせっかくなので、何か話すネタを考えてLTにスピーカーとして参加したいです。