エンジニアとしての強み

各カテゴリの詳細を確認できます

開発フロー設計

効率的な開発プロセスを実現するための方法論や実践について紹介します。

フェールファスト原則
テストと同様に開発においても第一原則とすることで、開発の効率化とリスク回避を低コストで行える

動くものをさっさと作る

「何を作るべきか」を実際にUIに触れて考えれば良い。

チーム/顧客との間のアプリイメージを効率的にすり合わせられる。

従来のウォーターフォールモデルにおいては動くアプリ、画面の完成が要件定義より(最悪一年)遅れていた。 不完全であっても動くものをさっさと作ることで、作るべきでないものを作っている場合、早く気が付ける。

静的解析ツールをONにする

ソース編集中にシンタックスエラーに気が付くことができる。

古い言語や開発環境においてはビルドするまでエラーに気が付けないことが多々あり、 作るべきソースコードが長い場合などは最悪1週間以上発見が遅れることがある。 致命的な設計ミスなどにも気が付くことが出来ず開発効率と品質低下の要因となる可能性がある。

開発プレビューのある開発環境を選ぶ

ソース変更時に自動で差分コンパイルを行い、アプリを再起動&ブラウザからアクセスし確認できる。

現在のソースがどの様なアプリに対応しているか即座にフィードバックされる。

挙動にエラー/想定外がある場合早期に発見することができる。

ドキュメントファーストからコードファーストに
保守対象を分散させないことで、開発効率と品質を向上させる

保守対象を分散させない

例:ExcelでERDを作成しそれとは別にDDLやスキーマファイルを記載するといったケースが考えられるが、 仮にこれに変更を加える場合同期するための編集コストを要してしまう。

コードであるスキーマやDDLを管理の基本とし、チーム内もしくは顧客向けの説明資料として図が必要なのであれば、 都度自動で生成されるようにしておけばよい。

ドキュメント同期の時間コスト

ドキュメントとコードを別々に管理すると、変更のたびに両方を更新する必要があり、 時間的コストが増加するだけでなく、同期ミスによる不整合も発生しやすくなります。 コードを真実の源泉(Single Source of Truth)とすることで、 このような問題を回避できます。

デプロイを行い確認できることが、担当範囲の最小単位
独立して開発・検証できる単位で作業を進めることで、効率的な開発を実現する

具体的には画面、機能を粒度とする(フロントエンド/バックエンド等としない)

他のチームメンバーを待たなければ開発が行えない状況にしないことで、即時のフィードバックを得ることができる。

モックやドライバを用いて最低限の確認やテストを行うことは可能だが、 「何を作るべきか」のフィードバックとしては不十分になりやすく、 またいずれにも跨った変更にコミュニケーションコストが生じる。

機能単位での開発の利点

フロントエンドとバックエンドを分けて開発するのではなく、機能単位で開発することで、 エンドツーエンドの動作確認が早期に可能になります。これにより、統合時の問題を減らし、 ユーザー体験を中心とした開発が促進されます。