見出し画像

サイト/アプリ作成のチェックシート

こんにちは。今度はスマホアプリ作成に関わってますtelluruです。
今回初めてプロジェクトの初期、仕様書作成からかかわっているのですが、機能や画面の抜け漏れが後から後から出てきて大変です。ついでにiOSのリジェクトされない仕様を考えるのにも苦労しています。なので仕様書や設計書を作るうえで一考すべき要素をリストで残そうと思いました。あくまで新人エンジニアの備忘録ですのでベテランの方々には当たり前だろ!と思う項目もあるかもしれません。
また自身の経験に基づくので、項目は追加や変更していこうと思います。

要件定義

・プロジェクトの解決すべきミッションは決まっているか(クライアントはサービスに何を期待しているか)
・作成するサービスはミッションを解決するにふさわしい形態か
・ターゲットユーザーの環境を把握し配慮しているか
(ユーザーは全員ハイエンド端末で無制限通信を使っているわけではない)
・継続利用してもらうための施策は考えられているか
・収益構造は明確化されているか
・機能を盛りすぎるとプロジェクト全貌の把握が難しくなるため、そこそこで止めるようコントロールして残りの要望は次回フェーズに回すことも時に必要。

機能/設計

・設定変更機能はあるか
・通知機能はあるか
・登録系機能に編集削除も付随しているか(CRUDの確認)
・お知らせページは必要か
・セキュリティはどの程度厳重にするか
・プライバシーポリシー・ヘルプ・お問い合わせなど各種文面ページはあるか
・ドメインは決めたか(決めたら早めに押さえる)
・金銭を扱う機能がある場合、システムが法に抵触していないか
・プライバシーに配慮した設計になっているか
(思想、病歴、人種等差別の対象となりやすい情報は高レベルの個人情報)
・コード設計・リファクタリングの工期は含まれているか
(贅沢だけど今後も面倒を見る可能性が高いシステムなら入れたい)
・バグ修正用のバッファを考慮する(適当だとテストや保守で苦しむ)
・レビューを工程に含めて見積もる,レビューの観点・進行等を定める
(適当だと規模が大きいほど後の仕様漏れで苦しむ)
・仕様書のフォーマットや粒度は定めておく。
(バラバラだとレビュー・開発で苦しむ)

会員登録あり
・会員規約と同意チェックはあるか
・プロフィールはあるか
・退会機能はあるか
・会員のステータス管理はどうするか

SNSあり
・違反通報機能はあるか
・フォロー・フォロー解除はあるか
・ミュートやブロック機能は必要か
・他人に公開される情報の項目は決まっているか

複数のユーザーが同時に同一リソースを操作する(グループとか)
・編集中に別ユーザーから更新がかかった場合のハンドリング
・アクセス権限がはく奪された場合の該当ユーザーのコンテンツの処理

会員登録なし
・ユーザーの同定が必要な機能は無いか、ある場合どうするか

媒体

スマホ・タブレットアプリ

・APIで実装する機能、Webviewで実装する機能は明確か
・必要以上に個人情報を入力必須にしていないか
・バージョン情報はあるか
・アップデートにユーザー許可は含まれているか
・アプリの引継ぎについて考えられているか
・適宜ヘルプ情報など設けられているか
・データ収集を行う前に同意画面を入れているか

iOS

・無駄に会員登録必須にしていないか
・会員登録しない場合のデータ管理はどうするか
・iPhoneとiPadの違いを考慮しているか(ひどい目にあった)
・不必要にメール送信での登録フローを入れていないか(ブラウザ経由するとリジェクト対象になるらしい?)
・サードパーティのログイン連携を利用している場合Sign In with Appleも含まれているか
・オールWebviewになっていないか
(プッシュ通知や設定など最低限はアプリの体裁が必要)
・ヘルスケア・賭博やくじ・教育・子供向けは特にデータの扱い等気をつけること(サードパーティも極力使わない)
・収集するデータ項目、取得方法、用途がプライバシーポリシーに明確に定義されているか

Android
・商標権を侵害するような命名・借用を行っていないか
(iOS審査クリアできるなら大体通る気がする)

デスクトップアプリ
(まだ謎が多い)

ページ全般
・ページ更新契機は?更新される範囲は?
・表示データが多い場合の更新方法(ページング,無限ロードetc
・エラー時の処理/表示は定義されているか
・ローディング処理/表示は定義されているか
・処理完了/失敗の確認通知は定義されているか

画像
サイズ制限は?
・登録枚数制限は?
・縦横比は?トリミングするか?
・画像が無い場合の表示は?

グラフ
・閾値等の設定、超過・基準内の表示条件
・メモリの範囲をどう設定するか
(データがメモリ外にはみ出したときは?)
・メモリの単位は?
・初期値・必要な入力値が得られなかった場合の表示は?

お知らせ・通知
・お知らせページに入れる情報は定義されているか
・バッジ付加の有無
・管理側から削除や更新された場合の処理は定義されているか

カレンダー・予定等
・表示上限、達したときの処理は定義されているか
・表示の種類・優先順位は定義されているか
・月や日をまたぐ予定の表示は定義されているか
・他月、日への遷移は考えられているか

ポリシー規約などの内容
・収集するデータ、収集方法、使用用途は明記されているか
・有事の際の裁判所の指定は事業者本拠地の地方裁判所が一般的
・一般に使われている語句を機能名とする場合説明を入れておくと安心
・顧問弁護士がいる場合はチェックしてもらう

多分まだ増えます。

この記事が気に入ったらサポートをしてみませんか?