授業案:DQM4の配合をPythonで再現しよう(小学校高学年〜中学生)
執筆・編集 鈴木孝昌 · 更新
- 対象:教材(ゲームのデータは例として一部だけ使用)
- 資料確認
- 中級
- 確認方法の説明
配合表を「辞書」というデータの形で書き、作りたいモンスターから材料をさかのぼるプログラムを作る授業案です。「関数が自分自身を呼ぶ(再帰)」というむずかしい考え方を、子どもたちが大好きなゲームのしくみで体験できます。
紙とペンで「この子の親はどれ?」とたどるところから始めます。答えが見えてきたら、親を調べる同じ手順を、Pythonの関数に一回分だけ書いてみましょう。
ねらい
- 配合表を、データ(辞書)として表せる
- 作りたいものから、必要な材料をさかのぼって考えられる
- 関数が自分自身を呼ぶ「再帰」の動きを、図にかいて説明できる
進め方(45分 × 2回の例)
| 時間 | やること |
|---|---|
| 1回目の前半 | 配合表を紙にかき、「メタルハンターを作るには何がいる?」を手でさかのぼる |
| 1回目の後半 | 配合表をPythonの辞書にする |
| 2回目の前半 | さかのぼる関数を作って動かす |
| 2回目の後半 | 自分で考えた空想のモンスターと配合を足して、友だちと問題を出し合う |
プログラム
# 配合表:作れるモンスター → 親2体
recipes = {
"スライムナイト": ("スライムタワー", "メソコボルト"),
"さまようよろい": ("スライムナイト", "たけやりへい"),
"トルトリーナ": ("メタッピー", "フェアリードラゴン"),
"メタルハンター": ("トルトリーナ", "さまようよろい"),
}
def materials(name, depth=0):
"""name を作るのに必要な、配合で作れない材料を集める"""
print(" " * depth + name)
if name not in recipes:
return [name]
left, right = recipes[name]
return materials(left, depth + 1) + materials(right, depth + 1)
if __name__ == "__main__":
need = materials("メタルハンター")
print("集める材料:", "、".join(need))
print("配合の回数:", len(need) - 1)
動かすと、メタルハンターから材料までの「木」が、字下げつきで表示されます。最後に、集める材料の一覧が出ます。2体から1体を作るので、この教材のように、毎回2体から1体を作り、手持ちも使わずに最後の1体まで組み立てる場合、配合回数は「材料の数 − 1」になる、という発見も子どもたちと話し合えます。
子どもたちへの問いかけのれい
| 場面 | 問いかけ |
|---|---|
| 紙でさかのぼるとき | 「メタルハンターの親の、そのまた親はだれ?」 |
| 辞書にするとき | 「左がモンスター、右が親。表とどこが同じ?」 |
| 再帰を動かすとき | 「関数が自分をよんだら、次はどこから始まる?」 |
| ふり返り | 「材料が4つなら、配合は何回?どうしてそうなる?」 |
答えを先に教えるより、紙の木の図とプログラムの字下げを見くらべてもらうと、「同じ形だ!」と自分で気づく子が多くなります。
行き止まりの条件を、紙の図で確認する
「メタルハンター」を起点に、トルトリーナの先をたどります。メタッピーのように教材の辞書で親が定義されていない名前に行き着いたら、その枝はそこで止まります。子どもに止まる場所を丸で囲んでもらうと、コードの if name not in recipes がどこを担当しているか見つけやすくなります。
もっとやってみたい人へ
- 同じ材料が2回出てきたら、数をかぞえる(Pythonの
collections.Counterを使う) - 持っているモンスターを辞書にして、持っているものは集めなくてよいようにする(このサイトの配合プランナーと同じ計算です)
注意したいこと
ゲームのデータは、例として少しだけ使っています。授業では、子どもたちが空想のモンスターを考えて配合表を作る活動を中心にすると、権利の面でも安心です。出張授業やワークショップのご相談はご依頼からどうぞ。
評価のめやす
| 段階 | できること |
|---|---|
| A | 自分で考えた配合表を辞書にして、材料をさかのぼるプログラムを動かせる |
| B | 用意された辞書に1行足して、結果がどう変わるか説明できる |
| C | 紙の上で、材料をさかのぼれる |
プログラミングがはじめての子は、Cの「紙でさかのぼる」だけでも十分な学びです。ゲームが好きな気持ちを入口に、「調べて・整理して・伝える」力を育てていきましょう。
関連する図鑑・エリア・記事
DQM4のプレイ動画
YouTube 再生リストドラゴンクエストモンスターズ4 枯れ木の国のビアンカ・フローラ沖縄マイクラ部【クロスウェーブ】が、実際に遊んだようすを動画にまとめています。攻略ページとあわせて見ると、場所や動きがわかりやすくなります。新しい動画は再生リストに追加していきます。GMNAVI.JP・YouTubeの関連記事と動画
- GMNAVI.JP『Human Resource Machine』プレイ日記:コードを書かずに「プログラミング脳」が育つ名作パズル(GMNAVI.JP)
くり返し・条件分岐をゲームで体験する考え方。配合を教材にする授業案と相性のよい記事です。 - GMNAVI.JPゲームのやり込みを全国大会の武器へ。マイクラカップ沖縄代表が語る、攻略の先にある情報設計の力(GMNAVI.JP)
攻略の「調べて・整理して・伝える」力が、作品づくりにつながる話です。 - GMNAVI.JPドラゴンクエストモンスターズ4 の記事一覧(GMNAVI.JP)
プレイ日記やニュースなど、攻略ページ以外のDQM4の記事をまとめています。 - GMNAVI.JPドラゴンクエスト攻略(GMNAVI.JP)
ドラクエ1・5・7・11、アストルティア親子旅、ビルダーズ2など、シリーズの攻略の入口です。
公式掲示板
配合レシピ・質問は掲示板へ!
このサイトの掲示板はYouTubeコミュニティです。見つけた配合、自慢のチーム、攻略の質問を書きこんでね。
名前や学校、住所など、自分のことがわかる情報は書かないでね。