Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Phoenix1.6で標準搭載されたLiveViewに入門してみよう
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
mokichi
October 26, 2021
Programming
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Phoenix1.6で標準搭載されたLiveViewに入門してみよう
mokichi
October 26, 2021
More Decks by mokichi
See All by mokichi
Elixir以外の言語もよく使うエンジニアが考える、Phoenix LiveViewの使いどころ
mokichi
2
660
Rubyistから見たElixir
mokichi
1
540
Phoenix LiveViewをプロダクション利用してみた所感
mokichi
3
1k
Ractorが出たからRubyの並列処理をおさらいする
mokichi
0
880
WebエンジニアのためのKubernetesサクッと入門
mokichi
1
230
未来予知できない凡人の生存戦略
mokichi
0
120
Other Decks in Programming
See All in Programming
JRuby: Past, Present, and Future
headius
0
230
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
110
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.9k
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
160
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
120
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.5k
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
5.8k
AWSに止められる覚悟してますか?
morizo_1984
2
520
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
510
Workers Cache を知る
syumai
0
350
Jetpack Compose Mechanisms
skydoves
2
650
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Product Roadmaps are Hard
iamctodd
55
13k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
730
Design in an AI World
tapps
1
350
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
Optimizing for Happiness
mojombo
378
71k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Transcript
Phoenix1.6で標準搭載された LiveViewに入門してみよう 2021/10/26 @fukuoka.ex#47 株式会社スマートアルゴリズム 齋藤 和也
自己紹介 名前:齋藤 和也 HN:mokichi 年齢:33歳 居住:東京都 出身:福岡県 🍜 Twitter:@mokichi_s12m 株式会社スマートアルゴリズム 代表取締役 複数社で技術顧問を務める
クラウドインフラを含むサーバサイド開発やDevOps が得意 ここ数年は Elixir/Phoenix にお熱 🔥
LiveView はいいぞ
LiveViewとは • (ほぼ)JSを書かずにElixirだけでSPAを開発できる • 宣言的な記述ができたり、機能やUIをコンポーネントに分割できたりと、現 在主流になっているSPA開発の開発体験とかなり近い • 加えて、データの更新を各クライアントにリアルタイムに反映するといっ た、一般的に面倒なことがとても簡単にできる •
「Twitterクローンを15分で作る」という動画が話題に https://www.youtube.com/watch?v=MZvmYaFkNJI
Reactとかじゃダメなの? 🤔
現在主流になっているSPA開発の問題点 • フロントエンドとバックエンドの両方を高いクオリティで対応できるエンジニアは稀 で、分業化が進みがち • ある機能を実装する際に、バックエンド側を対応しないとフロントエンド側が進めら れず、ボトルネックが発生する(逆のパターンもあり) 教えてくれ、PM。俺たちはあと何本APIを作ればいい? • OGPの設定が必要な場合のSSRや、JSのバンドルサイズが大きくなることによる
Core Web Vitalsの各指標の悪化に頭を悩ませがち
LiveViewの特徴 • (ほぼ)JSを書かずにElixirだけでSPAを開発できる ◦ フロントエンドとバックエンドがデータをやりとりするためのAPIを 何本も作らなくていい(つまりAPIドキュメントも作らなくていい) • すべてのクライアントとWebSocketでつながっている ◦ 状態をサーバに保持し、状態の更新をクライアントに反映させている
◦ ブラウザのCookieやLocalStorageのことを気にしなくていい ◦ サーバの負荷は当然増えるが、昨今はリソース調達が容易なため さほど大きな問題ではない
ちょっと技術的にトガりすぎでは 😅 と思った方、そんなことはありません!
他の言語にも同じような仕組みのものがある • Ruby ◦ Ruby on Rails ── Hotwire ※Rails以外でも使える
• PHP ◦ Laravel ── LiveWire • Python ◦ Django ── Reactor など、非常に注目されている技術
とにもかくにも触ってみよう
マイクロポスト投稿アプリを作ってみる 匿名で短い文章を投稿できるアプリをLiveViewで • Elixir ~> 1.12.0 ◦ Phoenix ~> 1.6.0
◦ LiveView ~> 0.16.0 • Erlang ~> 24.0 • PostgreSQL >= 9.0 https://github.com/mokichi/microposts-sample-phoenix-liveview
プロジェクト作成 → Scaffold → 起動 $ mix archive.install hex phx_new
$ mix phx.new sample cd $_ でプロジェクトのディレクトリに移動 $ mix phx.gen.live Microposts Micropost microposts content lib/sample_web/router.ex にルーティングの設定を追加 mix ecto.migrate でDBマイグレーション $ mix phx.server http://localhost:4000/microposts
PubSubを使い、更新をリアルタイムに反映 1. Phoenix.PubSub.subscribe/2 でトピックを購読 トピックに配信されたメッセージを受け取れるようにする 2. Phoenix.PubSub.broadcast/3 でブロードキャスト データの更新を同じトピックを購読している全プロセスに送信 3.
handle_info/2 で送信されたメッセージを処理
2つのクライアントでデータを更新しあうデモ https://youtu.be/5yK1MrEjaME
LiveView はいいぞ