データベースのコネクションプーリング
概要データベースを扱うと、パフォーマンス向上を考えた際に必ず出てくるコネクションプーリングについてです。今回はコネクションプーリングの種類とその特徴についてと、各データベースの特性に合わせてどんな選択を取るのが良いかを説明します。コネクションプーリングコネクションプーリングのメリットはコネクション作成時のオーバヘッドの削減リソースの再利用による効率化です。後述しますが、例えばPostgreSQLは1...
View ArticlePreparedStatement とクエリキャッシュ
概要PreparedStatement はSQLを実行する際に「SQL文の構造」と「パラメータ」を分離して扱える仕組みです。それによってパフォーマンスの向上セキュリティの向上コードの可読性・保守性の向上を図ることが可能です。今回はその理由を説明します。PreparedStatementのメリット例えばMySQLの場合、通常のStatementでは、SELECT * FROM users WHERE...
View Articlescreenshot-to-yoink でツールチップがスクリーンショットに含まれない
背景以前以下の対応を行いましたが、christina04.hatenablog.comツールチップがスクショできないという問題に遭遇しました。 期待する挙動は以下なのですが、実際はこのようにツールチップが消えてしまいます。そのため別の方法で実現する必要がありました。環境macOS 15.6.1原因以前の方法で使っているワークフローであるGitHub -...
View Articleproto-gen-validate を使う
概要HTTPやgRPCなどのAPIでvalidationを実装する際、次のような課題に直面することがよくあります。validationの実装を忘れる 正常系だけを考え、異常系のイメージがないvalidationがどこに実装されているか分からない クライアント側との認識がずれたり、テスト漏れが起きやすいvalidationをどこに実装するか悩む...
View ArticleData Clean Room によるプライバシー保護と効果測定の両立
課題従来広告の効果測定は、主にCookieやIPを使って以下の様にデータを突合していました。しかしながら最近はプライバシー保護のためGDPRなどによってCookieレスが進んだり、これまでメディア(媒体)から連携されていたIPも連携されないような流れが出てきました。これにより適切な広告効果が計測できない課題が生まれています。そこでプライバシーを保護しつつ、効果計測もできるようにするソリューションがD...
View ArticleNotionの議事録の主要トピックをまとめる
概要Notionでデータベースに議事録を残す事はよくありますが、どこにどんな内容が書いてあったかを一覧の状態で見たいことがあります。そこでNotion...
View Articleglob によるパターンマッチング
概要glob はファイルシステムディレクトリ内の名前(パスなど)に対するパターンマッチングです。身近な例で言うと.gitignoreなどがglobを使っています。最近だとClaude Codeの権限管理であるRead()もこれを利用しています。globは正規表現とごっちゃになりやすいのでまとめておきます。構文glob の構文は以下ですが、主に *や...
View ArticleClaude Codeの権限設定ルール
背景Claude Codeの権限の設定は自動化による効率化とリスクのガードレールを設計する上で非常に重要です。{"permissions": {"allow": ["Bash(find:*)", "Bash(grep:*)", "Bash(ls:*)", "Bash(cat:*)", "Read(~/.go/src)" ], "deny": ["Read(**/*env*)",...
View Articlebash-completion@2 の設定ファイルの置き方
背景ツールの補完を使う上でcompletionファイルの管理が必要です。ただ生成AIやネット上ではbash-completionのv1なのかv2なのか情報が混ざっており、よく分からないことがあったので自分で整理することにしました。環境macOS v15.7.2bash v5.3.8bash_completion...
View ArticleBitwardenでsshキーを管理する(2025年最新版)
背景以前次のようにライブラリを利用して、Bitwarden上でsshキーを管理するやり方を紹介しました。christina04.hatenablog.com2025年1月からに公式もsshキーをサポートしていたので、公式のやり方を紹介します。環境macOS(M2) v15.7.2Bitwardenデスクトップ v2025.11.2注意点サポートしているアルゴリズムはed25519のみ...
View Articleキャッシュアーキテクチャパターン
概要キャッシュにおけるアーキテクチャパターンをまとめておきます。表形式にすると次のようになります。パターン読み取り速度書き込み速度データ整合性主な用途 Cache Aside 高 中(キャッシュ層がオーバーヘッドにならない) 中(期限切れ考慮) 一般的なWebアプリ Read-Through 高 中(同上) 高 読み取り専用が多いデータ Write-Through 最高 低 最高...
View Articleネガティブキャッシュによるデータベース負荷対策
概要通常データベースへの負荷を軽減するためにキャッシュレイヤを導入します。しかしよくあるのは正常系のみキャッシュしており、ゲームのイベント前でまだ404ゲームのイベント期間が終了して404動画の配信前でまだ404動画の配信期間が終了して404といった異常系が考慮されていないパターンです。サーバ上はデータの最新性から↑が正しいのですが、クライアントサイドにどこかしら導線が存在し、リクエストを送ってしま...
View Article2025年買ってよかったものリスト
概要年の瀬なので2025年に買ってよかったものを挙げてきます。Osmo Pocket 3DJI vlogカメラ Osmo Pocket 3 1インチ CMOS 4K 120fps 動画対応 Vlog用デジカメ 3軸スタビライザー ジンバルカメラ アクションカメラ 高速フォーカス 顔 被写体トラッキング 回転式2インチ タッチスクリーンDJIAmazonGoogle Cloud Next...
View ArticleObsidian Web Clipper がいつの間にか画像ダウンロードできるようになっていた
概要Obsidianでは2024年末にWebクリップ機能が提供されました(Chrome拡張など)。obsidian.mdただEvernoteと違って画像はリンク状態なため、保存した先のサイトがクローズすると見れなくなっていました。ので自分は良い図で画像も残しておきたいときはしかたなくEvernoteを使っていました。しかしv1.8.3からWebクリップした記事の画像をローカルに保存できるようになりま...
View ArticleGoogle Cloud → Snowflake の Workload Identity Federation を構築する
概要Google Cloud上でAtlantisというterraformのGitOpsツールを導入している状態で、Snowflakeもterraform管理したいと考えました。タイミング良く Snowflake Provider で v2.10.0 からWorkload Identity Federation が正式サポートされたので、これを使って実現します。環境Terraform...
View ArticleEnvoy, Istio で Outlier Detection を使う
概要EnvoyやIstio では Outlier Detection という、連鎖障害を起こさないように不具合のあるホストを切り離す仕組みがあります。ヘルスチェックで外されるほど完全に落ちてはいないしかしサービスとしては無視できないほどエラーレートが高いといった状況でうまく機能してくれます。今回はこの機能の説明と、具体的な設定・挙動について紹介します。環境Istio: 1.28.2Envoy:...
View ArticleOutlier Detection と自動リトライを使ってデプロイ時・Podの再配置時のエラーを減らす
背景過去、デプロイ時やPodの再配置時のエラーはGoでGraceful Shutdown - Carpe DiemKubernetesのPodを安全に終了する - Carpe DiemKubernetesのPodを安全に終了する(istio-proxy編) - Carpe DiemGoでShutdown Hook - Carpe...
View ArticleSnowflake で特定のユーザが使われているかを確認する(棚卸し)
概要Snowflake でユーザアカウントの棚卸しをする際に、そのユーザが直近使われているのかどうかを知りたいです。Snowflake では SNOWFLAKE.ACCOUNT_USAGEというデフォルトのスキーマにあるビューを使うことで簡単に把握することが可能です。以下を組み合わせることで判断します。知りたいことビューログインされているか LOGIN_HISTORYクエリを実行しているか...
View ArticleGo で固定小数点数を扱う
概要小数を扱うときは浮動小数点数:float, double固定小数点数:numeric, decimalといった選択肢が出てきます。通常は前者を選ぶことが多いですが、丸め誤差や桁落ちが発生するため、金融系の処理では後者を選びます。今回はGoでの固定小数点数の扱い方について紹介します。環境go 1.25.7shopspring/decimal...
View Articleyabai で scripting-addition failed to load
背景以前、外部ディスプレイを付けたり外したりする度に、上記のアプリの配置を手動で直さないといけない手間を省くツールとして、yabaiを紹介しました。christina04.hatenablog.comこのツールが v7.1.16, v7.1.17 では、sudo yabai --load-saを実行した際に次のエラーが出るようになり、動かなくなりました。scripting-addition...
View ArticleGoogle Cloud の PAM を使ってAIツールが安全に自律動作できるように
背景Claude CodeやCodexなど、生成AIがどんどん自律的に動けるようになった一方で、ガードレール自体の整備をしておかないとどこかで大きな障害を引き起こす可能性があります。特にパブリッククラウドの権限は、普段の開発で編集権限があると何か試したいときに便利な一方、AIツールがその権限を使うと大きなリスクになります。今回はそのガードレールとしてPrivileged Access...
View ArticleGoogle Cloud IAMの基本ロールがアップデートされてた
概要従来のGoogle Cloudの基本ロールはOwner (roles/owner)Editor (roles/editor)Viewer (roles/viewer)でしたが、最近Admin (roles/admin)Writer (roles/writer)Reader...
View ArticleOpenTelemetry Collector でtail based sampling
背景以前OpenTelemetryでSamplingについて紹介しました。christina04.hatenablog.com前回のHead based samplingではシンプルで軽量な反面、エラー時のデータがサンプリングによって欠損して調査が困難になるケースが発生しました。今回はOpenTelemetry Collectorによるtail based...
View ArticleGAS のシークレット管理方法
背景生成AIの発達でデータインテグレーションの重要性がどんどん増しています。ビジネスデータなどはGoogle Workspaceで管理している企業も多く、そこにあるスプレッドシート情報であったりGoogleDriveのデータを内製のAIシステムに自動連携したい、といった要望が出てきます。ただ一方でセキュリティのためGoogle...
View ArticleGKE → Snowflake の Workload Identity Federation を構築する
背景以前Google Cloud サービスアカウントのimpersonationを使った Workload Identity Federation の例を紹介しました。christina04.hatenablog.comただ最近は従来のWIFから、Direct Workload Identity...
View ArticleGitHub Apps, GITHUB_TOKEN, OAuth Apps, PATの使い分けフローチャート
背景歴史的経緯もあり、GitHubでは様々な種類のトークンがあります。GitHub Apps によるトークンGithub Actions で使える GITHUB_TOKENOAuth Apps によるトークンPAT (Personal Access...
View ArticleRelease Please Actions を導入してモノリポでもリリース差分を自動で抽出できるようにする
背景モノリポでは1つのリポジトリで全てのサービス・コンポーネントを管理するため次のメリットがあります。オーナーシップを維持しやすい...
View ArticleRelease Please をモノリポに導入する際にハマったこと
背景前回のchristina04.hatenablog.comをチームのモノリポに導入する際にハマったことをまとめていきます。この記事はrelease-please を既に導入したmonorepo を運用しているconventional commits を使っている人向けです。環境Release Please Action v4.4.1ハマったこと1. 初回リリースは...
View Articlepull_request と pull_request_target の違いとセキュリティ上の注意点
背景依存しているライブラリに次のようなコードがありました。※簡単のためシンプルにしていますon: pull_request_target jobs:coverage:runs-on: ubuntu-latest steps:- uses: actions/checkout@v4 with:ref: ${{ github.event.pull_request.head.sha }} - run:...
View Article