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
Yukiya Nakagawa
May 14, 2025
Technology
2
860
経済メディア編集部の実務に小さく刺さる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
Remix × Cloudflare Pages × Sentry 奮闘記 / remix-pages-sentry
nkzn
1
1.6k
Cloudflareスタックで月間1200万UUの経済メディアにアバター画像生成サービスを作る / Cloudflare Developer Platform for AI avatar service
nkzn
7
3.6k
5分で流し読むCloudflare Developer Platform
nkzn
3
370
次世代Web認証「パスキー」 / mo-zatsudan-passkey
nkzn
32
18k
パスキーについて今日時点の僕が知っていること / What I Know About Passkeys as of Today
nkzn
8
2.9k
青い空の歩き方 / Flying in the bluesky
nkzn
1
320
SPAの歴史とRemix SPAモードという到達点 / the SPA's chronicle reaches to remix
nkzn
48
18k
RemixでWeb標準を学んだ1年間 / First year with Remix
nkzn
23
8.7k
純粋培養フルリモート開発組織のワーク&ライフスタイル / monicle full remote style
nkzn
5
4.4k
Other Decks in Technology
See All in Technology
Enhancing SaaS Product Reliability and Release Velocity through Optimized Testing Approach
ropqa
1
260
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
Delegating the chores of authenticating users to Keycloak
ahus1
0
180
対話型音声AIアプリケーションの信頼性向上の取り組み
ivry_presentationmaterials
3
780
microCMSではじめるAIライティング
himaratsu
0
130
ABEMAの本番環境負荷試験への挑戦
mk2taiga
5
1k
LLM時代の検索
shibuiwilliam
2
660
Delta airlines®️ USA Contact Numbers: Complete 2025 Support Guide
airtravelguide
0
360
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
130k
AIでテストプロセス自動化に挑戦する
sakatakazunori
1
130
shake-upを科学する
rsakata
7
950
CDK Toolkit Libraryにおけるテストの考え方
smt7174
1
510
Featured
See All Featured
Making Projects Easy
brettharned
116
6.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
The Cult of Friendly URLs
andyhume
79
6.5k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Embracing the Ebb and Flow
colly
86
4.7k
Navigating Team Friction
lara
187
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
How to train your dragon (web standard)
notwaldorf
96
6.1k
The Language of Interfaces
destraynor
158
25k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
RailsConf 2023
tenderlove
30
1.1k
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