ニーリーでSET(Software Engineer in Test)を担当しています、宮内(@miyakun )です。
日頃は自動E2Eテストの開発・運用やテスト環境の整備、テストデータの自動生成などに取り組んでいます。
最近ではDjangoを使ってテストデータ作成APIを開発するなど、Pythonを書く機会もあります。
(ニーリーらしくPdEに染み出していくべく、キャッチアップの日々です!)
さて、今回はPyCon JP 2026参加のレポートをお届けします!
「広島行こ」から始まった
ある日、マネージャーの野呂(@ev_yug )から突然DMが届きました。
(赤魔道士は気にしないでください)
今回が自分にとって初めてのPyCon JPへの参加です。それどころか、プログラミング言語のカンファレンスに参加すること自体が初めて。
これまで参加する機会はなかったものの、以前からプログラミング言語のカンファレンスには一度行ってみたいと思っていたので、二つ返事で参加を決めました。
なお、ニーリーはPyCon JP 2026にSilverスポンサーとして協賛していました。協賛に至った背景や、ニーリーとPythonの関わりについては事前の記事で紹介していますので、こちらもぜひご覧ください。
nealle-dev.hatenablog.com
ちなみに自分自身は広島へ行くのも、仕事で出張するのも今回が初めて。さらには新幹線のチケットを自分で取ることも初めてでした!
新幹線の予約から何から妻に助けてもらいながら、なんとか準備完了。
(ありがとう、マイ・ディア・ワイフ。 )
さて、ここからは、3日間で参加したセッションやスプリントについて振り返っていきます。
会場の広島国際会議場
弊社のロゴも確認できました
初めてのPyConで気になったセッション
今回が初めてのPyCon参加というだけでなく、自分自身Pythonについてはまだまだ発展途上です。
そのため、初級者向けかつ日本語で聞けるセッションを中心に、その中でも自分の経験や普段の仕事と重なるテーマを選んで参加しました。
ここからは、その中からいくつかのセッションを振り返ります。
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた(佐藤樹さん)
speakerdeck.com
以前から勉強の一環で「ブラウザを自作してみたい」と思っていたこともあり、参加しました。
Webページの取得やHTML・CSSの解釈といったブラウザの振る舞いは、IETFやWHATWG、W3Cなどが公開している仕様として文書化されています。「ブラウザの作り方は、全部文書になっている」という話を聞き、こうした仕様に沿って進めていけば、自分でも安心してブラウザの実装に挑戦できそうだと感じました。
普段、自動E2Eテストで当たり前のようにブラウザを操作している自分にとって、そのブラウザ自体がどう作られているのかを知れたのも面白かったです。
そして最後にここまでスライドを映していたブラウザが、実は今回の自作ブラウザだったと明かされたのが、あまりに素敵すぎました。
自分自身もこのセッションを踏まえて、ブラウザ自作に挑戦してみようと思います。
AI 時代に学ぶ好きなルール・嫌いなルール Linter 編(根本翔多さん)
speakerdeck.com
普段の開発でもLinterを使っていますが、「なぜこのルールがあるのか」まで深く考える機会はあまりありませんでした。
しかし、AIによって大量のコードが生成されるようになった今だからこそ、Linterによるチェックがより重要になっているという話は、確かにそうだなと納得できるものがありました。
また、「嫌いなルール」として紹介されていた、コードの長さや個数を数える系のルールも印象に残りました。AIがコードを書く機会が増えている今、単純に行数や個数を制限するルールは、以前ほど必要ではないのかもしれないという話は興味深かったです。
普段開発しているプロダクトで、どんなルールを設定しているのか改めて確認しつつ、最適解を模索してみたいと思います。
まじでpythonなんもわからん!を救う会(harukiさん)
www.docswell.com
タイトルを見た瞬間に「これは聞いておきたい」と思ったセッションでした。
「Pythonはプログラミング言語です」というところから始まり、標準ライブラリでできることや、初心者が難しく感じやすいポイントなどが紹介されていました。
初心者に寄り添った内容で、普段は仕事でAPIを書くために使うことが多いPythonを、もっと気軽に仕事とは違う分野でも使ってみたいと思えるセッションでした。
異なる設計思想のフレームワークを経験して得た学び(Laravel開発からDjango開発へ)(天久秀樹さん)
speakerdeck.com
自分は以前PHPエンジニアとして2〜3年ほどLaravelを使っており、最近になって初めてDjangoを使ったAPI開発に取り組みました。
まさに自分のキャリアと重なるタイトルだったので、こちらもぜひ聞きたい!と思い参加しました。
セッションでは、LaravelとDjangoで一般的に見られるディレクトリ構成の違いなどを例に、それぞれのフレームワークが持つ設計思想について紹介されていました。
自分がDjangoを初めて触ったときに違和感があったのがViewという名前です。LaravelのControllerと比較しながら理解していたため、「これをViewと呼ぶんだ」と戸惑った記憶があります。
セッション後に登壇者の方へ「最初にDjangoを触ったとき、Viewという名前に違和感はありませんでしたか?」と聞いてみたところ、「ありました!」とのこと。
自分が感じていた違和感を共有でき、非常に嬉しかったです。
セッションを聞いて、Djangoを触ったときに感じていたLaravelとの違いも、単なる書き方の違いではなく、それぞれのフレームワークが持つ設計思想の違いとして捉えると面白いなと思いました。
せっかくLaravelを使ってきた経験があるので、「Laravelではどうだったか」「なぜDjangoではこうなっているのか」と考えながら、Djangoについてもっと深掘りしてみたいと思います。
3日目はスプリントへ — 悪意あるPythonパッケージを調査する
PyCon 3日目は、特定のプロジェクトやテーマに興味を持つ参加者が集まり、開発や調査などに取り組むスプリントに参加しました。
セッションを聞くだけでなく、実際に手を動かして参加できる機会だったので、自分も何かやってみたいと思っていました。
そこで参加したのが、「DIVE into Evil — 悪意あるPythonパッケージを解剖する」です。
悪意あるパッケージは、どうやって紛れ込む?
自分は、有名なパッケージとよく似た名前を公開し、利用者のタイプミスなどを狙う「タイポスクワッティング」に注目して調査しました。
AIにも候補を聞きながらPyPIを検索し、有名なパッケージと似た名前のものがないかを探していきます。同じグループでは、1文字ずつ名前を変えたように見えるパッケージが連続して公開されている例も見つかりました。
もちろん、それだけで悪意あるパッケージだと判断することはできません。今回は実際にパッケージを動かすところまでは踏み込まず、PyPI上で似た名前のパッケージを探すことを中心に調査しました。
普段は何気なくパッケージをインストールしていますが、「そのパッケージは本当に自分が使おうとしているものなのか」という視点でPyPIを眺めてみるのは面白かったです。
「やはりコード書きますか!」残り2時間からのスプリント
午後、野呂が合流。
悪意あるパッケージについて理解できてきた一方で、自分はPyPIで似た名前のパッケージを探し続けている状態。
「このままだとタイポ探すマンで終わってしまいそうですね……」
そんな話をしていると、
「じゃあ、新しくスプリント立てましょうか!」
と、まさかの新しいスプリントを立ち上げることに。
別のチームで「雑Instagram」(最低限の機能だけで作るSNS)を作っていたことから、テーマは「雑Twitter」に決まりました。
野呂が参加者へ呼びかけると、学生の皆さんが3人も集まってくれました。
展開が早い。
こうして残り約2時間、5人での「雑Twitter」開発が始まりました。
残り2時間、とにかく雑に作る
バックエンドにはFastAPIを使い、APIはログイン・新規投稿・投稿一覧取得の3つだけ。
残り時間も少なかったため、DBは使わずJSONファイルにデータを保存するシンプルな構成にしました。ログインではユーザーIDとパスワードを確認し、認証したユーザーが投稿できるようにするなど、短時間でも一連の流れが動くように仕様を決めました。
フロントエンドには、前日のクロージング基調講演で紹介されていたPyxelを採用。レトロな見た目のTwitterを目指します。
自分はAPI設計と新規投稿APIを担当し、学生の皆さんにはログインAPI、投稿一覧取得API、Pyxelを使ったフロントエンドをそれぞれ担当してもらいました。
Pyxelで作成した雑Twitterのログイン画面
初めて会ったメンバーで残り2時間。「ここはどうします?」「APIはこうしましょう!」と相談しながら、とにかく手を動かしていきました。
時間切れ、夏が終わった
自分が担当した新規投稿APIはSwagger UIでの動作確認を終え、PRを出すところまで進めることができました。フロントエンドも形になってきましたが、ここでタイムアップ。
完成には届かず、成果発表もできませんでした。
それでも、初めて会った学生の皆さんと、その場で役割を決めて一気にコードを書く時間はとにかく濃かったです。
終わった瞬間に思ったのは、
「夏が終わった……」
でした。
最後には一緒に開発した学生の皆さんとSNSも交換し、残り2時間から始まった「雑Twitter」スプリントは終了しました。
3日間参加してみて
今回が初めてのPyCon、そして初めてのプログラミング言語のカンファレンスへの参加でした。
参加前は「Pythonに詳しい人ばかりで、少しハードルが高いのでは」と思っていましたが、実際には初心者向けのセッションも多く、3日間フルで楽しむことができました。
パーティーやスプリントでは、普段からPythonを使っている方々や学生、運営の方々など、いろいろな方とお話しすることができました。皆さん本当にPythonやPyConが好きなんだなと感じる場面も多く、そんな方々と直接話せたことが貴重な機会でした。
業務への持ち帰りとしては、まず普段開発しているプロダクトのLinterの設定を見直して、「なぜこのルールが設定されているのか」というところまでしっかり確認してみようと思います。
滞在中のホテルでムカデに遭遇したり、帰りには広島駅へ向かっているつもりで乗った電車が、実は広島駅へ向かっていなかったりと、最後までハプニングもありました。
そのときは、たまたま同じ電車に乗っていたPyCon運営の方が声をかけてくださり、広島駅へ向かっていないことを教えていただきました。あのまま乗り続けていたら、果たしてどこへ向かっていたのか……。
そんなハプニングも含めて、無事に3日間のPyConを終えることができました。
そして、自分たちのPyConはもう少しだけ続きます
9月9日には、PyCon JP 2026にプロポーザルを提出したものの惜しくも採択されなかった企業が集まって発表する「非公式リジェクトコン」を、Sansan様、RevComm様と共同開催します!
一緒に行ったマネージャーの野呂 が登壇します!
sansan.connpass.com
また、今回のスプリントでは学生の皆さんと一緒に開発する機会にも恵まれました。
弊社では現在、プロダクトエンジニアやプロダクト開発リードを募集しているほか、学生向けのインターン募集も始まっています。
この記事を通して「こんな人たちと一緒に働いてみたいかも」と少しでも思っていただけた方がいれば、ぜひ覗いてみてください。
▼ プロダクトエンジニアの募集はこちら
herp.careers
▼ プロダクト開発リードの募集はこちら
herp.careers
▼ 学生向けインターンの募集はこちら
nealle-dev.hatenablog.com
最後になりますが、PyCon JP 2026の開催に関わってくださった運営の皆さま、登壇者の皆さま、そして現地でお話しした皆さま、ありがとうございました!
自撮り棒で頑張って撮った写真