すべての記事
Gemini Files API の孤児ファイルを棚卸しする — 多アプリ運用の照合と自動クリーンアップ設計
Files API にアップロードしたファイルは48時間で静かに消えます。多アプリ運用で発生する孤児ファイルとクォータ消費を、自前DBとの照合と定期クリーンアップで統制する本番設計を、壁紙アプリ運営の実装メモとしてまとめました。
Gemini 3 Pro と進めた Firebase の CocoaPods → SPM 移行、3週間の所感
個人開発の iOS アプリで Firebase の依存管理を CocoaPods から Swift Package Manager へ移したときの記録です。Gemini 3 Pro をどこで頼り、どこで頼らなかったか、3週間運用して見えた所感を残します。
Gemini 生成物の来歴を残す — 再現と監査のためのプロベナンス設計
数ヶ月後に「この出力はどのモデルとプロンプトで作ったのか」が追えなくなる前に。Gemini の生成物へ来歴メタデータを刻み、品質調査とモデル移行を再現可能にする設計をまとめます。
Bun と Hono で Gemini API の軽量バックエンドを組む — 個人開発の小さなツールを自分の手に取り戻す実装メモ
Node と Express で書いた Gemini バックエンドが、依存関係とビルド時間で重くなっていませんか。Bun と Hono に載せ替えて、ストリーミング・レート制限・コスト上限・セルフホストまでを一つの軽い実行環境にまとめた実装と判断軸を、現場で踏んだ落とし穴とあわせて整理します。
Firebase AI Logic で iOS から Gemini を呼ぶと 403 になる原因と対処
Firebase AI Logic(旧 Vertex AI in Firebase)で iOS アプリから Gemini を呼び出すと 403 PERMISSION_DENIED が返る問題。App Check の強制適用・API 未有効化・Blaze 未設定の3つの原因を切り分けて解決する手順を、実機検証の経験から整理します。
App Store のプロモーションテキストを Gemini で週次更新した1ヶ月の所感
App Store のプロモーションテキスト(説明文の上に出る170文字)を、Gemini API で週次に書き直す小さな運用を1ヶ月続けた実体験を整理します。審査不要で差し替えられる枠をどう使い回したか、AI に任せた所と人間が必ず触る所、効きの有無を淡々と共有します。
Gemini APIの設定ドリフトを止める — モデルID・安全設定をコード化して環境差を検出する
同じコードなのにアプリごとに挙動が違う原因の多くは、モデルIDや安全設定の環境差です。設定をコード化し、本番の実効設定をスナップショットして差分を検出する設計を、実装レベルで解説します。
Gemini 2.5/3 で本文が空なのに finish_reason が MAX_TOKENS になるときの原因と対処
プロンプトはほんの数行なのに、maxOutputTokens を絞った gemini-2.5-flash が空文字を返し finish_reason が MAX_TOKENS になる — 犯人は思考トークンです。原因と3通りの対処を実装コードで整理します。
アプリ説明文のローカライズで Gemini 2.5 Flash と Flash-Lite を使い分けた所感
壁紙アプリの説明文を多言語へ展開する作業で、Gemini 2.5 Flash と Flash-Lite を同じ素材に通して比べた運用ログです。コスト差、崩れる場面、ロケールごとの使い分けの落とし所まで、現場でつまずいた点を淡々と記録しました。
Gemini Embedding の次元を 3072 から 768 へ切り詰める — ベクトルDBのコストとレイテンシを下げる Matryoshka 設計
gemini-embedding-001 は 3072 次元の埋め込みを返しますが、Matryoshka 表現のおかげで前方だけを切り出しても精度がほとんど落ちません。次元を 768 へ削ってベクトルDBのストレージとレイテンシを下げる設計を、再正規化の落とし穴と粗密二段検索のコード付きで組み立てます。
Gemini を組み込んだ機能の採算を、機能単位で見る設計 — 残す・直す・畳むを判断するために
Gemini API のコストはアカウント単位では見えても、機能単位の採算までは見えてきません。リクエストに機能タグを付けてコスト台帳を作り、AdMob や課金の収益シグナルと突き合わせて貢献利益を算出し、残す・直す・畳むを判断する設計を、実際に運用しているコードとともにまとめました。
Gemini APIで「Unsupported MIME type」エラーが出るときの原因と対処
画像や音声をGemini APIに渡したときに発生する『Unsupported MIME type』エラーを、MIMEタイプの綴り間違い・octet-stream問題・非対応フォーマットの3つの観点から切り分けて、確実に動くコードで解決します。