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
Vue.js + socket.io で簡単に実装できるリアルタイム更新処理 / Coral ...
Search
Takamichi Aso
October 16, 2019
Programming
2.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vue.js + socket.io で簡単に実装できるリアルタイム更新処理 / Coral Developers Night #1
Takamichi Aso
October 16, 2019
More Decks by Takamichi Aso
See All by Takamichi Aso
開発環境から本番環境までのDocker活用方法 / Fintech Engineer 20210604
unk2072
0
210
WordPressが技術負債になった話 / Coral Developers 20210525
unk2072
3
3.7k
インフラエンジニア歴2ヶ月の私がCDKを使ってECS(Fargate)環境を構築する話 / Coral Developers Night AWS LT
unk2072
0
760
健康第一の話 / Coral Developers Meeting #1
unk2072
0
200
Other Decks in Programming
See All in Programming
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
430
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
Jetpack Compose Mechanisms
skydoves
3
820
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
590
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
Designing for Timeless Needs
cassininazir
1
530
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
The Curious Case for Waylosing
cassininazir
1
570
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Navigating Team Friction
lara
192
16k
Are puppies a ranking factor?
jonoalderson
2
4.1k
The SEO Collaboration Effect
kristinabergwall1
1
590
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
Transcript
Credit Engine, Inc. 2019/10/16 Vue.js + socket.io で 簡単に実装できる リアルタイム更新処理
麻生隆道 1
Credit Engine, Inc. 2019/10/16 2 今日話す内容(言いたいこと) • 便利なライブラリを使って素早く開発しよう •
ムチャ振りされたらチャンスですよ! • 後々のためにしっかりと設計しよう
Credit Engine, Inc. 2019/10/16 3 自己紹介 クレジットエンジン株式会社 麻生 隆道(あそう たかみち)
たぶんフルスタックエンジニアやってます 趣味はプログラミングで、 最近はFlutter(iOS/Androidのアプリを同時に かけるやつ)にハマってます! 前職は12年ほど組み込みエンジニアやってま したー
Credit Engine, Inc. 2019/10/16 • 日々メモリ破壊と戦う人たち • ログ・メモリダンプとお友達
• デバッグに強い(たまにログ無しでデバッグとかも) モダンなライブラリとか使えない環境でツラい デバッグスキルだけが高くなっていったような気が・・・ 4 組み込みエンジニアってどんな人たち?(偏見含む)
Credit Engine, Inc. 2019/10/16 Credit Engine の紹介 5 “かす”をかえる。“かりる”をかえる。 ミッション
中小事業者が融資を受ける際には 様々な紙ベースの書類が必要であった オンラインで完結するので簡単に使え 空いた時間で本来の事業に集中できる
Credit Engine, Inc. 2019/10/16 Credit Engine Platformの紹介 6 ミッション実現のためLENDYで培ってきたノウハウを金融機関などに提供 三菱UFJ銀行
『Biz LENDING』 みずほ銀行 『みずほスマートビジネスローン』
Credit Engine, Inc. 2019/10/16 Credit Engine Platformをバージョンアップ 提供先に合わせて簡単にカスタマイズし 素早くサービスを提供できるように構成を見直した 7
Credit Engine, Inc. 2019/10/16 アプリケーション構成 8 サーバ エンド ユーザー画面 オペレーター
画面
Credit Engine, Inc. 2019/10/16 複数ユーザーで編集するんでロック機能がほしいよね! ロック機能なんでリアルタイム更新でよろしくー やったことないけどやっちゃいますかー! (マジか!ムチャ振りが来たよ!でもチャンスだしやるかー)
9 9 要求もいろいろとでてきますよね・・・
Credit Engine, Inc. 2019/10/16 ロック機構の話 オペレーターが編集しているときに、他のオペレーターに編集中の通知を出してさわれ ないようにする機能です!(あたりまえ?) 10 自分が編集中 他人が編集中
Credit Engine, Inc. 2019/10/16 どうやって実現するか? 最初は Django Channels で WebSocketやろうかと思ったけど
socket.ioの方が以下のようなことができて良さげでした! • WebSocket と LongPolling を自動で切り替えてくれるので WebSocketに制限のある環境でも使える • 再接続などもライブラリ側でやってくれるので簡単に使える 11
Credit Engine, Inc. 2019/10/16 ちなみにsocket.ioの表記はどれが正しいだろう? 12 ロゴ: トップページ表記: ドキュメント: これが一番多そう?
Credit Engine, Inc. 2019/10/16 まずやったこと 公式ページの Get Started を見て徐に git
pull してサンプルを動かしてみる 約1時間位でサンプル動作確認&ドキュメント内容を理解する 13
Credit Engine, Inc. 2019/10/16 あとは実装するだけ(こんな感じです) クライアント側(16行) 14 var app =
require('express')() var http = require('http').Server(app) var io = require('socket.io')(http, { path: '/pathto/socket.io' }) var axios = require('axios') const SERVER_PORT = process.env.SERVER_PORT io.on('connection', socket => { socket.on('event', msg => { console.log('event: ' + msg) io.emit('event', msg) }) }) http.listen(SERVER_PORT, () => { console.log('Socket.IO on *:' + SERVER_PORT) }) import io from 'socket.io-client' var socket = io({ path: '/pathto/socket.io', query: { token: token } }) socket.on('event', message => { let event = JSON.parse(message) switch (event.name) { case 'lock': // ロック時の処理 break case 'unlock': // ロック開放時の処理 break } }) function sendEvent (payload) { socket.emit('event', JSON.stringify(payload)) } サーバ側(14行) ※socket.io部分以外は省略しました
Credit Engine, Inc. 2019/10/16 APIサーバと分かれてしまうので認証がない・・・ 認証用のミドルウェアをサーバ側に追加 15 const AUTH_URL =
process.env.AUTH_URL io.use((socket, next) => { let token = socket.handshake.query.token; console.log('token: ' + token) axios.post(AUTH_URL, { token: token }, { withCredentials: true }).then(() => { console.log('Authentication success') next() }).catch(() => { console.log('Authentication error') next(new Error('Authentication error')) }) }) API サーバ オペレーター画 面 socket.io
Credit Engine, Inc. 2019/10/16 エンドポイントの場所を変えたいなー サンプルだとポートは指定できるが、エンドポ イントがルートに置かれてしまう ドキュメントを読んだら、path
指定ができそう だったので、やってみたらできた(先程のコード には反映済み) https://socket.io/docs/server-api/ 16
Credit Engine, Inc. 2019/10/16 socket.ioが死んでも大丈夫 17 API サーバ オペレーター画 面
socket.io socket.io のサーバは通知の機能だけに専念 API サーバ オペレーター画 面 socket.io 止まってもロック機能自体は問題なく動く
Credit Engine, Inc. 2019/10/16 アトミックデザインなのでUIの実装も簡単でした ロック表示の部分がテンプレートになっていて実装して元のデザインに追加するだけ リスト表示の作業者アバターも実装しています 18
Credit Engine, Inc. 2019/10/16 リアルタイム更新よりもムズいロック解除 実は実装した後に地獄が待っていた! 19 ロック解除のパターン • 更新ボタン
• キャンセルボタン • ページ遷移 • ログアウト • ウィンドウクローズ
Credit Engine, Inc. 2019/10/16 これから実装する機能 チャット機能 → マジでがんばる! 各種通知 → 仕組みはできたので、仕様が決まれば簡単 Multi-AZ対応 → socket.io-redisを使えば良いらしい
20
Credit Engine, Inc. 2019/10/16 21 今日話した内容(言いたかったこと) • 便利なライブラリを使って素早く開発しよう •
ムチャ振りされたらチャンスですよ! • 後々のためにしっかりと設計しよう
Credit Engine, Inc. 2019/10/16 フロントエンドエンジニア募集中です 私達と一緒にオンラインレンディングのスタンダードとなるような仕 組みを作ってくれる、フロントエンドエンジニアを募集しています! 22
Credit Engine, Inc. 2019/10/16 Vue.jsもくもく会やります フロントエンドエンジニア同士が、ゆるく繋がれる場を用意したいなー と思いまして、Vue.jsもくもく会をやってみることになりました! 経験がないので至らない部分も ありますがぜひご参加くださいー 23
https://cucchaberiengine.connpass.com/event/151502/
Credit Engine, Inc. 2019/10/16 appendix : Flutterやろうぜ! FlutterはGoogleが作ったモバイルアプリケーションフレームワーク で、iOS/Androidのアプリを同時に作れます! 最近はWebアプリも作れるらしい。
言語はDart、ライブラリは基本的に公式のものが多い。 24
Credit Engine, Inc. 2019/10/16 ここが良いよね!Flutter • ホットリロードが便利でめちゃ早い • ネイティブにコンパイルした後の動作が早い(らしい) •
UIもDartで書くのでプログラマ的には書きやすい Dart言語はスクリプト言語としても動くのでホットリロードもできる が、コンパイル言語の側面もあるのでネイティブにすると早いらしい 25
Credit Engine, Inc. 2019/10/16 こんなの作ってます 先程紹介したCredit Engine Platformのアプリ版をひっそりと作っ ています 26