Submit Search
Upload
クライアント側でつかまえて
•
Download as PPTX, PDF
•
3 likes
•
2,517 views
Kaora Shibacaki
Follow
http://connpass.com/event/607/ の例外とロギング勉強会のLTスライドです。 しゃべった部分を加筆しましたん
Read less
Read more
Report
Share
Report
Share
1 of 46
Download now
Recommended
Ruby初級者向けレッスン 55回 ─── 例外
Ruby初級者向けレッスン 55回 ─── 例外
higaki
dRuby and Security
dRuby and Security
Kazuhiro Nishiyama
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
Taisuke Yamada
Casperjsのインストール
Casperjsのインストール
Kohei Misu
Ruby初級者向けレッスン 45回 ─── 例外
Ruby初級者向けレッスン 45回 ─── 例外
higaki
initramfsについて
initramfsについて
Kazuhiro Nishiyama
super_unkoをスーパーキレイにした
super_unkoをスーパーキレイにした
jiro4989
Windowsでも使えるシェル
Windowsでも使えるシェル
Tetsuya Hasegawa
Recommended
Ruby初級者向けレッスン 55回 ─── 例外
Ruby初級者向けレッスン 55回 ─── 例外
higaki
dRuby and Security
dRuby and Security
Kazuhiro Nishiyama
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
Taisuke Yamada
Casperjsのインストール
Casperjsのインストール
Kohei Misu
Ruby初級者向けレッスン 45回 ─── 例外
Ruby初級者向けレッスン 45回 ─── 例外
higaki
initramfsについて
initramfsについて
Kazuhiro Nishiyama
super_unkoをスーパーキレイにした
super_unkoをスーパーキレイにした
jiro4989
Windowsでも使えるシェル
Windowsでも使えるシェル
Tetsuya Hasegawa
Memory sanitizer
Memory sanitizer
MITSUNARI Shigeo
蜘蛛の巣から抜け出すには?
蜘蛛の巣から抜け出すには?
Hayato Tominaga
Javascript basic code
Javascript basic code
Shinsuke Matsuda
初級者向けレッスン 51回 ─── 例外
初級者向けレッスン 51回 ─── 例外
higaki
Kernel fcache-bug
Kernel fcache-bug
MITSUNARI Shigeo
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
コンテナイメージの脆弱性スキャンについて
コンテナイメージの脆弱性スキャンについて
YASUKAZU NAGATOMI
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
icchy
今から始めるzsh
今から始めるzsh
Hideaki Miyake
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
やってみた -URL外形監視-
やってみた -URL外形監視-
Joe_noh
例外設計における大罪
例外設計における大罪
Takuto Wada
Debug Hacks - 第4回つくらぐ勉強会
Debug Hacks - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
Tomohiro Kumagai
100915 HTML5とか勉強会発表資料
100915 HTML5とか勉強会発表資料
Yuki Naotori
Getting started with Handoff
Getting started with Handoff
Yuichi Yoshida
「その他」のUI Framework 3選
「その他」のUI Framework 3選
Shumpei Shiraishi
VCSクエスト
VCSクエスト
joker1007
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
Takahiro Fujiwara
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
Kazuhiro Hara
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
アシアル株式会社
Agile Shibuya github_enterprise
Agile Shibuya github_enterprise
Koichiro Ohba
More Related Content
What's hot
Memory sanitizer
Memory sanitizer
MITSUNARI Shigeo
蜘蛛の巣から抜け出すには?
蜘蛛の巣から抜け出すには?
Hayato Tominaga
Javascript basic code
Javascript basic code
Shinsuke Matsuda
初級者向けレッスン 51回 ─── 例外
初級者向けレッスン 51回 ─── 例外
higaki
Kernel fcache-bug
Kernel fcache-bug
MITSUNARI Shigeo
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
コンテナイメージの脆弱性スキャンについて
コンテナイメージの脆弱性スキャンについて
YASUKAZU NAGATOMI
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
icchy
今から始めるzsh
今から始めるzsh
Hideaki Miyake
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
やってみた -URL外形監視-
やってみた -URL外形監視-
Joe_noh
What's hot
(11)
Memory sanitizer
Memory sanitizer
蜘蛛の巣から抜け出すには?
蜘蛛の巣から抜け出すには?
Javascript basic code
Javascript basic code
初級者向けレッスン 51回 ─── 例外
初級者向けレッスン 51回 ─── 例外
Kernel fcache-bug
Kernel fcache-bug
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
コンテナイメージの脆弱性スキャンについて
コンテナイメージの脆弱性スキャンについて
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
今から始めるzsh
今から始めるzsh
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
やってみた -URL外形監視-
やってみた -URL外形監視-
Viewers also liked
例外設計における大罪
例外設計における大罪
Takuto Wada
Debug Hacks - 第4回つくらぐ勉強会
Debug Hacks - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
Tomohiro Kumagai
100915 HTML5とか勉強会発表資料
100915 HTML5とか勉強会発表資料
Yuki Naotori
Getting started with Handoff
Getting started with Handoff
Yuichi Yoshida
「その他」のUI Framework 3選
「その他」のUI Framework 3選
Shumpei Shiraishi
VCSクエスト
VCSクエスト
joker1007
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
Takahiro Fujiwara
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
Kazuhiro Hara
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
アシアル株式会社
Agile Shibuya github_enterprise
Agile Shibuya github_enterprise
Koichiro Ohba
Rails Development That Doesn't Hurt
Rails Development That Doesn't Hurt
Akira Matsuda
Javaでマサカリ投げてみた
Javaでマサカリ投げてみた
YujiSoftware
Uiテスト@yidev
Uiテスト@yidev
Yusuke Kita
Developing better debug_components
Developing better debug_components
Tomoaki Imai
Github of project
Github of project
Ito Kunihiko
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Reimi Kuramochi Chiba
RESTfulとは
RESTfulとは
星影 月夜
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
Viewers also liked
(20)
例外設計における大罪
例外設計における大罪
Debug Hacks - 第4回つくらぐ勉強会
Debug Hacks - 第4回つくらぐ勉強会
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
100915 HTML5とか勉強会発表資料
100915 HTML5とか勉強会発表資料
Getting started with Handoff
Getting started with Handoff
「その他」のUI Framework 3選
「その他」のUI Framework 3選
VCSクエスト
VCSクエスト
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
Agile Shibuya github_enterprise
Agile Shibuya github_enterprise
Rails Development That Doesn't Hurt
Rails Development That Doesn't Hurt
Javaでマサカリ投げてみた
Javaでマサカリ投げてみた
Uiテスト@yidev
Uiテスト@yidev
Developing better debug_components
Developing better debug_components
Github of project
Github of project
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
RESTfulとは
RESTfulとは
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
クライアント側でつかまえて
1.
ライ麦畑で捕まえて The Catcher in
the Rye Jerome David Salinger
2.
アント側 クライ麦畑で捕まえて The
Catcher in the Rye Client Jerome David Salinger Kaoru Shibasaki
3.
自己紹介
4.
自己紹介 • とある動画配信サイトでFlashクライアント作っ てます
Kaoru Shibasaki Twitter ID : crexista
5.
NICE CATCH してますか
6.
try {
var hoge:Hoge = new Hoge; hoge.fuga(); ======以下数百行 ===== } catch(e:Error) { // Nice Catch (^ ー *) b }
7.
try {
var hoge:Hoge = new Hoge; hoge.fuga(); ======以下数百行 ===== } catch(e:Error) { // Nice Catch (^ ー *) b }
8.
本当のNICEなキャッチを提案
9.
Necessary Information for
Customer Enjoyment ユーザーが楽しむための情報を キャッチすること
10.
NICE じゃない例
11.
12.
例外のメッセージをそのまま表示するのみ
何が起きたか分からない!
13.
14.
アドレスとかどうすればいいのよ!
てか怖いよ!
15.
16.
普通の人はプロトコルとか分かりません 分からないのにOK押したくない !
17.
『[ネットワーク]で別の名前を指定してください』
だけで良い OK ではなくて 『コントロールパネルを開く』に 押されたらネットワークの設定画面を開いてあげ
18.
原因よりも方法を先に、簡潔に
19.
良いNICE キャッチするにはどうしたら
20.
良いNICE キャッチへの3つの指針 • ユーザーの選択は絶対! •
真実に向かおうとする意思 • 覚悟する者は幸福である
21.
ユーザーの選択は絶対!
22.
1. ユーザーの選択は絶対 ! •
クライアント側はユーザの選択に左右され る • ユーザーの選択が例外を起こす事もある
23.
1. ユーザーの選択は絶対 ! 例)
ローカルに変更情報を保存しようとしたとき ユーザーに保存することを確認
24.
1. ユーザーの選択は絶対 ! 例)
ローカルに変更情報を保存しようとしたとき で、また何かのタイミングで保存
25.
1. ユーザーの選択は絶対 ! 例)
ローカルに変更情報を保存しようとしたとき
26.
1. ユーザーの選択は絶対 !
ユーザーの選択は例外じゃない
27.
1. ユーザーの選択は絶対 • ユーザーに拒否られたらあきらめよ う! •
拒否られた事はもうしない
28.
真実に向かおうとする意思
29.
2. 真実に向かおうとする意思 • クライアント側はユーザーの環境に左右さ れる
• 時計 • 通信 • Etc.. • 起きたエラーの原因を見極める必要がある
30.
2.真実に向かおうとする意思 例) HTTP で外部SWFを読み込んで例外が起きた場合
サーバに置いてあるswfをリクエスト InvalidSWFError バイナリに異常あるときの例外が飛ぶ サーバに置いてあるswf自体がおかしい可能性 通信時に障害がおこった可能性 ユーザーのHDDがおかしい可能性
31.
2.真実に向かおうとする意思 例) HTTP で外部SWFを読み込んで例外が起きた場合
サーバに置いてあるswfをリクエスト InvalidSWFError バイナリに異常あるときの例外が飛ぶ もう一回だけリト ライ
32.
2.真実に向かおうとする意思 例) HTTP で外部SWFを読み込んで例外が起きた場合
サーバに置いてあるswfをリクエスト InvalidSWFError バイナリに異常あるときの例外が飛ぶ それでも失敗した ら?
33.
2.真実に向かおうとする意思 例) HTTP で外部SWFを読み込んで例外が起きた場合 •
他のAPIやpingを打ってみる → 通信をチェック • テストデータをローカルに保存してみる → HDDをチェッ ク • Etc… 2回やってだめだった処理は繰り返さない!
34.
2.真実に向かおうとする意思 private var
retryCount:int = 0; public function tryRequest():void { try { request(); } catch(e:Error) { retryCount++; //マジックナンバー if (retryCount < 5) tryRequest(); } }
35.
2.真実に向かおうとする意思 private var
retryCount:int = 0; public function tryRequest():void { try { request(); } catch(e:Error) { retryCount++; //マジックナンバー if (retryCount < 5) tryRequest(); } }
36.
2.真実に向かおうとする意思
理由のないリトライは サーバーにもクライアントにも負担
37.
闇雲にリトライせずに 原因をチェックする処理へ
38.
覚悟した者は幸福である
39.
3. 覚悟した者は幸福である • クライアント側はシステムに左右される •
時にキャッチできない例外を飛ばす
40.
3. 覚悟したものは幸福である • プレイヤーのVersionが想定より古い
と • 勝手に ↑ なダイアログが出る
41.
3. 覚悟したものは幸福である UIからかけ離れたものが
いきなり出るとユーザーは混乱する
42.
3. 覚悟したものは幸福である ユーザーに覚悟をさせる
43.
3. 覚悟したものは幸福である 違う機構(javascript)で制御してあげる
◯◯は新しくなりました 左のダイアログが出るか ら 「はい」をおしてね
44.
3. 覚悟したものは幸福である UIでラップしたダイアログを出した後
↑ を表示
45.
結論 • 原因じゃなくて対処法を出そう • 難しい文言はつかわない •
リトライは1回まで • ユーザーの設定は例外扱いしない • デフォルトアラートは出さないように • 出す場合は対処法をユーザーに伝えてから
46.
それでは、良いナイスキャッチを! Have
a Nice Catch !
Download now