SlideShare a Scribd company logo
1 of 48
プログラマが欲しい仕様書と
は



             東京開発グループ
       リードソフトウェアエンジニア
                 牧野 克俊
ソフトウェア工学って知ってます
      か?
ソフトウェア工学とは


• ソフトウェアの開発・運用・保守に
  ついて体系化、分析、研究する分野
• 高度で安全なソフトウェアを短期間
  で設計するための研究を行う
• 知っていると役に立つのは
–ソフトウェア開発工程
–ソフトウェア開発方法論
• 知っていると役に立つのは
–ソフトウェア開発工程
–ソフトウェア開発方法論
ソフトウェアの開発工程
ソフトウェアの開発工程
•   要求分析
•   設計
•   コーディング
•   テスト
•   運用・保守
ソフトウェアの開発工程



• 要求分析
 – ソフトウェアがどのような機能を持つべきか
   を検討し文書化する。
ソフトウェアの開発工程



• 設計
 – 機能がソフトウェアとしてどのように実装さ
   れるべきかを検討し仕様化する。
ソフトウェアの開発工程



• コーディング
 – 仕様に従ってプログラムを作成する。
ソフトウェアの開発工程



• テスト
 – 作成されたプログラムが機能的な要求を満た
   していることを実証する。
ソフトウェアの開発工程



• 運用・保守
 – ソフトウェアを使用したり、新たな要求に応
   じて機能を追加・変更する。
一般的に必要とされるドキュメ
      ント
必要とされるドキュメント
•   企画書
•   要求仕様書
•   設計書
•   機能仕様書
•   詳細仕様書
•   テスト仕様書
•   運用マニュアル
ドキュメントはなぜ必要か?
ドキュメントはなぜ必要か?


• 効率よく開発するため
 – 情報共有するため
 – 思考をトラッキングできるようにする
   ため
 – 質問を減らすため
コラム:情報共有とは
• 「教育の情報化と情報セキュリ
  ティ」より
 – 機密性(confidentiality)
   • 認可されたものだけが情報にアクセスできること
 – 完全性(integrity)
   • 正確であること、及び完全であることを維持する
     こと
 – 可用性(availability)
   • 許可されたものが必要なときに情報にアクセスす
     ることが可能であること
コラム:情報共有とは



• 必要な人がいつでも自由に、正しい
  情報を取得できるようにすること
ゲーム制作に最低限必要なドキュメント
        は?
最低限必要なドキュメント
1. 企画書
2. 機能仕様書
3. 運用マニュアル
1. 企画書
• タイトル、プラットフォーム、コンセプ
  ト、売り、ゲームシステム、キャラク
  ターなどの説明
• 1枚目からラストにかけて、流しても読
  めるような企画書が望ましい
• 一番重要なのは『何かが面白い』『遊ん
  でみたい』『売れそう』という3点
2. 機能仕様書
• ユーザの観点からゲームがどのように動
  くか記述する
• どのように実装されるかは問題にしない
• 機能を中心としており、用語の定義と
  か、UI とかいったものの仕様も定める
3. 運用マニュアル



• システムの構築方法
• 操作方法や注意点
• トラブル発生時の対処法
プログラマが欲しい仕様書はど
      れ?
機能仕様書です!
プログラマが仕様書を欲しがる理由
       は?
ソフトウェアデザインをするた
      め!
ソフトウェアデザインとは



• プログラムを機能単位に分割し、構
  造化したり処理の流れを決める
コラム:良いプログラマの生態



• リファクタリングは苦にならないが、仕
  様変更による作りなおしは嫌がる
• 心配性もしくは細かいことを気にする
どんな機能仕様書を書けばいい
      か?
最低限必要な項目
•   シナリオ
•   対象外
•   概要
•   詳細
•   未解決の問題
•   用語解説
シナリオ


• ターゲットは?
• どのような状況で使うのか?
• どのように使うか?
対象外



• 明らかにオーバースペックなこと
• 今のバージョンでやらないこと
• 対象外のプラットフォーム
概要

• 一覧性が重要
• 全体像を把握させる
 – フローチャート
 – 関係性
詳細


• 想定される状況を全て書く
• 何がエラーになるか全て書く
• 全てのエラーに対してどう処理する
  か書く
未解決の問題



• 何が未解決か残す
• これが残っているうちはプログラマ
  にコードを書かせない
用語解説



• 一般的な単語でもドキュメント中で
  の意味を書く
仕様書のアンチパターン
1.  同一レイヤの事を書いてるのに人によってフォーマットが
    ばらばら
2. 一見似ているがよく見ると若干違う情報があちこちにある
3. できないこと、やらなくていいことが書かれていない
4. 単語、言い回しが統一されていない
5. 値の範囲が書かれていない、単位が統一されていない
6. 実現すべきことが書かれていないのに詳細なロジックだけ
    書いてある
7. 語尾が「~したい」で終わっている
8. 変更があっても更新されない
9. プログラマに相談、確認がされていないことがある
10. わからないことがあったら直接聞いてくださいと書いてあ
    る
1.   同一レイヤの事を書いてるのに人に
      よってフォーマットがばらばら




• 絶対に必要な項目を抽出する作業
  が必要
–テンプレートを作りましょう
2. 一見似ているがよく見ると若干違う情報
        があちこちにある




• 仕様書の構造を見直しましょう
–共通部分を切り分ける
–機能の関係性が分かるように
3. できないこと、やらなくていいことが書
         かれていない

• これらはプログラムの設計に影響す
  る
 – どんなエラーが起こり得るか?
 – その時どうするか?
 – 何が必要ないか?
4. 単語、言い回しが統一されていない

• 用語集は必須
 – ないと絶対誤解します!
• 言い切り言葉でしめる
 –例
  • ☓ ザコをすべて倒すことで、ボスと戦うことがで
    きます(できるようになります)
  • ○ザコを全て倒すと、ボス戦に移行します
5. 値の範囲が書かれていない、単位が統一
         されていない

• 値には必ず取り得る範囲を決める
 – 無限は実現不可能
• 精度を気にする
 – [0-1000] の値を取る時、小数点何位まで比較
   するか
• 数値を書く場合は常に単位を書く
 – 秒なのかミリ秒なのかはっきりと
6. 実現すべきことが書かれていないのに詳
     細なロジックだけ書いてある




• プログラマが知りたいのは実現すべきこ
  と
 – ロジックはプログラマに考えさせるのが
   Better
7. 語尾が「~したい」で終わっている




• 仕様書には実装すべきことだけを書
  く
 – ボリュームの調整はスケジュールを組
   む段階でする
8. 変更があっても更新されない




• こまめに更新
• 相談したら即反映
9. プログラマに相談、確認がされていない
         ことがある



• 仕様書を書いたら絶対プログラマの
  チェックを入れる
 – フローがおかしくないか
 – データ構造に無駄がないか
 – ロジックがもっとシンプルにならないか
10. わからないことがあったら直接聞いて
       くださいと書いてある



• これは記述が足りないということ
• 仕様書は誰が読んでも誤解なく理解
  できるように書くべき

More Related Content

What's hot

What's hot (20)

ゲームの仕様書を書こう3 仕様書に記載するデータと画面
ゲームの仕様書を書こう3 仕様書に記載するデータと画面ゲームの仕様書を書こう3 仕様書に記載するデータと画面
ゲームの仕様書を書こう3 仕様書に記載するデータと画面
 
ゲームの仕様書を書こう2 仕様書に記載する機能内容
ゲームの仕様書を書こう2 仕様書に記載する機能内容ゲームの仕様書を書こう2 仕様書に記載する機能内容
ゲームの仕様書を書こう2 仕様書に記載する機能内容
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
ゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのことゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのこと
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
 
ノベルゲーム動的演出の考え方
ノベルゲーム動的演出の考え方ノベルゲーム動的演出の考え方
ノベルゲーム動的演出の考え方
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
ゲーム開発とデザインパターン
ゲーム開発とデザインパターンゲーム開発とデザインパターン
ゲーム開発とデザインパターン
 
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
「3Dゲームをおもしろくする技術 」のいろいろな読み方
「3Dゲームをおもしろくする技術 」のいろいろな読み方「3Dゲームをおもしろくする技術 」のいろいろな読み方
「3Dゲームをおもしろくする技術 」のいろいろな読み方
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
スマートフォンゲーム企画書制作のポイント
スマートフォンゲーム企画書制作のポイントスマートフォンゲーム企画書制作のポイント
スマートフォンゲーム企画書制作のポイント
 
コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
UE4で実現できた理想のゲーム開発ワークフロー
UE4で実現できた理想のゲーム開発ワークフローUE4で実現できた理想のゲーム開発ワークフロー
UE4で実現できた理想のゲーム開発ワークフロー
 
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて
 

Similar to プログラマが欲しい仕様書とは

PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)
nishikawa_makoto7
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
Takuya Nishimoto
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Hiro Yoshioka
 
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
masashi takehara
 

Similar to プログラマが欲しい仕様書とは (20)

議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)
 
読書会Vol6
読書会Vol6読書会Vol6
読書会Vol6
 
20120529 アジャイルサムライ読書会第6回
20120529 アジャイルサムライ読書会第6回20120529 アジャイルサムライ読書会第6回
20120529 アジャイルサムライ読書会第6回
 
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティスeZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
 
Php勉強会スライド
Php勉強会スライドPhp勉強会スライド
Php勉強会スライド
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
 
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
 
DSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイルDSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイル
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
 
SQiP20222投稿応援フォーラム「開発現場で役立つ論文の書き方のお話」
SQiP20222投稿応援フォーラム「開発現場で役立つ論文の書き方のお話」SQiP20222投稿応援フォーラム「開発現場で役立つ論文の書き方のお話」
SQiP20222投稿応援フォーラム「開発現場で役立つ論文の書き方のお話」
 
Object oriented
Object orientedObject oriented
Object oriented
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
 
社内 DDD 勉強会第1回
社内 DDD 勉強会第1回社内 DDD 勉強会第1回
社内 DDD 勉強会第1回
 
Janog31 bof-pattern-sasaki-01
Janog31 bof-pattern-sasaki-01Janog31 bof-pattern-sasaki-01
Janog31 bof-pattern-sasaki-01
 
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
 

More from Katsutoshi Makino

More from Katsutoshi Makino (9)

Aiming 開発ゲームの裏側
Aiming 開発ゲームの裏側Aiming 開発ゲームの裏側
Aiming 開発ゲームの裏側
 
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだことUnity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化
 
C# で i phone ゲーム開発
C# で i phone ゲーム開発C# で i phone ゲーム開発
C# で i phone ゲーム開発
 
Mmo game networking_1
Mmo game networking_1Mmo game networking_1
Mmo game networking_1
 
プログラマに優しいバグレポートの書き方
プログラマに優しいバグレポートの書き方プログラマに優しいバグレポートの書き方
プログラマに優しいバグレポートの書き方
 
Unity って何?
Unity って何?Unity って何?
Unity って何?
 
Unity ゲーム開発
Unity ゲーム開発Unity ゲーム開発
Unity ゲーム開発
 
各種ゲームエンジンの紹介と利用について
各種ゲームエンジンの紹介と利用について各種ゲームエンジンの紹介と利用について
各種ゲームエンジンの紹介と利用について
 

Recently uploaded

Recently uploaded (11)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

プログラマが欲しい仕様書とは