こんにちは、かつコーチです。
プログラミングを学習して、様々なものが作れるようになってきたとはいえ、
実際実務となるとどのような過程で制作されるのかがはっきりしないところがあります。
今回はシステム開発における工程を解説します。
1. 要件定義
目的
クライアントやユーザーが求める機能やシステムの仕様を明確にし、プロジェクトの範囲を確定する。
主な作業内容
- 目的と課題の明確化
何を達成するためのシステムか、現状の課題は何かを特定。 - 機能要件と非機能要件の整理
- 機能要件: 必要な機能(例: ユーザー登録、検索機能)
- 非機能要件: パフォーマンス、セキュリティ、可用性など。
- 成果物の定義
例: 要件定義書(Excel、Word、または専用ツールを使用)。
使用ツール
- 文書作成ツール: Microsoft Word, Google Docs
- 要件管理ツール: Confluence, Notion, Jira
- コミュニケーションツール: Slack, Microsoft Teams, Zoom
2. 基本設計
目的
要件定義を基にシステム全体の設計方針を策定し、クライアントと仕様を共有する。
主な作業内容
- システム全体の構成設計
- サーバー構成、ネットワーク設計、ストレージの選定。
- 画面設計
- ユーザーインターフェースや操作フローを設計。
- ワイヤーフレームやプロトタイプを作成(Figmaなどを使用)。
- DB設計(論理設計)
- テーブル構造やデータの関係性を設計。
- ER図(Entity-Relationship Diagram)を作成。
使用ツール
- 設計ツール: Lucidchart, draw.io, Figma, Adobe XD
- DB設計ツール: MySQL Workbench, dbdiagram.io, ER/Studio
- プロジェクト管理ツール: Trello, Asana, Jira
3. 詳細設計
目的
基本設計を基に、システムの内部構造やアルゴリズムを設計。
主な作業内容
- プログラム仕様書の作成
- 各機能をどのように実装するか詳細に記述。
- API設計
- REST APIのエンドポイントやリクエスト・レスポンス仕様を設計。
- データベース物理設計
- 実際のテーブルやインデックスを作成する具体的な設計。
使用ツール
- API設計ツール: Postman, Swagger, Insomnia
- コードエディタ: Visual Studio Code, IntelliJ IDEA
- データベース管理ツール: phpMyAdmin, DBeaver, Adminer
4. 実装
目的
設計書に基づいてプログラムを開発する。
主な作業内容
- コード作成
- フロントエンド、バックエンド、APIの開発。
- ユニットテストの実施
- 各モジュール単体の動作を検証。
使用ツール
- コードエディタ/IDE: Visual Studio Code, PhpStorm
- バージョン管理ツール: Git(GitHub, GitLab, Bitbucket)
- タスク管理: Jira, Trello
- CI/CDツール: GitHub Actions, Jenkins, CircleCI
5. テスト
目的
実装したプログラムが要件を満たしているか確認する。
主な作業内容
- 単体テスト: 個別機能が正しく動作するか確認。
- 結合テスト: 複数モジュールの連携を検証。
- 受け入れテスト: クライアントがシステムを評価。
使用ツール
- テスト管理ツール: TestRail, Zephyr
- バグトラッキングツール: Jira, Bugzilla, Redmine
6. 運用・保守
目的
リリース後にシステムが正常に稼働するよう監視し、必要に応じて修正を行う。
主な作業内容
- ログ監視: システムの状態をモニタリング。
- 障害対応: 問題発生時の迅速な対応。
- 機能改善: ユーザーの要望を反映した改善。
使用ツール
- 監視ツール: AWS CloudWatch, New Relic, Datadog
- チケット管理: Jira, Zendesk
進捗状況を確認するツール
- プロジェクト管理ツール
- Trello: シンプルなカンバン方式でタスクを管理。
- Jira: 大規模プロジェクト向けの課題管理・進捗確認ツール。
- Asana: チーム全体のタスク管理や進捗確認が可能。
- バージョン管理ツール
- GitHub: プルリクエストで進捗やコード変更を確認可能。
- GitLab: GitHub同様、CI/CDパイプラインを組むことで進捗が見える化。
- ダッシュボードツール
- Notion: プロジェクト全体の進捗状況をドキュメントとともに管理。
- Monday.com: プロジェクト全体のタイムラインや依存関係を可視化。
まとめ
- 要件定義: システムの目的と範囲を明確化(文書やツールを活用)。
- 基本設計: UIやDB構造を設計(ワイヤーフレームやER図)。
- 詳細設計: プログラムの内部構造やAPIを具体化。
- 実装: 設計通りにプログラムを構築(GitHubなどで管理)。
- テスト: システム全体の品質を確認(テストツールを活用)。
- 運用・保守: リリース後の監視・改善(監視ツールで効率化)。
プロジェクトの進捗状況や課題をリアルタイムで共有できるツールを活用し、各工程での効率を最大化することが重要です!