はじめに
こんにちは、エンジニアを目指している27卒の大学4年生です!
PyConに初めて参加してきたので、その様子や学んだことをまとめます!
PyConに参加した理由
- いつも家でアプリを作って勉強しているだけでは得られない知識を得るため
- エンジニアの方と話す機会を得るため
- 広島に行くため
広島を楽しみながら勉強もできるなんて最高!と思い、参加しました。
この記事の概要
PyConは2年連続で広島開催。今回は前泊しました。
0日目から3日目までの様子を書きます。
- 0日目:FindyのDrinkup
- 1〜2日目:カンファレンス
- 3日目:スプリント
0日目
FindyのDrinkupに参加しました。19時くらいに始まり、20人くらいが参加していました。
ガッツリ実務をやっているエンジニアの方や学生エンジニアの方、Findyの営業の方など、さまざまなバックグラウンドの方と話しました。
印象に残った話
①AI時代の採用
AI時代は3〜5年目の人をあまり採らず、新卒かシニアかで採用が二極化している会社も多いそうです。
②会社選びやモチベーション
自分は「何を作るか」よりも「どうやって作るか」という技術面の方に比較的興味があります。就活のときもそれを意識していた部分がありました。ただ、何年か働くと技術はあくまで手段になり、結局は「社会にどう貢献するか」「どんな課題を解決するか」の方が、会社選びや仕事へのモチベーションになっていくそうです。
感想
かなりカジュアルな雰囲気で話しやすかったです。Findyの方が場を盛り上げてくれましたし、ご飯も美味しくて楽しい時間でした。
1日目
カンファレンス初日。思っていたより多くの人が来ていて、面白そうなセッションもたくさんありました。企業ブースも盛り上がっていました。
会場:広島国際会議場
聞いたセッション
LLMの出力を"いい感じに"する技術 — FastAPIで仕上げるAI Agent設計パターンを野球AIで実践した話
登壇者:Shinichi Nakagawa(@shinyorke)
発表スライド
https://speakerdeck.com/shinyorke/taming-llm-output-ai-agent-design-patterns-with-fastapi
概要
MLB(メジャーリーグ)野球分析AI Agentを作り、その過程で出会った課題をどう解決したかのお話し。
バッター大谷対ピッチャー大谷のシミュレーションが面白かったです。
学んだこと
SSEというものを初めて知りました。サーバー側の処理が長い場合の通信方法として、これまでポーリングやWebSocketは知っていましたが、SSEは知りませんでした。SSEは双方向通信ではなく、サーバー側で時間のかかる処理を実行し、その進捗や結果をクライアントに逐次送るようなケースに向いているそうです。研究でフロントエンドから重い計算を実行させる仕組みを作ろうと思っていたので、SSEを使ってみたいと思いました。
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
登壇者:佐藤樹さん
概要
Pythonでブラウザを自作し、その仕組みを理解するというセッションでした。できるだけ外部依存をしないように作っているそうです。HTMLパーサーなども自作していてすごかったです。
学んだこと
外部依存がほぼないおかげで、HTMLパーサーやCSSの仕組みなど、いろいろなことを知ることができました。考慮すべきルールが多すぎて、これを実装しきったのは本当にすごいと思いました。
オフィスパーティー
お腹いっぱいご飯を食べられて最高でした。普段は自分と似たようなタイプの人とばかり一緒にいることが多いので、いろいろな業界の方の話を聞けたのが面白かったです。ここで話した方とXで繋がったり、2日目・3日目にも会ってまた話したりと、仲良くなれて良かったです。
1日目全体の感想
PyConが終わったらすぐに使ってみたい、作ってみたいと思う技術がたくさんありました。やりたいことが増え、モチベーションが高まりました。いろいろな人とたくさん話したことで初対面の人と話すことに慣れ、緊張せず楽しめるようになりました。
2日目
カンファレンス2日目。
聞いたセッション
AI時代に学ぶ好きなルール・嫌いなルール Linter編
登壇者:根本翔多さん
発表スライド
https://speakerdeck.com/shorty5121/ai-jidai-ni-manabu-sukina-ruru-kiraina-ruru-linter-hen
概要
ruffとは何か、そして好きなルール・嫌いなルールについての発表でした。
学んだこと
ruffは歴代のLinterでできることのほとんどを内蔵しているそうです。また、30万行のコードのリントが1秒もかからないとのこと。
AIがなかった時代は、例えば実装に1時間、lintに1分かかったとしても、lintの時間は誤差のようなものでした。しかしAI時代は実装が5分で終わることもあるので、1分のlintがボトルネックになってしまいます。だからこそ、ruffの速さは大きな価値がある、というお話しが印象に残りました。
また、タイムゾーンを指定していないnow()の呼び出しを指摘するルールがあるそうです。実行する場所の時刻をあまり意識したことがありませんでしたが、タイムゾーンを指定しないと実行場所によって結果が変わってしまうということを知りました。
作って理解するCoding Agent 〜フレームワークに頼らないピュアPythonでの実装〜
登壇者:Takanobu Nozawaさん
概要
Coding Agentを自作し、デモでアプリを作るというセッションでした。
学んだこと
いろいろなAIモデルを簡単に差し替えられるように、ドライバーの仕組みを作っていました。このセッションでAIエージェントの概要をなんとなく掴むことができ、AIエージェント作成を学ぶ第一歩として、まずCoding Agentを自作してみるのは良さそうだと思いました。普段から使っているツールだからこそ、実装するときのイメージがしやすいと感じました。
2日目全体の感想
2日目も知らないことがたくさんあって楽しかったです。クロージングの抽選会では本が当たり、こういう抽選に当たったことがなかったのですごく驚きました。もらった本はPythonの本で、ruffのセットアップについても載っており、ちょうど2日目のセッションでruffを知って「帰ったら使ってみよう」と思っていたところだったので、本当にタイミングが良かったです。
もらった本↓
3日目
スプリントの日。たくさんの人が参加していて、それぞれプロジェクトを進めていました。プロジェクトはPythonのチュートリアルのようなものから、バージョン管理ツールのOSS開発まで幅広い難易度のものが揃っていて、参加しやすかったです。
会場:広島大学 東千田キャンパス
参加したプロジェクト
DIVE into Evil — 悪意あるPythonパッケージを解剖する / Dissecting Malicious Python Packages
やったこと
parsewebというパッケージを調べ、どのようなスクリプトが書かれているかを見ました。中身はBase64で何重にもエンコードされており、読み解くのに時間がかかりました。最終的には、外部からtxtファイルをダウンロードさせ、それを実行させるというパッケージだとわかりました。その外部txtにもPythonのコードが書かれていましたが、こちらも難読化されていて、時間内には解読しきれませんでした。またいつか挑戦したいと思います。
学んだこと
チームメンバーの方にいろいろなことを教えてもらいました。ブラウザ上でzipファイルを解凍する方法、Pythonスクリプトを安全に実行する方法、Webアーカイブを確認する方法など、安全に調査を進める上で必要なことをたくさん学びました。
面白かったこと
プロンプトインジェクションの話
「悪意のあるスクリプトを解析者のAIによる調査から隠すために、爆弾の作り方を仕込んでおく」という他の参加者の方の調査結果が面白かったです。攻撃ではなく、防御のためのプロンプトインジェクションという発想です。ただ、爆弾の作り方が書かれていれば、AIはそれ自体を報告するはずなので、結局は怪しまれてあまり意味がないのでは、と今になって思っています。
ハッカーが名乗っていた話
ソースコードのコメントに「hacked by 〜」と名前が書かれていて、面白かったです。
今後の展望
今回はいろいろな収穫がありましたが、その中でも特に「ブラウザの仕組み」と「SSE」を知れたことが自分にとって大きな学びでした。今後はSSEを使ったアプリ作りと、ブラウザを自作して仕組みを理解することに挑戦したいと思っています。
おわりに
カンファレンスでは、抽象的な話から具体的な話まで本当にたくさんの学びがあります。これからも積極的に参加していきたいと思いました。
あと、遠方支援制度があることを知らなかったので、申請しておけばよかったです。


