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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.1k
Claude Codeとハーネスについて考えてみる
oikon48
18
9.4k
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
3
840
“それは自分の仕事じゃない"を越えて行け
yuukiyo
0
150
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
1
4.5k
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
0
110
Road to SRE NEXTの今までとこれから
hiroyaonoe
0
310
ADDF - ループエンジニアリングするフレームワークを作ったら/I Didn't Set Out to Build Loop Engineering, But ADDF Did
fruitriin
0
120
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
120
Claude Code 珍プレー好プレー
shinyasaita
0
330
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
5.3k
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
13
2k
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
230
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Technical Leadership for Architectural Decision Making
baasie
3
440
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
890
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Navigating Weather and Climate Data
rabernat
0
310
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
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. ありがとうございました