Carpe Diem

備忘録

2026-01-01から1年間の記事一覧

pull_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…

Release Please をモノリポに導入する際にハマったこと

背景 前回の christina04.hatenablog.com をチームのモノリポに導入する際にハマったことをまとめていきます。 この記事は release-please を既に導入した monorepo を運用している conventional commits を使っている 人向けです。 環境 Release Please Act…

Release Please Actions を導入してモノリポでもリリース差分を自動で抽出できるようにする

背景 モノリポでは1つのリポジトリで全てのサービス・コンポーネントを管理するため次のメリットがあります。 オーナーシップを維持しやすい マルチリポは傍観者効果(自分がやらなくても誰かがやるだろう)・レビュー漏れが起きやすい 言語・ライブラリのバ…

GitHub Apps, GITHUB_TOKEN, OAuth Apps, PATの使い分けフローチャート

背景 歴史的経緯もあり、GitHubでは様々な種類のトークンがあります。 GitHub Apps によるトークン Github Actions で使える GITHUB_TOKEN OAuth Apps によるトークン PAT (Personal Access Token) それぞれの特徴、使い分けが分かりにくかったので、フロー…

GKE → Snowflake の Workload Identity Federation を構築する

背景 以前Google Cloud サービスアカウントのimpersonationを使った Workload Identity Federation の例を紹介しました。 christina04.hatenablog.com ただ最近は従来のWIFから、Direct Workload Identity Federationと呼ばれるサービスアカウントを挟まず直…

Google Cloud IAM と GKE 権限の関係

概要 GKEの権限管理は、Google Cloud IAM(プロジェクトレベルの操作)と Kubernetes RBAC(クラスター内部のリソース操作)の組み合わせで決まります。 IAMの権限が多く、それぞれの違いがぱっと見分かりづらかったので、一覧化したり知っておくべき差分を…

GAS のシークレット管理方法

背景 生成AIの発達でデータインテグレーションの重要性がどんどん増しています。 ビジネスデータなどはGoogle Workspaceで管理している企業も多く、そこにあるスプレッドシート情報であったりGoogleDriveのデータを内製のAIシステムに自動連携したい、といっ…

OpenTelemetry Collector でtail based sampling

背景 以前OpenTelemetryでSamplingについて紹介しました。 christina04.hatenablog.com 前回のHead based samplingではシンプルで軽量な反面、エラー時のデータがサンプリングによって欠損して調査が困難になるケースが発生しました。 今回はOpenTelemetry C…

Google Cloud IAMの基本ロールがアップデートされてた

概要 従来のGoogle Cloudの基本ロールは Owner (roles/owner) Editor (roles/editor) Viewer (roles/viewer) でしたが、最近 Admin (roles/admin) Writer (roles/writer) Reader (roles/reader) が新しく登場していました。2026/03現在プレGAになっています…

Google Cloud の PAM を使ってAIツールが安全に自律動作できるように

背景 Claude CodeやCodexなど、生成AIがどんどん自律的に動けるようになった一方で、ガードレール自体の整備をしておかないとどこかで大きな障害を引き起こす可能性があります。 特にパブリッククラウドの権限は、普段の開発で編集権限があると何か試したい…

yabai で scripting-addition failed to load

背景 以前、外部ディスプレイを付けたり外したりする度に、上記のアプリの配置を手動で直さないといけない手間を省くツールとして、yabaiを紹介しました。 christina04.hatenablog.com このツールが v7.1.16, v7.1.17 では、sudo yabai --load-saを実行した…

Go で固定小数点数を扱う

Go

概要 小数を扱うときは 浮動小数点数:float, double 固定小数点数:numeric, decimal といった選択肢が出てきます。 通常は前者を選ぶことが多いですが、丸め誤差や桁落ちが発生するため、金融系の処理では後者を選びます。 今回はGoでの固定小数点数の扱い…

Snowflake で特定のユーザが使われているかを確認する(棚卸し)

概要 Snowflake でユーザアカウントの棚卸しをする際に、そのユーザが直近使われているのかどうかを知りたいです。 Snowflake では SNOWFLAKE.ACCOUNT_USAGEというデフォルトのスキーマにあるビューを使うことで簡単に把握することが可能です。 以下を組み合…

Outlier Detection と自動リトライを使ってデプロイ時・Podの再配置時のエラーを減らす

背景 過去、デプロイ時やPodの再配置時のエラーは GoでGraceful Shutdown - Carpe Diem KubernetesのPodを安全に終了する - Carpe Diem KubernetesのPodを安全に終了する(istio-proxy編) - Carpe Diem GoでShutdown Hook - Carpe Diem といった対応を行っ…

Envoy, Istio で Outlier Detection を使う

概要 EnvoyやIstio では Outlier Detection という、連鎖障害を起こさないように不具合のあるホストを切り離す仕組みがあります。 ヘルスチェックで外されるほど完全に落ちてはいない しかしサービスとしては無視できないほどエラーレートが高い といった状…

Google Cloud → Snowflake の Workload Identity Federation を構築する

概要 Google Cloud上でAtlantisというterraformのGitOpsツールを導入している状態で、Snowflakeもterraform管理したいと考えました。 タイミング良く Snowflake Provider で v2.10.0 からWorkload Identity Federation が正式サポートされたので、これを使っ…

Obsidian Web Clipper がいつの間にか画像ダウンロードできるようになっていた

概要 Obsidianでは2024年末にWebクリップ機能が提供されました(Chrome拡張など)。 obsidian.md ただEvernoteと違って画像はリンク状態なため、保存した先のサイトがクローズすると見れなくなっていました。 ので自分は良い図で画像も残しておきたいときは…