Server-Side Kotlin Meetup vol.20 登壇レポート ~ Kotlin + Quarkus を Lambda SnapStart で動かす ~

こんにちは、ソフトウェアエンジニアの宮後(miya10kei)です。 最近、年明けのフルマラソンに向けてランニングの日々を送っています🏃💨

2026年10月14日に開催された「Server-Side Kotlin Meetup vol.20」で登壇させていただきました。 今回も前回に引き続きセッション内容をスライドを抜粋しながら簡単に紹介します。

server-side-kotlin-meetup.connpass.com

ちなみに私以外の登壇者の方の発表も非常に面白かったです!
よければ #serverside_kotlin_meetupをご覧いただき、他の登壇者様の資料も見てみてください。

運営に携わっていただいたみなさんおよび、素敵な会場をご提供いただいたコドモンさまにこの場をお借りして感謝申し上げます。

登壇中の様子はこちら


セッション資料

speakerdeck.com

セッション内容

「Kotlin + Quarkus を Lambda SnapStart で動かす - 仕組みと事前ウォームアップ」というタイトルで、Lambda SnapStart の仕組みと、Cold Start をさらに短くするための事前ウォームアップ(Priming)の実装について紹介しました。

背景

ニーリーでは外部SaaSからのWebhookを受けるAPIを「Kotlin + Quarkus on Lambda」で動かしています。 このAPIはリクエスト数が時間帯で大きく変動し、急激なスパイクも想定されます。また、通常のWeb APIとは負荷特性や可用性要件が異なるため、分離して低コストで運用したいという理由からLambdaを採用しました。

なお、Kotlin + Quarkusを選択した経緯については、前回のvol.19で弊社の野呂が紹介しているので、ご興味を持たれた方はこちらもご覧ください。 (テックブログもあります)

speakerdeck.com

ついに決定!ニーリーの次期バックエンド開発言語はKotlin! - Nealle Developer's Blog

LambdaでJVMを動かす場合、課題になるのがCold Startです。 LambdaでKotlinを動かす時の選択肢としては On-Demand / Provisioned Concurrency / SnapStart / GraalVM Native がありますが、Cold Startによる遅延を抑えつつ低コストで運用できるSnapStartを選択しました。将来的にはGraalVM Nativeも視野に入れています。

SnapStart の仕組み

CRaC

SnapStartを理解する上で、まずはCRaC(Coordinated Restore at Checkpoint)について説明します。 CRaCはJVMの起動とウォームアップを短縮するOpenJDKのプロジェクトで、初期化済みのJVMプロセスのイメージを事前に作成し、そこから復元することで起動を高速化します。 アプリケーションは beforeCheckpoint()(保存直前)と afterRestore()(復元直後)のフックで処理を挟むことができます。

SnapStart

SnapStartはLambdaのCold Startを短縮するAWSの機能です。 バージョン発行時に初期化済みの実行環境(microVM)のスナップショットを作成し、Cold Startのたびにそこから復元することで起動を高速化します。

CRaC と SnapStart の関係

SnapStartのフックはCRaCのAPIで書くため、CRaCそのものを使っていると思われがちですが、SnapStartが採用しているのはCRaCのフックのAPI(org.crac)だけです。 保存と復元の仕組みはLambda独自で、CRaCがCRIUでJVMプロセスを保存するのに対し、SnapStartはFirecrackerでmicroVM全体を保存しています。 アプリケーションからはCRaCと同じAPIでフックを書けるのがポイントです。

事前ウォームアップ

Quarkus に任せられるところと任せられないところ

QuarkusのAWS Lambda拡張(quarkus-amazon-lambda)を入れると、SnapStart向けの最適化がデフォルトで有効になり、スナップショット作成時にクラスのプリロードがおこなわれます。 ただし、Quarkusが自動でプリロードするのは主にアプリケーション内のクラスで、リクエスト処理で利用するライブラリのクラスは自前でプリロードする必要があります。

Class Priming と Invoke Priming

自前でプリロードする手段としては次の2つがあります。

  • Class Priming: META-INF/quarkus-preload-classes.txt に対象クラスを列挙してプリロード対象にする
  • Invoke Priming: beforeCheckpoint() で実際の処理を呼び出し、実行経路全体をプリロードする

Class Primingはクラス一覧の管理が必要で、ライブラリの更新にも追従しなければなりません。弊社ではライブラリ更新への追従を考慮してInvoke Primingを採用しました。

Invoke Priming の実装

実装はとてもシンプルで、CRaCの Resource を実装したBeanを作り、@PostConstruct でフックを登録するだけです。 @ApplicationScoped のBeanは利用されるまでインスタンスが作られないため、@Startup を付けて起動時にインスタンスを作るのがポイントです。

弊社では署名検証、設定データの読み込み、レスポンスの生成、DBの読み書き、外部HTTP送信といったリクエストが通る処理を、副作用が出ないようダミーの値でInvoke Primingの対象にしています。

Invoke Priming の副作用への対処

Invoke Primingには、実行時に開いたDBや外部サービスとの接続がスナップショットに含まれてしまうという副作用があります。 復元後の接続は状態が保証されないため、スナップショットに含めない工夫が必要です。

弊社では次のように対処しています。

  • DB接続: コネクションプールの初期接続数・最小接続数を0にした上で、beforeCheckpoint() で接続をフラッシュし、afterRestore() で接続を張り直す
  • HTTP接続: Priming用のクライアントのKeep Aliveを無効にする

まとめ

以上がセッション内容のサマリとなります。 Quarkusに限らず、JVMをLambda SnapStartで動かす場合には同じ考え方が使えると思うので、同じような構成を検討されている方の参考になれば幸いです。

また、ニーリーではServerside Kotlinだけではなくさまざま技術を使って開発を進めています! 一緒に働く仲間を絶賛募集中ですので、よろしければこちらもご覧ください!

jobs.nealle.com

「PdEConf 2026」に共同運営として参加した話 ー カンファレンス運営という名の「プロダクトエンジニアリング」ー

はじめに

こんにちは、ニーリー DevHRのTooka_91です。

Mobility OSの会社に入って早3ヶ月ですが、どんどんドメインが好きになり先日ついに人生初の車購入を実現しました。 納車されたら乗り回す生活をしていきたいと思います(車はいいぞ🚙)

さて、先日9月5日(土)、ニーリーも共同運営として参加した、PdEConf 2026を無事開催し終了しました!🎉

今回は、運営・スポンサーとしてブース出展もした、当イベントの参加ブログとなります。 ぜひご覧ください!

PdEConf 2026とは?

  • 開催:2026/9/5(土) 10:30〜20:30、中野セントラルパークカンファレンス
  • 共同設立:アセンド・hacomono・Helpfeel・ニーリーの4社

product-engineering.jp

今回初開催のカンファレンスとなり、約1年の準備期間をかけ、先日、無事終了することができました! スポンサー企業様・登壇者の皆さん・参加者の皆さん・運営スタッフの皆さん、本当にありがとうございました!

テーマの背景にあるのは、個別の技術が高度化していく一方で、それを「プロダクトとしての価値」に変換する力 = プロダクトエンジニアリングの重要性が増している、という問題意識です。 当日は、単なる技術にとどまらない、多くの登壇・発表が行われました。

今回、なぜ「スポンサー」ではなく「共同設立」だったのか

Product Engineering Conference開催の目的については、公式noteでも公開されていますので、ぜひご覧ください。

note.com

Park Direct が扱っている駐車場という領域は、外から見ると一見地味で、中に入ると想像以上に複雑なドメインです。 商習慣、契約、請求、外部システム連携など、技術力だけでも成立しないし、事業理解だけでも成立しない領域です。 この領域における世の中のペインを解消していくには、両方を行き来できる人がいて、初めて前に進みます。

これはまさに、今回のPdEConfで掲げている問題提起そのものでした。

まだこのような複雑な課題が残っており、プロダクトエンジニアとして、ただ単にスポンサーで終わるのではなく、 プロダクトエンジニアが課題解決していく領域の当事者として、盛り上げたい気持ちからスタートしました。

運営の裏側

私自身は途中からの合流でしたが、毎週一度の定例MTGで議論を重ねながら、少しでも良いカンファレンスになるように、 運営4社一同で準備を進めてきました。

ニーリーには大規模なカンファレンス運営に参加経験のあるメンバーはほとんどおらず、他の共同運営の経験値のあるメンバーから多くの学びを得ながら取り組み、準備してきました。 経験の浅さから、なかなか貢献できない領域もあり、共同運営の企業の皆さんにはいろいろ助けていただき本当に感謝しています。

当日は、オープニングにCTOの三宅、セッション司会ではVPoEの菊地、DevHRの榎本が参加し、現地の開催を盛り上げていきました。

オープニングを務めたCTO 三宅

オープニングの様子

セッション司会を担当した DevHR 榎本

今回、私自身カンファレンス運営をしてみて、技術コミュニティがいかに多くの人の力によって支えられているかを痛感しました。

今後当日スタッフでも良いので、支える側に回ったり、カンファレンスの参加をもっと楽しみながら堪能できるようにしていきたいと強く感じています。

ブース出展

ブースでは、多くの方にお越しいただき、プロダクト事業から、技術の話までお話しさせていただきました! お越しいただいた皆様本当にありがとうございました!

モニターやアーキテクチャ図、事業概要なども用意し、参加者の方によりニーリーやニーリーが提供する事業について理解していただけるよう設計してきました。

今回のブース

ブースに終日立っていたエンジニアの鈴木&松村

ブースでの交流の様子

ブース交流の様子①

ブース交流の様子②

ブースの様子③

私の印象に残ったセッション3選

全てのセッションを見ることが現地では難しかったので、公開されている資料は、終了後にじっくり拝見しました。 どれも魅力的な内容で、素晴らしかったです。その中でも個人的に気になったセッション3つをご紹介します。

より使われるサービスに。行政プロダクトのグロース戦略 / デジタル庁 岡田さん

speakerdeck.com

マイナポータルという日本国民全員がユーザーというプロダクトでの発表でした。

技術の壁が下がりつつも、越境の求められる領域においては依然として壁が残っておりそれをどう超えていくのか? 作る力が増えても、アウトカムは意識しないと増えない。という内容は、多くの人が当事者として感じる課題だったのではないかと感じました。

AI時代、PdMはドメインを熟知したドメインリーダーになるというお話は、まさに複雑なドメインに立ち向かうニーリーでも価値のある領域だと感じており共感しました。

個人的にはアウトカムをどのように評価しているのかがすごく気になったのですが、「行政サービスにおける成果とは、国民に返せた時間」という話を聞いてすごく良い指標だと感じました。 締めくくりとして、増やすべきは機能ではなく、国民に返せた時間との話があり、価値追求に真摯に向き合っている姿が印象的でした。

師匠と弟子が「現場」で戦う —フルリモート時代のプロダクトエンジニアJEDI育成プログラムの全貌 / 株式会社hacomono 稲葉達也さん

speakerdeck.com

私自身フルリモートに近い働き方を実現している当事者として、現場や育成といったキーワードが非常に気になっていました。 「JEDI」ってなんか新しい育成プログラムなんだろうな。知らなかった!と思ったら、ジェダイのことだと後で知りました笑

hacomonoさんでは、プロダクトエンジニアに求めるスキルやマインドを定義をしながら、段階的な育成をしていることを知り非常に学びになりました。

JEDIプログラムでは、過去の失敗から得た教訓をもとに、JEDI(師匠)PADAWAN(弟子)という関係性の中で、テクニカル・マスターコース、プロダクトマスター・コースの2つのコースを実現していくというものでした。 テクニカルな面もそうですが、プロダクト思考やマインド面は特に意識的に動かないとキャッチしたり、体に馴染ませていくのが難しいと思っており、こういったコースを師匠から学べる取り組みは非常に良いなと思いました。

今後も次なる一手を検討しているとのことで、ぜひ今後の情報も聞いてみたいものです。(あと、スターウォーズをすごく見返したくなりました。)

AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / atama plus株式会社 前田和樹さん

speakerdeck.com

AI時代に開発スピードが早くなる一方で、組織や体制面はどう紐づいていくか?は個人的にかなり気になるトピックでした。

資料の中でも、プロダクトが増える=組織と構造の複雑性(=所有コスト)が成長の痛みとして現れていると触れられています。

AIは負債を返さないと触れた中で、3つの境界「基盤の境界」「コードベースの境界」「新規プロダクトの境界」と定義しながら、各領域の説明は非常に学びになりました。

AI時代といえど、ただスピードを上げるのではなく、影響を受ける構造にも関与しながら、所有や意思決定の構造設計をしていくことで、より良い価値発揮ができるのだと学びになりました。

おわりに:カンファレンス運営という名の「プロダクトエンジニアリング」だった

今回、テックカンファレンスの運営という大きなミッションに関わりました。

カンファレンスの運営をしていると、自分の普段の担当領域の外に踏み出す・染み出さないといけない多くの瞬間に出会い、越境していくことを求められました。 ニーリーのプロダクト組織が大事にしている「エンジニアが事業に染み出す」に近いような経験ができたような気持ちになりました。

また0→1で何かを作り上げていく取り組みは、緊張感や疲労感もありつつ、それを上回る達成感や喜びを感じることができました。 参加者の皆さんの現地での表情や、SNSでの感想を見るのも、今回大きなやりがいと達成感に繋がりました。(また来年やりたいですね、、!)

普段のリモートワークでは感じることのできない、熱狂を感じることができました。

これまで一参加者として参加していたテックカンファレンスも、運営の大変さを身に染みて感じることができ、 1つ1つのカンファレンスにありがたみを強く感じながら今後参加することになりそうです。

ニーリーでは絶賛プロダクトエンジニアを募集中です!!

ニーリーでは絶賛プロダクトエンジニアを募集中です! ご興味ある方はぜひエントリーください!

herp.careers

herp.careers

9月25日(金) 第3回ニーリーMeetUp開催します!

第3回ニーリーMeetUpも開催します!ぜひお越しください!

nealle.connpass.com ※エントリーは上記リンクから

  • 日程:9/25(金)19:30開始
    • 2時間程度を予定しています。
    • 途中参加・途中退席可能(運営へ事前のご連絡をお願いいたします)
  • 会場:REGALO ※フロア貸切・立食形式となっております。
  • 会場住所:東京都千代田区佐久間町1-13 チョムチョム秋葉原2F
  • アクセス:JR秋葉原駅、地下鉄「日比谷線」秋葉原駅から徒歩1分

Product Leaders AI 2026に参加!AI時代のプロダクトリーダーに求められることを、あらためて考えた1日

こんにちは!ニーリーでPdMをしている阿部です。

この1年で、AIによって自分自身の働き方は大きく変わった感覚があります。特にデータ分析等の情報収集は、以前とは比べものにならないくらいラクになっており、同じような感覚の方も多いのではないでしょうか。
そんな中で、他のプロダクトリーダーはどう変わってきているのか。そもそも、どう変わるべきなのか。この部分を自分の目で確かめるべく、9月4日開催の「Product Leaders AI 2026」に参加してきました。

Product Leaders AI 2026とは

日本CPO協会が主催する、プロダクトマネージャーやCPO、VP of Productといったプロダクトリーダー層に向けたカンファレンスです。
テーマは「AI時代のプロダクトリーダーシップ ―― 組織・戦略・人間の役割」。ニーリーからはプロダクト開発部門の4名で参加しました。

product-leaders-ai.org

海外の登壇者のセッションは同時通訳の字幕つきで、日本語セッションと交互に進む構成でした。この記事では、特に印象に残ったセッションについて書いていきます。

Session 1:5年で0から2 Billionへ ― 信頼を築くAIプロダクト

リーガルAIを手がけるEvenUpのCPO兼CLO、Saam Mashhadさんのセッション(モデレーターはVeeva JapanのKen Wakamatsuさん)。

顧客の要望を集めて、優先順位を決める。平均的なプロダクトマネージャーがやっているそのベースラインは、自動化できる。

まず印象に残っているのがこちら。実際、自分の体感とも合っています。ニーリーでも、要望や問い合わせの集計、期待効果の見積もり、リリース後の効果分析といったあたりはAIを前提に進めるのが当たり前になってきています。とはいえ、あらためて言い切られると背筋が伸びました...!

もうひとつ面白かったのが、EvenUpの事業の組み立て方です。顧客の代わりに実際の業務を遂行していて、その運用チームを外部に出さず自社で持っている。そして成功指標を顧客と同じにする(社内のオペレーターが顧客と同じノーススターメトリックを持っている)。そうすると自分たちの運用の達成度がそのまま目標になり、うまくいけばワークフローの獲得が進み、市場シェアも取れる。

こういった設計を行うのはまさにプロダクトリーダーの仕事だと感じました。

ほかにも、プロダクトリーダーへのアドバイスとして「ICとして実装や実験まで一貫して関与し、LLMにできること・できないことの直感を養う」(IC=Individual Contributor、マネジメントではなく個人として手を動かす立ち位置)という話もありました。
自分で触って技術の勘所を持っておくことが、事業に踏み込むときの土台にもなるなと感じました。

ニーリーの場合は、エンジニアが事業に染み出す動きが強く、PdMはさらに事業の奥まで踏み込んでいく、という形になっています。出発点は逆ですが、境界を越えて手を動かすという意味では通じるものがあります。自分はどこまで越えられているかな、と考えながら聞いていました。

Session 2:AIがAIを監督する時代へ

WayfoundのCEO、Tatyana MamutさんとHomageのAzusa Hanaiさんのセッション。エージェントがエージェントを監視するという世界観が、純粋に面白かったです。

なるほどと思ったのが監視のタイミングで、問題が起きてから検知するのではなく、役割・目標・従うべきガイドラインをあらかじめ与えておいて事前に評価する。AIに任せる範囲を広げるほど、事後の検知だけでは間に合わないよなと思いました。

キャリアの話も出ていて、マネジメントからICになり、またチームを率いて、またICに戻る、と。エージェントの監督という文脈で聞くと、この行き来の意味が少し違って聞こえました。管理する対象が人間だけではなくなるなら、より手を動かしていないと勘は働かない。この指摘はかなり腹落ちしました。

Session 3:プロダクトの差は、AIの外で生まれる ― 磨き込める人の条件

GOの黒澤さん、カウシェの佐藤さん、クライス&カンパニーの山本さんによるパネル(モデレーターはLINEヤフーの二木さん)。ここは日本語セッションだったので、とっても聞きやすい気持ちになってました...。笑

冒頭の問いがとても印象的でした。

この1年で、AIによってプロダクトは良くなったか?

各社の文脈があるので個別の回答は書きませんが、働き方は明らかに変わった、ただそのぶんプロダクトが圧倒的に良くなったかというと必ずしもそうではない。そんな温度感でした。

また、インサイト収集などのデータ分析はラクになった一方で、特にtoCサービスでは議事録に残らない非言語情報を取れることが価値になる、という話も。つまり自分でヒアリングに足を運ぶ価値そのものだよね、と。AIのカンファレンスで「会いに行け」が出てくるのが、妙に納得感がありました。

もうひとつは、生産性の改善はもう誰でもできる前提になってきているので、より求められるのはトップラインを伸ばす開発ができることという話。昔から言われていることではありますが、AI時代になっても変わらないんだなというのが率直な感想でした。

名刺交換したらデモが始まった

そして、懇親会での会話も面白かったです。
目の前でいきなりプロダクトのデモが始まり(見せていただいて本当にありがとうございました!!)、その後はどれだけ自分のプロダクトに身銭を切っているかという話になり、次はエンジニアが開発にどこまで足を踏み入れるかという話になり……という具合で、プロダクトの話を色々とできて非常に楽しかったです。

最後に

求められる動きの水準が上がっている。1日を通して、そう感じました。
要望を集めて優先順位をつけるような平均的な動きは自動化されていくので、差がつくのはその先。それを高い水準でやり切れるかが、改めて問われているんだろうなと思いましたし、私自身も事業の奥まで踏み込むことを実践していきたいと思います。

登壇者のみなさん、運営のみなさん、現地で話してくださったみなさん、ありがとうございました!

「広島行こ」から始まった PyCon JP 2026 参加レポート — セッションから3日目のスプリントまで

ニーリーで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の開催に関わってくださった運営の皆さま、登壇者の皆さま、そして現地でお話しした皆さま、ありがとうございました!

自撮り棒で頑張って撮った写真

Google Cloudのセキュリティ強化を爆速で! - Google Cloud minimum viable secure platformのススメ

はじめに

みなさん、こんにちは! ニーリーでSREをしています、宇田川(X: @Ryoheiengineer)です!

今回は、Google Cloud minimum viable secure platform(GCMVSP)を使って、Google Cloudのセキュリティ強化を約1ヶ月で実施した取り組みについてご紹介します。

「Google Cloudを使い始めたけれど、セキュリティ対策は何から手をつければいいの?」「Google CloudのBigQueryなど一部は使ってるけど、本格的に使っているわけではないのでセキュリティ対策全然やれていない」と悩んでいるSRE・ソフトウェアエンジニアの方に向けて、私たちの判断プロセスと実際にやったことを話していきたいと思います!

背景: Google Cloudの利用拡大

ニーリーではAWSをメインに利用しており、Google Cloudは一部サービスだけ、限定的な利用の仕方をしていました。 そのため、Google Cloudに対するセキュリティ監視・対策は最低限の範囲にとどまっている状況でした。

しかし、Google Maps APIやVertex AI、BigQueryなど、Google Cloudがビジネスクリティカルな機能を担う場面が徐々に増え始めました。 また、SREチーム以外のチームもすでにGoogle Cloudを利用しており、今後さらに利用が増えていく見込みがあったため、優先度を上げてさらなるセキュリティ強化に取り組むことにしました。

何から始める? - 「Google Cloud minimum viable secure platform」という選択

セキュリティ強化と一口に言っても、やれることは無限にあります。 最初に悩んだのは「何を、どこまでやるか」でした。

当初は、世の中のベストプラクティス集を読み込んで自前でTODOリストを作る案も検討しました。 しかし、この方法は調査だけで大きな工数がかかってしまいます。 そこで採用したのが、Google Cloud公式の「Google Cloud minimum viable secure platform(GCMVSP)」です。

GCMVSPはGoogleが提供している、セキュアなプラットフォームを構築するために必要な項目を優先度付きのチェックリストとしてまとめたガイドラインです。 「何をやるべきか」と「どれから着手すべきか」が示されているため、自前でTODO化する工数を丸ごと削減できます。

GCMVSPの特徴は大きく3つあります。

1つ目は、レベルで分けられていることです。 規模やユースケースを問わずすべての組織におすすめされる「基本(ベーシック)」を起点に、「中級」「高度」と段階的にレベルが定義されており、自分たちの状況に合わせてどこまでやるかを選べます。今回はまず、このベーシックレベルを実施することにしました。

2つ目は、カテゴリ分けされていることです。 「認証と認可」「組織」「インフラストラクチャ」「データの保護」「ネットワーク セキュリティ」「モニタリング、ロギング、アラート」の6つのカテゴリに整理されており、カテゴリごとに対応すべき項目が示されています。

3つ目は、対応方法だけでなく、予防的な制御まで示されていることです。 個々の項目を直して終わりではなく、組織ポリシーによって「今後もルールが破られない」状態を作れるようになっています。 既存の是正と将来のガードレールをセットで進められるのが、GCMVSPに沿うことの大きなメリットだと感じています。

Google Cloud minimum viable secure platformの例: https://docs.cloud.google.com/docs/security/gcmvsp/authentication-authorization?hl=ja

このガイドラインを踏まえて実施したことは大きく分けて下記の2つです。

  1. ベーシックレベルの対応項目の実施
  2. 組織ポリシーのTerraform管理(IaC化)

順番に紹介していきます。

やったこと①: ベーシックレベルの対応項目を実施

GCMVSPのカテゴリに沿って、ベーシックレベルの対応項目を実施していきました。 本記事では「インフラストラクチャ」「データの保護」「ネットワーク」「モニタリング」の4カテゴリの取り組みを紹介します。

インフラストラクチャ: 組織ポリシーで攻撃面を事前に塞ぐ

Compute Engine関連では、VMシリアルポートアクセスの無効化(compute.disableSerialPortAccess)と外部IPv6の無効化(compute.disableVpcExternalIpv6)を組織ポリシーで適用しました。 組織レベルで適用しているため、将来新しいプロジェクトでVMを使い始めたときにも、最低限のセキュリティが自動で担保されます。

データの保護: バケットのアクセス制御をIAMへ一元化

Cloud Storageについては、全プロジェクトのバケットのACL設定を調査し、個別ACLが残っていたバケットを均一なバケットレベルアクセスへ移行、アクセス制御をIAMに一元化しました。 また、Cloud SQLのパブリックIP制限(sql.managed.restrictPublicIp)についても、将来の予防策として組織ポリシーによる制限を実施しています。 ネットワーク: 未使用のdefault VPCを削除 サブネットも調査し、自動作成されたまま使われていないdefault VPCを整理しました。VPCに接続しているリソースがないこと(Cloud RunやCloud FunctionsもVPCコネクタ未使用)を確認したうえで、未使用のdefault VPCをまるごと削除しています。 使っていないネットワークは、消してしまえば攻撃面そのものがなくなります。

モニタリング: 通知先を「人」ではなく「グループ」に

重要な連絡先(Essential Contacts)として、支払い・法的事項・プロダクト更新・セキュリティ・サスペンション・技術的問題の6カテゴリの通知先を組織レベルで設定しました。ポイントは、個人ではなくメーリングリストを登録したことです。担当者の異動や退職で重要な通知が誰にも届かなくなる、という事故を防げます。

また、請求異常についても費用異常の管理通知と予算アラートを設定しました。 予算はプロジェクト単位ではなく組織単位で作成しています。 プロジェクト単位の管理は運用コストが大きいため、まずは組織単位で異常に気づける状態をゴールにしました。

なお、本記事でご紹介したのは取り組みの一部です。ベーシックレベルにはほかにも対応項目があり、書ききれなかったものも複数対応しています。

やったこと②: 組織ポリシーのTerraform管理(IaC化)

最後の仕上げがTerraformによるIaC化です。 組織ポリシーをTerraformでコード管理し、設定変更が必ずPRレビューを通る状態にしています。

組織ポリシーのなかでもマネージド制約やカスタム制約といったタイプのポリシーは、ドライランモードで適用できます。 ドライランでは違反してもオペレーションはブロックされず、違反内容が監査ログに記録されるため、既存のリソースにどんな影響があるかを事前に把握したうえで本適用に進めます。

Google Cloudの組織ポリシーの画面

Terraformでは google_org_policy_policy リソースの dry_run_spec でドライランを表現できるため、私たちはドライランで検証してから本適用する、という構成にしました。 以下は、サービスアカウントキーの新規作成をブロックするマネージド制約の例です。

まずはドライランで影響を観察(ステップ①)し、問題がなければ本適用する(ステップ②)という手順を踏めるようmoduleを整備し、既存リソースを壊す心配なく安全にガードレールを敷いています。

ステップ①

locals {
  # === dry run検証用ポリシー ===
  org_policies_for_dry_run = {
    "iam.managed.disableServiceAccountKeyCreation" = true
  }

  # === 本番適用ポリシー ===
  # dry run検証完了後、ここに移行
  org_policies = {
  }
}

# dry run検証用
module "org_policies_dry_run" {
  source   = "../modules/org_policy_dryrun"
  for_each = local.org_policies_for_dry_run

  organization_id = local.organization_id
  constraint      = each.key
  enforce         = each.value
}

# 本番適用
module "org_policies" {
  source   = "../modules/org_policy"
  for_each = local.org_policies

  organization_id = local.organization_id
  constraint      = each.key
  enforce         = each.value
}

ステップ②

locals {
  # === dry run検証用ポリシー ===
  org_policies_for_dry_run = {
    }

  # === 本番適用ポリシー ===
  # dry run検証完了後、ここに移行
  org_policies = {
    "iam.managed.disableServiceAccountKeyCreation" = true
  }
}
# 以下、ステップ①と同様

最後に

今回は、Google Cloud minimum viable secure platform(GCMVSP)のベーシックレベルに沿ったセキュリティ強化の取り組みについてご紹介しました。 ベーシックな項目に対応すると同時にTerraformによるIaCを進めたことで、セキュリティレベルを上げながら今後の開発効率を上げる仕込みもできました。

セキュリティ強化はやれることが無限にあるように見えますが、GCMVSPはレベルやカテゴリを分けて対応項目が記載されているので、自分たちがやるべきことを迷わずに実施することができます。

「Google Cloudのセキュリティ、何から始めればいいかわからない」という方は、ぜひGCMVSPのベーシックレベルから始めてみることをおすすめします。

ニーリーでは、こうした仕組み化・セキュリティ強化を一緒に進めてくれるエンジニアを募集しています。本記事を読んで少しでもご興味を持っていただけた方は、ぜひお気軽にご連絡ください!

プロダクト開発の採用サイトはこちらから!

jobs.nealle.com

実践就業型!28卒向け長期エンジニアインターン募集を開始します!!!

こんにちは。DevHRの榎本(@motumotuo)です。

ニーリーは、月極駐車場のオンライン契約サービス「Park Direct」を中心に、マルチプロダクトを展開しているスタートアップです。駐車場という、まだほとんどデータになっていない領域を扱いながら社会のインフラ(Mobility OS)を作るべく、日々開発を進めています。

そして私たちはこの度、長期インターン(プロダクトエンジニア、SRE)の募集を開始します!
9月から順次スタート予定です!(フルリモート可/週2〜3日から/時給2,000円〜)

28卒の方を中心に考えていますが、学年は問いません。
「実務経験を積んでみたい」「ちゃんと開発できるところで働きたい」、そういった思いを持っている方にぜひ読んでいただきたいと思います。

長期インターンをする上での推しポイント

1. 実際にユーザーに使われているプロダクトの開発ができます

ニーリーでは、最初から実際のプロダクトの課題解決を受け持ってもらいます。「サンプルアプリを作って発表して終わり」と言うことはありません。
なぜこの設計になっているのかを考えつつ価値提供のポイントを見極め、レビューを通じてコードをブラッシュアップする。このプロセスを通じて技術力を磨いていくことができます。

しかも相手にしているのは、駐車場契約というリアルなドメインです。明確な正解がない場合も、チームで答えを出していくことになるため、事業にしっかりと向き合う経験ができます。

2. 「フルリモート」も「隣で教えてほしい」も歓迎です

地方に住まわれている方のフルリモートでの参画も大歓迎です。オンボーディングもレビューもリモート前提で回せる体制があります!

一方で「ちゃんとオフィスに行って、隣で教えてもらえる方がありがたい」という気持ちも、とてもよくわかります。

なのでニーリーでは、進め方を選べるようにしています。

  • 完全リモートで、テキストとオンラインMTG中心に進める
  • 週に何日か、自分で決めた頻度でオフィスに出社して、対面で相談しながら進める
  • 最初の1ヶ月だけ出社多めにして、慣れたらリモートに移行する

このあたりは、やりやすい形に合わせて相談させてください。オフィスは東京都中央区日本橋にあります(出社の場合は交通費支給)。

3. 「OJTで終わり」にしない、サポート体制

配属チームでのOJTはもちろん行います。が、ニーリーにはもうひとつ、DevHR(Developer's HR)という役割があります。

これは開発組織専任のHRで、所属しているVPoEの菊地と私(榎本)はエンジニア経験があります。インターンの期間中は、この2人が現場とは別の立場から全面的にサポートします。

たとえば、こんなことを相談してもらえます。

  • 仕事で詰まっている部分へのアドバイスがほしい
  • 就活、どう動けばいいのか分からない。キャリア的な相談に乗ってほしい。

現場とは別に、斜めからサポートするメンバーがいるというのは、想像以上に効くと思うので、ぜひぜひ安心して飛び込んできてください。

実際にどんなことをやるのか?

ニーリーはマルチプロダクト展開をしているので、興味の持ちどころがたくさんあります。具体的にどんなことをやるかはぜひお会いして相談させてほしいですが、例えばこんなことをお願いするかもしれません!

  • ソフトウェア開発
    • AIを業務に組み込んだ新規プロダクトの開発
    • エンタープライズの非定型データを使い倒せる「資産」へ変換するプロダクト開発
  • SRE業務
    • クラウドインフラアーキテクチャの設計・構築
    • リリースエンジニアリングのアップデート

なお、ニーリーで使われている主な技術スタックは下記の通りです。

  • バックエンド:Python + Djangoもしくは共通基盤であれば Kotlin
  • フロントエンド:AngularまたはNext.js(TypeScript)
    ※プロダクトの性質に合わせて使い分けています。
  • インフラ:AWS(TerraformによるIaC化済み)

実際に、こんな人が働いていました

「長期インターンって、結局どこまでやらせてもらえるの?」というのも、気になるところだと思います。過去にニーリーで働いていた学生が、自分で振り返りを書いてくれているので、そちらを紹介させてください!

ひとりは、プログラミング歴3年弱の状態でジョインして、およそ1年半、下記を担当していました。

  • Amazon Connectを使ったコンタクトセンターの開発・運用
  • ビジネス側が使う社内ツールの開発
  • コーポレートサイトの内製化プロジェクト

いずれの業務も社内外のステークホルダーと常に会話しながら実際の事業グロースに貢献していただきました!

→ モビリティSaaSの会社って何?ニーリーで1年半長期インターン生として働いてみて

もうひとりは、AWSをほとんど触ったことがない状態から入って、Park DirectのフロントエンドのCD構築、バックエンドのコンテナビルドなどを担当していました。最終的にはAWS Developer Associateも取得しています。

→ インフラ業務,はじめました

これらは少し前の記事ではあるのですが、本番に入るものを任されていくという進み方は同じです!
記事を通じて文化や、進め方などを感じ取ってもらえると嬉しいです。

募集要項

こんな人に来てほしい

  • 知的好奇心旺盛な方
  • 巨大な未整備領域に、面白さを感じられる方
  • 動くものを作るだけでなく、良いものを作ることに興味がある方

これがあるとなお嬉しい

  • 何かを最後まで作り切ったことがある(規模は問いません)
  • 他社インターンなどでのシステム開発経験
  • ハッカソンやチーム開発の経験
  • 技術ブログやOSSなど、何らかのアウトプット

逆に応募時点で必要ないもの

  • DjangoやNext.js、Angularの実装経験 → 入ってから覚えれば十分です!
  • 完璧なポートフォリオ → 作りかけでも、何を考えて作ったかを話せれば大丈夫です!

詳細

対象 28卒中心ですが学年不問です!
期間 3ヶ月〜(1年以上の長期も歓迎です)
稼働 週3日以上/1日4時間〜相談可(概ね週24時間〜)。試験期間・研究の繁忙期は中断などの調整が可能です。
それ以外の事情でも、稼働時間を調整できるのでご相談ください!
給与 時給2,000円〜
勤務地 東京都中央区日本橋堀留町1丁目9-8(またはリモート勤務)
交通費 全額支給
雇用形態 アルバイト雇用契約

選考フロー

  1. こちらのフォームから応募をお願いします。
  2. カジュアル面談(オンライン)
    選考ではないので、まずは「話を聞いてみたい!」くらいの温度感で来ていただければ大丈夫です!
  3. 面接1回〜
  4. 合否連絡

最後に

ここまで読んでいただいてありがとうございます。インターンに参加したからといって、ニーリーに入社しなければいけないということはありません!

なお、ニーリーがなぜこのタイミングで新卒・インターン採用に踏み切ったのかについては、別の記事で改めて書きます。そちらもよかったら読んでください。

お会いできるのを楽しみにしています!!

まずはカジュアル面談から!
応募フォーム

XのDMでは質問も受け付けています!
VPoE 菊地(@_tinoji)
DevHR 榎本(@motumotuo)

PyCon JP 2026 にSilverスポンサーとして協賛いたします

ニーリーは、2026年8月21日(金)から開催される「PyCon JP 2026」に Silver スポンサーとして協賛いたします。

PyCon JP 2026 の概要

  • 日程: 2026年8月21日(金)- 22日(土)(スプリントは23日開催 @広島大学 東千田キャンパス)
  • 会場: 広島国際会議場
  • 公式サイト: 2026.pycon.jp

「PyCon JP」は、プログラミング言語 Python に関する日本最大級の国際カンファレンスです。 Python ユーザーが集まり、Python や Python を使ったソフトウェアについてのセッション、情報交換・交流をします。 Python にまつわる様々な分野の知識や情報を交換することで、新たな友達やコミュニティとのつながり、ビジネスチャンスを増やせる場所となっています。

協賛の背景

ニーリーは、2019年にローンチした月極駐車場オンライン契約サービス「Park Direct」をメインプロダクトとして事業成長してきました。
2021年には法人向けサービスとして「Park Direct for Business」を、そして昨年2025年には1日単位で駐車場予約ができるサービス「ワンデイパーク」の提供を開始しています。
さらにこれらにとどまらずモビリティを通じた社会のインフラ(OS)となるべく、下記のようなモビリティプラットフォーム構想を進めており、プロダクト全体としてもまた一段と大きな変化を遂げようとしています。

モビリティプラットフォーム構想

これらを実現する上でバックエンドのメインを支えている技術がPythonです!
1つ目のプロダクト「Park Direct」の開発初期から主要技術スタックとしてPython/Djangoを利用し、プロダクトのスケール・事業拡大を実現してきました。
ここまで事業を拡大できたのはPythonそしてそれを支える技術コミュニティのおかげであり、今回のスポンサーを通じて、当社の事業拡大を支えてきたPython・技術コミュニティへ還元していければと考えています!

ニーリーのアーキテクチャ概観

またニーリーではPythonを主力言語として、事業価値を創出するプロダクトエンジニアを絶賛募集中です。
ぜひぜひ下記リンクもご覧ください!!

herp.careers

herp.careers

おわりに

開催期間中は、当社のエンジニアからは、野呂・宮内の2名が現地参加予定です! 2人の取り組みもぜひご覧ください!

nealle-dev.hatenablog.com

note.nealle.com

お見かけいただいた際はぜひ声かけてください〜〜〜!!!