はじめに
Webシステム開発において知っておきたい観点をまとめる
自身の備忘録と初級者向け
※アプリケーションのアーキテクチャとしては、
サーバサイドとクライアントサイドを分離しない、システムを想定して記載している。
例)php laravel フレームワークなど
テクニカル
HTTP method
Rest API
URL設計
非同期通信(ajax)
session管理(管理項目、影響スコープ、ライフタイム)
cookie
cache
暗号化
decode、encode
constant変数
環境変数
共通定義
正規表現
セマンティック バージョニング
UI関連
favicon
paging処理
パンくずリスト
メニュー
header
footer
tabindex
ポップアップ(dialog)
表示件数上限
メッセージ(メッセージタイプ定義含め)
- 情報メッセージ(青)
- 成功メッセージ(緑)
- 警告メッセージ(黄)
- エラーメッセージ(赤)
SVG
レスポンシブ対応
マルチOS、ブラウザ対応
BuildVersion表記(デプロイ後の適用確認や、試験時動作バージョンの確認のため)
環境表記(誤った環境へのアクセスを予防する)
データ関連
validation
- 必須チェック
- 種別チェック(文字種、ファイル種別)
- 桁数(文字数)チェック
- 重複チェック
- 相関チェック
- 上限チェック(文字数、ファイルサイズ)
- 選択範囲チェック
- フォーマットチェック(メールアドレスなど)
2重クリック対応
排他制御
トランザクション処理
ブラウザバック対策
性能関連
レスポンスタイム考慮
バッチ処理
スケジュール実行
セキュリティ関連
ssl証明書
ssl通信
SQLインジェクション
XSS
CSRF
ログイン認証失敗時はIDとパスワードどちらが照合失敗したか悟られないようにする
パスワードを保持する際は cleartext で持たない(暗号化する)
Oauth
basic認証
digest認証
試験
コードレビュー
静的解析
自動テスト
負荷試験
シナリオ試験
セキュリティ試験
マルチOSブラウザ試験
運用関連
ログレベル
ログローテート
ログ種類
- アクセスログ
- イベントログ
- エラーログ
多言語
トランザクションデータ(日々溜まっていくデータ)の考慮
ダウンタイムレスリリース
ミドルウェア関連
WEBサーバ設定
テーブル正規化
DBチューニング(インデックス)
DBユーザ作成
クエリ最適化
インフラ関連
コンテナ
プロキシサーバー
負荷分散
オートスケーリング