8×9通信 2023年10月号
2023.10.11

こんにちは、神戸・西宮・大阪・姫路にある現役エンジニアが教えるプログラミング教室、ハックです!
10月に入りようやく残暑も落ち着いてきましたね。急に肌寒くなってきて体調を壊す人も多いかと思います。
しっかり栄養と睡眠をとって、体調管理につとめましょう!

それでは、今月の【8×9通信】をお届けします!

初級Ⅰコース

《レッスン内容》

2023年9月は前半週にIchigoJam(イチゴジャム)のレッスンをしました。
AからZまでの26文字のアルファベットが上から順番に落ちてきて、下に着くまでにキーボードで文字を打っていく「アルファベットタイピングゲーム」を作成しました。

IchigoJamはBASIC(ベーシック)というプログラミング言語で動く「子ども向け」のボードコンピュータです。 レッスンではプログラムをいったん完成させると、先生から改造のヒントを伝えて自分なりに改造をしていきます。キャラクターの絵文字を変更したり、スピードを速くしたり、落ちてくる文字を記号まで含めて激ムズにしてみたり。

プログラムが出来上がると、より良いタイムを出そうと集中してゲームに取り組んでいました。

後半週は、micro:bit(マイクロビット)で、ちょうど5秒でストップボタンを押せるかを競うゲームを作りました。
5秒を超えたら負けとなり「×(バツ)」がつきます。ゲームが出来上がると、5秒を超えずに5秒にどれだけ近づけられるか、みんなで競い合いました。ジャスト5秒を出せた子もいました!

《狙い・成果》

IchigoJamとmicro:bitとどちらもボード(基板)を使ったコンピュータです。
パソコンやスマホと違い、電子部品の載ったボードでプログラミングが動いて楽しむことができます。
子どもにとってはコンピュータを自分で動かしている実感が湧くデバイスになっています。
ただし、プログラムして動いた「だけ」で終わっては知識が身につきません。

プログラミングに関するクイズを出しみんなで解く「Kahoot!(カフート!)」を使い知識の定着を図っています。
IchigoJamでは、作ったプログラムの命令やトレースのクイズ問題を出しプログラミングからどれだけ理解できたかを見ています。


micro:bitでは、タテ・ヨコ5×5の計25個のLEDを、0.2秒ごとに一つずつ点灯させて5秒を計るプログラミングをしましたが、その際に「2重ループ」という「入れ子のくり返し構造」を学んでいます。
プログラミングでは全員ゲームを完成させましたが、kahoot!のクイズ形式で「2重ループ」の問題を出すと間違える子もでてきました。その際に再度プログラムの動きを見直して考える等を行って、より良い理解が得られるようになっています。

 

初級Ⅱコース

《レッスン内容》

8月と9月は、みんなの大好きな「8x9Craft攻城戦」を2ヵ月かけて行いました。
9月は 8月に作った道具(関数)を(壁を作る関数、地面を埋め尽くす関数など)を使って攻城戦をしました。
攻城戦は授業時間の前半で、プログラミング(関数)を使って、壁や、迷路を作ります。
授業時間の後半で、マイクラユーザで攻めます(テッペンのビーコンを壊したらゲームクリア)

《狙い》

<抽象化、構造化を学ぶ>
・プログラムを関数化すること
・関数化することで、プログラムの重複をなくす
・引数を使い関数の汎用化を図る
・関数から別の関数を呼び出すことで、プログラムを構造化する
・8月に作った関数を引数を変えたり、改造したりして、使いこなす

《成果》
関数、引数の考え方をゲームで利用することで、親しんでいただけました。
難しい考え方ですが、実際に手を動かしてマイクラの世界でプログラミングすることで、
体感していただけたかと思います。
特に9月の授業では、生徒さんに楽しんでもらいました。

《生徒さんの感想 − 8×9リフレクションより抜粋》

「楽しかったです!」
「一人ひとり突破の対策の仕方が違った。壊されることを前提にした対策や、蜘蛛の巣を利用した迷路などなどすごくおもしろかったです。」
「迷路を作るときも、バランスをしっかり考えて作ると、より良い作品になるということです。」
「最近、なかなかアイデアが思いつかなくて少し不安でしたが、今日はとてもいいアイデアが浮かんだので良かったです。ありがとうございました。」
「難易度を調整するのは、難しい。」
「今日の攻城戦のAグループのやつとかも楽しかったです!」
「攻略簡単だった。」
「ハックン攻城戦の製作時間が短い」
「塔の設計図が意外と難しかった!」
「はしごのぼりもあまりむずかしくはありませんでした。」
「攻城戦はとても面白いのでまたやりたいです!」
「瞬間移動を使って早く作れたので今度からも使いたいと思った。」
「攻城戦はとても面白いのでまたやりたいです!」
「攻城戦楽しいいいいい」
「しっかりゴールできるコースを作ることが大切だと思いました。」
「攻城戦すごく楽しかったです
「ピストンが作動したらよかったけど作動しなかったので今後、気を付けたい」
「ステージが大きいと作るのも大変になる」
「関数はプログラムを簡単にすることができ、プログラムを最初から考える手間も省ける」

 

中級Ⅰコース

《レッスン内容》

1)ブロックプログラミングからテキストプログラミングへの移行を主目的とした「基礎編」は慣れ親しんだ8x9Craftで学びます。
2)次に基礎知識を応用やテキストプログラミングならではのテクニックを学ぶ「応用編(共通)」をp5.js(OpenProcessing)で学びます。
3)テキストプログラミングで出来ることをしっかり学んだあとは「応用編(選択)」として、選択制で数学、アート、音楽、ゲーム、ホームページ、便利ツールなどのさまざまな分野でのプログラミング・コンピュータの応用・活用を経験していただけます。

----
9月前半は教材の課題を進めて、後半はアウトプット回ということで普段のスタイルとは異なる形でレッスンを実施いたしました。
初級Ⅰの頃に実施した「はっくんループ」をテキストプログラミングで解いてもらい、初級Ⅰの頃を思い出しながらお題の建築物をくり返しを用いて作成してもらいました。
ブロックプログラミングだとスムーズに作成できたものも、昇級したばかりの方などはプログラムを打つのに精一杯で中々上手くできない方も居たと思います。
しかし、レッスンが終わるころにはくり返しの使い方を理解して「ブロックプログラミングでやったくり返しと同じで書き方が違うだけ」と皆さん理解してくれたように見えます。

今後も教材の課題を解きながら、アウトプット回で覚えたことを発揮する機会を設けていきますので頑張っていきましょう!

《狙い・成果》

※中級Ⅰは初級とは違い、基本的に期間毎の内容の区切りはありませんので、以下は通年の中級Ⅰ自体の狙いと成果となります。
本格的なプログラムをつくるためには、やはりテキストでのプログラミングが必須になってきます。
ゲーム・アプリ・業務システム・科学技術研究・ホームページ・その他のIT技術活用やコンピューティングなどのプログラムは、それぞれの用途目的に適した英語ベースのテキストプログラミング言語でプログラミングをします。
中級Ⅰでは、将来、どのようなテキストプログラミング言語を使うことになっても対応できるような、テキストプログラミングの基礎・本質を身につけることを目標にカリキュラムを定めています。

まずは、初級のブロックプログラミングで学習したプログラム3大要素「順次処理」「繰り返し」「条件分岐」を、改めてテキストプログラミングとして学びます。
8x9craftならではの「同じ目的を、違うプログラミング言語で実現」を活かして、「あ!英語(テキスト)になったからと言っても、ブロックプログラミングとプログラムの流れは変わらないのか!」という感覚をしっかりと体験します。

その後、さらに本格的なプログラミングの文法や考え方を実践を通して身につけていきますが、淡々と教科書通り的にやっていくのではなく、1つ1つ本質を捉えて問題解決に取り組むカタチになっており、1つの課題に何時間もかかることもありますが「仮説と検証」「Try&Error」をたくさん経験し、根気よく粘り強くやれば必ず問題は解決できることを身につけ、チャレンジすることを恐れない心を育んでもらえるようにしています。
また、プログラミングなどの制作作業はチームワークが大事になってくることなどを伝え、コミュニケーションの大事さをプログラミングを通して学びます。これはきっと将来プログラマー以外のお仕事にも活かされていくと考えます。

 

中級Ⅱコース

《レッスン内容》

【六甲道 柴原クラス】

全員でUnity入門編に挑戦しています。
Unityは Nintendo Switch, Play Station, XBOX, PCゲームなどあらゆる環境で、ゲーム起動時にUnityのロゴが出てくるのでご存じの方も多いでしょう。
「ゲームを作りたい!」という生徒さんからのリクエストが多い教材の1つです。 各自Unityのチュートリアル、すでにお持ちの入門本、ハック貯蔵本などをベースに自学・詰まったところを先生がサポートする形で進めており、最終的には各々がゲーム1本を制作・リリースまでを目標に進めています。
じつは柴原先生は10年ほど前から数年間に渡ってUnityを使って「”ARアプリを作る仕組み”」を設計・開発していました(その仕組みを使ったスマホアプリは数十(もしかしたら数百)個以上リリースされています)。
Unityを単なるゲーム制作ツールとして使う経験だけでなく、設計において、いかに共通化・汎用化・メンテナンス性をよくできるか?などもたくさん経験しており、そのような観点もレッスンでお伝えしています。

《狙い・成果》

今回は特に「作品を作り上げる、やりきる」をしっかりと経験してもらいたいと思っています。
それを最初の学習のスタートから自ら進めてやっていくことにより、「ゼロからやり遂げることが出来た!」と言う自信に繋がってほしいと考えています。
今後、どんなプログラミング言語や環境、どんな要望になっても適用していける、自分で問題解決をしていけるようになっていくでしょう。