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
エンジニアでもできる簡単親切エラーUI
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
もも
December 12, 2020
Programming
380
0
Share
エンジニアでもできる簡単親切エラーUI
2020.12.12 PHP Conference Japan 2020 Re:born
もも
December 12, 2020
More Decks by もも
See All by もも
自分好みのWebサイトが作れる!誰でも簡単baserCMSのススメ
momofff
1
1k
メジャーバージョンアップ直前!baserCMS次期バージョン開発の舞台裏
momofff
0
400
エンジニアが成長できるbaserCMSの開発コミュニティ
momofff
0
450
Other Decks in Programming
See All in Programming
KMP × Kotlin 2.3 - How Android Got Slower While iOS Builds Improved by 47%
rio432
0
100
リセットCSSを1行消したらアクセシビリティが向上した話
pvcresin
4
420
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
26
17k
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
310
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
430
Back to the roots of date
jinroq
0
620
Agentic Elixir
whatyouhide
0
430
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
960
Symfony AI in Action - SymfonyLive Berlin 2026
chr_hertel
1
110
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
130
Cache-moi si tu peux : patterns et pièges du cache en production - Devoxx France 2026 - Conférence
slecache
0
330
PHPでローカル環境用のSSL/TLS証明書を発行することはできるのか? #phpconkagawa
akase244
0
290
Featured
See All Featured
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
15
My Coaching Mixtape
mlcsv
0
110
Believing is Seeing
oripsolob
1
120
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
The Cost Of JavaScript in 2023
addyosmani
55
9.9k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.7k
Odyssey Design
rkendrick25
PRO
2
610
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Color Theory Basics | Prateek | Gurzu
gurzu
0
300
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
530
Transcript
2020.12.12 PHP Conference Japan 2020 Re:born エンジニアでもできる 簡単親切エラーUI エンジニアでもできる 簡単親切エラーUI
エンジニアでもできる 簡単親切エラーUI
桃井 亮介 Ryosuke Momoi
エンジニアでもできる簡単親切エラーUI エラーチェックとは エラーの伝え⽅ PHPのエラーハンドリング
エンジニアでもできる簡単親切エラーUI エラーチェックとは エラーの伝え⽅ PHPのエラーハンドリング
はじめに 突然ですが バリデーションはお好きですか?
はじめに 突然ですが エラーチェックはお好きですか?
エラーチェックの⽬的 ' OR 1 = 1; -- それはシステムを正常に稼働させる為 なぜエラーチェックを⾏うのか?
エラーチェックの⽬的 ⼊⼒値をDBに登録できるか ⼊⼒値の名前はユニークで識別できるか ⼊⼒値のメールアドレスに送信できるか システムが正常に動かない値を拒否する必要がある etc
エラーチェックの⽬的 でもそもそもシステム (サービス) を作る⽬的は? システム サービスが正しく稼働するように 不正な操作は拒否したい サービス サービスで⽬的を達成してもらい ユーザーに満⾜してもらいたい
エラーチェックの⽬的 ユーザーに正しく使ってもらい⽬的を達成してもらう システム サービスが正しく稼働するように 不正な操作は拒否したい サービス サービスで⽬的を達成してもらい ユーザーに満⾜してもらいたい
エラーチェックの⽬的 どのようにエラーチェックを⾏うのが良いか? 使ってもらいたい!けどエラーの値は拒否したい!
エラー対応の例 お名前 電話番号 住所 〒 ex.申込書の住所を書き忘れて提出してしまった!
エラー対応の例 お名前 〇〇 △△ 電話番号 xxx - xxxx - xxxx 住所
〒 ex.申込書の住所を書き忘れて提出してしまった!
エラー対応の例 お名前 〇〇 △△ 電話番号 xxx - xxxx - xxxx 住所
〒 住所は必須項⽬です。 なんかそっけない……
エラー対応の例 お名前 〇〇 △△ 電話番号 xxx - xxxx - xxxx 住所
〒 住所を記⼊してください。 どう直すか教えてくれたら親切ですよね
エラーチェックの考え⽅ ユーザーの⾏動にリアクションを返し それは対⼈でもシステムを使っていても同じ ⼀緒に⽬的達成を⽬指すコミュニケーション
エラーチェックは応援 必須項⽬です。 形式が違います。 ××の状態です。 ⼊⼒してください。 半⾓英数で⼊⼒してください。 〇〇の状態にしてください。 ユーザーの⾏動を否定せずにアドバイスし応援する
ログイン画⾯は例外 ユーザー情報を参照するフォームはエラーを曖昧に エラーが不正ログインのヒントになる可能性も! パスワード ******** ログインID admin ログインIDとパスワードをご確認ください !
エラーチェック サービスは使ってもらうことが⽬的 エラーチェックでユーザーの⽬的達成を応援 メッセージは否定ではなくアドバイス ユーザー情報を参照するフォームは例外
エンジニアでもできる簡単親切エラーUI エラーチェックとは エラーの伝え⽅ PHPのエラーハンドリング
エラーの表⺬ でもエラーに気付いて直せないと意味がない ユーザーに親切なメッセージを設定した!
エラーのスタイル エラー⽤の⾊をつけましょう ⾊を⾒分けにくい⼈もいるので⾊以外の⽬印も⼤事 お名前 お名前を⼊⼒してください !
エラーの表⺬箇所 どこにエラーがあるかわかりやすくしましょう 該当箇所の近くに出して直す場所を迷わせない お名前 お名前を⼊⼒してください !
リアルタイムエラーチェック リアルタイムでエラーを出すのは親切ですが その項⽬の⼊⼒が完了したタイミングで出しましょう パスワード
リアルタイムエラーチェック パスワード 2 8⽂字以上使⽤してください ! 英数字両⽅含めてください ! リアルタイムでエラーを出すのは親切ですが その項⽬の⼊⼒が完了したタイミングで出しましょう
リアルタイムエラーチェック パスワード 2020P 8⽂字以上使⽤してください ! リアルタイムでエラーを出すのは親切ですが その項⽬の⼊⼒が完了したタイミングで出しましょう
リアルタイムエラーチェック パスワード 2020PHPC リアルタイムでエラーを出すのは親切ですが その項⽬の⼊⼒が完了したタイミングで出しましょう
リアルタイムエラーチェック リアルタイムで⼊⼒内容をチェックする場合は パスワード 8⽂字以上使⽤してください 英数字両⽅含めてください 基準を達成したことを表⺬しましょう
リアルタイムで⼊⼒内容をチェックする場合は パスワード 2020P 8⽂字以上使⽤してください 英数字両⽅含めてください 基準を達成したことを表⺬しましょう リアルタイムエラーチェック リアルタイムで⼊⼒内容をチェックする場合は 基準を達成したことを表⺬しましょう
リアルタイムで⼊⼒内容をチェックする場合は パスワード 2020PHPC 8⽂字以上使⽤してください 英数字両⽅含めてください 基準を達成したことを表⺬しましょう リアルタイムエラーチェック
エラーの⾒せ⽅ エラーのスタイルで存在に気付きやすくする 何を直せばいいか迷わせない リアルタイムのチェックは⼊⼒完了時に実施
エンジニアでもできる簡単親切エラーUI エラーチェックとは エラーの伝え⽅ PHPのエラーハンドリング
PHPのエラーハンドリング ファイルアップロード(⼤容量データ)の注意 PHPConferenceなのでそろそろPHPの話を
PHPのエラーハンドリング POSTデータが消える 500エラーが出⼒される ファイルサイズのエラーが出⼒される ⼤容量ファイルをPOSTするとどうなるでしょうか? ex.8Mまでのサーバーで10Mのファイルをアップロード
PHPのエラーハンドリング 正解は2番⽬!POSTデータが消えちゃいます! POSTデータが消える 500エラーが出⼒される ファイルサイズのエラーが出⼒される
フォームに関する設定 MAX_INPUT_VARS ⼀度にPOSTできる パラメータ数の上限 POST_MAX_SIZE ⼀度にPOSTできる データの最⼤サイズ UPLOAD_MAX_FILESIZE アップロードできる 1ファイルの最⼤サイズ
POSTの罠 POSTデータがPOST_MAX_SIZEより⼤きい場合
POSTの罠 なんと丸ごとPOSTデータは空になってしまいます!
POST初期化時の⾒分け⽅ この挙動を意識せずに実装すると という判定をしてしまうことも POSTがない = GETアクセス(直アクセス)
POST初期化時の⾒分け⽅ $_SERVER[' CONTENT_LENGTH' ] POSTの中⾝は消えてしまいますが でPOSTのサイズを取得可能! つまりPOSTが送られてきたかわかります!
Sample Code 1 // リクエストのサイズ $contentLength = $_SERVER['CONTENT_LENGTH']; // 受け取る
POST サイズの上限 $postMaxSize = ini_get('post_max_size'); $postMaxSize = convertToBytes($postMaxSize); if ($contentLength > $postMaxSize) { // ERROR POST Deleted }
Sample Code 2 function convertToBytes($size) { $unit = substr($size, -1);
// 単位を取得 switch (strtolower($unit)) { case 'm': // 単位 M の場合 $size *= 1024; case 'k': // 単位 M もしくは K の場合 $size *= 1024; } return $size; }
PHPのエラーハンドリング ファイルアップロードするフォームは要注意 POSTは設定値以上で消えてしまうことあり $_SERVER[' CONTENT_LENGTH' ]でPOSTサイズ取得
エンジニアでもできる簡単親切エラーUI エラーチェックとは エラーの伝え⽅ PHPのエラーハンドリング
まとめ エラーチェックはユーザーの応援 エラーメッセージはポジティブにアドバイス エラーの存在を気付きやすくして教える POSTデータのサイズにはご注意を
Thank You!