【アドベントカレンダー2025】CI/CD と単体テストで守る! cdk-nag をアサーションテストに組み込んでセキュアなクリスマスを🎄

はじめに

メリークリスマス! 🎄 アドベントカレンダー最終日を担当します、村田です。 普段はメールを配信するシステムなど社内で共通に利用されるプラットフォームの運用、開発を行っています。

みなさん、クリスマスの準備は万端でしょうか?エンジニアにとって最高のクリスマスプレゼントは「平和で、何も起きない(アラートが鳴らない)夜」ですよね。

AWS CDK はインフラ構築を強力にサポートしてくれますが、その反面、S3バケットのパブリック公開や広すぎるIAM権限など、意図しないセキュリティホールを作ってしまう危険性もあります。

そのようなリスクをコードの段階で発見してくれるツールが、 cdk-nag です。 一般的に cdk-nag はデプロイパイプラインの途中で実行されるケースが多いですが、私たちのチームではもう一歩踏み込んで、「単体テスト(アサーションテスト)の一部」として cdk-nag を実行しています。

CI が失敗するのを待つのではなく、ローカルで npm test を実行した瞬間にセキュリティ違反に気づく——。いわゆる「Shift Left」を実践することで、開発スピードを落とさずに安全性を担保しています。

本記事では、pre-commit やスナップショットテストと組み合わせ、GitHub Actions 上で強固なパイプラインを築く私たちのチームの実践手法を紹介します。 セキュリティチェックを開発の日常に組み込み、安心して年末年始を迎えましょう!

続きを読む

【アドベントカレンダー2025】Jira のコンテキストを Copilot に読ませようとして MCP サーバーを自作したが「ツールの引力」には勝てなかった話

はじめに

こんにちは。ぐるなびウエディング開発チームの渡邊です。普段はバックエンドエンジニアとして開発・運用を担当しています。

この記事では、Jira を GitHub Copilot の Agent Mode(MCP)から参照できるように MCP サーバーを自作してみた話を書きます。
作って動かすところまではできた一方で、最終的には本格運用までは至らず、個人 PoC に近い状態で止まりました。

  • どんな MCP tools を作ったのか(ReadOnly で絞った話)
  • Jira 連携で地味に面倒だったところ(customfield 周り)
  • なぜ「作ったのに使われなくなった」のか(GitHub 側の導線の強さ/運用の現実)
続きを読む

【アドベントカレンダー2025】キーボード操作でも快適に!ウエディングサイトリニューアルで実践したカレンダーのアクセシビリティ対応

はじめに

こんにちは。Restaurant Service Devグループの高岡です。現在ぐるなびウエディングのフロントエンド開発・運用を行っています。

ぐるなびウエディングのリニューアルプロジェクトでは、UIを一新するにあたり「すべての利用者にとって使いやすいサイト」を目指してアクセシビリティ対応に力を入れています。

特にキーボード操作への対応は、マウスを使わない利用者やスクリーンリーダーを使用する視覚障害者の方々にとって重要です。しかし、特に意識せず実装してしまうと使い勝手が悪くなるケースも多く、細かな配慮が必要でした。

この記事では、ウエディング二次会のリニューアル時にデザイナーと協力して実装したカレンダーのキーボード操作について、課題と解決策を詳しく紹介します。

同じような実装をする際の参考になれば幸いです。

続きを読む

【アドベントカレンダー2025】JavaのEOSL対応について取り組んだこと

はじめに

こんにちは、開発部の古川です。

普段は、ぐるなびの認証や個人情報、ポイントシステムといったぐるなび内の各サービスから利用される共通システムを担当しています。

今回は、私たちが担当しているシステムにおける JavaのEOSL (End of Support Life) 対応 について、検証から意思決定までの取り組みをまとめました。

続きを読む

【アドベントカレンダー2025】Secrets Manager vs Parameter Store:社内APIのキー管理、どっちがいい?

はじめに

どうも、開発部の加藤です。社内では「なるみん」て呼ばれてたりします。

普段はぐるなびの店舗ページやインバウンド向けのぐるなび外国語版のサーバーサイドの開発を担当しています。

APIキー認証を入れるとき、地味に悩むのが「キーをどこに置くか」です。 AWSなら候補はだいたいこの2つかなと思います。

この記事では社内APIのAPIキー認証を設計する中で行った2つのサービスの「比較」と「選定」について記載します。

(注)料金・上限は変更されることがあるため、最終判断は公式価格表/制限値も確認してください。

続きを読む

【アドベントカレンダー2025】クエリチューニングの最初の一歩~実行計画を見てみよう~

はじめに

こんにちは。開発部の國友です。

普段はデータベース管理者の業務を担当しています。

アプリケーションのパフォーマンス改善に取り組む際、「クエリが遅い」と感じたらまず行うべきことがあります。それは、RDBMSがそのクエリをどう実行しているか、その実行計画を確認することです。

皆さんは実行計画の確認方法、そして読み方を理解されていますか?

よく見るテーマではありますが、基礎だからこそ具体的な事例を通じて改めて実行計画を再確認しましょう。

続きを読む

【アドベントカレンダー2025】GitHub CopilotとSpec Kitを使ってSDDの世界を覗き見する

はじめに

こんにちは!ぐるなびでバックエンドエンジニアをしている開発部の寺井です。

十数年PHPを主戦場にしてきましたが、最近Go言語を使ってぐるなびアグリサービスの開発に携わっています。

クリーンアーキテクチャも初めて理解しようとしており……難しい。

この記事では、GitHubが提唱する 「Spec-Driven Development(仕様駆動開発 / SDD)」 と、その実践ツール 「GitHub Spec Kit(speckit)」 を紹介します。仕様と設計原則を明文化し、それを中心に開発を進めることで、AIとの協働でも一貫したアーキテクチャを維持できるようになります。

続きを読む