PyCon JP 2021 カンファレンスレポート

2日目:Python 3.10新機能パターンマッチの神髄がわかる

この記事を読むのに必要な時間:およそ 3.5 分

先日公開した「PyCon JP 2021」1日目のカンファレンスレポートはいかがでしたでしょうか? 本レポートでは引き続き,2日目の様子をご紹介します。

PyCon JPは日本国内外のPythonユーザーが一堂に会し,互いに交流を深め,知識を分け合い,新たな可能性を見つけられる場所として毎年開催される国際カンファレンスです。

PyCon JP 2021は2021年10月15日~16日のカンファレンスと2日間の会期で開催されました。

今回は16日に行われたカンファレンスの中から,注目セッションと感想について運営スタッフがレポートします。

Day2 Keynote:A Perfect match ―Mr. Brandt Bucher

(nikkie)

2021年10月、PyCon JP 2021の少し前にリリースされたPython3.10。その目玉機能といえば,Structural Pattern Matching(以下,パターンマッチですね! ⁠PyCon JP 2021」2日目のキーノートスピーカーは,パターンマッチのPEPの筆頭著者のBrandtさんです。

パターンマッチについて

  • History
  • Design
  • Implementation
  • Future

の4つのパートから共有していただきました。

Historyのパートは,過去のswitch文のPEPの紹介一例から始まりました。そしてBrandtさんはパターンマッチはswitch文ではない⁠Structural Pattern Matching is not a switch statement!⁠⁠ と強調します。

私は十分にキャッチアップできていなかったので,⁠そうなのかな?」と思ったのですが,キーノートを聞き終わる頃にはswitch文との違い(よりパワフル!)に納得しました。

続くDesignでは,パターンマッチを構成する2つの要素について述べられます。

  • 制御フロー(control flow)
  • destructuring

キーノートで登場した例ですが,パターンマッチを使ったFizzBuzzのコードは制御フローがスッキリ書けていて衝撃的でした。

def fizzbuzz(number):
    match number % 3, number % 5:
        case 0, 0: return "FizzBuzz"
        case 0, _: return "Fizz"
        case _, 0: return "Buzz"
        case _, _: return str(number)

destructuringは耳慣れない言葉でしたが,例を通じて,パターンマッチの中でオブジェクトから特定の値を取り出すことと理解しました。たとえば,リストのパターンマッチでは,アンパック代入のようにして処理を進めることもできます!

match meal:  # mealは長さ2のリストを指す
    case entrée, side:  # entrée, side = meal と同じ
        ...  # entrée や side を使った処理が書ける!

辞書やクラスでも同様に,指定したキーや属性の値を変数に代入できます。これは他の言語のswitch文とは大きく違うところと理解しました。

Implementationでは,バイトコードの解説や,soft keywordによる後方互換性について説明がありました。match match:のように書け,過去に書いたコードも修正不要というのは,パターンマッチを導入しやすそうですね。

Futureのパートによると,制御構造として冗長な動きやUnreachable checkを改善していくそうです。

PEP 636のTutorialで素振りしたり,言語リファレンスのmatch文の項目を読んでみたりすると,パターンマッチに習熟できそうですね。パターンマッチを使ったコードを書くのが楽しみになるキーノートでした!

Brandtさんのキーノートが気になった方は,こちらからご覧ください。

セッション「Pythonによるアクセスログ解析入門」―石原祥太郎氏

(吉田健太)

石原氏は株式会社日本経済新聞社に所属し,上級研究員としてデータ分析・サービス開発に従事しています。また,Kaggle Masterでもあり,書籍を執筆している他,INMAが選出する30 Under 30 Awardsにてアジア太平洋部門の最優秀賞を受賞しています。本発表ではPythonでアクセスログを解析する手法,およびそれらを用いたレコメンドなどの活用事例を紹介しています。

新聞社でのデータ活用

新聞社でのデータ活用

新聞社のあり方として紙から電子版に移行しており,公開した記事の反応やレコメンド等においてアクセスログが重要となっています。そして,実際にアクセスログを解析しデータ分析という文脈に落とし込むのがデータサイエンティストの仕事となっています。では,Pythonを利用するところはどこかというと,データを処理するところで,以下のような場合です。

  • データを取得後にリアルタイムで可視化・集計しながら,探索したい場合
  • データを取得後に高度な処理が必要な場合

これらの場合は,現状ではまだSQLだけでは難しく,Pythonを使って加工をしています。

また,実際の処理の仕方として株式会社Gunosyが公開しているデータセットを利用し,データセットの読み込みから記事単位での集計や記事推薦など,pandasを用いたサンプルコードがGoogle Colab上に提供されています

他にもKaggleへの出題や年齢推定など応用例もあがっていますので,気になる方はこちらから動画アーカイブや発表資料をご覧ください。

著者プロフィール

吉田健太(よしだけんた)

PyConJPには2018年からスタッフとして参加。2019年までは会場NOCを主に担当していた。株式会社エブリーに所属。SREとして主にインフラ領域の整備に従事している。

Twitter:@yoshiken_tut


高倉佑輔(たかくらゆうすけ)

株式会社サザビーリーグの特例子会社,株式会社サザビーリーグHRにて,グループ内のシステム開発,とりわけバックエンド系システムを担当しているエンジニア。

PyCon JP 2021においてトーク,オンライン会場を担当。PyCon JPには2017年からスタッフ参加しているが,実は業務では主にC#を使用しており,まだPythonを使ったことがなかったりする。

プライベートではAnshitsuという写真の色調を調整するためのコマンドラインアプリを開発中。多趣味で,文章系の創作や写真,プログラミングなどさまざまなことに興味を持つ雑食系。

GitHub:huideyeren
Twitter:@huideyeren
Facebook:高倉 佑輔(ヨーシャ)
Blog:恢徳堂のヨーシャさんのブログ


nikkie(にっきー)

2019年よりPyCon JPスタッフ活動を始め,2021年は座長としてがんばりました。

株式会社ユーザベース所属のデータサイエンティスト。自然言語処理の研究開発に従事している。PyCon JPスタッフの他に,毎月開かれる「みんなのPython勉強会」のスタッフもしている。

Pythonが好き❤な上に怠惰なので,退屈と感じた作業はPythonにやってもらっている。それをPyConなどの場でアウトプットしている。また,アニメも好き🤗で,解放された現在は『アイの歌声を聴かせて』という作品をPythonの力を借りて応援している。

Twitter:@ftnext


神田佳積(かんだかづみ)

グッズ及びTalk進行を担当。今回初めてPyCon JPにスタッフとして参加。

普段は福岡のシステム会社にて受託開発及び常駐での開発に従事。Pythonは現職になって触れ始める。

他にもJAWS-UG 横浜支部の運営スタッフでもある。

Twitter:@kazumiks

バックナンバー

PyCon JP 2021 カンファレンスレポート