2026年7月31日、homepage-v2.0.7をリリースしました。このバージョンでは、特にAI記事生成・修正機能において、基盤技術の大きな転換を図っています。これまで利用していたGenkitを廃止し、@google/generative-aiの直接利用に移行することで、開発効率、パフォーマンス、そしてセキュリティ面で劇的な改善を実現しました。
Genkit廃止と@google/generative-ai直利用への移行
AI記事生成・修正機能(src/ai/)の根幹をなす技術スタックにおいて、従来のGenkit (genkit / @genkit-ai/google-genai / @genkit-ai/next) を廃止し、より軽量で直接的な@google/generative-aiの利用へと切り替えました。
背景と課題
Genkitは、Firebase Admin、google-gax、OpenTelemetryなど、数百にも及ぶ推移的な依存関係を伴い、これが継続的なDependabotの自動マージの滞留や、npm auditにおけるHighレベルの脆弱性(7〜10件)の原因となっていました。個人メディア規模でモデルがGemini Flash固定という状況において、抽象化のメリットよりも、肥大化した依存関係とそれに伴うセキュリティコストが上回ると判断しました。
主な変更内容
- パッケージの整理: Genkit関連の3パッケージを削除し、
@google/generative-ai(^0.22.0)を追加。 - クライアントの刷新:
src/ai/client.tsを新規作成し、APIキーを引数で受け取るcreateGemini(apiKey)ファクトリを導入。これにより、動的なimport()やprocess.envの汚染が不要になりました。 - 記事生成・修正ロジックの改善:
src/ai/generate-article.tsとsrc/ai/revise-article.tsを新規作成。Handlebarsテンプレートからテンプレートリテラルへの移行、responseMimeType: 'application/json'の利用、そしてZodバリデーションを導入しました。 - クリーンなAPI連携:
src/app/api/admin/articles/generate/route.tsおよびrevise/route.tsから、動的なimport()とprocess.env.GEMINI_API_KEYの汚染を除去しました。 - 画像入力の効率化: 画像入力は
fileData.fileUriで公開URLを直接指定する方式に変更。これにより、Genkitの{{media url=...}}に相当する機能を、fetchやBase64変換なしで実現できるようになりました。
劇的な効果
この移行により、開発環境と運用環境の両面で顕著な改善が見られました。
node_modulesパッケージ数: 1,446 → 751(-695パッケージの削減)npm audit --omit=dev --audit-level=high: 7〜10件のHIGH脆弱性 → 0件- 開発の簡素化: 動的import不要、
process.env汚染不要となり、コードの可読性とメンテナンス性が向上しました。 - 画像読み取り機能の安定化: 記事生成・修正における画像読み取り機能も、localhostでの実機テストで正常動作を確認しています。
AIによる画像内容の読み取りテスト
今回のAI機能の改修では、記事生成・修正プロセスにおける画像情報の正確な読み取り能力も重要な評価項目でした。以下に示す2つの画像は、AIが複雑な技術的比較情報を適切に解析し、コンテンツ生成に活用できることを示す動作テストの例です。
最初の画像は、さまざまなマルチエージェントフレームワークの比較表です。開発元、主対応言語、実測版、そして特徴といった多岐にわたる情報が含まれており、AIがこれらの詳細を正確に把握し、記事の文脈に沿って要約できることが確認されました。

次に、特定のAIエージェントフレームワーク(Mastra, PydanticAI, Strands Agents)に焦点を当てた詳細な比較表です。主対応言語、主な設計思想、開発元、ライセンス、主なターゲット層といった専門的な情報を、AIが正しく識別し、構造化されたデータとして扱えることが実証されました。

これらのテスト結果は、今回の改修により、AIがより高度な視覚情報を解釈し、高品質な記事コンテンツ生成に貢献できるようになったことを示しています。
依存関係の徹底的な整理
今回の移行に伴い、依存関係も大幅に整理しました。
package.json:overridesセクションからGenkit由来の依存(OpenTelemetry / gRPC / esbuild等6件)を削除。.github/dependabot.yml: Genkitグループ定義を削除し、不要な依存関係の更新を停止。.nsprc: Genkit由来の脆弱性許容エントリ(brace-expansion)を削除し、セキュリティ基準を強化。
これらの変更により、プロジェクトのフットプリントが大幅に削減され、よりクリーンで安全な開発環境が実現しました。
最後に
homepage-v2.0.7は、AIを活用したコンテンツ生成の未来に向けた重要な一歩です。パフォーマンスとセキュリティの向上はもとより、開発体験の改善にも大きく貢献しています。今後も継続的に機能改善を進めてまいります。