PR

初のオンライン開催! チュートリアル、カンファレンス、スプリントに加え、スタンプラリーなど新たな試みも。PyCon JP 2020レポート【前編】

2020年10月13日(火)
森野 正博(もりの まさひろ)吉田 健太(よしだ けんた)

はじめに

PyCon JPは日本国内外のPythonユーザーが一堂に会し、互いに交流を深め、知識を分け合い、新たな可能性を見つけられる場所として毎年9月中旬に開催される国際カンファレンスです。今年のPyCon JP 2020は、2020年8月23日から約1週間に渡るスプリント、8月28、29日のカンファレンス、8月30日のチュートリアルと、1週間の会期で開催されました。

当初、PyCon JP 2020は大田区産業プラザ PiOにてリアル開催で準備を進めていましたが、新型コロナウイルス感染症(COVID-19)の影響を考慮し、オンラインで開催されました。オンライン開催は初の試みでしたが、多数の参加者・視聴者の方が訪れてくださり、大盛況のうちに幕を閉じました。

本記事では28日に開催されたカンファレンスの中から、注目セッションの様子と感想について運営スタッフがレポートします。

基調講演:芝世弐氏

1日目のキーノートセッションは、芝世弐氏が登壇しました。芝氏は大学で研究・教鞭を執るかたわら、独学で2017年から機械学習を始め、同年の将棋電王トーナメントに初参加ながら準優勝。またその翌年には、世界コンピュータ将棋選手権に初参加で優勝してしまうほどの凄腕の研究者(エンジニア)です。今回の講演では、自身の機械学習を学んできた道筋をコンピューター将棋を中心に話されていました。講演前半は氏がコンピューター将棋に興味を持った理由や技術の話、後半は電脳戦などの大会の話や氏の強さの秘訣を明かしました。

氏がコンピューター将棋を始めた当時は、ディープラーニングの題材として将棋を選んでいた人はごく少数であり、そういった理由からも氏はコンピューター将棋を題材に選ぶことにしたと語ります。そして、将棋全般のデータ構造の話に移っていきます。将棋独特のコマの動き方やルールをプログラム上でどのように表現するのかはとても興味深い部分でした。Pythonのオープンソースライブラリに「python-shogi」というものがあり、氏はこのライブラリを駆使してプログラムを組んだそうです。

ここで一旦、芝氏は自身のディープラーニングの成果を振り返りました。この段階で作成したプログラムでは将棋の入門者ほどにしか指すことが出来ず、ルール違反なく最後までゲームをやり切ることができる程度、という評価を下しました。個人的には、短期間でここまでの成果を出せることが既にすごいことだと感じました。

何回か対戦を繰り返していくうちに、氏の興味は「ノータイムで指して強いものを作りたい」という方向へと移っていきます。これは、実際の人間同士の対戦では思考時間の長さが必ずしも良手を指せる確率と比例しない、ということから着想を得たそうです。そして「評価関数・枝刈り・高速化・並列化・時間管理」という、氏が目指す強いプログラムを組むために必要なことが洗い出されていきます。

当時は一般的に序盤から終盤まで、同じぐらいの時間を一手に使うことが通説であったのに対して、氏は即指しが出来ないかと考えます。そこで、相手の持ち時間を待つのではなく、相手の指し手の仮読み(ponder)を複数行い、ponderが当たる割合を上げていくことにしました。相手の持ち時間の間に自分の指し手を読むことで、自分の差し時間を短くすることが可能になりました。ここが、他の開発者とは違う氏の独自技術です。自己対戦を繰り返す他の開発者に対して、他者との対戦を繰り返すことで、プログラムの精度を上げていったのです。

そして、講演は電脳トーナメント、コンピューター将棋世界大会の話へ。ドワンゴ社が主催の電脳トーナメントに参加を決めた氏の思惑は、他の対戦を観戦したり、開発者と話をしたいという気軽なものでした。しかし、あれよあれよという間に準優勝。世界大会の切符を手に入れてしまいます。さすがに世界大会では活躍しなければと思い立ち、プログラムを改良。そしてそのまま優勝してしまいます。その後に参加した大会でも準優勝、優勝を繰り返し、現在でも最強の名をほしいままにしています。そして特筆すべき点は数千万もの予算をかけている開発者が多くいる中、氏の開発にかけた予算はわずかであり、電脳トーナメントの賞金(100万円)で黒字が出るほどで、2020年現在でもその賞金で開発予算を賄えているそうです。

まとめとして、「とりあえず、やってみる」「出来たものを出してみる」ことが大切であると氏は言っていました。完璧なプログラムを組んでから動かすのではなく、何となく動きそうだったらとりあえず動かしてみて、短い期間で試行錯誤を繰り返し最適化を計ったことが大きな勝因であったと氏は振り返りました。

氏の講演は、開発者・技術者に対して非常に多くの示唆に富んだもので、開発をする際に心がけたい tips が満載でした。これからコンピューター将棋を始めてみたいと思った方はもちろん、エンジニアの方々にも是非見て欲しいと思えるような講演でした。

セッション:鈴木庸氏
「数理最適化 × 機械学習コラボレーションによる課題解決」

鈴木氏はリーディングエッジ社所属のエンジニアで、主に物流の組み合わせの最適化、データ分析に従事しています。Python歴は6年ほどで、書籍『Python エンジニア育成推進協会監修 Python3 スキルアップ教科書』(技術評論社)の共同著者でもあります。

近年ではデータから機械学習を行った結果をもとに、数理最適化で意思決定を行うことが増えていると氏は語ります。Pythonであれば、その両方が簡単にできると紹介していました。そして「採用面談のスケジューリング」という実際に氏が経験した課題を取り上げ、その解決方法を順を追って話されました。この課題に取り組んだ背景には「応募者とのスキルのミスマッチを防ぎたい」「担当面接官の割り当てを自動化したい」というものがありました。これは、どの会社でも解決したい課題ではないでしょうか。

詳細はアーカイブとドキュメントに譲りますが、講演は課題の設定方法、解決方法、数値化における技術選定、プログラムの実装、計算結果とライブラリやパッケージを紹介しながら進められていきました。

また、講演は機械学習と数理最適化に分けられ、取り上げた課題はどの会社でも起こりうるような身近なものであったため、内容はハイレベルながら大変理解しやすい講演でした。特に、実務で機械学習を用いている方には非常に参考になるようなtipsが多く含まれていたと思います。これから機械学習を始めようという方にもお勧めしたい講演でした。

セッション:渋川よしき氏
「2020年代のコンテナ時代のPythonアーキテクチャ&デプロイ」

渋川氏はフューチャー株式会社所属のエンジニアで、多数の書籍を執筆しているエンジニアです。本セッションは、近年クラウド・コンテナの時代が進んでおり、その中でもコンテナに適したPythonの開発を主軸とした話となりました。

まず、コンテナとはどういうものか、VirtualBoxやVMWareに代表される仮想化・Dockerに代表されるコンテナ・ネイティブ実行での違いをわかりやすく解説。そのうえで開発支援ツール・デプロイツールとしてのコンテナ利用法を紹介しました。開発支援ツールとしては、本番環境がコンテナ環境でなくとも開発/テスト環境の構築に便利で、例えばRDSや様々なアプリケーションツールのイメージが配布されているため、それらをネットワークやストレージでの共有の設定も容易にできることがアプリケーションエンジニア視点からメリットが大きいと紹介されました。

なお、講演では最近発表された、VScode Remoteを主軸にDockerで動作するpythonのアプリケーションの編集方法について様々な手が紹介されていました。詳細は発表資料やアーカイブをご覧ください。

デプロイに関してはAWS、GCP、Azureといった大手のクラウド環境ではDockerコンテナをデプロイして動かすことができ、ローカルで開発していたアプリケーションがそのままデプロイできることのメリットを説明。そのうえで本番環境のDockerの作法やコンテナにおけるPythonアーキテクチャを紹介しました。

講演全体を通して「どのようにコンテナを運用すれば良いか」を体系的に学べる内容となっており、現在コンテナサービスを使用している、もしくは今後コンテナを用いた運用を考えている方には必見の講演でした。

セッション:hassaku氏
「Python × AWS × Serverless 初学者が次の一歩を踏み出すためのテクニック」

hassaku氏は株式会社サーバーワークス所属のエンジニアです。本セッションではAWSのサーバレスに焦点を当て、冒頭ではまずサーバーレスの基本のおさらいを紹介。サーバーレスを始めたばかり入門者にもわかりやすい内容でした。

本セッションのメインはServerless Frameworkを利用したサーバーレス構築に関するTipsで、特に

  • プロジェクト構成
  • ステージ管理
  • ロギング
の3点に焦点を当てて紹介しています。プロジェクト構成・ステージ管理では具体的な実装例を挙げ、Serverless Frameworkで実装する上でよく困る機密情報の保持の仕方やローカルでの実行方法をなどを解説しています。

特にロギングの部分では、AWSのCloudWatch Logs Insightsによるログをネストした検索ができるようにJSONで出力すべきという点と、その実装方法を複数提示し、実際の業務で壁に突き当たりやすい部分を丁寧にフォローしています。これは今現在困っていなくても、今後課題となってくる部分なのではないでしょうか。

なお、本セッションでは具体的なコードやディレクトリ構成なども紹介していますので、ぜひアーカイブをご覧いただければと思います。

おわりに

今回は、PyCon JP 2020カンファレンス1日目の注目セッションについて、運営によるレポートを紹介しました。今回紹介できなかったセッションも多数あるので、それらの詳細は下記のリンクからご参照ください。みなさまの気になるセッションやトークは見つかったでしょうか。

●Youtube PyCon JP 公式アカウント
https://www.youtube.com/user/PyConJP/featured

カンファレンス2日目のレポートもお楽しみに!

Day 2レポートにつづく
著者
森野 正博(もりの まさひろ)
PyCon JP 2020 システムチームとして初参加。一方で、トーク周りのレビューや連絡も担当。普段は合同会社 mt ファイナンスのデータ周りをいじっている。しかし超零細なため、事務やら経理やらもやっている。 PyConJP をきっかけに 自身の Python 学習を加速させ、最近は Django をいじったりコンペにも参加するようになる。これからも PyCon JP のようなオープンなカンファレンスに引き続き参加していきたいと思っている。
Twitter : @masamori0083
著者
吉田 健太(よしだ けんた)
株式会社エブリーのバックエンドエンジニアとして所属。主にAWSやTerraformと戯れる日々を過ごしている。Pythonとは付き合いが長く、特に自動化やbotなどに長けている。PyCon JPだけではなく他カンファレンスでもスタッフをしており、NOCとして会場のネットワークを安心安全に提供することに注力している。
Twitter : @yoshiken_tut
Github : @yoshiken

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています