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
3
990
経済メディア編集部の実務に小さく刺さる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
25
18k
JS Temporalを学ぶ人のための JSR-310入門 / jsr310-for-temporal
nkzn
0
43
Cloudflare Workers で作る専門性特化型 MCP サーバー / workers-specialist-mcp
nkzn
1
130
Remix × Cloudflare Pages × Sentry 奮闘記 / remix-pages-sentry
nkzn
1
2k
Cloudflareスタックで月間1200万UUの経済メディアにアバター画像生成サービスを作る / Cloudflare Developer Platform for AI avatar service
nkzn
7
4.1k
5分で流し読むCloudflare Developer Platform
nkzn
3
420
次世代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
350
Other Decks in Technology
See All in Technology
内部品質・フロー効率・コミュニケーションコストを悪化させ現場を苦しめかねない16の組織設計アンチパターン[超簡易版] / 16 Organization Design Anti-Patterns for Software Development
mtx2s
2
110
Boxを“使われる場”にする統制と自動化の仕組み
demaecan
0
220
龍昌餃子で理解するWebサーバーの並行処理モデル - 東葛.dev #9
kozy4324
1
140
Snowflakeとdbtで加速する 「TVCMデータで価値を生む組織」への進化論 / Evolving TVCM Data Value in TELECY with Snowflake and dbt
carta_engineering
1
180
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
0
720
開発者から見たLLMの進化 202511
ny7760
1
150
Data & AIの未来とLakeHouse
ishikawa_satoru
0
620
Copilotの精度を上げる!カスタムプロンプト入門.pdf
ismk
10
2.7k
DMARCは導入したんだけど・・・現場のつぶやき 〜 BIMI?何それ美味しいの?
hirachan
1
170
AWS IAM Identity Centerによる権限設定をグラフ構造で可視化+グラフRAGへの挑戦
ykimi
2
520
ピープルウエア x スタートアップ
operando
3
3.7k
Design and implementation of "Markdown to Google Slides" / phpconfuk 2025
k1low
1
350
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8k
Facilitating Awesome Meetings
lara
57
6.6k
The Language of Interfaces
destraynor
162
25k
Agile that works and the tools we love
rasmusluckow
331
21k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
The Pragmatic Product Professional
lauravandoore
36
7k
GraphQLとの向き合い方2022年版
quramy
49
14k
YesSQL, Process and Tooling at Scale
rocio
174
15k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
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