<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>blog.takenoko.dev</title><description>Web、分散システム、開発ツールについての技術ノート。</description><link>https://blog.takenoko.dev/</link><item><title>Goで始めるトークンバケット：基礎理論とgolang/x/time/rateの実装を読み解く</title><link>https://blog.takenoko.dev/blog/2026/08/go-rate-limiting-token-bucket/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2026/08/go-rate-limiting-token-bucket/</guid><description>トークンバケットアルゴリズムの基本概念と、Goプロジェクトが提供するgolang.org/x/time/rateの実装を解説します。レート制限とスロットリングの実装方法から内部構造まで、実例を交えながら学びます。</description><pubDate>Sat, 01 Aug 2026 09:09:29 GMT</pubDate></item><item><title>Keycloak とアプリケーション認可の責務分担を整理する ー 社内経費申請システムのサンプルで試す</title><link>https://blog.takenoko.dev/blog/2026/06/authorization-sample-app/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2026/06/authorization-sample-app/</guid><description>Next.js / PostgreSQL / Keycloak を使った社内経費申請システムを題材に、画面制御、業務ルール、RLS をどこに置くべきかを整理します。</description><pubDate>Sat, 27 Jun 2026 01:09:29 GMT</pubDate></item><item><title>アプリケーション認可の置き場所を整理する</title><link>https://blog.takenoko.dev/blog/2026/06/application-authorization-placement/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2026/06/application-authorization-placement/</guid><description>アプリケーション認可を整理したメモです。PDP / PEP / PIP、RBAC / ABAC、入力検証とドメインルールの境界を踏まえ、認可ロジックの置き場所を判断する材料をまとめます。</description><pubDate>Sun, 21 Jun 2026 14:09:29 GMT</pubDate></item><item><title>Keycloak の ID トークンを JWE で検証する</title><link>https://blog.takenoko.dev/blog/2026/04/keycloak-id-token-jwe/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2026/04/keycloak-id-token-jwe/</guid><description>Keycloak で ID トークンの JWE を有効にし、Protected Header の `alg` / `enc` と復号後の中身を対応づけて確認します。RFC 7516 を読みながら、JWS との違い、Nested JWT になる理由、鍵管理モードの見方も整理します。</description><pubDate>Sat, 18 Apr 2026 03:00:00 GMT</pubDate></item><item><title>OAuth 2.0 Token Introspection を Keycloak で検証する</title><link>https://blog.takenoko.dev/blog/2026/01/keycloak-token-introspection/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2026/01/keycloak-token-introspection/</guid><description>OAuth 2.0 の Token Introspection（RFC 7662）を、Keycloak を使って再現して確認します。introspection は「トークン解析」ではなく、認可サーバへトークンの状態を問い合わせる仕組みです。Token Introspection の検討についても考えます。</description><pubDate>Sat, 10 Jan 2026 13:09:40 GMT</pubDate></item><item><title>Next.js 15でContent Security Policy (CSP) を実装する際の課題と解決策</title><link>https://blog.takenoko.dev/blog/2025/09/nextjs-csp-demo/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/09/nextjs-csp-demo/</guid><description>Next.js 15.5.3 でのnonce ベースCSP 実装について、middleware.ts を使った設定方法から実装時に発生するクライアントサイド遷移での課題、UI ライブラリとの互換性問題まで実際の経験をもとに学習した内容をまとめます。</description><pubDate>Thu, 25 Sep 2025 03:09:29 GMT</pubDate></item><item><title>Authelia と Next.js (Auth.js) による OIDC 認証連携ガイド</title><link>https://blog.takenoko.dev/blog/2025/08/authelia-nextjs-authjs-oidc-integration/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/08/authelia-nextjs-authjs-oidc-integration/</guid><description>本記事では、Authelia を OIDC プロバイダーとして設定し、Next.js アプリケーションと Auth.js（NextAuth.js）を用いて認証連携を実現する手順を記録します。Docker Compose を使用したローカル開発環境の構築から、具体的な設定、動作確認まで記載します。</description><pubDate>Fri, 22 Aug 2025 03:09:29 GMT</pubDate></item><item><title>Autheliaをローカル環境で実行する</title><link>https://blog.takenoko.dev/blog/2025/08/authelia-local-setup/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/08/authelia-local-setup/</guid><description>本記事は、Autheliaをローカル環境で実行する手順と設定の詳細を記録したブログです。Docker Composeを利用し、コンテナの起動からシークレット管理、ストレージ設定、ユーザーデータベースの生成方法まで、各ポイントを整理しています。</description><pubDate>Sat, 16 Aug 2025 03:09:29 GMT</pubDate></item><item><title>GitHub Actions と Terraform で構築する ECR + Lambda コンテナデプロイ環境</title><link>https://blog.takenoko.dev/blog/2025/08/github-actions-ecr-lambda-container-deploy/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/08/github-actions-ecr-lambda-container-deploy/</guid><description>GitHub Actions から ECR への Docker コンテナ自動デプロイと Lambda でのコンテナ実行環境を構築した際の学習記録です。Terraform による AWS リソース構築、OIDC を利用した GitHub Actions の認証設定、ECR への継続的デプロイの実装手順をまとめました。distroless イメージでの Lambda 実行時の注意点も記録しています。</description><pubDate>Tue, 12 Aug 2025 03:09:29 GMT</pubDate></item><item><title>JavaScript URL コンストラクターのネットワークパス参照によるオープンリダイレクト脆弱性と3つの対策パターン</title><link>https://blog.takenoko.dev/blog/2025/08/javascript-url-constructor-open-redirect/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/08/javascript-url-constructor-open-redirect/</guid><description>JavaScript の URL コンストラクターで `//evil.com` のようなネットワークパス参照を処理する際に発生するオープンリダイレクト脆弱性について、RFC 3986 の仕様解析と、ドメイン検証・相対パス限定・許可リスト制御の3つの対策パターンの実装方法を記録した備忘録です。</description><pubDate>Fri, 01 Aug 2025 03:09:29 GMT</pubDate></item><item><title>TypeScript で実装する Amazon Cognito User Pools 認証システム【MFA 対応・Terraform 構築】</title><link>https://blog.takenoko.dev/blog/2025/07/amazon-cognito-typescript-authentication-tutorial/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/07/amazon-cognito-typescript-authentication-tutorial/</guid><description>Amazon Cognito User Pools を使用した TypeScript 認証システムの実装についての記事です。Terraform でのインフラ構築、エイリアス属性の設定、MFA の有効化、ユーザー登録フロー（SignUpCommand、ConfirmSignUpCommand）、認証フロー（InitiateAuthCommand、RespondToAuthChallengeCommand）まで、実際のコード例と動作確認結果を交えて学んだ内容をまとめました</description><pubDate>Sun, 13 Jul 2025 03:09:29 GMT</pubDate></item><item><title>Next.js アプリケーションの可観測性を向上させる Pino + OpenTelemetry の実装</title><link>https://blog.takenoko.dev/blog/2025/07/nextjs-structured-logging-with-pino-otel/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/07/nextjs-structured-logging-with-pino-otel/</guid><description>Next.js アプリケーションで Pino と OpenTelemetry を組み合わせ、trace_id が付与された構造化ログを実装する方法を解説します。従来のコンソールログから脱却し、エラー監視・パフォーマンス監視・開発運用効率化を実現するためのログ設計手法について学んだ記録です。</description><pubDate>Sat, 05 Jul 2025 14:09:29 GMT</pubDate></item><item><title>HelmのsemverCompare関数でバージョン比較について学ぶ</title><link>https://blog.takenoko.dev/blog/2025/05/using-semvercompare-in-helm-charts/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/05/using-semvercompare-in-helm-charts/</guid><description>Helm Chart 開発においてバージョンの条件分岐があると互換性を気にすることなく設定できます。この記事では、Helm の `semverCompare` 関数の基本的な使い方から、具体的な活用例、注意点までを学習した内容をまとめました。</description><pubDate>Tue, 06 May 2025 03:09:29 GMT</pubDate></item><item><title>OpenTelemetry JS: 構造化ログへtrace_idを自動付与する仕組み</title><link>https://blog.takenoko.dev/blog/2025/05/how-opentelemetry-js-injects-trace-id-into-structured-logs/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/05/how-opentelemetry-js-injects-trace-id-into-structured-logs/</guid><description>OpenTelemetry JS SDK を利用して、Winston の構造化ログに `trace_id` を自動で付与する方法とその仕組みを学習しました。`@opentelemetry/instrumentation-winston` がどのように `trace_id` をログに挿入するのか、コードを読み解きながら確認しました。Observability を高めるための具体的な設定方法と内部動作について、学んだことを記録します</description><pubDate>Mon, 05 May 2025 03:09:29 GMT</pubDate></item><item><title>MySQLを使ってトランザクションを学ぶ</title><link>https://blog.takenoko.dev/blog/2025/04/db-transaction/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/04/db-transaction/</guid><description>MySQLのトランザクション分離レベルについての学習ログ。READ UNCOMMITTEDからSERIALIZABLEまでの特徴や、ダーティリード、反復不能読み取り、ファントムリードなどの問題を具体例とともに記述。</description><pubDate>Sun, 13 Apr 2025 03:09:29 GMT</pubDate></item><item><title>【Next.js】Auth.jsとKeycloakで実装する認証基盤 その3 ～RBAC編～</title><link>https://blog.takenoko.dev/blog/2025/01/nextjs-keycloak-rbac/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/01/nextjs-keycloak-rbac/</guid><description>Next.js v15とAuth.js v5を使用して、Keycloakのロールベースアクセス制御（RBAC）を実装する方法を学習したのでまとめます。Keycloakでのロール設定から、Next.jsでのアクセス制御の実装まで、具体的なコード例を交えて解説します。</description><pubDate>Sat, 18 Jan 2025 05:09:29 GMT</pubDate></item><item><title>【Next.js】Auth.jsとKeycloakで実装する認証基盤 その2 ～セキュリティ強化編～</title><link>https://blog.takenoko.dev/blog/2025/01/nextjs-keycloak-login-2/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/01/nextjs-keycloak-login-2/</guid><description>Next.js v15 と Auth.js v5 を使い、Keycloak と連携してログイン機能を実装する方法を学びます。今回は、セッションの有効期限やOIDCの設定を追加し、セキュリティを強化します。</description><pubDate>Sat, 04 Jan 2025 05:09:29 GMT</pubDate></item><item><title>【Next.js】Auth.jsとKeycloakで実装する認証基盤</title><link>https://blog.takenoko.dev/blog/2025/01/nextjs-keycloak-login/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2025/01/nextjs-keycloak-login/</guid><description>Next.js v15とAuth.js v5を使ってKeycloakと連携したログイン機能の実装方法について学習した内容を説明します。特にSessionProviderの設定、ミドルウェアを使用した認証制御、複数のミドルウェアの組み合わせ方など、具体的な実装例を交えて解説していきます。</description><pubDate>Wed, 01 Jan 2025 00:09:29 GMT</pubDate></item><item><title>テーブルの継承について学ぶ</title><link>https://blog.takenoko.dev/blog/2024/12/database-polymorphism/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/12/database-polymorphism/</guid><description>データベースのテーブル継承における3つの主要な戦略（単一テーブル継承、具象テーブル継承、クラステーブル継承）について学習した内容を説明します。それぞれの戦略のメリット・デメリットを比較し、sqlcを使用した具体的な実装例を通して解説していきます。</description><pubDate>Sat, 28 Dec 2024 03:09:29 GMT</pubDate></item><item><title>Pydantic Settings で CLI アプリケーションを作成する</title><link>https://blog.takenoko.dev/blog/2024/11/pydantic-cli/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/11/pydantic-cli/</guid><description>Pydantic Settingsを使用してCLIアプリケーションを作成する方法について学習した内容を説明します。特にリスト、辞書型、Enum型のオプション設定方法や、サブコマンドの実装方法、Booleanフラグの扱い方など、具体的な実装例を通して解説していきます。</description><pubDate>Thu, 28 Nov 2024 03:09:29 GMT</pubDate></item><item><title>AWS Systems Manager Automationでタグを条件にEC2インスタンスを停止する</title><link>https://blog.takenoko.dev/blog/2024/10/aws-stop-instance-by-tag/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/10/aws-stop-instance-by-tag/</guid><description>AWS Systems Manager AutomationでタグベースのEC2インスタンス停止を実装する方法を説明します。事前定義済みのランブック「AWS-StopEC2Instance」を使用した基本的な実行方法と、レート制御を利用した複数インスタンスの一括停止方法について、具体的な手順を解説します。</description><pubDate>Tue, 15 Oct 2024 03:09:29 GMT</pubDate></item><item><title>【Keycloak】アクセストークンの Audience を変更する</title><link>https://blog.takenoko.dev/blog/2024/09/keycloak-token-audience/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/09/keycloak-token-audience/</guid><description>KeycloakのアクセストークンにあるAudience（aud）クレームの設定方法について学習した内容を説明します。デフォルトで「account」となっているaudを変更する2つの方法（クライアントロールを使用した自動追加とハードコード）について、具体的な設定手順を解説していきます。</description><pubDate>Wed, 25 Sep 2024 03:09:29 GMT</pubDate></item><item><title>ローカル環境でOAuth2 ProxyとKeycloakを使用した認証を実装する</title><link>https://blog.takenoko.dev/blog/2024/09/oauth2-proxy-basic/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/09/oauth2-proxy-basic/</guid><description>OAuth2 ProxyとKeycloakを使って認証を実装する方法について学習した内容を説明します。Docker ComposeでKeycloak、Nginx、OAuth2 Proxyを構築し、既存のアプリケーションに変更を加えることなく認証機能を追加する方法を、環境構築から設定まで具体的に解説していきます。</description><pubDate>Mon, 09 Sep 2024 03:09:29 GMT</pubDate></item><item><title>Firebase Authentication の基本を学ぶ</title><link>https://blog.takenoko.dev/blog/2024/08/firebase-auth-basic/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/08/firebase-auth-basic/</guid><description>Firebase Authentication について学習した記録です。</description><pubDate>Sun, 11 Aug 2024 06:09:29 GMT</pubDate></item><item><title>【Keycloak】 FAPI Baseline 対応のクライアントを Go 言語で実装する</title><link>https://blog.takenoko.dev/blog/2024/07/keycloak-fapi-baseline/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/07/keycloak-fapi-baseline/</guid><description>Keycloakで Financial-grade API (FAPI) Baselineに対応するクライアントをGo言語で実装する方法について学習した内容を説明します。特にFAPIが要求するPKCEの使用、client_secret_jwtやprivate_key_jwtによるクライアント認証、HTTPSの導入について、具体的な実装例を交えて解説していきます。</description><pubDate>Mon, 15 Jul 2024 06:09:29 GMT</pubDate></item><item><title>Keycloakを使ったパスキー(Passkey)の設定とTerraformでの自動化</title><link>https://blog.takenoko.dev/blog/2024/05/terraform-keycloak-authentication-flow/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/05/terraform-keycloak-authentication-flow/</guid><description>Keycloakの新機能であるパスキー(Passkey)を使ったパスワードレス認証について学習した内容を説明します。パスキーの概要から実際の設定手順、さらにTerraformを使った自動化まで、具体的な実装方法を解説していきます。特にAuthentication Flowの設定とそのモジュール化について詳しく説明します。</description><pubDate>Sat, 25 May 2024 14:09:29 GMT</pubDate></item><item><title>Keycloakのロールについて学ぶ</title><link>https://blog.takenoko.dev/blog/2024/05/keycloak-role/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/05/keycloak-role/</guid><description>Keycloakのロールベースのアクセス制御について学習しました。レルムロール、クライアントロール、グループロールの設定方法や、各ロールがアクセストークンにどのように反映されるのか、具体的な実装例を使って紹介していきます。</description><pubDate>Sun, 05 May 2024 03:09:29 GMT</pubDate></item><item><title>【Terraform】targetオプション指定時のplanとapply</title><link>https://blog.takenoko.dev/blog/2024/04/terraform-plan-diff-with-target/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/04/terraform-plan-diff-with-target/</guid><description>Terraformのtargetオプション使用時に生じる2つの疑問点について検証します。モジュール間の依存関係がある場合に、planやapplyの挙動がどのようになるのか、VPCとSecurity Groupのモジュールを例に実践的に確認していきます。</description><pubDate>Mon, 29 Apr 2024 03:09:29 GMT</pubDate></item><item><title>keycloakify を使って Keycloak のカスタムテーマを作成する環境を構築する</title><link>https://blog.takenoko.dev/blog/2024/04/setup-keycloakify/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/04/setup-keycloakify/</guid><description>keycloakify を使うと React で Keycloak のカスタムテーマを作成することができます。keycloakify-starter を使用すると、環境構築が簡単にできます。この記事では、VS Code と devcontainer を使って keycloakify-starter をセットアップします。</description><pubDate>Sun, 14 Apr 2024 03:09:29 GMT</pubDate></item><item><title>KeycloakとGo言語でAuthorization Code Flowを学ぶ 4</title><link>https://blog.takenoko.dev/blog/2024/04/keycloak-authorization-code-flow-4/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/04/keycloak-authorization-code-flow-4/</guid><description>Keycloakのログアウト機能の実装方法について学習した内容を説明します。特にRP-Initiated LogoutとAPIサーバーから直接リクエストを送信する2つの方法、そしてCookieに保存されたトークンの削除方法について、具体的な実装例を交えて解説していきます。</description><pubDate>Sun, 07 Apr 2024 14:09:40 GMT</pubDate></item><item><title>KeycloakとGo言語でAuthorization Code Flowを学ぶ 3</title><link>https://blog.takenoko.dev/blog/2024/04/keycloak-authorization-code-flow-3/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/04/keycloak-authorization-code-flow-3/</guid><description>OpenID Providerから取得したリフレッシュトークンを使って、アクセストークンを再取得する方法について学習した内容を説明します。特にトークンの有効期限の設定方法や保存場所の選択、実際のコードでの実装方法について、具体的な例を交えて解説していきます。</description><pubDate>Tue, 02 Apr 2024 14:09:40 GMT</pubDate></item><item><title>KeycloakとGo言語でAuthorization Code Flowを学ぶ 2</title><link>https://blog.takenoko.dev/blog/2024/03/keycloak-authorization-code-flow-2/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/03/keycloak-authorization-code-flow-2/</guid><description>Authorization Code FlowでOpenID Providerからトークンを取得する際のセキュリティ対策について学習した内容を説明します。特にstate、nonce、PKCEの実装方法や、それぞれのパラメータがどのような攻撃を防ぐのか、具体的なコード例を交えながら解説していきます。</description><pubDate>Sat, 23 Mar 2024 08:09:40 GMT</pubDate></item><item><title>KeycloakとGo言語でAuthorization Code Flowを学ぶ</title><link>https://blog.takenoko.dev/blog/2024/02/keycloak-authorization-code-flow/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/02/keycloak-authorization-code-flow/</guid><description>Go言語でAPIサーバーを作成し、Keycloakとのやり取りを通じてAuthorization Code Flowについて学習した内容を説明します。認可コードの取得からトークンの検証まで、特にセキュリティ面での実装方法について、具体的なコード例を交えながら解説していきます。</description><pubDate>Wed, 28 Feb 2024 06:09:40 GMT</pubDate></item><item><title>Keycloak に入門し、Terraform の Keycloak Provider を使ってみる</title><link>https://blog.takenoko.dev/blog/2024/02/learn-keycloak-basic/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/02/learn-keycloak-basic/</guid><description>Keycloakのチュートリアルを通じて基本機能を学び、その後TerraformのKeycloak Providerを使ってリソースを管理する方法について学習した内容を説明します。特にレルムの作成、ユーザー管理、クライアントの設定など、具体的な実装例を交えながら解説していきます。</description><pubDate>Fri, 23 Feb 2024 01:09:40 GMT</pubDate></item><item><title>データベースのスナップショットを作成したアカウントから別アカウントにコピーする</title><link>https://blog.takenoko.dev/blog/2024/02/copy-rds-snapshot/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/02/copy-rds-snapshot/</guid><description>データベースのスナップショットを作成したAWSアカウントから別のアカウントにコピーする方法について説明します。特に、スナップショットの暗号化に使用するカスタマーマネージドキー（CMK）の設定方法と、アカウント間でのスナップショット共有の手順を、具体的に解説していきます。</description><pubDate>Sat, 03 Feb 2024 03:09:29 GMT</pubDate></item><item><title>Ubuntuデスクトップ環境をLimaとNice DCVで構築する方法</title><link>https://blog.takenoko.dev/blog/2024/01/vdi-lima-dcv/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/01/vdi-lima-dcv/</guid><description>Ubuntuイメージを使用してLimaでVMを立ち上げ、その上でNICE DCVを起動します。これにより、Mac上からWebブラウザでアクセス可能な仮想環境を簡単に作成できます。</description><pubDate>Sun, 21 Jan 2024 06:09:29 GMT</pubDate></item><item><title>ローカル環境 から Ansible を実行し EC2 インスタンスを設定する</title><link>https://blog.takenoko.dev/blog/2024/01/ansible-packer-ec2/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2024/01/ansible-packer-ec2/</guid><description>ローカル環境(M1 Mac)からAnsibleを実行してEC2インスタンスを設定する方法について説明します。Session Managerを使用したSSH接続方法と、community.awsコレクションを利用した接続方法の2つのアプローチを、具体的な実装手順と共に解説していきます。</description><pubDate>Mon, 01 Jan 2024 10:30:29 GMT</pubDate></item><item><title>PackerとAnsibleでDockerイメージを作成する</title><link>https://blog.takenoko.dev/blog/2023/12/ansible-packer-docker/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/12/ansible-packer-docker/</guid><description>PackerとAnsibleを使用してDockerイメージを作成する方法について説明します。特にDockerプラグインの設定方法、Ansibleを使用したnginxのインストール方法、NICE DCVの設定など、具体的な実装手順を段階的に解説していきます。</description><pubDate>Sat, 30 Dec 2023 09:09:00 GMT</pubDate></item><item><title>Ansible と Packer に入門する</title><link>https://blog.takenoko.dev/blog/2023/12/ansible-packer-ami/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/12/ansible-packer-ami/</guid><description>PackerとAnsibleを使用してAWS AMIを作成する方法について説明します。特にSession Managerを利用したEC2インスタンスへの接続方法や、Ansibleを使用したnginxのインストール方法など、具体的な実装手順をTerraformのコード例と共に紹介していきます。</description><pubDate>Mon, 25 Dec 2023 03:09:29 GMT</pubDate></item><item><title>VSCode で Git 操作中に発生する lint-staged のエラーとその解決方法</title><link>https://blog.takenoko.dev/blog/2023/12/rtx-vscode-husky/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/12/rtx-vscode-husky/</guid><description>NodeJS を rtx を使ってバージョン管理している場合、VSCode からコードのコミットを実行すると npx command not found というエラーになり husky がうまく動作しません。 pre-commit にコマンドを追加することで解決します。</description><pubDate>Sun, 17 Dec 2023 08:35:29 GMT</pubDate></item><item><title>NICE DCV をインストールした EC2 インスタンスに Web ブラウザからアクセスする</title><link>https://blog.takenoko.dev/blog/2023/12/ubuntu-ec2-dcv/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/12/ubuntu-ec2-dcv/</guid><description>NICE DCV を使ってUbuntuイメージで立ち上げたEC2インスタンスにリモートデスクトップを実装する方法について学習した内容を説明します。WebSocketベースのプロトコルを使用したDCVサーバーの構築から、Webブラウザからのアクセス方法まで、具体的な手順を解説していきます。</description><pubDate>Sat, 16 Dec 2023 13:00:29 GMT</pubDate></item><item><title>Mac から Ubuntu イメージを使用したEC2インスタンスに VNC で接続する</title><link>https://blog.takenoko.dev/blog/2023/12/mac-ubuntu-ec2-vnc/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/12/mac-ubuntu-ec2-vnc/</guid><description>MacからUbuntu EC2インスタンスにVNC接続する方法について説明します。Terraformを使用したEC2インスタンスの構築方法、Session Managerを利用したSSH接続、VNCサーバーのインストールと設定方法など、具体的な手順を解説していきます。</description><pubDate>Sun, 03 Dec 2023 03:09:29 GMT</pubDate></item><item><title>pydanticを触ってみる</title><link>https://blog.takenoko.dev/blog/2023/10/python-pydantic/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/10/python-pydantic/</guid><description>Pythonのデータバリデーションツールpydanticの基本的な使い方について説明します。dict型データの扱いにくさを解消するため、pydanticのデータクラスを使用して型安全な実装方法を、具体的なコード例を交えながら紹介していきます。</description><pubDate>Sat, 07 Oct 2023 06:09:29 GMT</pubDate></item><item><title>boto3をpytestのmonkeypatchでstubする</title><link>https://blog.takenoko.dev/blog/2023/09/boto3-monkeypatch/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/09/boto3-monkeypatch/</guid><description>boto3 を stub する方法について調査すると、ネットには stubber と unittest の組み合わせを使った方法が多く紹介されていました。しかし stubber と pytest の mock を組み合わせたは記事が少ないように感じたため、今回は boto3 を pytest の monkeypatch で stub する方法を備忘録として残します。</description><pubDate>Sun, 24 Sep 2023 06:09:29 GMT</pubDate></item><item><title>【Go】slog を触ってみる</title><link>https://blog.takenoko.dev/blog/2023/09/go-slog/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/09/go-slog/</guid><description>Go1.21 から新しく `log/slog` が追加されました。今回は `slog`に関するブログとドキュメントを読んで学んだことを備忘録として残します。</description><pubDate>Fri, 22 Sep 2023 14:09:29 GMT</pubDate></item><item><title>静的解析ツールとreviewdogを組み合わせて、レビューを自動化する</title><link>https://blog.takenoko.dev/blog/2023/08/static-analysis-with-reviewdog/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/08/static-analysis-with-reviewdog/</guid><description>AWS をはじめとするクラウドや Kubernetes に触れていると、IaC を実践するために Terraform や Helm に触れる機会が多くなります。今回は、静的解析ツールと reviewdog を組み合わせたレビューの自動化について提案したいと思います。</description><pubDate>Mon, 28 Aug 2023 13:20:40 GMT</pubDate></item><item><title>静的解析ツールを使ってHelm Chartを解析する</title><link>https://blog.takenoko.dev/blog/2023/08/static-analysis-iac/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/08/static-analysis-iac/</guid><description>業務でHelmの静的解析をするために、Trivy、Kics、Checkovについて調べてみたので、メモを残します。</description><pubDate>Fri, 11 Aug 2023 13:09:40 GMT</pubDate></item><item><title>Google Doaminsで購入したdevドメインをCloudflareに移管する</title><link>https://blog.takenoko.dev/blog/2023/08/transfer-dev-domain/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/08/transfer-dev-domain/</guid><description>Cloudflareがdevドメインに対応したらしいので、Google Domainsから移行します。</description><pubDate>Thu, 03 Aug 2023 14:09:29 GMT</pubDate></item><item><title>【Terraform】Cost &amp; Usage ReportをAthenaで分析する</title><link>https://blog.takenoko.dev/blog/2023/07/terraform-cur-athena/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/07/terraform-cur-athena/</guid><description>AWSのコスト分析をより効率的に行うため、CURのデータをS3に保存し、Athenaで分析する環境をTerraformで構築する方法を説明します。AWS Glueクローラーを使用して自動的にデータカタログを更新し、S3イベント通知とSQSを組み合わせて効率的なデータ処理を実現します。</description><pubDate>Mon, 24 Jul 2023 14:15:40 GMT</pubDate></item><item><title>PythonのaiohttpモジュールとGeneratorを使って、ページネーションを処理するHTTPクライアントを実装する</title><link>https://blog.takenoko.dev/blog/2023/07/python-aiohttp-pagination-client/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/07/python-aiohttp-pagination-client/</guid><description>Python で GET リクエストを実行する際、ページネーションの処理が必要な場合があります。AWS SDK のようなライブラリは Paginator クラスなどの実装が用意されていますが、REST API を使用するために HTTP クライアントを使う場合は、自分でページネーションの実装を行う必要があります。今回はaiohttpを使ってページネーションの処理を書いてみます。</description><pubDate>Sat, 08 Jul 2023 13:09:40 GMT</pubDate></item><item><title>ローカルのKukbernetesクラスターにIngressを作成し、localhostにcurlする</title><link>https://blog.takenoko.dev/blog/2023/07/kind-ingress/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/07/kind-ingress/</guid><description>ローカル環境に立ち上げたKubernetesクラスターにIngressを作成し、localhostにcurlできる環境をKustomize、Helm両方で作成します。</description><pubDate>Sun, 02 Jul 2023 13:15:40 GMT</pubDate></item><item><title>KubernetesのPodDisruptionBudgetの挙動を確認する</title><link>https://blog.takenoko.dev/blog/2023/06/pod-disruption-budget/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/06/pod-disruption-budget/</guid><description>KubernetesのPodDisruptionBudget(PDB)について、基本概念や用途を解説します。Kind環境での実践的な検証例を示しながら、AWS EKSアップデート時に重要となるリソース制御の方法を学びます。環境構築手順やバージョン情報も併せて紹介します。</description><pubDate>Sat, 24 Jun 2023 13:09:40 GMT</pubDate></item><item><title>Kubernetes上のアプリケーションから繋いでいるDBのマイグレーション方法を考える</title><link>https://blog.takenoko.dev/blog/2023/06/kubernetes-db-migration/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/06/kubernetes-db-migration/</guid><description>Kubernetes上で運用しているアプリケーションのデータベースマイグレーション方法について、様々なアプローチを検討します。手動実行、EC2インスタンス利用、CI実行、Init Containers使用、Kubernetes Job使用の5つの方法を比較し、最終的にHelmのhookを使用した実装方法を選択した過程を解説していきます。</description><pubDate>Tue, 20 Jun 2023 14:00:29 GMT</pubDate></item><item><title>privateサブネットに配置したAWS EC2インスタンスにssmでログインする</title><link>https://blog.takenoko.dev/blog/2023/06/aws-ssm-private/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/06/aws-ssm-private/</guid><description>プライベートサブネットに配置したEC2インスタンスにAWS Systems Manager(SSM)経由でログインする方法について説明します。AWSマネジメントコンソールからのアクセスと、ローカルPCからのaws ssm session-startコマンドによるアクセス、両方の実現方法を、Terraformを使って解説していきます。</description><pubDate>Sat, 03 Jun 2023 03:09:29 GMT</pubDate></item><item><title>publicサブネットに配置したAWS EC2インスタンスにssmでログインする</title><link>https://blog.takenoko.dev/blog/2023/05/aws-ssm-public/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/05/aws-ssm-public/</guid><description>EC2インスタンスをpublicサブネットに配置し、AWS Systems Manager Session Managerを使用してアクセスする方法について学習した内容を説明します。Terraformを使った環境構築から、マネジメントコンソールやCLIからのアクセス方法まで、具体的な手順を解説していきます。</description><pubDate>Sun, 28 May 2023 03:09:29 GMT</pubDate></item><item><title>ブログをHugoからAstroにしました</title><link>https://blog.takenoko.dev/blog/2023/05/move-to-astro/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/05/move-to-astro/</guid><description>2023年から個人ブログをHugoに書き出しましたが、ブログを書いていると自分好みにカスタマイズしたい欲が出たので、Astroで作りました。</description><pubDate>Sat, 20 May 2023 03:09:29 GMT</pubDate></item><item><title>GitHub AppsでGitHubのREST APIを実行してみる</title><link>https://blog.takenoko.dev/blog/2023/04/github-rest-api/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/04/github-rest-api/</guid><description>GitHubを使用している組織が、CI/CDのデータを収集したりするためにGitHubのREST APIを使うことがあると思います。このとき言語としてはPythonが選ばれることが多いと思い、今回はPython + GitHub AppsでAPIを実行します。</description><pubDate>Sun, 23 Apr 2023 08:05:23 GMT</pubDate></item><item><title>Gitlab CIのrulesの挙動を確認する</title><link>https://blog.takenoko.dev/blog/2023/04/gitlab-ci-rules/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/04/gitlab-ci-rules/</guid><description>GitLab CIのruleを使うと、いろいろな条件でパイプラインの実行を制御できます。その際にrulesキーワードを使用するのですが、理解が怪しかったので、実際に触りながら検証しいきます。</description><pubDate>Sun, 16 Apr 2023 10:43:23 GMT</pubDate></item><item><title>gitlab-runnerのDockerイメージを使用して、ローカル環境でGitLab CIを実行する</title><link>https://blog.takenoko.dev/blog/2023/04/gitlab-ci-docker-runner/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/04/gitlab-ci-docker-runner/</guid><description>https://gitlab.com/ にあるリポジトリが持ってるgitlab-ci.ymlをローカルで立ち上げたDockerで実行してみます。</description><pubDate>Sat, 15 Apr 2023 09:45:20 GMT</pubDate></item><item><title>Homebrewでgitlab-runnerをインストール、ローカル環境でGitLab CIを実行する</title><link>https://blog.takenoko.dev/blog/2023/04/gitlab-ci-local-runner/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/04/gitlab-ci-local-runner/</guid><description>M1 MacにGitlab CIのrunnerのみをローカル環境で実行し、気軽に検証できる環境を構築します。</description><pubDate>Sat, 15 Apr 2023 01:53:36 GMT</pubDate></item><item><title>【TypeScript】【Express】 expressに graceful shutdownを設定する</title><link>https://blog.takenoko.dev/blog/2023/04/express-graceful-shutdown/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/04/express-graceful-shutdown/</guid><description>ExpressでGraceful Shutdownを設定した場合、リクエストがどのように見えるのか確認してみます。</description><pubDate>Sun, 09 Apr 2023 11:09:29 GMT</pubDate></item><item><title>【TypeScript】【Python】【Golang】AWS-SDKのpaginatorを使ってIAM roleの一覧を取得する</title><link>https://blog.takenoko.dev/blog/2023/04/aws-client-pagination/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/04/aws-client-pagination/</guid><description>awsでデータの一覧を取得するときnext tokenやcursorを指定したforループでページごとにデータを取得することがあると思います。しかしaws sdkにはpaginationをいい感じに扱える関数があるので、これを利用すると簡単にデータを取得できます。</description><pubDate>Fri, 07 Apr 2023 10:09:29 GMT</pubDate></item><item><title>AWS Certified Database - Specialtyに合格しました</title><link>https://blog.takenoko.dev/blog/2023/04/aws-certified-database-specialty/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/04/aws-certified-database-specialty/</guid><description>今まで、AWSの資格を一度も受けたことがなかったので、備忘録として予約の取り方、勉強方法などを書きます。</description><pubDate>Sun, 02 Apr 2023 10:09:29 GMT</pubDate></item><item><title>【TypeScript】【Prisma】Cursor-Based Paginationを触ってみる。</title><link>https://blog.takenoko.dev/blog/2023/03/prisma-cursor-based-pagination/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/03/prisma-cursor-based-pagination/</guid><description>cusrorを使ったページネーションは、ページネーションの一種で、データベースのクエリ結果やAPIのレスポンスにおいて、特定の位置を指定して結果を取得する方法です。今回はPrismaを使ってどうやってcursorベースのページネーションをするのか検証してみます。</description><pubDate>Sat, 18 Mar 2023 08:09:29 GMT</pubDate></item><item><title>【Prisma】 データをupdateしたとき、関連するテーブルも同時にupdateまたはupsertする</title><link>https://blog.takenoko.dev/blog/2023/03/prisma-upsert-with-delete/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/03/prisma-upsert-with-delete/</guid><description>あるデータをupdateで更新するのと一緒に、それと関連するデータ(中間テーブルにあるデータ)も更新したい場合、どのようにPrismaを書けば良いのでしょうか？ この記事では、中間テーブルのデータも一緒にupdateする方法を考えます。</description><pubDate>Fri, 17 Mar 2023 14:09:29 GMT</pubDate></item><item><title>【TypeScript】フラットなデータ構造をdepthによってネストしたデータ構造にする</title><link>https://blog.takenoko.dev/blog/2023/03/generate-nested-array/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/03/generate-nested-array/</guid><description>ネストしたデータ構造をフラットなデータにする方法は検索すれば、たくさん出てきます。しかし、フラットなデータをネストしたデータに変換するような記事はなかなか見当たりません。今回はそれをどうやってコードで実現するのかTypeScriptで考えてみようと思います。</description><pubDate>Sun, 05 Mar 2023 14:09:29 GMT</pubDate></item><item><title>【M1 Mac】lima + DockerでMySQLを起動する</title><link>https://blog.takenoko.dev/blog/2023/02/lima-vm-apple-silicon/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/02/lima-vm-apple-silicon/</guid><description>M1 Macにlimaで起動したLinuxインスタンスを使って、DockerのMySQLを起動しようとしたところ複数のエラーでハマったので、備忘録としてブログにします。&quot;read-only file system&quot;、&quot;permission denied&quot;、&quot;exec format error&quot;、&quot;[ERROR] [MY-010259] [Server] Another process with pid 63 is using unix socket file&quot;を解決します。</description><pubDate>Sat, 25 Feb 2023 07:29:09 GMT</pubDate></item><item><title>【Golang, TypeScript】期間の重複をマージする</title><link>https://blog.takenoko.dev/blog/2023/02/merge-overlapping-interval/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/02/merge-overlapping-interval/</guid><description>TypeScriptでDateを使った期間の重複をマージして考える必要が出たので、マージを実現するコードを考えてみました。Go言語でも実装してみました。</description><pubDate>Thu, 23 Feb 2023 10:38:20 GMT</pubDate></item><item><title>Cloudflare Pages + Terraformでブログ環境を構築する</title><link>https://blog.takenoko.dev/blog/2023/02/cloudflare-pages-with-terraform/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/02/cloudflare-pages-with-terraform/</guid><description>CloudflareのTerraform providerを使用してCloudflare Pagesの環境構築を自動化する方法について学習した内容を説明します。特にゾーンの作成、プロジェクトの設定、カスタムドメインの設定、APIトークンの発行など、具体的な実装手順を解説していきます。</description><pubDate>Mon, 13 Feb 2023 12:07:53 GMT</pubDate></item><item><title>Cloudflare APIでPermission Group一覧を取得する</title><link>https://blog.takenoko.dev/blog/2023/02/cloudflare-list-permission-group/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/02/cloudflare-list-permission-group/</guid><description>CloudflareのAPIを実行する際に発生したPermission Group一覧取得の問題について学習した内容を説明します。特に「Error: error listing API Token Permission Groups: Unauthorized」というエラーの原因と、カスタムトークンではなく追加トークンを使用することによる解決方法について解説していきます。</description><pubDate>Sun, 12 Feb 2023 07:17:35 GMT</pubDate></item><item><title>GitHub Actionsを使ってCloudflare Pagesにブログを自動デプロイする</title><link>https://blog.takenoko.dev/blog/2023/02/cloudflare-with-github-actions/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/02/cloudflare-with-github-actions/</guid><description>Github Actionsを使ってCloudflare Pagesのプレビュー環境と本番環境にデプロイします。しかし、Github ActionsとCloudflare Pagesのプレビュー環境の相性が良くないので、設定も考えてみます。</description><pubDate>Sun, 05 Feb 2023 10:34:51 GMT</pubDate></item><item><title>Hugoで作ったブログをCloudflare Pagesに公開する</title><link>https://blog.takenoko.dev/blog/2023/02/deploy-cloudflare-pages/</link><guid isPermaLink="true">https://blog.takenoko.dev/blog/2023/02/deploy-cloudflare-pages/</guid><description>HugoのHBT(Hugo Bootstrap Theme)で作成したブログを、Cloudflare Pagesにアカウント作成から独自ドメインの設定までして公開します。</description><pubDate>Wed, 01 Feb 2023 11:51:51 GMT</pubDate></item></channel></rss>