架空プロジェクトを通してシステム開発とドキュメント作成を体験してみる（2022 Late）

## このコンテンツ作成の背景

プログラミングを体験できるコンテンツは沢山存在していますが、開発プロジェクト全体を通した流れを体験したり、実務では不可欠となるドキュメント作成を体験（学習）できるコンテンツは少ないので作ってみました。

>とはいえドキュメント作成についてはテンプレート見ながら「こんなもんです」と解説する感じになります。。。

## 免責事項（いいわけ）

元々は社内の非技術系な人向けに研修用資料として作っていたものを、どうせなら公開するかな。という感じで再編したものなので、足りない部分やオレオレな部分、ゆらぎ、不整合、誤字脱字とかも多いと思います。「間違い」や「こうしたほうがいいよ」というのがあれば、コメント等で"優しく"教えていただけると助かります。少しずつ修正していこうと思ってます。

>オレオレな情報だけでは申し訳ないので、一般社会ではプロジェクト関連のドキュメントはどう書くのか？についてはデジタル庁が公開している「[DS-120 デジタル・ガバメント推進標準ガイドライン実践ガイドブックとその各種テンプレート（以下、実践ガイドブックおよびテンプレート）](https://www.digital.go.jp/resources/standard_guidelines/)」や、TISインテックグループさんが運営されている[Fintan](https://fintan.jp/)で公開されている情報を中心に補足したいと思っています。
実践ガイドブックの紹介や引用については[こちらのコピーライトポリシー](https://www.digital.go.jp/copyright-policy/)、Fintanさんの場合は[こちらの利用条件](https://fintan.jp/page/303/)に従って利用させていただいているつもりですが、問題がある場合はご指摘ください。

なお、本記事の内容や提供するサンプル（テンプレート）は自由にお使いいただいて問題ありませんが、それにより発生したあらゆることについては責任を負えませんのでその点はよろしくお願いします。

>引用先として紹介していただけると助かります。

もちろん、リンク先等の権利、商業等はリンク先に帰属するものとなりますので、各リンク先のポリシーに従ってください。

## アプローチ

実際にプログラミングや開発プロジェクトを経験したことない人にいきなりドキュメントを作成しろといってもなかなか難しいみたいなので、本コンテンツでは、

* 実際に架空かつ最低限度のシステムを開発してみる（開発プロジェクトを体験してみる）
* その上で最低限度のドキュメントを（テンプレートを参照しながら）一式作成してみる

という感じで、まずは簡単なシステム開発を体験してもらった上でドキュメントを作成するというアプローチで進めてみたいと思います。

>もちろん通常はドキュメントが先で開発は後です。

なお、開発にはいわゆる「狭義の開発」だけではなく、単体テスト、結合テスト（E2Eテスト）と自動化、パフォーマンステスト、セキュリティーテストなど、実際の開発プロジェクトで行う開発以外の周辺作業も最低限ではありますが含めており、開発プロジェクト全体としての作業およびドキュメント作成を体験できるようにしたつもりです。

![000001.jpg](https://drive.google.com/uc?export=view&id=10h9Dhkxd-7BPf-kL_VjNG4gDJMscq-mm)


## 開発するものと架空の前提（ドキュメント化の対象）

### 開発するもの

開発物としてはTOPページとお問合せページの２画面から成る超簡易的なWebシステムを開発してみたいと思います。お問合せフォームで入力されたデータはGoogle Apps Script（GAS）で実装されたAPIを経由してGoogleスプレッドシートに蓄積されるようにしてみます。

>バックエンドでは仮想サーバやRDB使うことも検討したのですが、環境準備が複雑になり、本来の趣旨とちがってくるので断念しました。個別に補足できればと思っています。

![86246fcb-6316-9e7a-9ad7-c287a2f86981.png](https://drive.google.com/uc?export=view&id=1JmCB7GFhJ9WaZM-63kCzr9khAzdfNpMa)


### システム開発の架空の背景

ドキュメント作成においては常にシステム開発の背景や目的とかが問われるので、架空の背景として以下のように状態を設定してみたいと思います。

#### システム化の背景・目的

* bluecode社では商品やサービスの問合せを未だに電話窓口で対応している（かつ専用人材がいない）
* 問合せ内容や対応状況の管理はExcelに入力して行っているが、ミスも発生している
* そこで受付をWeb化することで問合せ内容の自動入力を実現し、かつ、受付を24時間対応とする
* なお、受付後の問合せ対応（回答等）は今まで通り人（Email）にて行う

>令和の時代に電話対応のみという会社があるか！というのはご勘弁を。

#### その他の条件

その他の条件としては以下のような感じ。

* 開発やシステム運用は外部開発会社（株式会社 架空開発）へ委託する
* 業務運用などは自社で行う

![c59308fd-041b-855c-c432-ab871851f4e7.png](https://drive.google.com/uc?export=view&id=1-bu-cn3L1WTQR6D7wWONITG2cgy5ChWb)

## 開発体験コンテンツ

では、ドキュメントを作成する前に、ドキュメンテーションの対象となる開発を体験してみましょう。なお、開発や技術を学ぶこと自体がゴールではなく、開発プロセスの各工程や周辺業務などを肌感覚をもって理解してもらうことがゴールなので、細かい技術解説は省いています。またコードはコピペで学習を進められるよう少し変わった記述になっています。もし、不安な方や読み進める中で「なんじゃこりゃ？」となった方は[こちら](https://qiita.com/minimumskills/items/60cfd51737156ccb6f97)をご確認いただければと思います。

>なお、開発体験に際しては全て無償のツールや環境を利用しますが、[Googleアカウントだけは事前に作成しておいてください](https://support.google.com/accounts/answer/27441?hl=ja)（まあ、大体の人が既に持ってると思いますが）。バックエンドの開発（GoogleスプレッドシートやGoogleドライブの利用）で使います。

開発体験コンテンツは以下の通り。

|No|タイトル|備考|
|-|-|-|
|1|[開発環境の整備と動作確認](https://qiita.com/minimumskills/items/23687e3ee5e5a5885534)|本記事ではMacを利用しますが、Windowsでも動きます|
|2|[フロントエンド開発１](https://qiita.com/minimumskills/items/7fa35754f1434d40470c)  |Webを構成するHTML, CSS等を体験します|
|3|[フロントエンド開発２](https://qiita.com/minimumskills/items/d64deacdefa077a3616a)|Webで入力データを扱うFormやJavaScriptを体験します|
|4| [フロントエンド開発３](https://qiita.com/minimumskills/items/f74b14e04285f52b999d)|レスポンシブレイアウトによるスマホ対応を体験します|
|5|[バックエンド開発１](https://qiita.com/minimumskills/items/66514e324bcf6f4729eb)|API開発を体験。データを受け取りGoogleスプレッドシートに保存します|
|6| [動作確認（サービスの公開）](https://qiita.com/minimumskills/items/e9661e5ea233d060ce83)|動作確認を兼ね、開発したWebシステムを一般公開します|
|7|[テストをしてみよう（単体テスト）](https://qiita.com/minimumskills/items/661e5287681469e29546)|単体テストをWebAPIのテストを通して体験します|
|8| [テストをしてみよう（結合テスト・シナリオテスト）](https://qiita.com/minimumskills/items/7153b49cff01dd22d37a) |結合テストのシナリオの設定と一部テストの自動化を体験します|
|9|[テストをしてみよう（性能テスト）](https://qiita.com/minimumskills/items/f5bab03b081740c0b369) |性能テストスクリプトの開発を体験します|
|10|[テストをしてみよう（セキュリティーテスト）](https://qiita.com/minimumskills/items/bb4feb7445c866e6f464)|ツールを使ったセキュリティーチェックを体験します|
|11|[監視をしてみよう（運用）](https://qiita.com/minimumskills/items/f7cd01d7f4adf37d97a7)|運用用のWeb動作監視スクリプトの開発・設定を体験します|

## ドキュメント作成体験コンテンツ

それではドキュメントを作成（学習）していきましょう。
なお、作成するドキュメントとしては、要件定義書や設計書といったITプロジェクトに関連したものだけでなく、見積書や議事録等の一般ビジネスドキュメントも作成してみたいと思います。

>一般ドキュメント（見積書や稟議書）を含めたのは、実際に実務で利用しますし、それらが作れないとITプロジェクト関連ドキュメントは作れないと思うからです。

また、ドキュメント作成に際し、事前に知っておいたほうがよい知識についても說明します。

### 前知識

ではまず、前知識から。

|No|前知識|備考|
|-|-|-|
|1|[開発プロセスと関連ドキュメント](https://qiita.com/minimumskills/items/007354f3fb63b9770901)|ドキュメントの前にプロセスについて理解しておきましょう|
<!--
|2|ドキュメント作成方針|本コンテンツにおけるドキュメント作成の前提・方針を說明します|
-->

### ITプロジェクト関連ドキュメント

ITプロジェクト関連ドキュメントについて学習しましょう。
開発環境（人材）の近代化やアジャイル開発の普及などで、以前と比べればだいぶ無駄なドキュメント作成は減ってきてる感じはしますが、まだまだドキュメント作成は必要です（むしろドキュメント化すべきものはしっかりする時代になってきていると感じます）。

>なお、本コンテンツで提供しているサンプルは最低限かつ独自の内容です。ご利用に際しては自身の環境や実践ガイドブックの内容を参考に適宜アレンジしてください。

### サンプルの形式と注意点

このコンテンツでは各ドキュメントのサンプルを提供していますが、

* ITプロジェクト関連ドキュメントは基本PowerPoint形式（WBS、課題管理表を除く）
* 一般ビジネスドキュメントはExcel形式

となっています。実際の現場ではいろいろな形式を使いますので適宜調整してください。
また、内容は最低限のものになっていますのでご了承ください。

ドキュメントの学習コンテンツは以下の通りです。

|No|ドキュメント名|備考|
|-|-|-|
|1|[プロジェクト計画書](https://qiita.com/minimumskills/items/25f3d5de016be003b119)|プロジェクトの概要、目的、予算、期間などを記述|
|2|[WBS（ガントチャート）](https://qiita.com/minimumskills/items/1a4c51f00e49a20676c4)|プロジェクトで対応するタスク、期間、担当などを記述|
|3|[課題管理表](https://qiita.com/minimumskills/items/adab4fbb865733d73a68)|プロジェクト進行における課題と対応状況を記述|
|4|[要件定義書](https://qiita.com/minimumskills/items/f9589953d48118d9f71f)|システムとして実現する内容を記述。業務、機能、非機能要件などに分かれる|
|5|[基本設計書](https://qiita.com/minimumskills/items/8e5863292b9215a2b29f)|システムの基本、共通となる技術要素を記述|
|6|[詳細設計書](https://qiita.com/minimumskills/items/556e963c54e95c0a540a)|開発に必要な詳細仕様・情報を記述|
|7|[テスト計画書](https://qiita.com/minimumskills/items/565e943767ae6d75159a)|テストの目的、実施内容、方法、スケジュールなどを記述|
|8|[テストシナリオ（指示書）](https://qiita.com/minimumskills/items/30e12e428b54bc68aaff)|各種テストの詳細実施内容を記述|
|9|[テスト結果報告書](https://qiita.com/minimumskills/items/017b48a9933172fe43ef)|各種テストの結果（まとめ）を記述|
|10|[運用計画書](https://qiita.com/minimumskills/items/e4c5b9d5fa37e6b66d8a)|運用の対象となる業務、対応体制等を記述|
|11|[運用マニュアル（業務）](https://qiita.com/minimumskills/items/491ee9d2382124f39d42)|業務運用を行うためのマニュアルを記述|
|12|[運用マニュアル（システム）](https://qiita.com/minimumskills/items/bc3c5a5704ed49820895)|システム運用を行うためのマニュアルを記述|
|13|[リリース判定基準（書）](https://qiita.com/minimumskills/items/0b74fd9ec87dbcba759a)|リリース判断する条件を記述|

### 一般ビジネスドキュメント

一般的なドキュメントも作成できるようになりましょう（いろいろなドキュメント作成の基本）。

|No|ドキュメント名|備考|
|-|-|-|
|1|[ヒアリングシート](https://qiita.com/minimumskills/items/e4e994f9cbd0d6c2a730)|いわゆる5W1Hを明確にする質問とその回答を記述（見積視点）|
|2|[見積書](https://qiita.com/minimumskills/items/ee9c1702494051f72523)|開発委託会社から発注会社へ提示する|
|3|[発注書](https://qiita.com/minimumskills/items/c4b9adca77abaefee9c1)|発注側から開発委託先へ提示する（準備は委託側が行うことも）|
|4|[検収書](https://qiita.com/minimumskills/items/fd787a66a2b972698c05)|発注側から開発委託先へ提示する（準備は委託側が行うことも）|
|5|[請求書](https://qiita.com/minimumskills/items/812aa4e5ccbb63eba11e)|開発委託会社から発注会社へ提示する|
|6|[議事録](https://qiita.com/minimumskills/items/0e4109667f412d24fdf3)|会議の主催側が記述するのが一般的|
|7|[稟議書](https://qiita.com/minimumskills/items/c615354af445038f5158)|各社に存在するが、本記事では発注側の発注稟議を例示する|
|8|[報告書（顛末書）](https://qiita.com/minimumskills/items/0ae8e76818cd843f905f)|各社に存在するが、本記事では開発側の顛末書として例示する|

<!--
### 時系列での並び替え（参考）

参考までに、実務における利用時系列で整理すると以下のような感じでしょうか。

* ヒアリングシート
* 見積書
* プロジェクト計画書
* 議事録
* 稟議書
* 発注書
* WBS
* 課題管理表
* 要件定義書
* 基本設計書
* 詳細設計書
* テスト計画書
* テストシナリオ（指示書）
* テスト結果報告書
* 運用計画書
* 運用マニュアル（業務）
* 運用マニュアル（システム）
* リリース判定基準（書）
* 検収書
* 請求書
* 報告書（顛末書）
-->

## 参考

* [デジタル庁 デジタル社会推進標準ガイドライン](https://www.digital.go.jp/resources/standard_guidelines/)
* [DS-120 デジタル・ガバメント推進標準ガイドライン実践ガイドブック　各種テンプレート](https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/e2a06143-ed29-4f1d-9c31-0f06fca67afc/ec6f6641/20220422_resources_standard_guidelines_guideline_09.zip)
* [TISインテックグループさん](https://www.tis.co.jp/)が運営する[Fintan](https://fintan.jp/)
* [PMBOK（Wiki）](https://ja.wikipedia.org/wiki/PMBOK)

## 補講

このコンテンツで紹介しきれなかった技術やドキュメント、その他ノウハウ等を随時、補講（補足）コンテンツとして追加していこうと思ってます。また、各記事の解説動画なども追加できればいいなとは思ってます。