Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

仕様書作成のポイント_180814

15,328 views

Published on

最近(2018年)思う仕様書作成のポイント

Published in: Business
  • Be the first to comment

仕様書作成のポイント_180814

  1. 1. 1 最近(2018年)思う 仕様書作成のポイント ~ 仕様書く前に決めたほうがいいこと…とかとか ~
  2. 2. 自己紹介 2 おすぎです ゲーム開発で企画してる 10年くらい。いろいろやってた 最近の趣味は、 登山とか料理とか 部屋の模様替えとか
  3. 3. このスライドが役に立つとき 3 「ワタシハ シヨウショ チョットデキル」 という人がいたら、 このスライドは必要ありません 「毎回、仕様書の書式が変わって安定しない」 「みんな… 仕様書… 書き方違う」 …っていう場合はスライド読み進めるといいことあるかも? お 前 見 込 み ア リ
  4. 4. このスライドの大事なポイント 4 ★仕様作成を分業するときのポイント ★仕様書に記述する機能のポイント ★仕様書のフォーマットを作るメリット 最近仕様書をconfluenceなど Webベースで作成することが多いので、 仕様書のフォーマットはconfluenceに対応します
  5. 5. そもそもの話 5 仕様書とはなにか?
  6. 6. そもそも仕様書とは… 6 ゲーム企画者が書く仕様書は、 だいたいシステム開発での「外部仕様」に相当する (雑な言い方) ゲームの仕様は雑に言うと 「プレイヤーから見て把握できるもの全て」です >画面のレイアウトとか数字の表示とか >画面の遷移とか >画面のなにか動きとか演出とか 画面や見える処理の動きなどは、ほとんどすべて仕様作成対象 → ダメージ計算式とかも調査すれば一応把握できるのでそれも入れちゃう → ソースコードとかはプレイヤーには見えないのでそういうのは入れちゃわない
  7. 7. 仕様書と企画書の違い 7 企画書 仕様書 「ゲームの各機能単位での役割・目的や機能自体を伝えるもの」 その機能はプレイヤーにどういう印象や意識をもたせるのか を目的として、実装者が実装できるレベルで説明する 「ゲーム全体の面白さを伝えるもの」 可能であればどういう機能があるかが一覧で網羅されて、 それぞれの機能がどういう繋がりになっているかが、 記されていると好ましい
  8. 8. そもそも…どうして作るの… 8 仕様書は作る目的は みんなで同じことを考えて作るため
  9. 9. 仕様書を書く目的 9 開発メンバーに伝わりやすくする 開発メンバーに作る機能を伝える  機能単位での目的を伝える  見た目的にはどんな感じか伝える  どんな機能があるか伝える  どんな設定ができるか伝える 【目標】誰が見ても機能的にだいたい同じものが作れる  物事を正確に伝える  普段使わない言葉には、その言葉の説明を付け加える  言葉で説明できなければ図示する
  10. 10. そもそも仕様書類は… 10 仕様書類は わかりやすく、正確に
  11. 11. わかりやすく伝えるための表現方法 11 機能の概要など、短い文章で完結に説明する 基本的な表現方法 項目に対して2つ以上の適用がある際に効果的 (例)閲覧状態と達成状態バッジの表示 以下の場合の表現に効果的 ・列挙される項目が3個以上の場合 ・項目は同じ粒度 ・項目は文章ではなく体言止め 文章で説明しにくい状態を補填する時に効果的 (例)実績解除型とは プレイヤーが任意にミッションを受託選択することなく、 常時ゲーム進行を監視して、条件達成したミッションを案内する 表組み 箇条書き文章 図示 未閲覧 達成済み バッジ表示 ○ ○ 「NEW」 ○ ✕ 「NEW」 ✕ 達成件数 ✕ バッジなし
  12. 12. 次 12
  13. 13. そもそもの話 13 一人で仕様書を全部作成することはあまりない なので、まず仕様書を分割する このスライドのポイント
  14. 14. 機能の分割 14 【分割の目的】 ・分業して早く終わらせる ・分けることで、読みやすさを確保する 【分割の作業】 ①全仕様を2段階で分割して「大項目」と「小項目」に分ける ②まずは、大項目で担当者を分ける ③次に、長所/短所/タスク量を鑑みて、小項目の担当を細かく振り分ける ④小項目(機能の一つ)を一つの書類とする →HTMLで仕様を格納する場合(confluenceなど)に作成しやすくなる 機能単位で仕様を分割する このスライドのポイント
  15. 15. 例:よくあるスマホゲーム機能の大項目 15 起動処理機能 ホーム機能 クエスト機能バトル機能 編成機能 育成(強化)機能 ミッション機能 ショップ機能 ガチャ機能 ストーリー 表示機能 その他機能 共通機能 メニュー機能 チュートリアル 機能 プレイヤー情報 エネミー情報 バトル周りをまるっと担当 UIの知見に長けている人担当 ゲーム以外の(システム的な)機能に詳しい人が担当 フレンド機能
  16. 16. 例:よくあるスマホゲーム機能の小項目 16 ○起動処理機能 ・初回起動遷移 ・通常起動遷移 ○その他機能/共通機能 ・ヘッダー/フッター ・ローディング ・PUSH通知 ・ヘルプ/問い合わせ ・お知らせ ・バナーリンク ・既読処理 ・例外処理 ○ショップ機能 ・アイテム購入 ・課金チャージ購入 ○ストーリー表示機能 ・ストーリー表示呼び出し ・ストーリー表示スクリプト ○チュートリアル機能 ・チュートリアル ・サブチュートリアル ○フレンド機能 ○ホーム機能 ・ホーム ・ホームキャラクター表示 ・ログインボーナス ・プレゼントボックス ○編成機能 ・編成トップ ・バトル編成 ・武器装備 ・キャラクター詳細 ・武器詳細 ・助っ人選択 ○育成(強化)機能 ・育成トップ ・キャラレベルアップ ・キャラ上限解放 ・武器レベルアップ ・武器上限解放 ○メニュー機能 ・メニュートップ ・オプション ・プロフィール ・ムービー再生 ○バトル機能 ・バトル基本 ・バトル拡張 ・バトル用オプション ・コンティニュー ○クエスト機能 ・クエストトップ ・メインクエスト ・デイリー/ウィークリークエスト ・特殊クエスト ・バトルリザルト ○プレイヤー・エネミー情報 ・プレイヤー情報 ・キャラクター情報 ・武器情報 ・スキル情報 ・エネミー情報 ○ミッション機能 ・ミッション ○ガチャ機能 ・ガチャトップ ・課金ガチャ ・無料ガチャ(画面が全く違う場合) 以下のような単位で分解して各担当を決めるとよいかも 以下は例なので、実際の作成はまぁ…
  17. 17. 例:よくあるスマホゲームの機能階層図 17 機能(画面)のつながりを簡単に階層化したものを、 一緒に図示すると仕様書を読む側の理解が得られやすい 起動処理 ホーム 編成トップ バトル編成 武器装備 キャラクター詳細 武器詳細 助っ人選択 育成トップ キャラレベルアップ キャラ上限解放 武器レベルアップ 武器上限解放 ガチャトップ 課金ガチャ 無料ガチャ ログインボーナス プレゼントボックス クエストトップ ミッション 特殊クエスト 課金チャージ購入 オプション プロフィール アイテム購入 ムービー再生 ヘルプ・問い合わせ メインクエスト D/Wクエスト バトル バトルリザルト メニュートップ お知らせ コンティニュー バトル用オプション チュートリアル PUSH通知 ローディング ストーリー呼び出し 例外処理 サブチュートリアル ヘッダー/フッター 既読処理 ストーリースクリプト プレイヤー/エネミー情報 フレンド
  18. 18. 次 18
  19. 19. そもそもの話 19 仕様書 「ゲームの 各機能単位での役割・目的 や 機能自体を伝えるもの」 機能の役割・目的って? このスライドのポイント
  20. 20. 機能の目的思考(1/2) 20 「機能の中でプレイヤーに行動してもらいたいこと」 を目的にした機能を仕様とする (例)ミッション機能の目的 【1】初期プレイヤーを継続させる 【2】短期的な目標を持ってもらう ・ゲーム序盤用のミッションを提案する ・1つ終わったら次の新しいミッションを提案する ・ミッションを達成したら報酬を付与する ・毎日/毎週頭に新しいミッションを提案する ・エンドコンテンツ用のミッションを策定する →エンドコンテンツ上級者用の繰り返しコンテンツなので、 ミッションで補強する必要なし ・ミッション報酬を保管する →報酬の受取はプレゼントボックスで行い、プレイヤーが 能動的に行う保管行為はミッション仕様に含めない このスライドのポイント
  21. 21. コンテンツ目的 機能の目的思考(2/2) 21 そもそも、目的から必要な機能を導き出せればブレない プレイヤー 要望・感情 モチベーション 開発内容 【目的のワークシート】 ○○させる ○○させる ○○したい ○○でいいかな?まず○○しよう ○○もらえる ○○機能 ○○機能 ○○機能 ○○したい このスライドのポイント 目的と機能をつなげる ためのワークシート ○コンテンツ目的 ○プレイヤー要望/感情 モチベーション ○開発内容 以上の3つのレイヤーを つなげると、 目的から作るべき機能が より明確になる
  22. 22. コンテンツ目的 例:ミッション機能の目的ワークシート 22 プレイヤーの 要望・感情 モチベーション 開発内容 初期プレイヤーの継続 短期的な目標 チュートリアル後に 何をしたらいいか わからない 数日続けて価値の あるアイテムを ゲットしたい キャラや武器など ゲームの資産を 築きたい 特に目的なく 起動した 何をしよう 新着バッジ 表示機能 自動タブ遷移機能 デイリー ミッション機能 イベント ミッション機能 次のミッションは 何をしたらいいか わからない ミッション解放 制御機能 報酬付与 機能 達成したミッションが わからなくなった 達成バッジ 表示機能 ウィークリー ミッション機能 ミッションリセット 時間制御機能 メインミッション機能 日付がかわるまでに 達成したい イベントで もっと遊びたい
  23. 23. 次 23
  24. 24. そもそもの話 24 仕様書のルールを決めると なにか良いことあるの? このスライドのポイント
  25. 25. ルール・フォーマットのメリット 25 【書く】記載項目が決まっているので、仕様書作成効率が上がる 【読む】閲読の際の形式が決まっているので、目的を探しやすい 効率が上がる このスライドのポイント
  26. 26. 仕様書の標準記載項目ルール 26 このスライドのポイント 大見出し 小見出し 内容 Confluenceで 自動化できる 仕様書タイトル 仕様書のタイトル 更新履歴 仕様書の更新履歴。日付・変更タイトルや変更した概要・変更者を記す ○ 目次 仕様書の目次 ○ [機能名]とは 機能の概要を記載する [機能名]の目的 どういった意図で機能を開発するかを記載する [特徴ある機能]について 個別に書き記す機能がある場合に記載する データ構造 データに関する内容を記載する。ほとんどの場合マスター(static)データ項目を記載する [機能名]のデータ構造 各データの関係を図示する。一つの機能に単一のデータの場合はこの項目は必要ない [機能名]のデータ 機能が必要とするデータ項目の名称・内容・カラム名を表組みで記載する 処理 機能が必要とする特筆すべき処理を記載する [機能名]の処理 特筆すべき処理があれば必要に応じて記載 画面 機能が必要とする画面を網羅して記載する [画面]の流れ 機能の画面遷移図・フロー図を記載する [画面名]の画面 画面の詳細な内容を図表で記載する 備考 何か必要があれば記載する 標準的な記載項目を先に決めておいて、 フォーマットを作成しておくと追加時に仕様書作成時の負担が減る
  27. 27. 例:ミッション機能の仕様記載項目 27 大見出し 小見出し 内容 仕様書タイトル 【ミッション仕様(mission_spec)】 更新履歴 目次 [機能名]とは ・ミッションとは ・ミッションの「達成」の定義 [機能名]の目的 ・ミッションの目的 [特徴ある機能]について ・ミッションの分類 ・ミッション報酬の付与 データ構造 【ミッションのデータ構造】 [機能名]のデータ構造 ・ミッションのデータ構造 [機能名]のデータ ・ミッションの基本データ(tbl_mission) ・ミッション達成条件のデータ(enum_achievement_type) ・ミッション補助遷移のデータ(enum_navigation) ・ミッションの標準説明データ(tbl_mission_text) 処理 【ミッションの処理】 [機能名]の処理 ・ミッション達成の判定タイミング ・ミッションのリセットと進行状態の破棄 ・ミッションのバッジ表示 画面 【ミッション画面】 [画面]の流れ ・ミッションの流れ ・ミッション画面のタブ自動遷移の流れ [画面名]の画面 ・進行中ミッション画面 ・完了済みミッション画面 ・プレゼントボックス格納案内ポップアップ ・アイテム詳細ポップアップ 備考
  28. 28. 仕様書作成の最初に決めるルール 28 このスライドのポイント 決定事項 決定事項詳細 ルール例 決定者 テキストルール 文章の長さ 進捗管理担当 丁寧語の扱い 進捗管理担当 句読点 文末に句点(。)は使用しない。文中であれば使用する ※仕様書内のテキストルールのみ適用。ゲームテキストには適用しない 進捗管理担当 文語体の記載 ・「もの」「こと」を避ける ・「~を行う」「~をする」を避ける ・「~として」の使用は注意する ・「~ようなとして」の使用は注意する ※ただし日本語自体が難しいので心がける程度でいい 進捗管理担当 仕様書全体の目次 進捗管理担当 世界観用語 コンテンツディレクター システム用語 担当企画者 仕様書タイトル あらかじめ仕様書に英語のタイトルを策定して、リストを作成する ・ホーム仕様は「home_spec」 ・ホームで表示するキャラクター仕様は「home_character_spec」 ・ログインボーナス仕様は「login_bonus_spec」 進捗管理担当 画面の付番 ・トップ画面の付番「_top」 ・リスト画面の付番「_list」 ・ポップアップの付番「_pop」 ・アラートポップアップの付番「_alert」 ※余裕があれば最初に策定しておくくらいの優先度 進捗管理担当
  29. 29. データベース仕様について 29 ユーザーデータ マスターデータ ゲーム処理 マスター(static)データ ゲームを構成する静的なデータ オンラインゲームはマスターデータの規定が必要になる 機能によってはマスターデータが必要ないこともある ユーザー(dynamic)データ ユーザーの現在のゲームの進捗を表す動的なデータ ユーザーデータは仕様書では規定しにくい わからないところはデータベース設計者と話を詰めて作成しよう データの書き方 カラム項目 内容 データベースのカラム名 カラム項目を記載 カラムの説明を記載 実際のカラム名を記載 マスターが出来るまでは空欄 他にも値の範囲やプレイヤーが可視などは、必要に応じて記載 関係性データベースの場合、テーブル同士を参照しあうことが多く、 参照時にわかりやすくなるように記載すること (例)カラム内容時に参照先の仕様書類名を記載するなど データ構造の書き方 ○○データ □□データ △△データ このスライドのポイント データ一つ一つをアイコン化し、 データの繋がりを矢印線で結ぶ
  30. 30. 例:ミッション機能のデータ 30 カラム項目 内容 カラム名 ミッションID ミッションのID。自動インクリメントではなく、手動で記載 mission_id ミッションカテゴリ ミッションのカテゴリは以下の通り指定する 1:デイリーミッション 2:ウィークリーミッション 3:メインミッション 4:イベントミッション 5:初心者ミッション mission_category ミッション名 プレイヤーが見ることのできるミッションの名称を記載 曜日 ミッションカテゴリがデイリーミッション時に以下の通り指定する ALL:すべての曜日 SUN:日曜日 MON:月曜日 TUE:火曜日 WED:水曜日 THU:木曜日 FRI:金曜日 SAT:土曜日 week 表示優先順位 表示の優先順位を規定する。数字が若い順に並び替える mission_order ミッション説明 プレイヤーが見ることのできるミッションの説明を記載 ミッションの説明は個別に記載できるが、 入力をしない場合はミッション達成条件に基づいて定形文章が表示される mission_description ミッション発生条件 ミッションが発生する条件のミッションIDを指定する unlock_mission_id ナビゲーション遷移 ミッション補助遷移を指定する navi_type ナビゲーション値 ナビゲーション遷移によって指定する値が変わる(内容は「ナビゲーション遷移コンテンツの指定」のデータを参照) navi_value 開始日時 当該ミッションが開始する時刻をyyyy/mm/dd hh:mm:ssで指定する start_date 終了日時 当該ミッションが終了する時刻をyyyy/mm/dd hh:mm:ssで指定する end_date 達成条件 ミッション達成条件を指定する(内容は「ミッション達成条件」のデータを参照) mission_type 達成条件値1 上の達成条件によって指定する値が変わる(内容は「ミッション達成条件」のデータを参照) mission_type_value1 達成条件値2 上の達成条件によって指定する値が変わる(内容は「ミッション達成条件」のデータを参照) mission_type_value2 付与物タイプ 報酬の種類を以下の通り指定する ITEM:アイテム / CHARA:キャラクター / WEAPON:武器 / GOLD:ゲーム内通貨 / COIN:課金通過 reward_type 付与物ID 付与するアイテム/キャラクター/武器のIDを指定する ※付与は1種類とする reward_id 付与物数 付与する数量を記載 amount
  31. 31. 画面遷移仕様のポイント 31 フロー図の最低限ルール  左上から右下に流れる。逆流は例外として行うこともあり  条件分岐はダイヤ形。YESは下/NOは左右どちらか。1つの条件から2つ以上に分岐しない  画面・システム処理・プレイヤー操作・別機能呼び出しはフロー要素図形を分けておく  画面・ポップアップ・警告ポップアップは色を分けておく(作業見積もり時に負担が減る)  遷移元の操作や画面を記載しておく(プログラム実装者の負担が減る) このスライドのポイント フロー図は独自の記載ルールをつくる ただし、基本的なルールはJIS企画のフローチャートに沿う 面倒でも愚直に作成
  32. 32. 例:ミッション機能の画面遷移 32 判例 画面 ポップアップ 警告ポップアップ SDK利用 ホーム画面から デイリーミッション メインミッション ウィークリーミッション イベントミッション 進行中ミッション デイリーミッション メインミッション ウィークリーミッション イベントミッション 完了済みミッション 報酬受取/一括報酬受取 アイテム詳細 ナビゲーション 所持枠を超えた 報酬がある プレゼントボックス格納案内 アイテム詳細 指定画面へ NO YES 左上から右下に流れる 逆流は例外として 行うこともあり 遷移元を記載する 条件分岐はダイヤ型 YESは下。NOは左右 1つの条件から 2つ以上に分岐しない 画面とポップアップは 色を分ける プレイヤー操作は 点線角丸四角形 別機能への遷移は 専用の図形で作成 画面をまとめるなど 見えやすいように 工夫を行う 完了処理 ゲームの処理は 点線四角形 システム処理は 点線四角形
  33. 33. 画面仕様のポイント 33 基本的な書き方 【画面図】  画面図のワイヤーフレームを描画する  要素の名前と番号を記載する  ボタンはボタンとわかるように角丸四角形などで、 ラベルはラベルとわかるように四角形などでの、ルールを決める  色味はグラフィック作成時に意識させないように平坦な色を使用 【要素説明】  画面外に表組みで記載する このスライドのポイント 「後から編集しやすい」「読みやすい」を両立したルールを作る 番号 パーツ 備考 処理 画面図対応 番号を記載 パーツ名を記載 注意点や表示文言を記載 ボタン押下時の処理を記載 戻 ミッション デイリー ウィークリー メイン ? ステージをクリアしよう 報酬 アイコン 50/999 挑戦する 1 2 3 4 5 NEW! 6 7 8 9 10
  34. 34. 画面仕様を作るツール 34 このスライドのポイント サービス・ソフト名 長所・短所 Microsoft PowerPoint ツールとしてこなれていて、使用者が多い 使うならOfficeOnlineよりも、インストール型がいいかも(個人的趣向) confluenceが仕様書作成基本ツールだと相性が悪いが、図内の細かい操作はしやすい cacoo Web上でフローチャートやワイヤーフレームが作成できる Confluence Serverプラグインを使用してConfluenceに図を挿入できる Lucidchart Web上でフローチャートやワイヤーフレームが作成できる(フローチャートメイン) Lucidchart Confluence OnPremで直接confluenceで図を作成・修正できる Gliffy Diagram Web上でフローチャートやワイヤーフレームが作成できる Gliffy Diagrams for Confluence アドオンでConfluenceに図を挿入できる オンライン作図ツールを駆使すると便利 レガシーにいくならPowerPointもあり オンライン作図ツールはPowerPointになれた人だと使いづらいところがあるかも
  35. 35. 例:進行中ミッションの画面 35 番号 パーツ 備考 処理 1 戻るボタン 戻るアイコン 押下すると、直前画面に遷移する - AndroidBackキー - 押下すると、直前画面に遷移する 2 タイトル 文言「ミッション」 3 ヘルプボタン ヘルプボタン 押下すると、ヘルプ画面を表示 → ヘルプ/問い合わせ(help_spec)を参照 4 ミッションタブ タブ形式 文言「デイリー」「ウィークリー」「メイン」 選択されて画面が表示されているボタンは不活性 状態 押下すると、下部ミッションのリストに押下 した内容を表示する(表示切り替え) 5 ミッション名 指定されたミッション名を表示 6 報酬アイコン 付与物のアイコンを表示 7 進行数 ミッションの進行を分数で表示 母数が4桁を超えた時は表示しない 8 進行ゲージ ミッションの進行をゲージで表示 9 新規バッジ 新規ミッションに「NEW」バッジを表示 →既読処理(unread_spec)を参照 10 ナビボタン 文言「挑戦する」 未達成でかつ、ナビゲーションが設定されている ときのみ表示 押下すると、ミッション補助遷移で指定され た画面に遷移する 11 報酬受取ボタン 文言「報酬受取」 達成済みでかつ報酬未受取りの場合のみ表示 押下すると、報酬を受け取り、当該ミッショ ンの完了処理を行う 12 一括報酬 受取ボタン 文言「報酬受取」 報酬受取ミッションがない場合は不活性表示 「デイリー」が表示されている場合はデイリーの み対象とする 押下すると、一括で報酬を受取、該当ミッ ションの完了処理を行う 13 スクロールバー スクロールバーを表示 ヘッダー 戻 ミッション デイリー ウィークリー メイン ? ステージをクリアしよう 報酬 アイコン 50/999 挑戦する 1 2 3 4 5 NEW! 6 7 8 9 10 フッター 報酬受取 一括報酬受取 11 12 13
  36. 36. 【番外編】confluenceの便利な機能 36 基本的な機能  エディタ: 基本的なWYSIWYGエディタ。大体のものは揃ってる  日付挿入: 「//」を入力するとカレンダーが表示。マウス操作で日付挿入  リンク挿入: 同じconfluenceスペース内のURLを貼り付けると、ページ名に修正してくれる  チェックボックス: WYSIWYGエディタに標準付属。チェック項目が簡単に作成可能 使いやすい標準マクロ ●「展開」&「目次」、「展開」&「履歴の変更」で仕様書上部のフォーマットを作成 ●「デッキ」「カード」を組み合わせると、タブ形式でページを表示 ●「抜粋」「抜粋を含める」でページ内の一部を他ページに転記 ※ただし、抜粋箇所は1ページに1つのみ ●ステータスラベルで個別の進捗管理 ●子ページの表示でダッシュボード整理

×