設計を見直そう18、項目を意識してみる。

すぽんって、時間ができると何をしたらよいのか迷うことがあって。
にんげんって何だろう。
日々時間で過ごしていると、予定が無いことの方が特殊になって。

んー。

自由な方がいいよねってご意見は最もだけれど。
違うような気もしたり。

朝に歯を磨いたり、お昼にご飯を食べたり。
そんな些細なこと。
夜寝る前にはたぶん、ああ、うん。ちにたいってループしてる。
そいうった習慣みたいなもの、それの歯車がちょっとだけズレてしまうことがあって。

なんでここ30分空いてるのさ!みたいな。
いま丁度そのへんって所から、今回の記事ははじまるわけでした。

ゲームつくるよー。
 
 
前回は項目を意識すれば処理の流れをまとめられるかなって結論。

ベースは7月に書いていた記事に出力シート生成フローがあるので、このあたりをベースに考えてみる。(過去のトワナナさん優秀)

説明文かく

ええと、まずは「新規スタートができる」ができることだよね。
まず大項目はというと。

出力シート生成フローによると以下の項目があるから、これを大項目にしてみようかな。

大項目(案1)
・セーブ・データ作成
・空アクション生成
・プレイ・メモリの初期化
・プレイ・メモリからセーブ・データの生成
・現在の状況の文章の生成
・次回向けアクションの生成
・出力シート生成

ふむー。

それっぽくはなるけれど、これ、中項目にした方がよい気がしてきた。
処理の順番としてはあっていると思う。
思うのだけけれど、うーん、なんだろう。
セーブ・データの生成ってなんのためにやるのだろう?という部分、主語が抜けている感。

例えばゲーム中にセーブ・データの生成といったら、いくつかパターンを思いつく気がする。
それは中断セーブなのかもしれないし、セーブ・データの複製(コピー)の為の入れ物準備なのかも知れない。
ああ、うん。
わかった。
何のセーブ・データなのか?が当てはめられていないから、大項目として考えると収まりがよくない。

例えば料理だったら、そう、下拵えとか、具材の切り方や炒め方は違ってくる。
お味噌汁に使う豆腐と、麻婆豆腐に使う豆腐の下拵えは違うし、もめんか絹ごしかも違う。
それが何に使われるのかが、何をするための処理なのかを、処理の上に。
たぶんあれだ、目的が必要。

ええーっと。
つまり大項目は目的を持っていないとダメなのかも。

「新規スタート」というのは、ある意味いちばん上の目的ではあるけれど。
うーん、これは名前の位置に置いておくのがいいかな。
その下、もう一回大項目を整理してみよう。

右側に添えられているコメントがヒントになりそうかも?
大項目は処理の目的をカテゴリとして捉えて「外部データの準備」「内部データの準備」「ソースの生成」「出力シートの生成」の4つ。

大項目(案2)
・外部データの準備
・内部データの準備
・ソースの生成
・出力シートの生成

あ、これに「アクションの判定」という大項目を入れると「ロードスタート」や「継続スタート」もカバーできるかな?

大項目(案2B)
・外部データの準備
・内部データの準備
・アクションの判定
・ソースの生成
・出力シートの生成

これに最初にリスト化した項目を中項目として配置する。

大項目と中項目(案2C)
・外部データの準備
  ・セーブ・データ作成
  ・空アクション生成
・内部データの準備
  ・プレイ・メモリの初期化
・アクションの判定
  ・(・・・)
・ソースの生成
  ・プレイ・メモリからセーブ・データの生成
  ・現在の状況の文章の生成
  ・次回向けアクションの生成
・出力シートの生成
  ・(・・・)

「アクションの判定」の項目は、新規スタート時には必要ないので、たぶんカラになるはず。
あと、「出力シート生成」の項目は、大項目として「出力シートの生成」に置き換えているので処理自体は別に決めないといけないかな。
たぶん、「ソースの合成」と「ファイル出力」みたいな感じ。

忘れてた。

ルール・シートの読み込みと、キャラクタ・シートの読み込みも必要だよね。
そうするとこんな感じ?

大項目と中項目(案2C)
・外部データの準備
  ・ルール・シートの読み込み
  ・キャラクタ・シートの読み込み
  ・セーブ・データ作成
  ・空アクション生成
・内部データの準備
  ・プレイ・メモリの初期化
・アクションの判定
  ・なし
・ソースの生成
  ・プレイ・メモリからセーブ・データの生成
  ・現在の状況の文章の生成
  ・次回向けアクションの生成
・出力シートの生成
  ・ソースの合成
  ・ファイルの出力

んー。
キャラクタ・シートがあると新規スタートとして判定するので、大項目は分けた方がよい?
であれば、もういっこ、「起動の処理」の項目を追加。
起動時にはモードを判定しないといけないから、「起動モードの判定」という処理、中項目も追加で。

こんな感じ。

大項目と中項目(案2D)
・起動の処理
  ・起動モードの判定
  ・ルール・シートの読み込み
  ・キャラクタ・シートの読み込み
・外部データの準備
  ・セーブ・データ作成
  ・空アクション生成
・内部データの準備
  ・プレイ・メモリの初期化
・アクションの判定
  ・なし
・ソースの生成
  ・プレイ・メモリからセーブ・データの生成
  ・現在の状況の文章の生成
  ・次回向けアクションの生成
・出力シートの生成
  ・ソースの合成
  ・ファイルの出力

なんかへん。
「起動時にモードの判定」を行ったのちの「新規スタート」なのだから、「起動モードの判定」が中項目として「新規スタート」の流れに含まれるのは変。
ぬぬ。
「起動モードの判定」は大項目?

それならこうだ。

大項目と中項目(案2E)
・起動モードの判定
  ・入力ファイルの判定
・起動の処理
  ・ルール・シートの読み込み
  ・キャラクタ・シートの読み込み
・外部データの準備
  ・セーブ・データ作成
  ・空アクション生成
・内部データの準備
  ・プレイ・メモリの初期化
・アクションの判定
  ・なし
・ソースの生成
  ・プレイ・メモリからセーブ・データの生成
  ・現在の状況の文章の生成
  ・次回向けアクションの生成
・出力シートの生成
  ・ソースの合成
  ・ファイルの出力

なんか立ち上げ周辺の名前に落ち着きがないので手を入れて。
大項目の「起動の処理」は「外部ファイルの読み込み」にして、中項目に「ライブラリの読み込み」を追加。
大項目の「外部データの準備」は「入力ソースの準備」に変更。

大項目と中項目(案2F)
・起動モードの判定
  ・入力ファイルの判定
・外部ファイルの読み込み
  ・ルール・シートの読み込み
  ・キャラクタ・シートの読み込み
  ・ライブラリの読み込み
・入力ソースの準備
  ・セーブ・データ作成
  ・空アクション生成
・内部データの準備
  ・プレイ・メモリの初期化
・アクションの判定
  ・なし
・ソースの生成
  ・プレイ・メモリからセーブ・データの生成
  ・現在の状況の文章の生成
  ・次回向けアクションの生成
・出力シートの生成
  ・ソースの合成
  ・ファイルの出力

うん。
これなら大分分かり易くなったかも。
名前を見ると何をしようとしているのかが大体イメージできる気がする。

「新規スタート」のフローでドキュメント化しないとね。
そのあと、まとめページに書いて。

「新規スタートができる」での大項目と中項目は上記のように表現できるから。
あとは、それぞれの項目ごとに「それ」は何をする処理で、どのように実現できるかを埋めればいい。
ええと、「実現できるかを埋める」というのは、言葉で説明できること、と定義すればよいのかな。

よーし。
次回もがんばる。
 
 
・・・。
 
新しい洗剤。

茶碗を洗う洗剤が切れたので見慣れない新作を買ったら、なんとなく。
「実力をみせてもらおうか!」ってシンクをごりごり。
そしたらビビるくらいピカピカになってしまって。

人類の科学やべえ!ってご時世。
人類の科学、侮ることなく生き延びて下さいな。

大丈夫。
内緒でよいので、はっぴーでいて下さい。

よい週末をね。