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

ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
Sho Iwamoto
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
 

What's hot (20)

Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発
 
ゲームの仕様書を書こう2 仕様書に記載する機能内容
ゲームの仕様書を書こう2 仕様書に記載する機能内容ゲームの仕様書を書こう2 仕様書に記載する機能内容
ゲームの仕様書を書こう2 仕様書に記載する機能内容
 
Machinationの紹介
Machinationの紹介Machinationの紹介
Machinationの紹介
 
ノベルゲーム動的演出の考え方
ノベルゲーム動的演出の考え方ノベルゲーム動的演出の考え方
ノベルゲーム動的演出の考え方
 
MMORPGで考えるレベルデザイン
MMORPGで考えるレベルデザインMMORPGで考えるレベルデザイン
MMORPGで考えるレベルデザイン
 
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
 
ゲーム開発とデザインパターン
ゲーム開発とデザインパターンゲーム開発とデザインパターン
ゲーム開発とデザインパターン
 
ゲームの仕様書を書こう3 仕様書に記載するデータと画面
ゲームの仕様書を書こう3 仕様書に記載するデータと画面ゲームの仕様書を書こう3 仕様書に記載するデータと画面
ゲームの仕様書を書こう3 仕様書に記載するデータと画面
 
ゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのことゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのこと
 
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
 
面白いゲームを作る方法
面白いゲームを作る方法面白いゲームを作る方法
面白いゲームを作る方法
 
2D格闘ゲームにおけるユーザビリティとゲームデザインについて
2D格闘ゲームにおけるユーザビリティとゲームデザインについて2D格闘ゲームにおけるユーザビリティとゲームデザインについて
2D格闘ゲームにおけるユーザビリティとゲームデザインについて
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
 
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろうUE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
 

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 (10)

論文紹介: 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
 
論文紹介: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
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

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