Skip to content

promote: main → env/dev(userOGPのGo移植/WebP/余白クロップ + Go関数デプロイ並列化)#133

Merged
kojira merged 12 commits into
env/devfrom
main
Jul 1, 2026
Merged

promote: main → env/dev(userOGPのGo移植/WebP/余白クロップ + Go関数デプロイ並列化)#133
kojira merged 12 commits into
env/devfrom
main

Conversation

@kojira

@kojira kojira commented Jul 1, 2026

Copy link
Copy Markdown
Member

概要

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往復を排除。
  • 余白クロップ: 元解像度でレンダ→カード領域をOG比(1200:630)でクロップ→一度だけ高品質縮小。文字が大きく可読性向上・画質劣化なし。
  • WebP出力: 純Go nativewebp(可逆VP8L)。ogpRewriteGo の og:image/twitter:image を userOGPGo に張替え、og:image:type=image/webp と寸法メタを注入。
  • ステータス表示の可読性/はみ出し対策: 左ラベル(すばやさ等)のレーダー被り解消、グリッド15→8本、ステータス行を左寄せ+上限幅ガード(99999でもはみ出さない)。
  • デプロイ並列化: Go Cloud Run functions を直列→並列化 + userOGPGo(512Mi/60s) 追加。CIに OGPサンプルQCアーティファクト生成を追加。

確認

  • gofmt / go build / go vet / go test ./... / actionlint: グリーン(main上で確認済み)。
  • env/dev へマージ後、dev-deploy.yml が全Go関数(userOGPGo含む)を並列デプロイし、ogp-sample アーティファクトで生成OGPを確認可能。

後続

Open in Web Open in Cursor 

cursoragent and others added 12 commits July 1, 2026 15:54
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
kojira marked this pull request as ready for review July 1, 2026 17:25
@kojira
kojira merged commit 4f7f330 into env/dev Jul 1, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants