ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
「製造」工程とは
ソフトウェア開発の「製造」とは、設計書(基本設計 / 詳細設計)に基づいて実際にソースコードを書く工程です。実装、コーディングとほぼ同義。ウォーターフォール文脈では「要件定義 → 設計 → 製造 → テスト → リリース」の中盤を担います。アジャイル文脈では設計とテストが同時並行で進み、製造はそれらと不可分に結合します。
開発工程全体での位置づけ
| 工程 | 主成果物 | 担当(主) |
|---|---|---|
| 要件定義 | 要件定義書 / ユーザストーリー | PM / BA / 顧客 |
| 基本設計(外部設計) | 画面遷移 / 機能仕様 / DB 論理設計 | SE |
| 詳細設計(内部設計) | クラス図 / シーケンス図 / DB 物理設計 | SE / プログラマ |
| 製造(実装) | ソースコード / 単体テストコード | プログラマ |
| 単体テスト | テスト仕様 / 結果 | プログラマ |
| 結合テスト | 結合テスト結果 | テスター / プログラマ |
| 総合テスト | システム全体の動作検証 | テスター |
| 受入テスト | 顧客承認 | 顧客 |
| リリース・運用 | 稼働システム | 運用 / SRE |
製造工程の典型ワークフロー(現代)
1. チケット取得 (Jira / GitHub Issues)
↓
2. ブランチ作成 (feature/xxx)
↓
3. ローカルで実装
- 詳細設計を確認
- テストコードを先に書く(TDD)
- 実装コード
- 静的解析・フォーマッタ実行(自動)
↓
4. ローカルでテスト実行
- 単体テスト → 結合テストの一部
↓
5. Pull Request 作成
- 自己レビュー → 説明文 → スクリーンショット
↓
6. CI 実行(GitHub Actions / Jenkins / GitLab CI)
- lint / test / build
↓
7. コードレビュー(同僚 + 上位)
- 指摘修正のループ
↓
8. main へマージ
↓
9. CD でステージング自動デプロイ → 動作確認 → 本番デプロイ
品質を担保する 5 つの柱
1. ペアプログラミング (Pair Programming)
2 人で 1 つの画面を見ながらコードを書く手法。Driver(タイプする人)と Navigator(横で考える人)が定期交代します。レビューがリアルタイムで入り、知識共有・バグ早期発見・属人化排除に効きます。新人教育・難しい設計判断に特に効果的。
2. コードレビュー(Pull Request レビュー)
変更内容を他のエンジニアが読み、指摘し、承認してからマージする運用。現代のソフトウェア開発の事実上の標準です。指針:
- 1 PR は小さく(500 行以下を目安)
- レビュー対象は「何を / なぜ」が分かる説明文
- 指摘は「コード」を批判し、「人」を批判しない
- 軽微な指摘(nit)と必須指摘(must / blocking)を区別
- 承認後 24 時間以内に取り込む
3. テスト駆動開発(TDD)
TDD の Red - Green - Refactor サイクル
① Red : 失敗するテストを書く
② Green : テストを通す最小限のコードを書く
③ Refactor : テスト維持したまま実装を整える
→ ①へ戻る
利点
- 仕様がテストコードで明文化される
- リファクタリングの安全網ができる
- 過剰実装を防ぐ
- バグの早期発見
代表ツール
- PHPUnit (PHP) / Pest (PHP)
- JUnit (Java) / TestNG / Spock
- pytest (Python) / unittest
- Jest / Vitest (JavaScript / TypeScript)
- Go test (Go) / RSpec (Ruby)
4. 静的解析・フォーマッタ
| 言語 | 静的解析 | フォーマッタ |
|---|---|---|
| PHP | PHPStan / Psalm | PHP-CS-Fixer / Pint (Laravel) |
| Python | Ruff / Pylint / mypy | Black / Ruff format |
| JavaScript/TS | ESLint / TypeScript | Prettier / Biome |
| Java | SpotBugs / Checkstyle | Spotless / google-java-format |
| Go | go vet / staticcheck | gofmt / goimports |
| Rust | clippy | rustfmt |
pre-commit フック・CI で必ず実行し、PR は静的解析グリーン状態でしかマージしない運用が標準。
5. CI / CD(継続的インテグレーション / デリバリ)
# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with: { php-version: '8.3' }
- run: composer install --no-progress
- name: Lint
run: composer run lint
- name: Static analysis
run: composer run analyse
- name: Test
run: composer run test
コードスタイルガイド
| 言語 / FW | 標準スタイル |
|---|---|
| PHP | PSR-12(PHP-FIG) |
| Python | PEP 8 |
| JavaScript | Airbnb / Standard / Google JS Style |
| Java | Google Java Style / Oracle 公式 |
| Go | 言語標準(gofmt がすべて) |
| Ruby | RuboCop / Ruby Style Guide |
| C# | Microsoft C# Coding Conventions |
リファクタリングと Boy Scout Rule
「来たときより綺麗にして帰る」というBoy Scout Ruleはロバート・C・マーチンが広めた言葉。製造工程で機能追加するついでに、近隣の汚いコードを少しだけ綺麗にして帰る習慣のことです。継続的なリファクタリングを文化として根付かせるための指針として定着しています。
主要なリファクタリング手法(Martin Fowler 著『リファクタリング』より):
- Extract Method: 長いメソッドを小分けに
- Rename: 意図が分かる名前に
- Inline Variable: 不要な中間変数を消す
- Move Method: 適切なクラスに移動
- Replace Conditional with Polymorphism: switch を継承に置換
- Introduce Parameter Object: 長い引数リストをオブジェクトに
現代的な開発手法との関係
| 手法 | 製造への影響 |
|---|---|
| アジャイル / スクラム | 2 週間スプリントで設計〜製造〜テストを同時並行 |
| DevOps | 製造後の本番反映までを自動化(CI/CD) |
| SRE | 運用視点(可用性 / ログ / メトリクス)を実装に組込む |
| Trunk-Based Development | 長寿命ブランチを禁じ main に毎日マージ |
| Feature Flag | 未完成機能をマージしても本番では OFF にできる |
| AI ペアプログラミング | GitHub Copilot / Cursor / Claude Code 等が補助 |
製造工程でよくある失敗
- 設計を読まずに実装 → 仕様乖離で手戻り
- テストコードを「あとで書く」 → 永遠に書かれない
- マジックナンバー・コピペ多用 → 保守不能
- 巨大な PR(3000 行超) → レビュー機能せず
- main 直接コミット → CI を回さずバグ混入
- 命名が雑(
data、tmp、flag) → 読む人が苦しむ
FAQ
Q: 単体テストはどこまで書くべき?
A: ビジネスロジックは網羅。Getter/Setter や Framework 機能の薄いラッパーは省略可。カバレッジ 70-80% を目安に。
Q: コードレビューが形骸化している
A: PR を小さくする / レビュー観点を明文化 / 24 時間以内承認ルール / コード品質指標(Static analysis)を CI 必須化、の順で改善できます。
Q: AI が製造を代替する?
A: Copilot / Cursor / Claude Code 等は大幅な生産性向上をもたらしますが、設計判断・レビュー・テスト設計は人間の役割が残ります。「製造」自体はますますレバレッジが効く工程になっています。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?