Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Phoenix LiveViewで結婚式用Twitterを作った話
Slide 2
Slide 2 text
自己紹介 古賀 祥造(こが しょうぞう) 株式会社ベガコーポレーション fukuoka.ex ビルダー Elixir/PhoenixでAPIを日々書いてます : @koga1020_
Slide 3
Slide 3 text
fukuoka.exから来ました! もくもく会は毎月開催、リモート参加OK! ↓↓Let’s join us!!↓↓ https://fukuokaex.connpass.com
Slide 4
Slide 4 text
Phoenix LiveViewで結婚式用Twitterを作った話
Slide 5
Slide 5 text
Phoenix LiveView?
Slide 6
Slide 6 text
なにそれ?おいしいの?✋
Slide 7
Slide 7 text
Phoenix LiveViewとは Phoenixアプリに追加して使うライブラリ WebSocketによる双方向通信を利用して、clientの状態をPhoenix側で管理できる 画面の動的な書き換えをサーバーサイドレンダリングによって行うことができる
Slide 8
Slide 8 text
こんな感じでユーザーのクリックに応じて数値を変えたり、
Slide 9
Slide 9 text
リアルタイムバリデーション / 入力欄の追加など。
Slide 10
Slide 10 text
実はこのスライドもLiveView製
Slide 11
Slide 11 text
もうすこし流れを説明
Slide 12
Slide 12 text
ユーザーのClickイベントをサーバーで受け取ったり、
Slide 13
Slide 13 text
サーバーから時刻情報を送りつけたり出来る!
Slide 14
Slide 14 text
このやりとりがWebsocketによって双方向で繋がるイメージ
Slide 15
Slide 15 text
こんなのに向いている リッチなUI 通知, progress bar, dashboard, widgets, etc. 動的なフォーム リアルタイムバリデーション, サジェスト, multi step, etc. 他ユーザーへの通知(PubSub) ref: https://elixirforum.com/t/phoenix‑liveview‑is‑now‑live/20889/13
Slide 16
Slide 16 text
これらのロジックを APIを作らずに、 JavaScript不要でElixirコードでロジックを記述して、 サッと実現できるのが良き
Slide 17
Slide 17 text
こんなものを作った
Slide 18
Slide 18 text
友人の結婚式用 Twitter風Webアプリ
Slide 19
Slide 19 text
いいね, 削除機能
Slide 20
Slide 20 text
ハッシュタグも実現
Slide 21
Slide 21 text
技術要素 CSSフレームワーク: bulma ユーザーのボタンclickでclassの付け外し の出し分けなど 画像アップロード先: S3 を利用 デプロイ: gigalixir LiveViewもしっかりデプロイ可能
Slide 22
Slide 22 text
どうだった? 実工数4日程度でサクサクと作れた Elixirワンソースでサクサクと書けてgood Vue.jsの経験があり、それとかなり近いフィーリングで書けてgood 投稿→他ユーザー画面へ即反映 がサクッと作れた これはPhoenixの旨味
Slide 23
Slide 23 text
気づき➀ ロジックをすべてElixirに寄せれるのはとても良い 例. 投稿本文の文字列で 文字列 をハッシュタグとしてlinkに変換したい →ElixirのViewモジュールに関数生やして書ける Validationのロジックもフロントに持たなくてよくなる バリデーションの仕様変更に強くなる
Slide 24
Slide 24 text
気づき➁ ルーティングが異なる画面(例. 一覧画面と詳細画面)をLiveViewで切り替えるのは微妙そ う? あくまで1Viewファイルがリッチになるイメージで使うと良さそう 一覧ページから詳細ページへの遷移をLiveViewで書く→ 一覧ページ内での検索のサジェスト、登録画面内でのリアルタイムバリデーション→
Slide 25
Slide 25 text
気づき➂ ユーザーの入力に対して遅延(=debounce)がないとつらい 属性が今後増える(はず) joseがissue立てている! 今後に期待!
Slide 26
Slide 26 text
まとめ 要件次第ではLiveViewはかなり実用的 気になった方はExampleリポジトリがあるので、そこを触ってみましょう https://github.com/chrismccord/phoenix_live_view_example 面白いユースケースがあれば、ぜひ共有しましょう
Slide 27
Slide 27 text
Thank you!!