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
Phoenix LiveViewで結婚式用Twitterを作った話
Search
shozo koga
June 01, 2019
Programming
3.1k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Phoenix LiveViewで結婚式用Twitterを作った話
2019/6/1に開催されたErlang & Elixir Fest 2019で行ったLT資料です
https://elixir-fest.jp/
shozo koga
June 01, 2019
More Decks by shozo koga
See All by shozo koga
Looker StudioとSnowflakeでプロダクトチームのダッシュボードを作る取り組み
koga1020
0
850
20230511 Storybookを軸としたコンポーネント管理と自動テスト戦略
koga1020
0
850
20230311 最近のElixir動向まとめ
koga1020
0
910
【Elixir】Dataloaderを導入してGraphQLのN+1問題を解消する
koga1020
1
530
20221108 WEB+DB PRESS Vol.131「はじめてのElixir」特集記念イベント
koga1020
1
270
fukuoka.exの思い出話とこれからを考える
koga1020
1
250
Ectoの全体感をまとめてみる
koga1020
0
580
Phoenix.PubSubの紹介と活用を考える
koga1020
0
570
EDI#1 発足LT会
koga1020
0
83
Other Decks in Programming
See All in Programming
数百円から始めるRuby電子工作
tarosay
0
130
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
650
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
0
150
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
240
メールのエイリアス機能を履き違えない
isshinfunada
0
220
仕様駆動開発の消費期限
watany
6
1.1k
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
120
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
390
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
200
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.4k
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1.1k
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
620
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
200
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
The SEO identity crisis: Don't let AI make you average
varn
0
520
Ruling the World: When Life Gets Gamed
codingconduct
0
290
A designer walks into a library…
pauljervisheath
211
24k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
sira's awesome portfolio website redesign presentation
elsirapls
0
320
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Transcript
Phoenix LiveViewで結婚式用Twitterを作った話
自己紹介 古賀 祥造(こが しょうぞう) 株式会社ベガコーポレーション fukuoka.ex ビルダー Elixir/PhoenixでAPIを日々書いてます : @koga1020_
fukuoka.exから来ました! もくもく会は毎月開催、リモート参加OK! ↓↓Let’s join us!!↓↓ https://fukuokaex.connpass.com
Phoenix LiveViewで結婚式用Twitterを作った話
Phoenix LiveView?
なにそれ?おいしいの?✋
Phoenix LiveViewとは Phoenixアプリに追加して使うライブラリ WebSocketによる双方向通信を利用して、clientの状態をPhoenix側で管理できる 画面の動的な書き換えをサーバーサイドレンダリングによって行うことができる
こんな感じでユーザーのクリックに応じて数値を変えたり、
リアルタイムバリデーション / 入力欄の追加など。
実はこのスライドもLiveView製
もうすこし流れを説明
ユーザーのClickイベントをサーバーで受け取ったり、
サーバーから時刻情報を送りつけたり出来る!
このやりとりがWebsocketによって双方向で繋がるイメージ
こんなのに向いている リッチなUI 通知, progress bar, dashboard, widgets, etc. 動的なフォーム リアルタイムバリデーション,
サジェスト, multi step, etc. 他ユーザーへの通知(PubSub) ref: https://elixirforum.com/t/phoenix‑liveview‑is‑now‑live/20889/13
これらのロジックを APIを作らずに、 JavaScript不要でElixirコードでロジックを記述して、 サッと実現できるのが良き
こんなものを作った
友人の結婚式用 Twitter風Webアプリ
いいね, 削除機能
ハッシュタグも実現
技術要素 CSSフレームワーク: bulma ユーザーのボタンclickでclassの付け外し の出し分けなど 画像アップロード先: S3 を利用 デプロイ: gigalixir
LiveViewもしっかりデプロイ可能
どうだった? 実工数4日程度でサクサクと作れた Elixirワンソースでサクサクと書けてgood Vue.jsの経験があり、それとかなり近いフィーリングで書けてgood 投稿→他ユーザー画面へ即反映 がサクッと作れた これはPhoenixの旨味
気づき➀ ロジックをすべてElixirに寄せれるのはとても良い 例. 投稿本文の文字列で 文字列 をハッシュタグとしてlinkに変換したい →ElixirのViewモジュールに関数生やして書ける Validationのロジックもフロントに持たなくてよくなる バリデーションの仕様変更に強くなる
気づき➁ ルーティングが異なる画面(例. 一覧画面と詳細画面)をLiveViewで切り替えるのは微妙そ う? あくまで1Viewファイルがリッチになるイメージで使うと良さそう 一覧ページから詳細ページへの遷移をLiveViewで書く→ 一覧ページ内での検索のサジェスト、登録画面内でのリアルタイムバリデーション→
気づき➂ ユーザーの入力に対して遅延(=debounce)がないとつらい 属性が今後増える(はず) joseがissue立てている! 今後に期待!
まとめ 要件次第ではLiveViewはかなり実用的 気になった方はExampleリポジトリがあるので、そこを触ってみましょう https://github.com/chrismccord/phoenix_live_view_example 面白いユースケースがあれば、ぜひ共有しましょう
Thank you!!