キミのミライ発見」担当rikei-jinzai(a)kawai-juku.ac.jp※(a)を@に変更してメールをお送りください。いわゆる高校入試のない公立の中高一貫校です。高校ではないので、前期課程(3年)・後期課程(3年)に分かれていて、私は後期課程の4年生、つまり高校1年相当の学年で「情報の科学」にプログラミングの授業を取り入れています。現任校は今年で3年目ですが、その前は都立科学技術高校や工業高校で、Cやアセンブラなどでプログラミングをバリバリ書かせておりました。前身の普通教科「情報」が始まった時、私が自分のバックボーンであるプログラミングやネットワーク分野などで専門性を活かして実践をやろうとすると、必ず言われたことがありました。「プログラミングは科学技術高校だから、専門学科だからできるんだ。能城さんだから教えられるんだよ」と。確かに、本当は自分としてはコードをゴリゴリ書かせたいのですが、男女比が半々の普通科の高校では、「コンピュータとかわからないし...」という生徒も少なからずいます。その中で、どうやってプログラミングを全員にやらせるか、というところでいろいろと試行錯誤をしてきました。平成25年から始まった「情報の科学」の中で、学習指導要領の中で、教科書の範囲を逸脱せず、このくらいのことは多くの先生ができるのではないかな、という実践を紹介します。現在、私たちを取り巻く社会状況は、プログラミングに関する教育をやらないわけにはいかない流れになってきています。きっかけは、2013年6月に閣議決定された「世界最先端IT国家創造宣言」で、これが1年に一回アップデートされています。この人材育成の部分で、「その際、初等中等教育におけるプログラミングに関する教育の充実に努め、ITに関する興味を育むと共に、ITを活用して多様化する課題に創造的に取り組む力を育てることが重要であり、そのための取り組みを強化する...」とあります。このように国の指針として「世界最先端IT国家創造宣言」が出たことを受けて、関係省庁をはじめとして、プログラミング教育を推進しようという動きが数年前から出ています。今後はこのプログラミング教育をいかにすべきか、という話になってくるのではないかと思います。勉強会で、プログラミング教育の授業公開をしました。その時にいろいろな先生方に話を聞くと、プログラミング教育をどうやったらいいか手詰まりである、あるいは、うまくいかないから「社会と情報」を選んでいるという話も少なからず聞くのです。プログラミング教育で間違ってはいけないのは、今の「世界最先端IT国家戦略」で言っていますが、全ての生徒にコーディングをさせろ、ということではないのです。物事を筋道立てて考え、うまく解を導くにはこうすればいいよね、というところをいかに教えるか、ということなのです。今の学習指導要領で言うならば、問題解決の部分をうまく使ってプログラミング教育を推進することができるはずなのです。多くの先生は、「そうは言っても、プログラミングをやるためには学校のパソコン室に特別なソフトを入れなければいけないのではないか」とか、「特別なハードウエアが必要なのではないか」と思っているかもしれませんが、実はそうではないのです。そこで、今日は、プログラミングに詳しくない先生でもできる、ミニマム3時間の授業をご紹介します。本校ではミニマム3時間に、プラス3時間で、合計6時間くらいかけていますが、どこまで授業時間を確保するかは、先生方がご自分で勉強して、もうちょっと行けるかなと思ったら、どんどん内容を発展していけばいいのです。Scriptというものです。「アルゴロジック」1時間目です。生徒たちには、いきなりキーボードを打たせることはしません。問題解決の概念を説明し、この後プログラミングをすることを予習的に紹介します。その前に、実はアルゴリズムというのが非常に大事なので、今日はこれを体験するための授業をするんだよ、と話します。こちらは実際に授業で使っているスライドです。私はだいたいスライドで説明して、生徒たちには「今話したことは教科書のここだよ」と説明するようにしています。要はコンピュータに何かをさせる手順、例えば、「直角三角形の面積を求めたい場合どうする?」とか「インスタントラーメンの作り方の手順はどうしたらいい?」とか、何でもいいのです。インスタントラーメンで言えば、「お湯を沸かしてからフタを開ける方が、フタをあけてからお湯を沸かすよりも、時間をロスしないよね」といった話をします。このスライドを含めた授業で使用するスライドは、生徒にはスマホやタブレット、パソコンで見られるように、IDとパスワードによる制限をかけてネットで公開しています。アルゴロジックのサイトにある「ニンジンを星形に切ったものを30個作る」という例を考えてみましょう。「輪切りをたくさん作ってから星形にする」という場合を考えます。すると、輪切りにするのに31回(両端を落とす2回を含む)、星形にするのに各10回×30個、トータル331回包丁を入れる必要があります。ここでアルゴリズムを使って手順を効率化することを見せます。ニンジンの先が細いということはちょっと置いといて(これも生徒には言っておきます。ないと、「ニンジンって三角ですよね」と必ず誰かが言うので)、最初にニンジンを星の形にしてしまうのです。切りづらいとかいうことはありますが、とにかく、最初に両端を落として(2回)、次に10回包丁を入れて星形を作ります。端から29回切れば、30個の星形がで切るので、合計の回数は12+29=41回。これを自動化するとなると、人の手でする時は縦に切るのは難しいかもしれないけれど、星型の金型を作って機械でダンダンっと切ればさらに効率は良くなる。いうのをアルゴリズムと言うのだよ、と話すわけです。だいたいここまでで10~15分かけます。この後、生徒には「アルゴロジック」(※)のサイトで問題を解くゲームにチャレンジさせます。Scriptでいうところの繰り返し命令をカッコで括って繰り返す、という概念が自然に身についてくることです。すると、次第に書くことが増えて、何が何だかわからなくなってきた時、アルゴロジックを体験していると、「ああ、なるほど。この間やったのと同じ考え方だね」ということが非常にスムーズにつながります。アルゴロジックができる前からプログラミングは教えていましたが、これを入れると、結果的に生徒たちが思考判断するときの制御コードが非常にわかり易くなるので、これはぜひお勧めの教材です。「アルゴロジック」のサイトより一通り終わったら、評価活動のために、この選択した問題の一覧ページを印刷させます。ある課題を完成させると「Great!」などと表示が出て、問題のところに◎が付きます。解けた問題の数を余白に書かせて回収し、平常点としてカウントします。生徒がどれだけできたか、頑張ったかも見ることができます。いった流れを踏むことで、「ええっ、また来週もプログラミングなんて嫌だ」という空気は払拭できます。このような掴みをまず1時間目で行うのです。「1時間で学ぶソフトウエアの仕組み」2時間目は、アルゴロジックで制御構造の部分、考え方が大事なのだよ、というところを押さえた後に、「1時間で学ぶソフトウエアの仕組み」を使ってソフトウエアの仕組みを学びます。これはドリトルという日本語で命令が書けるプログラミング言語を使うものです。◇1時間で学ぶソフトウェアの仕組みhttp://dolittle.eplang.jp/index.php?1h◇教育用プログラミング言語「ドリトル」http://dolittle.eplang.jp/私は授業をする時に、PCを使わない時と使う時と明確に分けるようにしています。PCを使う時は、生徒が休み時間の間に教室移動してパソコン教室に入ってくる時点で、必要のある場合は、すでに中央モニターと生徒の前のプロジェクターに「ログインしてね」と表示しておきます。電源は当然一斉コントロールで入れてあるので、生徒は「今日はコンピュータを使って何かをするんだ」「今日はノートに書いて勉強するんだな」という意識のメリハリを付けることができます。宝物拾いゲームでソフトウエアの仕組みを学ぶ最初に「前回アルゴロジックでゲームをやったのを覚えているよね。今日は、君たちにゲームを作ってもらう」と説明します。この教材のよいところは、50分の授業で40人全員がゲームを作ることができることです。どのようなゲームかと言えば、「かめた」というキャラクターがフラグを取りに行って「クリア!」となる、というだけのものですが、都立高校の場合は、生徒40人をアシスタントなしで指導しますので、全員ができることを目指して、わからないところは近くの生徒同士で教え合いながらゆっくり確実に進めます。イメージとしてはインタープリター言語と同じで、コンパイラの必要がない、コードを書いて実行ボタンを押すと動く、というゲームです。画面の説明をした後、編集画面にかめた=タートル!作る。私は、「!」が打てないかなと思っていたのですが、これが違うのです。「=」が打てないのです。ええーっ?!と思われるかもしれませんが、残念ながら、最近タッチパッド系のデバイスが増えてきたせいか、これができない生徒が非常に多くなりました。そんな子たちに対しても、「がんばれよ、君に合わせるからね」という感じで進めていきます。実行ボタンを押すと、画面に小さくかめたが出る。これは女の子に大ウケで、「キャー、カワイイ!」という歓声が上がる中、全体の進度を見ながら、このかめたを動かすためのボタンを作ることにします。先ほどのかめた=タートル!作る。左ボタン=ボタン!“左”作る。入れると左ボタンができます。ここで全員が左ボタンができて、そこで待っていてくれればいいのですが、クラスに5人か10人くらいは先走って「先生、左ボタンを押しても動かないのですけど」と言う生徒が出てきます。いう生徒を、「そこは今から説明するから」と注意をこちらに向けさせつつ、「もう押してしまった人もいるけれど、押していないあなた、左ボタンを押したらどうなると思う?」と聞くと、ゲームの影響なのか、「(かめたは)左に動くと思う」という答えが結構返ってきます。そこで実際に左ボタンを押してみて、「左ボタンを押しても何も動かない」ということに気づくわけです。私は教員卓で示しつつ、机間指導しながら「ここは今日の中でも重要なところ。『左ボタンを作る』と命令してボタンができたけど、左ボタン押したらどうなるかという命令はしていないでしょ。動かそうと思ったら、左ボタンを押したらどうなるかという命令を書かなければいけないよね」ということを説明します。「はい、それでは書いてみよう」と、ボタンを押したときの動きを書かせます。ここでまた落とし穴があります。」<カッコ>が打てない子が多いのです。これは完全にスマホの影響です。するかと言うと、「か」「っ」「こ」+変換、と打つのです。シフトキーを使う打ち方を教えます。いったことを通してキーボードのスキルチェックをしながら進めていきます。この授業でもう1つ、生徒の関心を引くポイントは、この時点でボタンを押すと、かめたは30度ずつ回るのです。それで、「今日はみんなでゲームを作ることが目的で、何も提出しなくていいから、好きなようにゲームを改造していいよ」と言うと、生徒は早速先ほどの30のところを60とか90に変えたり、360にしても何も動かないとしたり、勝手に改造します。それが大事なところです。「ここをこうしたらどうなるのだろう?」ということを自分で試すことができる。その上で、「今、左ボタンを作ったのと同じ概念で作れるから、右ボタンを作ってごらん」といって右ボタンを作ります。