こんにちは!
GMOリサーチ株式会社の向井と申します。
システム部でプログラマーをしています。
また、社内外問わず、勉強会の開催や運営なども行なっています。
今回のブログの記事は、先日(8/28(土), 8/29(日))に開催されたPyCon JP 2020 Online に参加したので、その参加レポートです。
PyCon JP とは
> PyCon JP は日本で開催される、プログラミング言語 Python に関する国際カンファレンスです。 Python はオープンソースで開発されているプログラミング言語で、世界中で利用されています。
https://www.pycon.jp/organizer/index.html
>
> PyCon(Python Conference)は世界中で開催されており、2012年は2,000名以上が参加する PyCon US をはじめ、世界30箇所以上で開催されています。 PyCon JP は2011年から毎年開催しており、PyCon JP 2018では約1000名の参加者を集めアメリカ、ヨーロッパに次ぐ世界最大規模のカンファレンスとなっています。
・・・とあるように、日本国内で一番大きな Python のイベントであり、一般社団法人PyCon JP Associationというユーザー団体が中心となって運営されています。
私も過去に何度か参加した事があるのですが、初心者向けから上級者向け、科学技術関係など、Pythonに関係する幅広い内容を扱ったカンファレンスです。
例年だと大きな会場で開催されるのですが、今年は新型コロナウイルス感染症の問題があり、オンラインでの開催となりました。
さすが国内最大級のイベントといった感じで、2日間開催の同時平行で5トラックという非常に規模の大きなオンラインカンファレンスとなっておりました・・・!
今回も、初心者向けから中上級者向け、科学技術系、Pythonとは直接関係のない楽しい発表など様々な演目が用意されていましたが、ここでは私の参加したセッションについて触れていこうと思います。
また、参加した全てのセッションが興味深かったのですが、個人的に今後使いそうなテーマのセッションは復習を兼ねて感想を記載してあります。何かの参考になれば幸いです。
(セッションの動画はPycon JP 2020のタイムテーブル https://pycon.jp/2020/timetable/ からリンクされていて、どなたでも閲覧することができます。)
私が聴講したセッション
私が2日間のカンファレンスの中で聴講したセッションは以下になります。
太字で記してあるセッションについては後ほどの概要の説明と軽い感想を添えてありますのでご参考ください!
<DAY1>
基調講演:芝世弐氏
Python 3.9 時代の型安全な Python の極め方
招待講演:続・小さく始めて大きく育てるMLOps2020
Pythonで始める負荷試験
Pythonソースコードの構造可視化とそれがもたらすもの
Pythonで競プロをしよう!〜入門者が知っておくべき高速化Tips〜
<DAY2>
Keynote: Mr. Rich Jones
招待講演:Metaclass?Descriptor?完全に理解した()あなたに
チーム開発立ち上げにやっておいたほうがいいソース管理の方法
Your Escape Plan From Numpy + Cython
NumPy/pandas使いのためのテスト自動化入門
Python(Cython) & OpenMPで高速並列処理
Day 1 08/28(Fri.)
まずはDay1から。
Python 3.9 時代の型安全な Python の極め方
このセッションは、今注目(?)されている動的型付き言語に型ヒントを付ける発表です。
タイトルはPython 3.9ですが、Python 3.10の話でした。
次期バージョンの話が聞けたのはよかったです。
発表者の方が「普段、Pythonで型書きますか?」という事前アンケートをとったらしいのですが、「あまり型を書かない、型を書けることを知らなかった、」という回答が5割弱だったそうです。
この回答を見る限り、Pythonで型を書く派と書かない派は、半々みたいですね。
私の周りのPythonユーザーをみてもそんな感じがします。
型ヒント初心者でも分かりやすいように型の概要の説明からはじまっていたり、「Pythonの型ってなんだろう」という説明をされていたりして、凄くわかりやすかったです。
続けて、変数や関数の型の付け方から紹介されていました。
このセッションでは知らない事が多々あったので、後で動画と資料を見返そうかと思います。
Pythonの型ヒントに興味がある方にはおすすめです!
Pythonで始める負荷試験
発表内容は、Python製ツールLocustの紹介で、Locustを用いて負荷試験を行う方法、負荷試験手順ならびに結果を属人化させない方法でした。
Locust とは、GUIインターフェースが付いている、Python製の負荷試験ツールです。
Locust 公式サイト:https://locust.io/
ドキュメント:https://docs.locust.io/en/stable/
公式サイトとドキュメントを見てみたのですが、ドキュメントが凄くしっかりしている印象がありました。
Locust のシナリオはPythonスクリプトで書けるとの事です。
これは、Pythonユーザーにとっては凄く嬉しいですね!
このセッションでは後半に、Locust で実際に負荷試験をしているところの画面を表示しながら説明をしていて、操作方法が凄くわかりやすかったです。
また、Locust 自体は直観的に使えそうなGUIでした。
シナリオをPythonのソースコードで書けるメリットとしてgitで管理できる点を挙げられていましたが、それは便利だと思いました。
他のツールだと、出力ファイルがxmlファイルだったりして、出力ファイルを読むのを少し躊躇しますからね。
私的には、Locust を、今回の発表で凄く使ってみたくなりました。
後で実際に使ってみようかと思います。
Pythonソースコードの構造可視化とそれがもたらすもの
Python のソースコードを解析し、設計を支援するためのツール、jig-py の紹介でした。
jig-py:https://github.com/levii/jig-py
発表者のyosuさんはjig-pyのコントリビューターだそうです。
発表のスコープは、全体を捉えるために、モジュール同士の依存関係をみていく、というもの。
jig-pyについて、大規模なアプリケーション開発に途中からジョインした際に、全体像を把握するのに便利そうだと思いました。
大規模なアプリケーションを開発する際に、jig-pyで全体を視化すると、全体像が把握できたり、問題点が見えてきたり、なにかと良い事が多そうだと思いました。
また、発表自体もソースコードの可視化のメリットについて分かりやすく述べられていたので、気になる方は動画をご覧になる事をおすすめします!
Day 2 08/29(Sat.)
NumPy/pandas使いのためのテスト自動化入門
このセッションでは、NumPyやpandasを使った経験があるが普段テストを書く習慣がない人を対象に、NumPyやpandasに備わっているテスト機能について紹介されていました。
そのため「なぜテストコードが必要なの?」という初歩的な内容から解説されており、テスト初心者の方でも理解できるような内容になっていました。
また、一般的なソフトウェア開発のテストと比べて、データ解析のテストはどう違うのか、あまり保守性は必要とされていない場合のテストはどうするのか、についての話が個人的には大変興味深かったです。
データ解析分野だと、Jupyter Notebookをコピペしてちょっとずつ変えて使いまわして肥大化していく、という話が多々あるみたいでして。
しかしそれをしてしまうと、どこかで間違ってしまったが、どこでまちがったか分からない状況になるので、それを解決するにはどうすればいいのか?という話もされていました。
解決策としては、Jupyter NotebookからPythoの関数に書き出してテストコードを書くという方法が提案されていました。
ちなみにtest suite はpytestを提案されていました。
理由は、NumPyやpandasで採用されていて、データサイエンスでよく使われているOSSで採用されているので、テストコードを参考にしやすいとの事でした。
データ解析の場合、書き捨てのコードが多々あるため、テストを書いてもコストに見合わない、とのこと。
また、テストが書きやすいコードとは、
- 出力が明確で、何回も修正する機会があるコード
- データ成形や変換の部分
- 数式を実装している部分
との事です。
更に資料の最後の項目「開発におけるテストとの違い」では、「誤差を許容してテストしたい」など、データサイエンスならではの解説がありました。
すごく分かりやすい発表だったので、データ解析のテストでお困りの方は、ぜひご覧になる事をおすすめします!
イベントを通しての感想
これだけトラック数の多い大規模なカンファレンスだと、準備や運営、後片付けなど大変だと思います。
スタッフの皆様、発表者の皆様、関係者の皆様、お疲れ様でした。
とても良いカンファレンスでした!来年も参加したいと思います!
*
GMOリサーチでは、WEBエンジニア(サーバーサイド、インフラ、フロントエンド)を随時募集しております。
興味のある方は、ぜひこちらからご応募ください!
詳しい募集要項など採用情報はこちら
参考リンク
PyCon JP 2020 公式サイト
PyCon JP 2020 イベント資料一覧
Pycon JP 2020のタイムテーブル (資料と動画のリンクがあります)
PyCon JP 2020 Youtube (セッションが動画にて見られます)
PYCON JP 運営