My Fucking Note

Software Engineeringのメモ

PyCon JP 2022のレポート

PyCon JP 2022に参加&初発表してきたのでメモ

1日目

KeyNote (CPythonの高速化について)

CPython以外にも多数のVMが開発され、そこで得られた知見がCPythonの高速化に寄与している。 今まではPyPyくらいしか知らなかった。 インタプリタ言語だと一連の処理をまとめて1つの処理に変換して高速化するSpecializationなる手法が有効と知った。 (アンパック代入をただのスワップ命令として扱う)

詳解 print("Hello, world")

時間内に完全には理解できなかったが、面白そうなので後で詳しく見てみたい。 Pythonの命令コードが気になる。 disモジュールというのはここで初めて聞いた。

Pythonとアスタリスク 🐍🌟💫🐍🌟💫

普段慣れ親しんでいるPythonの文法がテーマなのもあって内容がスラスラ入ってくる。 本題とずれるがPython3.9から辞書を | でマージできるというのは知らなかったので助かった。 インタラクティブな発表だったので聞き手への問いかけとかを参考にさせてもらった。

Python ライブラリ開発における失敗談 〜開発者に選ばれるライブラリを作るために必要なこと〜

個人開発の場合、地味に不便な部分を解消する便利系ライブラリがオススメというのがすごく共感できた。 他のライブラリと比べて1桁少ないとのことだがGitHubの3桁スターは普通にすごいと思う。 github.com

Playwrightを使って簡単に自動テストしてみる

最近良く耳にするがUIのテストは自分で使ったことが無いので聞いてみた。 レコーディング機能とかもあって自分のイメージとだいぶ違った。 今度触ってみたい。

AST(Abstract Syntax Tree)に入門する

自分の発表と内容が重なることもあってスラスラ入ってくる。 NodeTransformerも簡単に使えそうだったのが良い。 pytestのがassertのastを書き換えてることで詳細表示しているというのは完全に知らなかった。

2日目

KeyNote (統計・データ分析)

データ分析するなら意思決定(何かを新しく始めるか何かを辞める)が必要というのにすごく共感。 すごい話が上手くて自分の発表をイメージし緊張した。

Automate the Boring Stuff with Slackbot(ver.2)

自分の発表直前ということもあり内容はあまり入ってきてないが、話し方とかを参考にさせてもらった。 マイク持ったほうが良いかと一瞬思ったが、PCを操作するリモコンは用意してないのでやめた。

コーディング規約自動化: Pylintのカスタムルールを作ろう

自分の発表 何も見ずに話せるほどではないが、流れはだいぶ頭に入っていたので聞き手の方はちょいちょい気にしながら話せた気がする。 結構ノウハウが入っていると思う「モジュール検索パス」とか「inference」の部分を元のスクリプトより丁寧に話したので1分くらい足りなくなる。 最後が結構早口になってしまったが、割とどうでも良いスライドを省略してギリギリ30分ちょっとで終了。 内容がマニアック過ぎて質問ゼロだったらどうしようとか心配してたので、想像以上に質問していただけてありがたい。 トーク終了後はslidoの質問が消えてしまうので落ち着いて中身を見れなかったのが残念。 代わりにTwitterでつぶやいてもらった内容は一通り全部確認した。聞いてくださった方ありがとうございます。

SQL クエリ解析による E2E データリネージの実現

最近はデータエンジニアリングからは離れてソフトウェアエンジニアリングに集中しているが、データリネージが知らない概念だから聞いてみようと参加。 業務で依存関係ばかり気にしているので、データ処理にも同じような概念があって面白い。 SQLから依存関係を抽出するというのは良さそう。

はじめての量子コンピューター

こちらも量子コンピューターをちゃんと調べたことが無いので参加。 基礎からの説明で非常に分かりやすい。 古典コンピューターと違って量子ゲートから出力される結果は確率分布になるのかな。 量子コンピューターのアルゴリズムというのもちゃんと考えると面白そう。

コーヒーブレイクとかパーティーとか

知り合いがいない状態だと中々立ち回りが難しいとは思ったが、発表内容に興味を持ってくれた方々と交流できたので参加して良かった。 他のスピーカーの方達の顔と名前が一致する用にしておこう。 交流させてもらった方達の話を聞くと、良くも悪くも自分がいるアーキテクチャレベルの方針をLinterで徹底しないといけない開発環境は少数派なのだろう。

発表してみて

ちょうどLinterについて色々調べた後にCfPがあったので、応募したら採択。 1ヶ月前くらいから本格的に発表の準備を始める。 当初考えていたPylintのチュートリアルをなぞる流れだと面白く無いなーとか思いながらストーリーを考える。 スライドにしてみる、通しで説明してみる、説明の流れが悪いところを再構成、を5回くらい繰り返してスライド完成。 説明のスクリプトを考える、喋ってみる、上手くしゃべれないところを再考とスライド修正、も5回くらい繰り返してちょうど30分安定して話せるくらい。 最終的に元々考えていた発表の流れからは結構変わった。 ちょうど1ヶ月くらい準備にかかって、直近の2週間は仕事と準備でかなり寝不足だった。

初めてだったのもあり準備がかなり大変だったが、Linterに興味を持ってくれた方から好意的なFBをもらえたので報われた。 JSのESLintはプラグイン化の方法が簡単に出てくるのに、PythonのLinterはどうすればよいの?が少しは解消されたかな。 アウトプット用に調べて自分の中で整理できたことが多かったのも収穫。

  • AST
  • Visitorパターン
  • Pylintのアーキテクチャ
  • モジュール検索パス
  • inference
  • スコープの管理

改めて、ドキュメンテーションされないような内側の仕組みを追って図解する的なことが好きだなーと思った。 発表形式でなくても良いのでできるだけアウトプットを継続していきたい。

最後に

普段自分では使わないエリアの話を色々と聞けてすごく面白いイベントだった。スタッフさんありがとうございます。 Pythonは比較的長く使っているが、初めてPythonコミュニティでちゃんとアウトプットできたのは良かった。 当日見きれなかったトークも多いのでYouTubeで確認していく。