<松田ゼミ-8 前へ>

報告者:石川真生子・三上愛音(松田ゼミ)

松田ゼミでは、3年生のゼミⅠの実習として、アイデアの発想力、意見・情報のまとめる力を身につけるため、KJ法を行っています。

私たちのグループでは、『より多くの学生がプログラミングの授業をより分かりやすくするためにはどうすればいいのか』というテーマについてその解決方法を、KJ法を用いて議論し、発表しました。このテーマは以下のメンバーでやりました。

人数:4人(鈴木・三上・石川・藤生)
日時:5/22、6/5: グループでの意見の出し合い、6/19: 結果の発表会

01_hanasiai
図1.話し合っている様子

1.KJ法って何?

KJ法とは、川喜多次郎氏が考え出した情報の整理の方法です。グループで1つのテーマに沿って意見や情報をカードに書いて出し合い、図1のように関係のある小さなグループごとにまとめていきます。その後、自分たちで作成したグループに名前を付け、情報を整理していきます。

02_mozousi
図2.KJ法で出た意見の関係性をまとめた模造紙

意見を出す際に重要なのは、相手の意見を否定しないことです。例えば、「ゲームを***するには」というテーマがあったとします。この時、誰かが意見を出した際に、他の人は「〜は今回、実現不可能だと思います。」というような否定的な意見は出してはいけません。そうすることによって、アイデアの幅が狭くならないようにします。

このように、相手の意見を聞き、その意見を受けて更に連想ゲームの様に自由な意見を出していきます。

この方法は上記に書いたようにカードを使うことに特徴があり、「一番重要な問題は何か?」ということをはっきりさせるときなどによく使われます。

今回は以下の手順でKJ法を行いました。

  1. 個人で、約20分間テーマに対して思い浮かんだ意見や情報をカードに記入していく。
  2. 時間になったらカードを回収し、それぞれが記入したものをチームメイトと話し合いをしながら内容が似ているものをまとめ、大きな模造紙に貼り付けながらグループを分け、グループ名を付けていく。
  3. グループごとの関係性を見つけ、どこのグループが一番重要であるのかということを話し合って決める。

2.KJ法で見つけ出された主な問題点

テーマに対して、KJ法を行った結果、以下の3つの項目に対して問題点が見つかりました。

(1)授業で使用するプリントについて

毎回、プログラミングの授業では新しい関数の説明と例題が書かれたプリントが配布されます。そのため、授業回数を重ねるたびにプリントの量が多くなり、プリントがかさばってしまいます。その結果、目的である関数を調べようとしてもすぐに見つけることができないという事態がおこります。

また、プリントが多くなるとプリントを無くしてしまったり、前回の資料を授業に持ってくるのを忘れるという学生が出てきてしまいます。

(2)授業中の課題について
  • 授業中に、図3のような課題をする時間が15分と短いため、授業時間内に自分が何を理解していないのかが、わからないので先生に質問できません。
  • 課題を提出し解答が配られても、解説がないと解答をきちんと理解できません。
  • 新しい関数の説明をされた直後や、複数の関数を同時に使用しなければならない問題の場合、いきなりプログラムを全部作るように言われても、関数の動きを理解できないという学生や、関数の組み合わせ方がわからないという学生が出てきてしまいます。

これは、プログラミングの経験がないとイメージがわきにくいと思いますが、数学で例えると、新しい公式を習った直後にいきなり応用問題を解くようなものです。

(3)授業中の質問について
  • 授業中に先生に質問しようとしても、先生が他の学生の対応をしていてなかなか質問できません。
  • 質問に対する対応が個別対応の場合、解答が他の学生に行き届かず、一つの問題に対して複数の学生が先生に質問するという状況が授業中に多く見られます。そのため授業の効率が悪く授業が先に進みません。
03_mondaiten
図3.上記の問題点をまとめた図

これらの意見を踏まえて、それぞれがどういったことを改善すれば、より多くの人が授業を分かりやすいと感じるのかということを考えました。

04_mondai
図4.プログラミングの課題例

3.解決策

私たちの大学では、プログラミングの授業を複数のクラスで実施しているので、プログラミングの授業を分かりやすくするための解決策について一番初めに考えられたのは、高校の時に取り入れられていた学力別のクラス分けでした。私たちのグループでは実際にクラス分けを経験している学生が多かったため、この意見が出ました。確かにクラス分けは、すでに学力の差、プログラミングの技術の差がついている状況ならば、有効な手段として挙げられます。しかし、プログラミングの勉強を始めたばかりのときは、そこまで個々の学力差はないのではないかと考えました。そのため、今回の解決策としては採用せずに、学生の理解度の差が広がらないようにする、つまり『理解度の差を少なくするための授業方法について』を考えていくことにしました。

3.1.なぜ理解度の差を少なくする必要があるのか?

理解度の差が大きいということは、クラスでの学力差が大きく開いているということです。例えば、理解度の差が大きい場合、あるレベルに合わせた授業を行うと、授業についていけないという学生や、授業内容に物足りなさを感じてしまう学生が出てきてしまいます。

それによって、プログラミングがつまらないと感じ、授業に対する意欲が失ってしまう、という学生が出てきてしまう可能性があります。したがって、より多くの学生が授業に関心をもつためには、理解度の差を小さくすることが必要です。

3.2.なぜ理解度の差がうまれるのか?

ゲームなどを構成しているプログラムは基本として、図5のように文字を表示するプログラムなどが集まって作られており、図6の様にキャラクター同士の会話文に応用されています。図5のプログラムは大学1年次に勉強する内容です。

図6のゲームのような一見複雑そうなプログラミングでも、こういった初歩的なものが多く使われています。

そのため、基礎を固めずに先に進んだ場合、何をしているのか理解することができず、授業についていけない学生が出てきてしまいます。その結果、最終的に個々の理解度の差がうまれてしまいます。

05_pro
図5.文字を表示するプログラムの例と実行結果
06_game
図6.ゲーム上での会話の例

それでは、基礎を固めながらすすめていくための解決策としてどういったものが挙げられるのか。3.3で挙げた3つの項目にそってKJ法の結果をもとに提案していきます。

3.3.授業で使用するプリントについて

授業で使われている関数やキーワードがどのような動きをするのかをまとめた一覧表のようなものを作成し、それをweb上にあげ、更に紙のプリントも配布します。web上にあげることで、プリントを忘れても効率良くどこでも確認することができます。

3.4.課題について

はじめに、課題で使われる関数・単語などを穴埋め形式で埋めるようにし、これらの関数・単語がどのような働きをするのかを理解してから、図6のようなプログラムの問題へと入るようにします。

07_kadai

図7.穴埋め式の問題例

また、プログラムも穴埋め形式にしておき、徐々に全文書けるようにしていきます。プログラムを全部、ゼロから書くという課題を出した場合には、図7のようなプログラムの動きを表した図であるフローチャートなどのヒントを付けておくようにします。

08_hurotya
図8.フローチャートの例

課題は一人で出来る人もいれば、そうではない人もいるので、わからないところはすぐに聞ける環境にしておくべきだと思います。そのため、授業内で課題時間を設けることによって、わからない箇所はすぐに先生や周りの友達に聞けるようにします。

また、理解度を上げるために、課題は出したら終わりにするのではなく、次の授業のはじめに解答の解説をするようにします。

3.5.授業中の質問について

図8で赤く丸で囲んでいるように、私たちの大学では学生が使用するPCモニターの隣に、先生の使用するPC画面を見ることができるセンターモニターがあります。全員が同じ課題をやっている際、先生には質問された内容やそのヒントを、センターモニターで表示してもらい、学生全員が見られるようにします。ある学生がわからない問題、つまずいているものは、他の学生もわからなくつまずいている場合が多いので、全員に見えるようにすることによって何度も同じ質問をするということがなくなります。そして、他の学生もそれを見ることによってスムーズに課題を進めていくことができます。

09_sentamonita

図9.PC教室に配置されているセンターモニター

3.6.その他

上記以外にも、学生のモチベーションを上げるために、「学んでいるプログラミングは何に使われているのかがわかった方がいい」という意見が出ました。

そのプログラミングが何に使われており、最終的にどのようなものを作り出すのかを知ることによって、自分が作りたいもののイメージを広げることができるからです。

例えば、3.4.2で述べたような文字表示に関するプログラムを習ったとすると、それはポケモンのようなRPGや、乙女ゲームのようなノベルゲームの台詞を表示するのにも応用することができることを示すことが考えられます。

4.発表会

KJ法で話し合った結果をゼミ内で発表し、それについてもう1つのチームと議論をしました。

発表後、もう1つのチームからは主にクラス分けについての質問や意見がありました。

  1. 3.4の解決策の最初に記述したように、プログラミングの授業は複数のクラスに分かれて実施しているので、途中でクラスを替えればいいのではないのか?
    そのクラスによって授業のスピードは変わってくるので、途中でクラスを替えるというのは難しいと考えました。
  2. 今回は基礎を固めることに重点を置いているが、基礎はもうできるという人の環境はどうするのか?

基礎ができているという人には応用問題を解いてもらう形を取ればいいのではないかと考えました。この場合、応用問題は実力をつけるためのステップとして考え、最後に授業で習ったことを使って学生が各々好きな作品を作る最終課題を評価の基準にします。評価基準としては、作品の出来栄え、工夫点などが挙げられると思います。こうすることによって、応用問題を解ける学生も手持無沙汰にならず、また基本問題で手一杯だという学生も成績を深く考えることなく、勉学に集中することができるのではないかと考えました。

10_happyoukai

図10.KJ法の発表の様子

5.まとめ

今回、KJ法を実行してみて一つの問題点を様々な視点から考察することができました。全く関係の無いような意見でも、一つ一つの関係を見ていくうちに新たな関係を見つけることができました。またグループの他の人の意見を聞き、取り入れることによって更に、物事の繋がりを見つけることができました。グループでまとめたことを発表した際にも、自分たちが話し合った視点以外からの指摘を受けることによって物の見方の幅が増えたように感じました。