Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
経済メディア編集部の実務に小さく刺さるAI / small-ai-with-editorial
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yukiya Nakagawa
May 14, 2025
Technology
3
1.1k
経済メディア編集部の実務に小さく刺さるAI / small-ai-with-editorial
AI Developer Meetup in Tokyo #1 でしゃべりました
https://ai-developer-meetup.connpass.com/event/353962/
Yukiya Nakagawa
May 14, 2025
Tweet
Share
More Decks by Yukiya Nakagawa
See All by Yukiya Nakagawa
AIがコードを書いてくれるなら、新米エンジニアは何をする? / komekaigi2025
nkzn
26
19k
JS Temporalを学ぶ人のための JSR-310入門 / jsr310-for-temporal
nkzn
0
67
Cloudflare Workers で作る専門性特化型 MCP サーバー / workers-specialist-mcp
nkzn
1
160
Remix × Cloudflare Pages × Sentry 奮闘記 / remix-pages-sentry
nkzn
1
2.3k
Cloudflareスタックで月間1200万UUの経済メディアにアバター画像生成サービスを作る / Cloudflare Developer Platform for AI avatar service
nkzn
7
4.5k
5分で流し読むCloudflare Developer Platform
nkzn
3
450
次世代Web認証「パスキー」 / mo-zatsudan-passkey
nkzn
32
18k
パスキーについて今日時点の僕が知っていること / What I Know About Passkeys as of Today
nkzn
8
3k
青い空の歩き方 / Flying in the bluesky
nkzn
1
370
Other Decks in Technology
See All in Technology
Agentic Codingの実践とチームで導入するための工夫
lycorptech_jp
PRO
0
140
GitHub Copilot CLI 現状確認会議(2026年2月のすがた)
torumakabe
4
590
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
1.5k
プロダクト開発の品質を守るAIコードレビュー:事例に見る導入ポイント
moongift
PRO
1
400
欲しいを叶える個人開発の進め方 / How to Run an Indie Project That Brings Your Ideas to Life
endohizumi
0
330
既存のログ監視システムをクラウドっぽく実装してみた
tjmtrhs
0
190
失敗できる意思決定とソフトウェアとの正しい歩き方_-_変化と向き合う選択肢/ Designing for Reversible Decisions
soudai
PRO
7
480
バイブコーディングで作ったものを紹介
tatsuya1970
0
170
Open Table Formatにおけるストレージ抽象化の比較
lycorptech_jp
PRO
1
200
Agent Payments Protocolで実装するAIエージェント間取引
tokio007
0
160
俺の失敗を乗り越えろ!メーカーの開発現場での失敗談と乗り越え方 ~ゆるゆるチームリーダー編~
spiddle
0
290
Three-Legged OAuth in AgentCore Gateway
hironobuiga
2
190
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
130
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
240
How GitHub (no longer) Works
holman
316
140k
Designing for humans not robots
tammielis
254
26k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
190
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
610
Done Done
chrislema
186
16k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
The Spectacular Lies of Maps
axbom
PRO
1
570
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
ラッコキーワード サービス紹介資料
rakko
1
2.4M
The agentic SEO stack - context over prompts
schlessera
0
670
Transcript
経済メディア編集部の実務に小さく刺さるAI AI Developer Meetup in Tokyo #1 Yukiya Nakagawa, 2025.5.14
1
自己紹介 なかがわゆきや / なかざん(@Nkzn) 株式会社モニクルで「くらしとお金の社会課題を解 決する」各種事業のインハウス開発に加担 近年はメディア事業のモニクルリサーチ社のCTOに なって経済メディア「LIMO」周辺のお手伝い 技術書典開発チームもやってます 普段使ってるAIツール:Cursor
(チャット欄に住んで ます) 好きなモデル2025-05:Gemini 2.5 Pro 2
会社・事業紹介 3
昨年から事業にAIを取り入れ始めていました https://charatsukuai.limo.media https://speakerdeck.com/nkzn/cloudflare-developer-platform-for-ai-avatar-service 4
今日のお話 実務の課題をAIで解決できないか検討した話 プロダクト開発をAIと二人三脚してみた話 5
実務の課題をAIで解決できないか検討した話 6
現場のペイン アプリメインの会社ではないので、ITの主な役割は業務効率化 プロダクト開発がコードを書いて終わりではなくデリバリーが重要なのと同様 に、Webメディアも記事を書いて終わりではなく、届けるための作業がある その一つが「関連記事の選定」 これからリリースする記事と関係ありそうな既存記事を見つけてくるだけでも一 仕事 現場からの「これAIとかで何とかならないですか」からプロジェクトがスタート 7
こういうやつを決めたい 8
AIのみでなんとかするのは流石に難しかった 雑にAIに最近の記事のCSVファイルを食べさせてみてから、雑に訊いてみた なかなか安定しない プロンプトの工夫で精度を少し上げることはできたものの、ハルシネーションを 排除しきれず 9
AIのことは一旦忘れよう 初心に戻り、素直な技術選定をしてみよう RAG……でもいいけど、今回の用途だとtoo muchっぽい テキストの類似性検索として考えてみれば、シンプルなベクトルDBでいいのでは 10
ベクトルDBといえば よっしゃCloudflare Vectorizeを使ってみよう 昨夏の開発合宿でVectrizeを試していた同僚 もいた → EmbeddingにはCloudflare Workers AIを使う ので、結局AIのお世話にはなった
@cf/baai/bge-m3 を使いました (多言語対応してるやつがあんまりなか ったのでほぼ消去法) 11
こんな感じで使える(保存) const embeddingsResponse = await c.env.AI.run('@cf/baai/bge-m3', { text: [ '
タイトルA\n メタデータA-1\n メタデータA-2', ' タイトルB\n メタデータB-1\n メタデータB-2', ... ], }) let vectors: VectorizeVector[] = []; let id = 1; embeddingsResponse.data.forEach((vector) => { // id とデータを紐づけて保存する(メタデータを添えて取り出したりもできる) vectors.push({ id: `${id}`, values: vector }); id++; }); let inserted = await env.VECTORIZE.upsert(vectors); 12
こんな感じで使える(検索) const embeddingsResponse = await c.env.AI.run('@cf/baai/bge-m3', { text: [' それっぽいクエリ'],
}) let matches = await env.VECTORIZE.query(queryVector.data[0], { topK: 1, }); // matches[0].id => 保存時に決めたID // matches[0].score => クエリとの類似度 // matches[0].metadata => 保存時に添えたメタデータ 13
ざっくり作ってみた 思ったより上手く行った ハンバーガーの話題で探すとパフェの記事が出てきたり(食べ物繋がり) 猫の話題で探すと犬の記事が出てきたり Webアプリ版とSlack版を作って試験運用中 少しだけWebアプリ版のほうが評判がいい チャットで自由な入力を受け付けるとユーザー側が考えることが増えるので、目 的別に最適なUIを提供したほうが受け入れられやすいのかも 14
プロダクト開発をAIと二人三脚してみた話 15
AIと一緒にコードを書く プロトタイピングを早めに終わらせるために、AI Agentに大半のコードを書いても らうことにした とはいえClineのように投げっぱなしというわけではなく、CursorのAgentモードに 随時指示を出す形 ある程度はコンテキストを広く見てほしかったので、Gemini 2.5 Pro固定で実施 16
開発プロセス 1. 解決すべき課題と、大まかに想定しているアーキテクチャを書いたドキュメント を作る(ここは大半が手書き) 2. アーキテクト役でAIに参加してもらう 具体的なアーキテクチャ案を考えてもらう 作業手順を考えてもらう(動作確認のタイミングを多めに盛り込んでもらう のがオススメ) 3.
最初のドキュメントに↑を追記する(ここでコンテキストが永続化される) 4. 手順をひとつずつ実施してもらいつつ、動作確認して細かい動作で気になる点が ないかを確認する 5. 実情に合わせて方針を変えつつ、変えた方針をドキュメントに反映していく 6. できあがり 17
ふりかえり 反省点 アーキテクチャ設計時にそれなりに思慮深いモデルを使っておかないと、本実装 に入ってからめちゃくちゃ迷走する Claude 3.5時代に一度やろうとして頓挫したのが、Claude 3.7やGemini 2.5の時代 になったらあまりにもサクサク進んだのでビビった よかった点
ドキュメントをしっかり整備したり、動作確認のマイルストーンをしっかり挟んで いくことで、頓挫しづらくなった 意図的に考えてもらうスコープが狭くなるようにマイルストーンの調整をしたおか げか、AI側があまり暴走しなかったように見えた 18
ご清聴ありがとうございました We are hiring! お金の診断・相談サービスと経済メディアの両輪で、くらしとお金の社会課題を 解決するモニクルで一緒に働きませんか? フロントエンドもバックエンドもTypeScriptでどっちもやるぜ!という方!どうで すか! https://recruit.monicle.co.jp/ 19