はじめに
個人開発しようと考え、いざ着手しようとしたが何から手を付けたらよいか全く見当がつきませんでした。そんな中で下記の記事を読み、このロードマップに従って取り組んでいこうと考えました。
Pythonでゼロからでもサービス開発・公開できる学習ロードマップ
【記事の概要】
本記事は、以下の点に重きを置いています。
- 基本設計の手順
- 基本設計で作成される成果物
- 成果物に盛り込む内容
下記の方向けではありません。
- 初めて基本設計を行う方
- 基本設計について詳しく知りたい方
今回、記事を書くにあたり下記の講座を参考にさせていただきました。
■入門編:
基本設計に関する詳細な説明・具体的な成果物の内容を知りたい方は、ぜひこの講座を参考にされてください。
基本設計
目的
要件定義を実現するシステムの完成イメージが、ビジネス側に伝わること。
つまり、エンジニアが主導。
成果物
-
画面設計
-
機能設計
-
データ設計
進め方
①画面設計
②機能設計
③データ設計
④全体見直し・ブラッシュアップ
設計は、不備が見つかれば都度修正する。「要件定義書」も随時更新する。
【実践】①画面設計
変わらない画面情報を設計する(HTMLに直接書くところ)
使用ツール⇒PowerPoint, Figmaなど
①項目の洗い出し
- 登場するオブジェクト(モノ・情報) => (ユーザーが「ほしいもの」)
- オブジェクトに対するユーザーのタスク(操作) => (ユーザーが「やりたいこと」)
②画面遷移図を作る
- オブジェクト指向 or タスク指向かを決める
- 画面遷移図を作成する
③肉付け
- ユーザー操作(タスク)を各画面に割り当てる
- 画面遷移図の項目ごとのオブジェクトに対し、肉付けを行う(小項目を作る)
- タスクを追加する(あれば)
- オブジェクトに対し、ユーザーに表示する情報を洗い出す
④レイアウト作成
- オブジェクト・タスクに沿ったレイアウトの作成
オブジェクトとタスクに抜け漏れがないようにする
この時点で、要件定義書に無い機能を追加することがある
- レイアウトをもとにデザイン性を追求
デザイナーに依頼するなど
- 作成したレイアウトを、再び画面遷移図に落とし込む
【実践】②機能設計
毎回変わる情報を表示させるための機能を設計する。
使用ツール⇒PowerPoint, Figma, Excelなど
毎回変わる情報
-
マスターデータ
=>オブジェクトに固有の情報のこと -
トランザクションデータ
=>ユーザー操作で増減するデータ
①マスターデータの洗い出し
- 必要なデータベースの洗い出し(何個できたか?)
②ユーザー操作で起こる処理を洗い出し
- バックエンド処理の洗い出し
- 処理に対するDBの洗い出し
- トリガーの洗い出し
③機能一覧書の作成
-
必要なデータベース・処理を一覧化
-
Excelにまとめる
- 以下の内容を記載
- NO.
- 対象ページ
- 処理内容
- トリガー
- 必要なデータ(DB)/取得元
- データの渡し先(DB、渡し先のページ)
- 以下の内容を記載
-
トリガーとバックエンド処理を一覧化(箇条書き)
-
トリガー(ユーザー操作)とバックエンド処理を画面遷移図に紐づけ
このとき、操作と処理はしっかりと区別しておく
【実践】③データ設計
ER図を作成する
使用ツール⇒PowerPoint, Figmaなど
ER図に利用する記号↓
記号 | 意味 |
---|---|
〇 | 0(ゼロ) |
| | 1(イチ) |
鳥の足 |
多 |
DBの基礎知識
-
構造
- table
- colum
- record
-
テーブルの種類
- マスタ
=>オブジェクト固有の情報を保存したテーブル - トランザクション
=>マスタ以外のテーブル
ユーザーがアクションするたびに更新されるテーブル
- マスタ
-
外部キー
=>IDを使用して別のテーブルに情報を挿入するためのもの
①データ構造を明確にする
- テーブルをマスタ・トランザクションに分ける
- 具体的なテーブル構造を決定する(カラムの設定)
②データ間の関係性を定義
- テーブル間の参照関係を可視化する(外部キーとして参照してるもの)
③ER図に書き起こす
- 一番上にはメインのIDを記載
- 外部キーには(FK)を記載・太字にする
④設計書をまとめる
- 画面遷移図に、テーブルを紐づける
おわりに
オブジェクトに対してタスクを探していると、
どうやって実装していくかが明確になっているように感じました。
「自分にはできない」と思っていたシステム開発が、
少しずつ「できるかもしれない」に変わっていくのが楽しいです。
ちなみに、私はどのフェーズの設計でも不備が何度も見つかり、都度修正しました。
出来上がった設計書はお世辞にも「わかりやすい」とは言えないのですが、
アプリの完成形を具体的にイメージすることができました。
引き続き、アプリ開発を進めていきたいと思います。
閲覧ありがとうございました。