太子プログラミングクラブ中級第2期・初級第2期(2026年8月)~音をプログラミングする~

太子プログラミングクラブは、8月から中級が新シリーズ。音をプログラミングします。初級は、単発で様座なネタに取り組みます。
初級は電子工作に挑戦
初級クラスは電子工作に挑戦しました。電子工作はただ組み立てるだけではなくて、マイコンを組み合わせてプログラムもします。
ハンダゴテは初めての小学生メンバー。おっかなびっくり、350度のこて先に恐る恐るハンダ付けをしていました。

ハンダ付け自体は中学校の技術で必ずやります。5年ぐらい先取りしてやっています。
350度のコテ先を使うといっても、きちんと真面目に扱い、使い方を誤らなければ危険なことはありません。ふざけずに、きちんと真面目にやるということがここでは大事です。

画面の中だけで出来上がるプログラムもいいですが、実際にモノを動かすプログラムも面白いのです。
ハンダ付けが終わったら、まずは期待した通りに動くかどうかの確認。これはもうすでにマイコンの中にプログラムが書かれているので、あっという間に終わります。無事にみんな想定通りに動きました。
続いてプログラムを変えていきます。どのように動いたら、自分の思い通りの動き方になるだろうかというのを、プログラムレベルで考えていきます。
想定外の発想が来た
今回の企画は「暗くなったら鳴き出す虫」というテーマで作りました。
ただし、メンバーの中には「虫ではなく鳥の鳴き声を作りたい」という人がいました。なるほど、私にはその発想はなかったので、どうしたものかなと考えながら作りました。暗くなったら鳴く鳥というよりかは、明るい時だけ鳴く鳥という発想なのかなと思います。こういう発想はとてもいいですね。
圧電スピーカーでどこまで鳥の鳴き声を再現できるのかな、というのが懸念点。しかし、実際作ってみるとかなり鳥の鳴き声に近いものができました。私も満足しております。
どこかでまた、このテーマでも作ってみたいと考えています。
3D造形初挑戦
8月2回目の初級コースは、3Dプリンターでの造形に挑戦します。
元々あるモデルを3Dプリンターで印刷したとしても面白くありません。そこで、自分でプログラムコードを入力して立体を造形し、それを印刷するという手順で行きます。

直感的にわかりやすい3DCADというものも存在します。しかし、わざわざコードを手打ちして3Dの立体を造形・設計するのには狙いがあります。
それは、裏ではきちんとコードが動いているということを体感してもらうためです。プログラムコードがあることで、目に見える直感的にわかりやすい3D ポリゴンや、ゲームで遊んでいるような3D画面が作られているのだと実感してもらいたいと考えています。
3Dデータができたら、それを印刷できる形に変換して 3Dプリンターに送ります。今か今かと造形が出てくるのを待っているところです。

プレートの上に造形ができたら引き剥がします。しかし、それがなかなか強固にくっついていて取れません。プレートが50度ぐらいで少し熱いものですから、恐る恐る触りつつ、一生懸命剥がそうとしているところです。

最初は生成AIを使いたいと騒いでいたメンバーも、最後には一番はしゃいでいました。3Dプリンターは見ていて面白いものですし、私もなかなか楽しんでおります。
しばらくこのクラスは3D造形を学習しようと思います。コードで書くのを何度かやった後、3DCADを使おうと考えています。コードで造形できるということは、生成 AI でも造形しやすいということです。生成AI も組み合わせながら、3D造形を楽しみたいと思います。
ただ、いかんせん時間がかかるのが難点で、今回印刷した正二十面体も1つ作るのに15分から20分くらいかかります。この時間のやりくりをどうにかしないといけませんね。
中級は音をプログラミングする
中級のメンバーは中学校1年生がほとんどです。音が振動であり波であるというのは中学校1年生の理科で習いますが、今日のメンバーはまだ習っていないメンバーばかりでした。
そこで、まずどのように考えたらいいか、音が振動であることをどう捉えたらいいかという説明から入りました。
音が振動であるということは、なんとなく感覚的に掴んでいるみたいです。例えば、太鼓の「ドン」という音がするときは太鼓の表面がブルブルと震えている、というのを感覚的に掴んでいるようです。この感覚があるからこそ、音が振動であるということは簡単に納得してくれました。
一方、波形で示すということについては、初めはピンとこなかったようです。波と振動がなぜ関係するのかというのは、グラフや時間の概念と合わせて見ないとわからないのかもしれません。
そこで、横軸を時間(グラフ)、そして縦軸を振幅にするという概念を説明しました。
手の動きとともに、「今の時間はここにある、上の頂点にある」「今の時間は下の頂点にある」というように動きを示すと、納得してくれたようです。

ついでに周波数の話
ついでに周波数の話もします。
周波数とは、1秒間にどれくらい振動するかを表す数値のことです。単位はヘルツ(Hz)で、HとZを組み合わせて表記します。
音を扱う限りはこのヘルツから逃れられないので、簡単に説明しておきます。
例えば「440Hz」は、1秒間に440回ブルブルと震えたときに出る音のことで、これはドレミファソラシドの「ラ」の音にあたります。この「440」という数値を変えてあげることで、さまざまな音階になるという仕組みです。
周波数が半分になると、1オクターブ低いラの音になります。220Hz(ヘルツ)は低い方のラの音ですね。反対に周波数が倍の 880Hz になると、1オクターブ高いラの音になります。
こんな話をすると、おそらくピアノか何かを習っているメンバーは、なるほどと納得するような反応を示していました。
プログラムで数値を指定するというのは簡単ですから、440Hz や 220Hz というような数値の指定を組み合わせることによって、音楽を奏でることができます。そういう取り組みをしようというのが、今回のプログラミング、この半年のプログラミングのテーマです。
理屈がわかったところでコーディング
何を作るかがはっきりしたところで、プログラミングを進めていきます。作るのは、波形を表示するプログラムと、440Hz の音を鳴らすプログラムです。

コーディング自体は簡単です。2つ合わせても20行に満たないくらいで、あっという間に終わってしまいます。
ただし、今回難しかったのはモジュールのインストールです。今まで使ったことがないモジュールを使わなければならず、どうもこのインストールがうまくいかない、インストールしてもうまく動かない、といったところで今回は時間切れでした。Thonnyを使うとこのような状況が起きるのかなといったところで、これは要調査です。
教材を手作りしていますので、こういったことはままあります。ただ、環境設定や問題解決のプロセスを体験し、現実を見てもらうという点では、これこそが生きた教材であり、生々しいプログラミングの現場そのものです。
ドレミファソラシド
前回の反省を踏まえて、8月2回目のクラブではドレミファソラシドを鳴らしていきます。モジュールがうまく反映されなかった点については完全に解決です。今回はうまくいきました。
下に各モジュールの関係を表示しておきます。

前回休んでいたメンバーのフォローをしながら進めるのが、少し大変でした。
あとは、進みの早いメンバーと遅いメンバーで差が出始めてきているので、そこをどう埋めるかというのが今後の課題かなと思っています。やはり家でPCをどれだけ触っているかというのは、如実に現れます。
これは、どの分野にも言えることです。いかに触り続けるか、いかに取り組み続ける時間が長いかというのが実力に表れるというのは、仕方のないことかもしれません。

さて、音のプログラミングではホームページでは伝えられないことばかりです。Instagramに動画で上げようかなと思います。
今回出てきた一番の問題は、ハードウェア(パソコン)によって音が出ないということです。プログラムコードには全然バグも何もないのに音が出なかったり、プツプツと途切れるような音になってしまうメンバーがいました。
これは解決するのが難しく、時間がかかります。クラブでそれぞれのパソコンを使い、手作りで作っている教材のため、すべてが動くように動作保証を100%できるわけではありません。問題が出てきたらその都度対処する「モグラ叩き」のような状態ですが、現実的にはそんなものです。そういったところもご理解いただければと思います。
できる限りどの環境でも動くようにと考えて作ってはおりますし、生成AIのおかげである程度事前の予測もできるようになりました。先読みして引っかかりそうなところは先に対処しています。それでもなお100%問題が起きないわけではありません。
実は、この問題を解決していくのが楽しいところです。理屈通りやったからといって、必ずしも動くわけではない。いかに現実を見つめ、原因を究明して動くものを作っていくか。プログラムであれ機械的なものであれ、ものを作るということは試行錯誤の連続です。なかなかうまくいかない、この試行錯誤は苦しみでもありますが、動いたときの達成感や快感というのは、一度感じるとやめられないところでもあります。それが誰かの役に立って、誰かが喜んでくれたということにつながると、さらに楽しさが増します。
それこそが工学(エンジニアリング)の醍醐味であり、面白さであると私は思っております。そういったところを、メンバーと一緒に楽しみながらできればいいですね。

