エンジニアとして実際に現場に出るとマネージャーやリーダーなどから「案件(要件)」という形で「やって欲しいこと」が伝えられます。
その中には「こういう感じの機能をつけたいんだけど〜」というざっくりしたものも少なくありません。
ウェブカツを利用してWEBサービスを作れるようになった皆さんは、既に実際に機能を作る際には「リンクを押したらどこに飛ぶのか」「表示する順番は降順か昇順か?何個出すか?」「何のデータを取得するのか」などなど「色々決めなければならないことがある」という事が深く理解出来たと思います。
なので、エンジニアとして「要件を固める」というスキルはとても大切になります。
そういったスキルは実際に経験しながら蓄積するほかないのが現状になってしまっているので、ここに「相手に確認しなければいけないことリスト」を挙げておくので、現場に出るエンジニアはこれをまずは参考にして一気にスキルアップしましょう!
フロント観点
フォントやレイアウト
・ブラウザはどこまで対応する?IEはIE9以上?ChromeやSafariも?Firefoxも?それぞれのバージョンはいくつ以上?
・フォントサイズやpadding、margin、色の指定は?
・何文字まで表示する?それによって高さが変わる可能性があるが大丈夫か?
・タグはいくつまで表示するか?それによっては高さが崩れる可能性があるが大丈夫か?
リンク
・リンクはホバーした場合どうなる?文字色が変わる?アンダーラインが消える?浮き上がるなどのアニメーションがある?既に訪れたリンクの色は?
・パネル自体をリンクにするのか?文字部分などだけ押した場合に遷移するようにしたいのか?
画像
・画像のサイズが変わった場合、デザインは崩れないか?3個横並びだった場合などに高さがちぐはぐになったりするが、それでもいいのか?
ボタン
・ボタンはホバー時にどうなる?背景色が変わる?アニメーションする?
遷移
・ボタンやリンクを押した際にリロードしていいのか?Ajaxでデータを取得して一部のコンテンツだけ入れ替えるのか?
スマートフォン対応
・この画面はスマートフォンにも対応させるのか?
・iOSに対応させる?Androidも?Androidは標準ブラウザも対応?chromeのみ?
・iOSはバージョンいくつから?iPhone5sやiPhone6Plusまでの画面サイズでちゃんと表示したい?
・Androidはバージョンいくつから?手元にある実機だけで表示できれば十分?
・各画面の文字サイズは?
・最小フォントは9pxだが、それで表示しても問題ないデザインで作っているか?
バックエンド観点
遷移
・リンクやボタンの先はどこの画面に飛ぶ?
・戻るリンクやボタンは必要ないか?ある場合、どこに飛ぶ?
・戻った時にフォームなどに入力した情報は保持したままにしたいか?
データ
・入力したデータは永続的に保存しておきたいものか?(DBへ保存した方がいいものかどうか)
・データは後々で集計などしたいものか?(DBにデータを入れず、HadoopやNoSQLなどのデータ集計専用管理ソフト内にデータを入れるか)
ログ
・効果測定用のログを出したいか?
エラーハンドリング
・入力誤りなどバリデーションにひっかかった場合やDBからデータを取得できなかった場合、挙動をどうするか?
・エラーになった場合、同じ画面でエラーメッセージを出すのか?それともエラー画面へ遷移するのか?
・エラーメッセージは何を出すのか?
表示
・ソート順(表示順)は?
・何個だす?
いろいろありますが、一番大事なところは「何を目的にその機能をつけたいのか」をきちんと押さえることです。
それが見えてくれば、いちいち忙しいマネージャーに全部を細かく聞かなくても「そういう目的なら、ここはこうしちゃって大丈夫でしょ」と「自分で判断し動ける出来るエンジニア」へ一歩前進します。