9月27~28日に開催されたPythonイベント「PyCon JP 2024」にマイクロアドPython愛好会のメンバーで参加してきました。 この記事では現地の様子や気になったセッション、スポンサーブースについて紹介します。
PyCon JP とは
PyCon JP は、Python ユーザが集まり、Python や Python を使ったソフトウェアについて情報交換、交流をするためのカンファレンスです。 PyCon JP の開催を通じて、Python の使い手が一堂に集まり、Python にまつわる様々な分野の知識や情報を交換し、新たな友達やコミュニティとのつながり、仕事やビジネスチャンスを増やせる場所とすることが目標です。(PyCon JP 2024 Overviewより引用)
セッション
以下では特に印象に残ったセッションを紹介します。
Pythonを活用したLLMによる構造的データ生成の手法と実践
LLMの出力を他アプリケーションと連携させたい場合などJSONのような構造的データをLLMで生成する用途が増えてきています。単純なJSONフォーマットであれば直接LLMに出力させて問題ありませんが、配列や入れ子の構造をもつデータの場合、意図したフォーマットにならなかったり出力のトークン数が増えコストがかかってしまうなど問題が出てきます。
そこで今回のセッションではLLMで構造化データを直接出力するのではなく、構造化データを生成するPythonコードを中間言語として出力させる手法を紹介しています。
以下で発表資料が公開されています!
低コストで実現する社内文書RAG機能を搭載したAIチャットボット開発
社内文書のRAG機能を持つチャットボットを Slack App として開発した実例を紹介したセッションです。 低コストでRAGを実現するため、ユーザー体験を向上させるTipsが紹介されていて大変勉強になる内容でした。
- RAGを利用するかLLMのみで返答するかの判断にもLLMを利用し、RAGへのアクセスが必要かを true/false で回答させる
- RAG利用の判断には先頭N文字のみを利用し、翻訳や要約など文字数が多い質問のコストを下げる
- 参考にした社内文書のリンクを回答の末尾につける
- 取得してくる社内文章は閲覧制限がかけられていないものに絞る
発表資料はこちらです!
PEP 723(Inline script metadata)が拓く世界。Pythonスクリプトに必要な仮想環境をツールにおまかせできるんです!
業務中にちょっとしたスクリプトをPythonで書く機会は多いと思います。こういったスクリプトは大抵1ファイルで完結するように作成されており、他人に共有することも容易です。また、依存するライブラリやPythonのバージョンなどスクリプトを動かすための環境を再現するための情報を共有する必要があります。requirements.txtやpyproject.tomlなどの手段が用意されていますが、単一のスクリプトを実行するために専用の仮想環境を作成したり…といった手間をかけたくないという人も多いと思います。
それを解決するのがPEP 723(Inline script metadata)であり、この発表ではInline script metadataの説明と、対応しているツールの紹介・比較を行っています。発表を聞くまで知らなかったのですが、便利そうなので利用してみたくなりました。
発表資料はこちらです!
Pythonの数学機能を学ぼう!その仕組みも学ぼう!
Pythonの数値型・四則演算・mathライブラリといった計算に関する機能を、データの持ち方や内部構造・C言語のコードも踏まえて説明するという内容の発表でした。実用上すぐに役に立つような内容ではないですが、Pythonの仕組みをちょっとわかったような気になれたりPythonへの愛着が深まったりする、とても興味深い発表でした。
特に印象的だったのはmath.fma(x, y, z)というx * y + zを返すだけの関数が追加されるという内容です。これだけ聞くとわざわざ追加する意味があるのかと思ってしまいますが、話を聞いて納得しました。
非常に面白い話が多いので、ぜひ資料を見てみてください。
あなたのアプリケーションをレガシーコードにしないための実践Pytest入門
Pythonでユニットテストを書くためのライブラリはいくつありますが、今セッションではpy-testを紹介していました。特に印象が残った部分では、導入としてテストコードを書く理由の一つにレガシーコードになることを防ぐためだと力強く述べていた箇所です。良いテストを多くのケースで用意するためには適切なライブラリを使うことが大切だと改めて認識できました。
py-testは実行結果が見やすく、デコレーターを使用してテストケースの準備やmockまでも作れるため、実装までの時間を短縮できると紹介されていました。特に複数のテストファイルにまたがって、実行環境に依存した変数を設定できるので、コード量を削減できるのがいい点だと感じました。
また、セッションの後半ではテスト駆動開発についても紹介されていて、安全性・信頼性に寄与したコードの書き方も薦めていました。
発表資料はこちらです!
スポンサーブース
今年もスポンサー企業によるブース展示が行われていました。
Pythonのバージョンを回答するとガチャポンを回して景品をもらえるブースや、PythonのYAMLパーサーの挙動クイズなど、各社工夫を凝らした展示が多くセッション外の時間も満喫できました!


アフターパーティ
カンファレンス終了後毎回恒例のパーティが行われました。今年も豪華な食べ物やクラフトビールが提供され盛り上がっていました!
