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

太子プログラミングクラブは、音をプログラミングの続き。初級は、3D造形に取り組みます。

初級は3DCAD初挑戦

8月にJavaScript のコードから3Dの造形をしたメンバーたち。9月は3DCADを使って造形に挑戦します。

3DCADが初級にいいなと考えたのは、これがマウス操作必須だからです。タッチデバイスが当たり前になった今のデジタルネイティブの子どもたちは、マウス操作が異質なものと感じているようです。マウスを使うようにと何回も言っても、ついついノートパソコンのタッチパッドに手が伸びてしまうという実態があります。

これを、強制的にマウスに慣れさせる手段はないかなと考えていたところです。ゲームも一つの手段ですが、あまりゲームばかりやるのも芸がないと思います。そこで、「自分の作りたいものを3DCADで作ってしまう」という強烈なモチベーションを餌に、マウス操作を覚えてしまおうという作戦です。

Windows 95や98が出た頃に小中学校の思春期を迎えた私たちにとっては、マインスイーパーやフリーセルを徹夜でやっているうちに、自然とマウス操作を身につけたというような経験がある方も多いかと思います。そこに通ずるようなモチベーションを餌にするという作戦を考えました。

3DCADの使い方から覚えよう

3D CADを使うのは初めてですから、マウス操作もすぐにできるというわけではありません。

まずは簡単な立体(正二十面体)を空間に置くこと、空間に置いて視点を変えること、それから立体の大きさを変えること、このあたりを最初に練習します。

続いて、立体を組み合わせて新しい立体を作り上げます。これは継ぎ足していくばかりではなく、引き算(穴を開ける)といった操作も練習します。穴の考え方も、足し算の考え方と基本的には一緒です。ソリッドなのか穴なのかを選択するだけです。

それができたら、板の上に自分の名前のテキストを抜く(穴を開ける)練習をします。これも造形の練習です。

今日のお土産はネームプレート

自分の名前のテキストを抜くネームプレートができたら、3Dプリンターで印刷します。

簡単なところですが、名前をくり抜くと、例えば「ま」や「o」のような丸がある文字は、真ん中の部分が脱落してしまいます。ここが今回の失敗点で、誰も改善することができませんでした。ここは次回以降改善していきます。世の中にある知恵や知識を使ってもいいですし、自分で考えるのもいいので、どうすればいいかを考えていきましょう。

一方で、完全に抜かない(要は溝を掘る)ということで解決したメンバーもいました。これはこれで一つの正解ですが、求められているのは穴抜きですから、それとは少し違います。今日のところは、これでOKかなと思います。

3DCADの発展と自分の作品

9月2回目の初級は、前回に続いて3DCADです。前回できなかった設定と、立体に対する設定の練習をします。つづけて、単純な図形を組み合わせて立体を作る練習をしました。

一見複雑に見える立体も、実は簡単な図形の組み合わせでできている。そのことに気づいてもらうのがねらいです。

3DCADはマウス操作が欠かせないため、私のお手本をまねるところから始めました。

ところが、少し目を離すと、どうしてそうなったのかと思うような形ができあがっています。隣で操作を見ていて、理由がわかりました。回転用のハンドルは、視点によって表示されたりされなかったりします。ヨー(水平方向の回転)のハンドルを触りたいのに、ピッチ(上下方向の回転)のハンドルをつかんでいることもありました。自分がいまどの向きから見ているのかを意識しないと、思った方向には回りません。そこをサポートすると、うまく作れました。

大事なのは、画面に見えている立体が、どんな操作、どんな立体の組み合わせでできているのかを想像することです。そのために、まずは想像しやすい簡単な立体から取り組んでいます。これはプログラムも同じです。

課題が終わったメンバーから、自分の作品づくりに入りました。

中級は音を計算する

中級のメンバーは、引き続き音をプログラミングしていきます。

最初にやったのは、周波数を変えることで波形がどのように変化するかを視覚的にわかりやすくしたプログラムを動かしてもらいました。これはGitHubに私が公開したプログラムをそのまま動かすだけです。

円運動(単振動)と波形・周波数の視覚化
円運動(単振動)がどのような波形を描くか、周波数を変化させると波形がどのように変わるか視覚化したプログラム

目的は、周波数を変えたら波形がどのように変化するかを体感してもらうことです。かなり難しいプログラムになってしまうので、プログラムを打つ・入力することが本意ではありません。数字を変化させて(周波数を変化させて)波形が変わることを体感してくれれば、それでOKです。

変化できる周波数は0.25から5ヘルツぐらいなので、とても音と呼べるようなものではありません。振動レベルですが、それでも連続的に波形が変わるところを目の当たりにして、歓声というか、どよめきが上がっていました。これには「してやったり」です。

つづいてドレミファソラシドの周波数を自動で取得

前回までのプログラムでは、音階(ドレミファソラシド)の周波数を数字で入力していました。例えば「ラ」の音だったら440Hz で、それにいくつかの数字を足してあげると「シ」の音になるとか「ド」の音になるとかといった感じです。その数字をリスト化しておいて引き出してくる、というようなことをしました。

しかしながら、その数字を手計算するのはセンスがありません。機械的に計算できるのであれば計算しましょう、というのが今回の狙いです。

ドレミファソラシドの周波数については計算できます。したがって、計算できる部分を関数としてまとめて、それと音名を結びつけます。呼び出すときはその音名を呼び出すだけで、音を奏でることができます。

音階周波数の計算
音階の周波数を計算して取得するプログラム

プログラム自体は難しくないので、すぐに終わります。つまずいていたのは、他のモジュールとの関係やそのモジュールが間違っていたり、写経するときに打ち間違えていたりといったところでした。ただ、自分たちでも、すぐに解決できていたようでした。半分くらいが完成していました。

次回は予備日にしていますので、そこでできていない人はサポートし、できている人はさらにここまでのプログラムでできることをやっていきます。

歓喜していた

私が用意した課題については、あっという間に終わってしまったメンバー。そこからの発展で「かえるの合唱(カエルの歌)」の楽譜をインターネット上(ウェブ上)から探してきて、その譜面を入力していました。カエルの歌はすぐにできたようです。

続けて別の譜面を入力していたところ、八分音符の入力がこのプログラムだとうまくいかないということでした。そこで私に「どうしたもんかな」という相談があったので、「四分音符を基準にするのではなく、八分音符を基準にして全部2倍にしていけばいいんじゃないの?」というアドバイスをしたところ、「それだと音が間延びして面白くない」とのこと。

「だったら、今私と話したことを生成AIに全部入力してみたらどう?」とアドバイスすると、「なるほど」というような顔をして早速生成AIに入力し始めました。

そうなんですよね。先生に聞くようなことは全部AIに聞いてしまえばいいと思います。生成AIから良い答えを引き出すには、聞きたい内容を自分で整理できるかどうかで全て決まると言っても過言ではありません。そこまで自分のやりたいことが明確になっていれば、生成AIはかなりの精度の答えを導き出してくれます。

しばらく遠目に見ていると、生成AIとの対話の中でプログラムが完成したようで、第九(歓喜の歌)を作っていました。「ちょっと3ヶ月ほど早いんじゃないの?」と茶化しながら、私は心の中で歓喜しました。

取組姿勢が変わるメンバー

私が主催するクラブは、どの拠点も1時間半から1時間45分ほどを通しで行っています。その間の休憩は自由です。疲れたらお茶を飲んでもいいし、ちょっとしたエネルギー補給をしてもいい。ひと息つくタイミングは、メンバーそれぞれに任せています。

小学生だと、途中でだれてくることもあります。ところが中学生になると、最後まで続けてやりきります。これはすごいなと思って見ています。

90分を超える時間は、小中学生にとってかなりしんどい設定だと思います。それでも、一人ひとりが夢中になって取り組んでいる姿を見ると、学校の時間割のような区切りは、あまり関係ないのかもしれません。

もう一つ驚かされるのは、プログラムに向き合う姿勢が、ある日急に変わるメンバーがいることです。

クラブでやっていることは、小中学生にとってかなり高度で難しい内容です。入ってきた当初はわけもわからず、言われるままに手を動かしている。友達が来ているから来ている。そんな感じで続けてきたメンバーが、きっかけはわかりませんが、突然開眼したようにプログラムを読み始める場面があります。

「あれ?」と思って見ると、姿勢が違う。視線が違う。そういう変化を見ると、頼もしく思います。

音を鳴らす→音楽を奏でる

前回までの課題は、ドミソの音を鳴らすところまででした。9月2回目は、まだできていないメンバーにはドミソを鳴らしてもらい、そのうえで全員が最低でも「かえるの合唱」を演奏できるように進めました。

演奏のしかたは、音を並べて、それぞれの音の長さを設定するだけです。今回は、その設定方法を体感してもらうところまで進められました。これができれば、あとは楽譜さえあれば、どんな曲でも演奏できます。

中には、生成AIを使って自分の好きな曲を鳴らしているメンバーもいました。曲のデータを一つずつ作るのは大変な作業なので、そこを生成AIに任せるのは良い方法だと思います。

私が提示したのは、一度に1音だけを鳴らすプログラムです。昔の携帯電話の着信メロディのような音しか出ません。これを深みのある音楽にするには、同時に鳴らす音を2音、3音と増やしていく必要があります。

それに気づいて、「どうしたらできるか」と自分から試し始めたメンバーもいました。いずれ扱う予定の内容なので、先取りで進めている形です。

一方で、生成AIが作ったコードやメロディを読まずに、意味を理解しないままコピペで済ませているメンバーも見受けられます。これくらいの短いプログラムなら、きちんと読んで理解してほしいところです。

ただ、生成AIとどう付き合うかは、私自身もまだ答えを持っていません。メンバーと一緒に学んでいくべき点だと考えています。

中学生の専門家には、大人の素人は敵わない

メンバーの中には、吹奏楽部に所属しているメンバーや、ピアノを習っているメンバーがいます。そういったメンバーは、プログラムの見方がさらに専門的です。

私は音楽に関してほぼ知識を持ち合わせないので、技術的な観点でしか見ていません。また、音楽の常識というものを知りません。だから彼らが話す内容が理解できないこともありますが、「これっていいな」と思いながら見ています。

小学生ぐらいまでだと、どの分野においても大人が引っ張っていかなければならないところがあります。しかし、中学生ぐらいになると専門領域で大人を凌駕するような部分が出てきます。そこが人間の面白いところで、分業体制の中でそれぞれの専門領域を生かして、さらにより良いものを作り上げることができます。

私はプログラムの基本的な考え方や、それを生かしたエンジニアリングの世界で知識や技術を提供できます。それらを元にして、自分の専門領域(彼らであれば音楽)と結びつけ、私が考えもつかないようなものを作り上げてくれたらいいなと思います。

ちなみに、先ほどの「第九」のメンバーとは違うメンバーです。「第九」のメンバーは私と似たような感じのプログラムの専門家ですが、同じ学年の吹奏楽部のメンバーやピアノを弾くメンバーと組み合わせたら、プログラムというものが接着剤となって、中学生同士で革命的なものが生まれるのではないかなと期待しております。

ところで+(電子工作+3D造形)を思いついた

音のプログラムを進めながら、帰りしなに思いつきました。これと電子工作、それから3D造形を結びつけたらもっと面白いなということです。

プログラムで目の前にあるパソコンの中だけでしか動かないものではなくて、実際に世の中にあるものとして作れたら、これは面白いんじゃないのかなと。彼らにとって良い経験(機会)になるのではないかなと考えます。

動作確認や私の準備に時間がかかりますので、すぐにというわけではないですが、中級第2期の終わりか、続く第3期として考えています。

ハンダ付け、それから3DCAD、3Dプリンター、これらを抱き合わせて音のプログラムと結びつけたら楽しそうだなというネタです。

これについては乞うご期待ということで、続報をお待ちください。