Conversation
Gen2(Cloud Run)関数のデプロイはCloud Buildのコンテナビルドを伴い1本あたり 数分かかる。従来は9関数を1本ずつ直列deployしており全体で15〜30分規模だった。 関数間に依存が無いため、前提処理(サービス有効化・Pub/Subトピック作成・ GitHub OAuth資格情報/base_url取得・App Engineロケーション解決)を先行ステップに 集約したうえで、全Go関数のdeployをバックグラウンド(&)で同時起動し一括waitする 方式に変更(体感で最も遅い1本分の時間に短縮)。ログは関数ごとにファイルへ退避して 順に出力し、1本でも失敗したらステップを失敗させる。Cloud Schedulerジョブ作成は 関数デプロイ後に冪等なupsertでまとめて実行。 - 挙動(デプロイ対象関数・引数・トリガ・env-vars・スケジュール)は従来と同一 - actionlint(shellcheck含む)通過、並列/ログ退避/失敗伝播をローカルでモック検証済 Co-authored-by: kojira <kojira@users.noreply.github.com>
- Node版userOGP(canvas+chartjs-node-canvas)相当の合成をGoネイティブで再現 - base.png(2500x1313)をOGP標準の1200x630へ縮小・最適化して go:embed 同梱 (実行時のGCSダウンロード往復を廃止。出力面積も約1/4に) - Noto Sans JP を同梱し日本語テキストを描画 - レーダーチャートをGoで実装(Chart.js設定に対応、単体テスト可能に分離) - 出力は WebP(可逆VP8L, 純Go nativewebp)。PNGより小さい - QC用: サンプルOGPをPNG/WebPで書き出すテスト(OGP_QC_OUT)を追加 Co-authored-by: kojira <kojira@users.noreply.github.com>
- screen_nameでFirestore検索→status(version判定つき)を解決→OGP合成→GCSへアップロード→リダイレクト
- キャッシュオブジェクトは ogps/{user}.webp (Content-Type: image/webp)
- 表示名/アイコンはFirestore(display_name/image_path)から取得しGitHub API往復を排除
- 既存パッケージ内ヘルパ(findUserByScreenName/loadActivities/statusCacheIsCurrent/getStorageClient等)を再利用
Co-authored-by: kojira <kojira@users.noreply.github.com>
- og:image/twitter:image の生成先を userOGP(Node) から userOGPGo(gen2) に変更 - WebP/固定サイズをクローラに伝えるため og:image:type=image/webp と :width=1200 / :height=630 を注入 - テストを新URL・注入メタに合わせて更新 Co-authored-by: kojira <kojira@users.noreply.github.com>
- userOGPGo(HTTP, 512Mi/60s, STORAGE_BUCKET_NAME)を並列デプロイ群に追加 - ビルド後にサンプルOGP(PNG/WebP)をレンダリングしupload-artifactで確認可能に Co-authored-by: kojira <kojira@users.noreply.github.com>
目視確認用の参照画像。TestWriteQCArtifacts で再生成できる。 Co-authored-by: kojira <kojira@users.noreply.github.com>
- 元画像は上下左右の暗い背景余白が広く、そのまま縮小するとカード=文字が小さく可読性が低い - 同梱baseを元の2500x1313に戻し、レンダリングは元解像度で実施 - 合成後にカード塗り(黒/青)の実測bbox+小マージンをOG比(1200:630)でクロップし、 最後に一度だけ1200x630へ高品質縮小(CatmullRom)。再拡大による画質劣化を回避 - 出力寸法は1200x630のまま(og:image:width/heightと一致) - QCサンプルをクロップ版に更新 Co-authored-by: kojira <kojira@users.noreply.github.com>
- backend.md: 「見送った機能」節をuserOGPGo移植節に置換、ogpRewrite節/status_version節を更新 - functions-go/README.md: userogp.go/ogpimageをディレクトリ構成とデプロイ節に追記 - internal/ogpimage/README.md: パッケージ設計(描画パイプライン/座標保守/QC/依存)を新規作成 Co-authored-by: kojira <kojira@users.noreply.github.com>
- 左方向へ伸びる軸(すばやさ/しゅびりょく)のラベルを右寄せにし、中心(レーダー)への被りを解消 (右側/上下は従来どおり中央寄せ。右寄せにするとカード外へはみ出すため変更しない) - グリッド同心リングを15→8本に削減し蜘蛛の巣状の見づらさを改善 - QCサンプルを更新 Co-authored-by: kojira <kojira@users.noreply.github.com>
- すばやさが左に寄りすぎて青パネルに重なっていたため、右寄せ量を控えめにして 青パネルとレーダーの中間に収める - QCサンプル更新 Co-authored-by: kojira <kojira@users.noreply.github.com>
- 青パネル(ステータス行)の右端は実測 design x≈1292、幅668と狭く、せんとうりょく等が 大きい値だと右端をはみ出す - statsX を 680→640 に左寄せし、上限幅ガード(statsMaxWidth=650)を追加。 せんとうりょく:99999(645px)は縮小なしで収まり、6桁など上限超過値のみ横縮小する - QCサンプルを大きい値(ポイント12345/せんとうりょく99999)に更新し収まりを検証 Co-authored-by: kojira <kojira@users.noreply.github.com>
feat: userOGPをGoへ移植(WebP出力)+Go関数デプロイの並列化
kojira
marked this pull request as ready for review
July 1, 2026 17:25
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
mainにマージ済みの変更をenv/devへ伝播する(デプロイは env/dev への push でdev-deploy.ymlが実行される)。前回の #131 マージ以降に入った以下をまとめて反映する。含まれる変更(main が env/dev より12コミット先行)
userOGPの Go移植 (userOGPGo):internal/ogpimageによる画像合成をGoネイティブ化(base/フォントをgo:embed同梱、レーダーチャート自前描画)。表示名/アイコンはFirestoreから取得しGitHub API往復を排除。nativewebp(可逆VP8L)。ogpRewriteGoの og:image/twitter:image をuserOGPGoに張替え、og:image:type=image/webpと寸法メタを注入。userOGPGo(512Mi/60s) 追加。CIに OGPサンプルQCアーティファクト生成を追加。確認
gofmt/go build/go vet/go test ./.../actionlint: グリーン(main上で確認済み)。dev-deploy.ymlが全Go関数(userOGPGo含む)を並列デプロイし、ogp-sampleアーティファクトで生成OGPを確認可能。後続