技術記事

nagiyu のサービス開発で得た技術知見・アーキテクチャ解説を公開しています。

AWS CDK で IAM 最小権限を設計する:Grant メソッドと PolicyStatement の使い分け

AWS CDK でコンストラクト間の権限を付与する方法を解説。Grant メソッド・addToRolePolicy・PolicyStatement の使い分け、ARN のハードコードを避けるテクニック、ユニットテストによる権限検証まで実運用ベースで整理します。

2026-05-21
AWSCDKIAMセキュリティ

Next.js 16 Metadata API で SEO・OGP・JSON-LD を整える

Next.js 16 App Router の Metadata API を使って、title・description・OGP・Twitter Card・canonical・JSON-LD を体系的に管理する方法を解説。SSG ページと動的ページそれぞれの設定パターンを実装例で紹介します。

2026-04-30
Next.jsSEOメタデータ

EventBridge Scheduler で定期バッチを置き換える

AWS EventBridge Scheduler を使って cron / 定期バッチを移行する方法を解説。Schedule Expression・Target・Dead Letter Queue・既存 EventBridge Rules との違いまで実例で示します。

2026-04-29
AWSEventBridgeスケジューラ

Next.js generateStaticParams 完全ガイド:SSG の動的ルートを使いこなす

Next.js App Router の generateStaticParams を使って動的ルートを SSG ビルド時に展開する方法を解説。複数階層の動的ルート・dynamicParams・部分的 SSG(ISR)・型安全な実装まで網羅します。

2026-04-28
Next.jsSSGApp Router

Amazon Cognito User Pool で OAuth 認証を実装する

Amazon Cognito User Pool を使って Web アプリに OAuth 2.0 / OIDC 認証を実装する手順を解説。User Pool・App Client・Hosted UI・トークン検証・リフレッシュフローまで実装コードベースで紹介します。

2026-04-26
AWSCognito認証OAuth

ECS Fargate と Lambda の使い分け基準を実運用で整理する

AWS の ECS Fargate と Lambda、どちらでサービスを動かすべきか迷う場面の判断基準を整理。コールドスタート・常時稼働コスト・実行時間・依存ライブラリサイズなど、実運用で効いてくる観点ごとに比較します。

2026-04-25
AWSECSLambdaアーキテクチャ

CloudFront キャッシュ戦略:TTL・Cache-Control・Invalidation の実践

CloudFront のキャッシュを正しく効かせるための TTL 設定・Cache-Control ヘッダ設計・キャッシュキー・Invalidation の使いどころを実運用ベースで解説します。Next.js を CloudFront の背後に置く構成を例に取ります。

2026-04-22
AWSCloudFrontキャッシュパフォーマンス

React Server Components の境界設計:use client をどこに置くか

Next.js App Router の React Server Components で `use client` をどこに引くべきかを実装パターンで整理。データ取得・インタラクション・props のシリアライズ可否・パフォーマンス影響を踏まえた実用的な指針を解説します。

2026-04-20
Next.jsReactServer ComponentsApp Router

S3 Presigned URL でブラウザから直接安全にアップロード/ダウンロードする

S3 Presigned URL を使って、認証情報をクライアントに渡さずブラウザから S3 へ直接アップロード・ダウンロードする実装方法を解説。期限・サイズ制限・Content-Type 拘束など、本番運用で必要なセキュリティ設計まで踏み込みます。

2026-04-18
AWSS3セキュリティ

AWS SES でトランザクションメールを送る:認証・到達率・運用

AWS SES(Simple Email Service)でユーザー登録確認・パスワードリセット・通知などのトランザクションメールを送る実装方法を解説。SPF/DKIM/DMARC の設定・送信制限解除・バウンス処理まで実運用観点で整理します。

2026-04-16
AWSSESメール到達率

Material-UI v7 と Next.js App Router の SSR を両立する ThemeRegistry 実装

MUI(Material-UI)v7 と Next.js App Router の Server Components で SSR とスタイル一貫性を両立する ThemeRegistry の実装方法を解説。Emotion キャッシュ・ハイドレーション・テーマ切替まで網羅します。

2026-04-15
Next.jsMUIApp RouterEmotion

AWS WAF で Web アプリを守る:ルール設計と運用のコツ

CloudFront / ALB の前段に AWS WAF を置いて Web アプリを守るための、Managed Rules・Rate-based Rules・カスタムルールの組み合わせ方を整理。誤検知を抑える運用フローも実例で紹介します。

2026-04-14
AWSWAFセキュリティ

ECR ライフサイクルポリシーで古いイメージを自動削除する

Amazon ECR のライフサイクルポリシーを使って古いコンテナイメージを自動削除する設定を解説。タグ付きと untagged の使い分け・rollback 用イメージの保護・コスト削減効果まで実例で紹介します。

2026-04-12
AWSECRコスト最適化

AWS Batchで重い処理をサーバーレス化する構成解説

動画変換・画像処理などの重いバッチ処理をAWS Batchでサーバーレス化する構成を解説。ジョブ定義・ジョブキュー・コンピューティング環境・S3トリガー・コスト最適化まで詳しく説明します。

2026-04-10
AWSAWS Batchサーバーレス

CloudFront+ECSでNext.jsをデプロイする構成解説

CloudFront + ECS FargateでNext.jsをデプロイするAWS構成を解説。ECSサービス設定・ALB構成・CloudFrontディストリビューション・キャッシュ設定・GitHub ActionsでのCI/CDまで詳しく説明します。

2026-04-10
AWSCloudFrontECSNext.js

Next.jsでMarkdownを静的ページに変換する実装方法

Next.jsのSSGとMarkdownファイルを組み合わせた静的サイト生成の実装方法を解説。gray-matterによるフロントマター解析・remark/rehypeによるレンダリング・generateStaticParamsの活用まで詳しく説明します。

2026-04-10
Next.jsMarkdownSSG

Web Push通知をVAPIDキーで実装する方法

VAPIDキーを使ったWeb Push通知の実装方法を解説。サービスワーカーの設定・Push APIのサブスクリプション管理・web-pushライブラリでのサーバーサイド送信・ブラウザサポートまで詳しく説明します。

2026-04-10
Web PushVAPID通知

H.264・VP9・AV1のコーデック比較と使い分け

動画コーデックH.264・VP9・AV1の詳細比較。圧縮効率・ブラウザサポート・エンコード速度・画質・用途ごとの使い分けをFFmpegのコマンド例とともに解説します。

2026-04-10
動画コーデックH.264AV1

Playwright E2E テストを GitHub Actions で並列実行する

Playwright の E2E テストを GitHub Actions のマトリクスとシャーディング機能で並列実行し、CI 時間を短縮する手法を解説。flake 対策・アーティファクト収集・モバイル/デスクトップ複数 viewport 対応まで実運用ベースで紹介します。

2026-04-08
PlaywrightGitHub Actionsテスト

CloudFront Functions と Lambda@Edge の使い分け

AWS CloudFront のエッジで実行する 2 つのコンピュート、CloudFront Functions と Lambda@Edge を比較。実行タイミング・対応言語・できること・コストを整理し、用途別の使い分け指針をまとめます。

2026-04-06
AWSCloudFrontLambda@Edgeエッジコンピューティング

Docker multi-stage build で Next.js standalone をスリム化する

Next.js の standalone モードと Docker multi-stage build を組み合わせて、本番イメージサイズを最小化する手法を解説。Alpine ベース・依存最小化・ECR への push まで一連の流れを示します。

2026-04-05
DockerNext.jsCI/CD

Lambda コールドスタート対策:Provisioned Concurrency と SnapStart の使い分け

AWS Lambda のコールドスタートを抑える 2 大手法、Provisioned Concurrency と SnapStart の仕組み・コスト・対応ランタイムを比較。実運用で「どちらをどう使うか」を判断するための整理。

2026-04-03
AWSLambdaパフォーマンス

GitHub Actions でモノレポの差分デプロイを実装する

モノレポ構成で GitHub Actions を使い、変更があったサービスだけをデプロイするワークフローの実装方法を解説。paths フィルタ・dorny/paths-filter・依存ライブラリ変更時の波及・並列実行までカバーします。

2026-04-02
GitHub ActionsCI/CDmonorepo

TypeScript の discriminated union で API レスポンスを安全に扱う

TypeScript の discriminated union(判別可能な共用体)を使って、API のレスポンス・状態管理・エラー型を網羅的かつ型安全に扱う方法を解説。switch の網羅性チェック・Zod との連携・実務で効くパターンを整理します。

2026-03-30
TypeScript型設計union types

Web Push 通知のサーバー実装:VAPID と web-push ライブラリ

Web Push 通知を自前のサーバーから配信するサーバー側実装を解説。VAPID キーの生成・サブスクリプション保存・web-push ライブラリでの送信・エラーハンドリング・スケール時の注意点まで実例で示します。

2026-03-27
Web PushVAPIDNode.js通知

Zod でランタイムバリデーションと型推論を両立する

Zod を使って API 入力・環境変数・外部 API レスポンスをランタイムでバリデーションしつつ、TypeScript の型推論も活かす実装方法を解説。スキーマ設計・エラーハンドリング・パフォーマンスの観点まで踏み込みます。

2026-03-25
TypeScriptZodバリデーション

AWS Batch ジョブの並列度を制御する:array job と vCPU クォータ

AWS Batch でバッチ処理を並列実行する際の並列度制御方法を解説。array job の使い方・compute environment の vCPU 上限・ジョブキューの優先度・依存関係の表現まで実運用ベースで整理します。

2026-03-22
AWSAWS Batch並列処理

monorepo + npm workspaces で TypeScript パッケージを共有する

モノレポ構成で TypeScript の型・関数・コンポーネントを複数アプリ間で共有する実装方法を解説。npm workspaces の設定・パッケージ間参照・ビルド順序・デプロイ時の依存解決まで実運用ベースで整理します。

2026-03-20
TypeScriptmonoreponpm workspaces

DynamoDB single-table design 入門:パーティションキーと GSI の設計

DynamoDB の single-table design(単一テーブル設計)の基本を、複数エンティティをひとつのテーブルに格納する具体的な設計例で解説。パーティションキー・ソートキー・GSI の使い分け、アクセスパターンからの逆算手順まで整理します。

2026-03-17
AWSDynamoDBNoSQL設計

TypeScript strict mode で書く型安全な Repository パターン

TypeScript の strict モードで Repository パターンを実装する具体的な方法を解説。エンティティ型の定義・null と undefined の扱い・トランザクション・テスト容易性まで、実プロダクトで効く型設計を整理します。

2026-03-15
TypeScriptRepository型設計