TOP > 学習型しりとりゲーム > 制作秘話

***********************************************************************************************
                     学習型しりとりゲーム 制作秘話
                                           Copyright(C) 2017 by しげるがもげる
***********************************************************************************************

◆はじめに
 このドキュメントには、制作に関わっての作者の思いや苦労が書いてあります。
 技術的な細かいことに興味のない方は、読み飛ばしてください。
 エクセルでマクロを組んでみようかなと思われる方は、読むと参考になる部分があるかもしれません。


◆制作秘話
 日経パソコンを読んでいて,辞書登録をしながら語彙をふやしていく「しりとりゲーム」の連載が載っていたので,
 それは,おもしろいと思って作ったのが,これです。
 仕組みをざっと斜め読みすると,「辞書シート・作業シートを使っている。」と書かれていました。
 そこで,自分もその仕組みを使って作ってみました。


◆工夫や苦労など
 1つのプログラムでは作れないので,いくつかのパーツを作って,呼び出すようにしました。
 
 <辞書登録プログラム>
  辞書シートを作るにあたって,辞書の仕様をどうするか,考えました。
  のちのちの使い勝手を考え,横に五十音を並べ,最初の言葉で縦にグループ分けするようにしました。
  プログラムのしようとしては,単語を引数として渡すと,辞書にあるかどうか調べ,無い場合に辞書に登録する形にしました。
  こうすることで,メインプログラムからは,単語を渡すだけで済みます。
  
 <検索処理プログラム(ユーザー定義関数)>
  これは,コンピュータが,ユーザーが入力した言葉に続く言葉を,検索するプログラムです。
  コンピュータは,ゲームの最初に,辞書を作業シートにコピーして始めます。
  そして,言われた言葉・言った言葉を,作業シートから削除して進めていきます。
  この処理で,もしコンピュータが言葉を見つけられなければ,コンピュータの負けになるので,見つけたときはその言葉を返し,
  見つからなかったらヌルを返すユーザー定義関数にしました。
  したがって,このプログラムの戻り値を見れば,負けたかどうかがわかるようになっています。
  また,見つかった言葉は削除されますが,最後の言葉をそのセルに移動させることで,2行目からいつも連続に単語が並んでいるようにしています。
  
 <つながりを調べるプログラム(ユーザー定義関数)>
  これは,ユーザーが入力した言葉が,コンピュータの言葉につながっているかどうか,チェックするプログラムです。
  このゲームでは,「は」「ば」「ぱ」を同じものとして扱っています。純粋に同じ言葉なら単純に比較すればいいのですが,「は」と「ば」を同じとするような
  判断をさせなければなりません。そこで,辞書シートのタイトル行を使うことを思いつきました。
  つまり,「は」のある列を探し,「ば」のある列を探し,それぞれの列位置が一致したら同じ言葉と扱うようにしました。
  また,仕様として,2つの言葉を引数として渡せば,判断してくれるようにしました。

 <長音変換プログラム(ユーザー定義関数)>
  ヘリコプターのように,最後が「ー」になっていると,しりとりが上手く続きません。それで,最初はメッセージを出して,ユーザーに入力のし直しを促していたのですが,
  よくよく考えたら「コンピュータ側で置き換えをやってしまえば手間が省ける」ことに気が付きました。
  しかし,厄介なことに,「ー」はいつも同じ言葉になるわけではなく,その時々に応じて違ってきます。唯一,共通しているのは,その前の言葉の母音になっていること。
  そこで,どうしたら,この母音を見つけることができるか,考えてみました。(これを考えないと,対比表を作るはめになるので。)
  五十音表は,「あいうえお」と5つに分かれており,「かきくけこ」がその後に続きます。これを1列にならべたとき,前から順番にあ(1),か(6),さ(11)・・と並んでいます。
  つまり,あ行は,5で割って余りが1の位置にあります。同じように,い行は2の位置,う行は3の位置・・・・,お行が5の位置になります。
  これを整理して,(列位置-1) MOD 5 +1 とすると,先ほどの計算に合うようになります。(MOD・・・余りを求める)
  あとは,「ー」があるかないかで,判断させればできます。

 <このゲームの本当の面白さは・・・>
  実はこれ,ゲームするよりも,ゲームを重ねる中で辞書がどんな風にできあがっていくかを見ていた方が面白いです。
  そして,コンピュータの手が詰まるように,コンピュータの辞書に載っている言葉をどんどん入力して,消費していくのがいいです。
  新しい言葉を打ち込むと,コンピュータの語彙を増やしてしまいますから。


◆最後に
 ここまで、熱心に読んでくださってありがとうございました。
 プログラムを組んだことのない方には、わかりにくい内容だと思いますが、これを機会にエクセルの
 マクロに興味を持っていただければ、と思っています。
 エクセルは、本当に楽しいツールです。自分の思いや考えが表現できます。
 そんなエクセルに、日々、感謝です。