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
RemoteFunctionを使ったコロケーション
Search
Matsumoto Kazutaka
October 24, 2025
Technology
480
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RemoteFunctionを使ったコロケーション
Matsumoto Kazutaka
October 24, 2025
More Decks by Matsumoto Kazutaka
See All by Matsumoto Kazutaka
個のパフォーマンスを上げるためのAIを使った取り組み
mkazutaka
0
240
GPTsより精度の高いRAGシステムの構築
mkazutaka
26
12k
LLMと連携したブログ書くエディタを作ってみた
mkazutaka
2
490
社内情報検索システムで用いられるRAGの4つの実装方法
mkazutaka
14
9.9k
ChatGPTを使ったSlackbotの実装いろいろ紹介
mkazutaka
2
2.8k
Development of Mercari's web in 2019
mkazutaka
0
1.1k
20181215 php-srcで遊ぶよ
mkazutaka
2
1.3k
メルカリ Backendエンジニアの日常 ~Backend Engineer Drink Meetup #1~
mkazutaka
0
2.2k
Other Decks in Technology
See All in Technology
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
1
310
KiCAD講習会②
tutcreators
0
110
AI Driven AI Governance
pict3
0
350
穢れた技術選定について
watany
4
430
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
3
3.7k
貴方はどのエンジニアリングを磨くのか
hatyibei
0
130
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
140
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
180
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
130
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
13
2k
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
120
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
210
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Technical Leadership for Architectural Decision Making
baasie
3
440
Designing for humans not robots
tammielis
254
26k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
Discover your Explorer Soul
emna__ayadi
2
1.2k
The Language of Interfaces
destraynor
162
27k
Code Reviewing Like a Champion
maltzj
528
40k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
310
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Transcript
1 1 Copyright© Explaza, inc. All rights reserved. RemoteFunctionを使ったコロケーション
Svelte Japan Offline Meetup #5 株式会社エクスプラザ 松本 和高
2 Copyright© Explaza, inc. All rights reserved. 自己紹介 松本和高(まつもとかずたか)
Twitter: _mkazutaka Github: mkazutaka 2018年株式会社メルカリに入社。バックエンドエンジニアとして、 リアーキテクチャやマイクロサービスを使った開発などに携わる。 その後、フリーランス等を経て、株式会社エクスプラザに入社。 2024年8月CTOに就任、生成AI Partner、Markといった 新規サービスの立ち上げ等を行っている。趣味、仮想通貨。 執筆・登壇 ▪ PHPWebのTemplateEngineをWebAssemblyに置き換えてみる ▪ 0からRust/Wasmを使ってブラウザで動くバーコードリーダを作ってみた話 ▪ GPT-4 Turboにドキュメントのチャンク分けを任せてみる ▪ 問い合わせメールをChatGPTで解析してSpreadsheetとNotionに転記する方法の紹介 ▪ 人形町生成AI忘年会「 LLMと連携したブログ書くエディタを作ってみた 」 ▪ LLM Application Meetup vol.4: 「 社内情報検索システムで用いられるRAGの4つの実装方法 」 ▪ LLM Application Meetup vol.5: 「 GPTsより精度の高いRAGシステムの構築 」 ▪ Software Design 2024年8月号: 第1特集「LangChainではじめるLLMアプリ開発入門 ▪ CTOがエンジニアにコーディング禁止というお触れを出した
3 Copyright© Explaza, inc. All rights reserved. 目次 • 会社紹介
• Formの実装 ◦ Superformsを使った実装 ◦ RemoteFunctionをつかった実装 • リモートファンクションをつかったフォームの実装例 • AIによる自動化
4 Copyright© Explaza, inc. All rights reserved. 会社紹介
5 Copyright© EXPLAZA Inc. All rights reserved. 00 01 Company
生成AIに関する 多種多様な問い合わせをいただいており、 お客様のニーズに合わせた 最適なソリューションを提案可能。 国内最大級AIメディアのAISmileyでも ”PRODUCT AWARD”を2冠受賞。 豊富な支援実績 一部取引先 生成AIをつかったプロダクトを作っております
6 Copyright© Explaza, inc. All rights reserved. Formの実装どうやってますか?
7 Copyright© Explaza, inc. All rights reserved. Form実装の悩み •
APIでリクエストするよりかは、formタグを使いたい • Superformsを使っているがコードが複雑になる ◦ 特に一つのページに複数のフォームがあるときにコード量が多くなる ◦ てなるとフォーム部分をコンポーネント化したいが... ▪ UI側はコンポーネント化できるがサーバ側の処理は、+page.server.ts にあり 見通しが悪い
8 Copyright© Explaza, inc. All rights reserved. それRemoteFunctionで解決できますよ
9 Copyright© Explaza, inc. All rights reserved. Remote Functionとは
• 2025年08月に発表 • あらゆるコンポーネントからサーバサイド上の関数を呼ぶことができる ◦ 今まで: +page.svelteでデータを取得、コンポーネントにバケツリレー ◦ Remote Functionによって コンポーネント単位で必要な情報をサーバサイドから取得可能 ▪ これはコロケーション だ!!
10 Copyright© Explaza, inc. All rights reserved. コロケーション(co-location) •
コロケーション: co-location ◦ 広義な意味だと ▪ 関連するリソース同士を近くに置く、という考え方 ▪ 例えば、テストファイルとテスト対象ファイルは同じディレクトリに 置きましょうみたいな形 • React + GraphQLには、Fragment Colocationという考え方もある ◦ => 次ページで紹介
11 Copyright© Explaza, inc. All rights reserved. Fragment Colocation
• GraphQL ◦ クライアントが「必要なデータだけ」をクエリとしてリクエストし、それらのみを取得できる • GraphQLのFragment ◦ クエリの一部を再利用可能にしたもの ◦ 様々なクエリからFragmentを利用することができる • Fragment Colocation: React Relayなら ◦ GraphQLのFragment機能をつかってつかってコンポーネント単位で 要求する情報を制御できる
12 Copyright© Explaza, inc. All rights reserved. Fragment Colocationの実装例 1/2
• 子コンポーネントの実装 • 子コンポーネントファイル内で Fragmentとコンポーネントを定義 参考: https://zenn.dev/gemcook/articles/2c8796761f2d02 Friend.tsx
13 Copyright© Explaza, inc. All rights reserved. Fragment Colocationの実装例 2/2
• 親コンポーネントで子コンポーネントの Fragmentを使う • 親コンポーネントは子コンポーネントが 何を必要としているかは知らなくて良い ◦ 理想的だ 参考: https://zenn.dev/gemcook/articles/2c8796761f2d02 SomePage.tsx
14 Copyright© Explaza, inc. All rights reserved. これがRemote Functionでできる
15 Copyright© Explaza, inc. All rights reserved. Form実装を比較する
16 Copyright© Explaza, inc. All rights reserved. Superformsを使った実装 Dialogの例
17 Copyright© Explaza, inc. All rights reserved. Superformsを使った実装例 / Dialogコンポーネントの定義
• shadcn-svelteのDialogコンポーネントを使っている DialogExampleBySuperform.svelteのScript部 DialogExampleBySuperform.svelteのBody部
18 Copyright© Explaza, inc. All rights reserved. Superformsを使った実装例 / 親コンポーネント
• +page.server.tsからform値を渡す ◦ 処理の流れ +page.server.ts => +page.svelte => DialogExampleBySuperform.svelte => +page.server.ts +page.svelte +page.server.ts
19 Copyright© Explaza, inc. All rights reserved. Superformsを使った実装の問題点 •
+page.svelteからform valueを引き回さないといけない • +page.svelteに紐づくフォームが複数になった場合に処理が複雑になる ◦ フォームごとの命名 / 引き回す処理 ◦ フォームが増えるたびに、+page.svelteのactionの項目が増える ▪ +page.svelteのactionとform コンポーネントが暗黙的に紐づく 参照: https://claude.com/pricing#api
20 Copyright© Explaza, inc. All rights reserved. RemoteFunctionを使った実装 Dialogの例
21 Copyright© Explaza, inc. All rights reserved. Remote Functionを使った実装
• shadcn-svelteのDialogコンポーネントを使っている DialogExampleByRemotefunction.svelteのScript部 DialogExampleByRemotefunction.svelteのBody部
22 Copyright© Explaza, inc. All rights reserved. Remote Functionを使った実装
DialogExampleByRemotefunction.remote.ts • form関数をつかって関数をエクスポート ◦ 処理の流れ: Component.svelte => Component.remote.ts
23 Copyright© Explaza, inc. All rights reserved. RemoteFunctionを使った実装 •
Formの変更に+page.svelteが絡まない ◦ form valueを引き回さなくて良い • フォームが複数になってもコンポーネント単位で境界づけられている 参照: https://claude.com/pricing#api
24 Copyright© Explaza, inc. All rights reserved. 表で比較
25 Copyright© Explaza, inc. All rights reserved. 表にまとめる 参照:
https://claude.com/pricing#api Superformsによる実装 RemoteFunctionによる実装 +page.svelteの変更 必要 不要 +page.server.tsの変更 必要 不要 +xxx.remote.tsの実装 不要 必要
26 Copyright© Explaza, inc. All rights reserved. AIで活用する
27 Copyright© Explaza, inc. All rights reserved. ClaudeCodeのAgent Skills(Claude Skills)でスキル化する
• Agent Skills ◦ ClaudeもしくはClaude Codeの機能を拡張する機能の一つ ▪ Claudeが参照するディレクトリの中に SKILL.mdを置き、それを起点に スクリプトや複数のマークダウンを一つのディレクトリに格納する ▪ それぞれもまとめりをモジュールとして扱えることができ、配布や利用ができる • Agent Skillsには、Agent Skillsを作るためのAgent Skillがある ◦ skill creator: https://github.com/anthropics/skills/tree/main/skill-creator 参照: https://claude.com/pricing#api
28 Copyright© Explaza, inc. All rights reserved. skill-creatorを使ってスキルを作成する •
プロンプトはシンプル ◦ いくつかの選択項目をセレクトするとスキルを作成してくれる 参照: https://claude.com/pricing#api
29 Copyright© Explaza, inc. All rights reserved. skill-creatorを使ってできたスキル: dialog-creator 1/2
SKILL.md assets/dialog-component.template.svelte
30 Copyright© Explaza, inc. All rights reserved. skill-creatorを使ってできたスキル 2/2
assets/remote-function.template.ts
31 Copyright© Explaza, inc. All rights reserved. dialog-creatorを実行する •
プロンプトはシンプル
32 Copyright© Explaza, inc. All rights reserved. 結果 • テンプレートを与えているのでいい感じにできる
CompanyRegistration.remote.ts CompanyRegistration.svelte
33 Copyright© Explaza, inc. All rights reserved. まとめ • Dialogの実装をRemoteFunctionでコロケーション化したよ
◦ コード量が少なくなったよ ◦ コンポーネントと関係ないところの編集が減ったよ • Claudeのskill-creatorでスキル化したよ ◦ コロケーションによって変更範囲が特定のディレクトリに収まるので AIでも書きやすい 参照: https://claude.com/pricing#api
34 Copyright© Explaza, inc. All rights reserved. 宣伝
35 Copyright© Explaza, inc. All rights reserved. 宣伝: エクスプラザでは絶賛採用中です! •
AIつかったプロダクト開発をしています ◦ 自社SaaS / クライアントワーク ◦ クライアントワークは自由に技術選定して開発できる自由度の高いもの ◦ 気になった方は、ぜひカジュアル面談 / このあとの懇親会でぜひお声がけください! ▪ ホームページもSveltekitつかっているよ: explaza.jp
36 Copyright© Explaza, inc. All rights reserved. ありがとうございました