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
Decoupled System with Turbo Frame
Search
wtnabe
January 20, 2024
Programming
1
120
Decoupled System with Turbo Frame
Kanazawa.rb meetup 137で話したTurbo Frameを使ってHeadless CMSとは異なる形で実現するDecoupledな仕組みについて
wtnabe
January 20, 2024
Tweet
Share
More Decks by wtnabe
See All by wtnabe
Effective Jekyll
wtnabe
0
58
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
25
Ruby de Wasm
wtnabe
0
52
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
44
join-kanazawarb-or-7years-passed-since-it-was-borned
wtnabe
0
790
let-me-edit-with-editor
wtnabe
0
340
google-photos-and-storage-and-rclone
wtnabe
0
460
one case of how to begin vuejs
wtnabe
2
470
Kanazawa.rb meetup #56 Coderetreat Intro
wtnabe
0
450
Other Decks in Programming
See All in Programming
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
210
あなたとJIT, 今すぐアセンブ ル
sisshiki1969
0
440
Vibe coding コードレビュー
kinopeee
0
420
GUI操作LLMの最新動向: UI-TARSと関連論文紹介
kfujikawa
0
610
リッチエディターを安全に開発・運用するために
unachang113
1
360
Claude Code と OpenAI o3 で メタデータ情報を作る
laket
0
110
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
590
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
3
790
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1k
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
230
『リコリス・リコイル』に学ぶ!! 〜キャリア戦略における計画的偶発性理論と変わる勇気の重要性〜
wanko_it
1
260
「リーダーは意思決定する人」って本当?~ 学びを現場で活かす、リーダー4ヶ月目の試行錯誤 ~
marina1017
0
150
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
12k
GraphQLとの向き合い方2022年版
quramy
49
14k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
Visualization
eitanlees
146
16k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.7k
The Invisible Side of Design
smashingmag
301
51k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
A Tale of Four Properties
chriscoyier
160
23k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
47
9.6k
Site-Speed That Sticks
csswizardry
10
760
Documentation Writing (for coders)
carmenintech
73
5k
Transcript
Decoupled System with Turbo Frame wtnabe Kanazawa.rb meetup #137 2024-01-20
(Sat)
目次 Headless CMS とは Headless CMS の導入はちょっとむずい 発想を逆にしてみる 〜 Headless
Rails ? 〜 構成例
まとめ Rails (いわゆるWeb MVC )とCMS で得意領域が違う decoupled という考え方は採用しつつ、実現方法はHeadless CMS だ
けとは限らない より自由度の高い仕組み(汎用Web MVC )をglue に、それぞれの 得意を活かす rb な文脈なのでRails で進めるけどいわゆるWeb MVC なら通用する
Headless CMS とは
その昔 10 年ほど前にJamstack やHeadless CMS という言葉が流行った 2013 年 Contentful 創業
2014 年 Netlify 創業
伝統的な CMS コンテンツもデザインも全部一つの仕組みで実現する メリット WordPress など超メジャーな存在のおかげで制作依頼しやすい 管理画面もなんとなく触ったことがある デメリット 例えばWordPress は安全性や互換性の維持がそこそこ大変
力のあるホスティング業者に協力してほしくなる WordPress を魔改造してアップデートできなくなるとかあるある
Headless CMS の考え方 コンテンツ管理とフロントの画面はユーザーも利用目的も違う → decoupled が重要なのでは? ↓ コンテンツ管理だけを担う仕組みがHeadless CMS
フロントエンドの進化をCMS から独立して進めることができる 静的に出力すればパフォーマンス改善の選択肢も増える CMS がユーザーアクセスから分離されることで安全性も向上
Headless CMS の例 サービスもOSS もある Contentful / CloudCannon / Prismic
JekyllAdmin / NetlifyCMS microCMS / Kuroco collections
構成としてはこう Headless CMS サイト コンテンツ ユーザー ここに作り込みを⾏う 静的サイトで事前ビルド 動的サイトで動的に取得 概ねJSON
関係者を置くとこう Headless CMS サイト コンテンツ ユーザー コンテンツ担当 デザイナー エンジニア 概ねJSON
? デザインと コーディング JSON ⾊付け CMS の理解
あれ、システムの境界と担当領域の境界 合ってなくない?
Headless CMS の導入はちょっとむずい
必要な準備 Headless CMS そのものの理解 コンテンツの定義 サイト上でJSON を取得してビルドする仕組み
困りごと 作り込んでみないと使い勝手のいいCMS に仕上がるか分かりにくい 書きながらデザイン込みのプレビューはやりにくい 伝統的なCMS ならコンテンツ定義はコンテンツ担当とデザイナーで 完結できるのにHeadless CMS はエンジニアがいないと困りがち
Headless CMS が向いているケース コンテンツはコンテンツのみに集中、デザインは度外視 数千ページとか明らかに伝統的CMS の性能的に厳しいボリューム エンジニア兼デザイナ兼ライターが伝統的CMS を持ちたくない 逆に向いているケースにマッチしない場合はコスパが悪いのでは?
とは言え 機能的にCMS で十分なものをフルRails 開発もコスパが悪い Web 制作の領域なので制作の人の活躍の最大化を目指すべき
そこで 逆に Headless CMS の位置に Rails を置いてみる
表に⾒える サイト 検索など システム HTML HTML 断⽚ Rails ユーザー Turbo
Frame 必要なパーツのみ Turbo Frame で必要なコンテンツを取得(JSON→DOM 変換不要) セキュリティや保守はホスティングの力量に期待
表に⾒える サイト 検索など システム HTML HTML 断⽚ Rails ユーザー デザイナー
エンジニア コンテンツ担当 Turbo Frame 必要なパーツのみ
担当領域が素直
フロントエンドで気にすること 全体の構成、デザイン Turbo Frame 記法 所定の位置に正しく所定のコードを貼ること デザイン(CSS ) <turbo-frame id="xxx"
src="https://xxx.xxx/xxxx"> </turbo-frame>
バックエンドで気にすること 提供するHTML 断片に必要なデータ 提供するHTML 断片 Turbo Frame に対するケア
構成例
サイト Netlify (Jekyll など) Heroku (Rails) ユーザー 基本はこっち Netlify +
Heroku インフラ管理ほぼ不要 ユーザーは(Heroku 一本よ り)低レイテンシで快適 monorepo で開発でき、内製 なら柔軟な対応が可能 Jekyll のページの増減、改修 はRails よりカジュアル wtnabe/example-rails-and- jekyll-monorepo
サイト CMS Rails ユーザー 基本はこっち CMS + Rails 更新は更新担当だけで可能 CMS
は制作会社で、仕組み は内製のパターンも可 Rails 側は前ページと一緒
サイト CMS Rails SaaS ユーザー コンテンツ担当 エンジニア 何らかの 業務担当 基本はこっち
CMS + Rails + SaaS glue としての Rails & Turbo Frame
まとめ Rails (いわゆるWeb MVC )とCMS で得意領域が違う decoupled という考え方を踏襲しつつ、実現方法はHeadless CMS だ
けとは限らない より自由度の高い仕組み(汎用Web MVC )をglue に、それぞれの 得意を活かす