昨年から小学校で必修化され、以前にも増して注目を集めているプログラミング。
様々なシーンで使われるようになった一方、特定の専門分野でのみその技術を活かしている人が多いのではないでしょうか? 普段とは違った分野でプログラミングを活かすことにより、思いも寄らぬ発見や応用が得られることもあります。
そこで、よしもとプログラミング部(吉本興業)の芸人、キャプテン★ザコさん、かじがや卓哉さんが電子工作ブランド『エレキット』開発担当者のアドバイスのもと、電子工作に挑戦! 2人にとって馴染みの薄い機械工作の世界で、これまでの知識、経験はどう活きるのか?
そして、ロボットが動かせるのか?
キャプテン★ザコ
吉本興業所属のお笑いコンビ、「キャベツ確認中」のボケ担当。よしもとプログラミング部にて部長を務める。バルーンアートの特技を活かし、バルーンアート全国大会での優勝経験もある。
かじがや卓哉
吉本興業所属のお笑い芸人。よしもとプログラミング部所属。かつて家電量販店で10年以上働いていた経験から、家電製品総合アドバイザーの資格を持ち、iphone芸人・家電芸人として活躍。
先生
子どもでも手軽に作れる電子工作ブランド
『エレキット』の開発担当者。ロボットを作るうえでのアドバイスや仕組みを解説してくれる。(今回使用するキットはこちらより購入可能。)
未経験から始める、ロボットづくり
今日はよろしくお願いします!
こちらこそよろしくお願いします。ところでお2人は、これまで電子工作の経験はありますか?
ワークショップで子どもたちにプログラミングを教えることがあるけれど、組み上がった状態からプログラミングすることが多いので……。イチから組み立てるのは初めてかなぁ。
僕はまったく作ったことがなく、今日が初めて。僕らが作るのはどんなロボットなんだろう?
まず、かじがやさんに作ってもらう車のようなロボット『コロボライト』は、「走る電子基板」をコンセプトに、外装を省いたことで気軽に工作を楽しんでもらえるキットです。工作よりもプログラミングに興味を持っている初心者・お子さん向けのキットで、ロボットの組立ては早い人なら15分もあればできます。ただそこから、複雑な動きをプログラミングで命令できるのが特徴です。
ザコさんに作ってもらうロボット『ファブウォーカー』は、MDF素材(合板材)を用いたロボットで工作の要素が多いです。そのため組立ては約1時間。かじがやさんのロボットに比べると、プログラミングは簡単な内容が多く、命令できる数も少ないです。プログラミングはもちろん学べますが、どちらかというとメカ的なものづくりが学べますね。
僕の作るロボットは足が特徴的で、クモみたい。
足はクリップで挟んでいるだけなので、いろいろな素材に変えることができます。変えることで、動きも変わる。このようなメカ的な動きが楽しめるようになっています。
見本ではサインペンを使っているけど、アイスピックにしたら、えらい凶暴なロボットになりますね(笑)。
(笑)。では実際にキットを組み立てていきましょう。
レッツロボット!
レッツプログラミング!!
一同:ーーー
あれ? みんな掛け声言わないと!
子どもの頃の工作の楽しさを思い出す
これ、いいですね。キットの箱を開けると「ようこそ、プログラミングの世界へ」って書いてある。なんかテンション上がるなぁ。
僕のロボットの材質は木のような素材で、木工用ボンドで組み立てていくんですね。 先生、組み立てていくうえでのポイントはありますか?
まず、パーツは初めに枠から全て外すのではなく、説明書の手順に沿って使うものを確かめ一つひとつ外して組み立てていくことが大切です。
危ない、全部外すところだった……。
ボンドはたくさん付けた方がいいのかな?
量が多いと乾きにくくなるので、ほどほどが良いです。
この後、粘着テープで基板と足を組み立てるんですが、その両面テープはシールをはがしたら接着面を触らない方がいいですね。粘着力が下がります。
僕の方のロボットは木もボンドも使わず、まるでミニ四駆を作っていくような工程ですね。
かじがやさんのロボットはなるべく簡単に作れるように、モーターと基板の接続ははんだやリード線を使うことなく組み立てる仕様となっています。
お、ハンマーも使うのか。
ーーダン、ダン、ダン
ちょっと、ハンマーの音がうるさくて先生のアドバイスが聞こえないよ!!
タイヤのシャフト付けはミニ四駆作りでよくやったなー。でも、タイヤが2本しかないけど、一般的な4輪自動車ではないんですか?
あ、先生、これ経費削減でしょ!?
いえいえ、違いますよ(笑)。2輪というか3輪に近いですね。このあとプログラミングしていくと分かりますが、旋回などの動作をするとき、その方が命令が簡単だからです。それに、前輪がひとつだと、そこを軸にして小回りできるんです。
なるほど。モーターは、まさにミニ四駆のものと同じみたい。
かじがやさん、モーターと基板を付ける時、接続するモーター端子の角度を少しつけてあげることがポイントです。接触がよくなりますよ。
ここか……。ちなみにこのモーターって、ミニ四駆みたいにパワーが強いものに変えてもいいんですか?
そうそう、ミニ四駆で使ってたハイパー〇〇モーターにしてみようぜ!
大人の方からよく受ける質問です(笑)。ダメとは言いませんが、まったく動かないこともありますし、負荷がかかり部品が熱を持つ場合があるので、おすすめしません。モーターのパワーに合わせて、全体が設計されているので。
そうかぁ、残念(笑) 先生、僕のロボットのモーターはかじがやのとはタイプが違うみたいだけど、なぜですか?
ザコさんのは、実際にロボットの関節動作などで使われる、サーボモーターです。前後の動きではなく角度を制御するもの。よく見るとモーターから黒・赤・黄のコードが3本出ているでしょう。2本は電源線ですが、残りの1本は制御用で、この線を通してプログラミングした命令をサーボモータに伝えます。 それにしても、お2人とも順調ですね!
プラモデルとかミニ四駆で鍛えられましたから! はんだ付けがないから初めてでも作りやすい。
だいぶ完成に近づいてきたかな。部品の選定も作る手順も、説明書どおりにスムーズに作れますね。ザコさんの方は組立てが大変そう。
クリップの向きや細かい部品の組み合わせがちょっと難しいけど……。
それより、かじがや! このロボットの出来栄え次第で今後のプログラミング部の仕事量が変わってくるからな!!
ええぇぇ……。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
その後、黙々と作業を続ける2人。
そして大きなトラブルもなく、数十分後……
組み立て、完成しました!!
ロボットが動く、仕組みを知る
ここからプログラミングです。まずはそれぞれのロボットに既に組み込まれているサンプルプログラムで動かしてみましょう。では、かじがやさんから、スイッチボタンを押してもらえますか。
おぉー、動いた!
机の端に行くとストップして、バックする! すごい! LEDライトが光るのもテンションが上がるなぁ。この動きは最初から入っているプログラムですか?
ええ、テーブルから落ちずにバックするのは、センサーが得た情報を制御するプログラムによるものです。ちなみにプログラムは、スイッチと電池ボックスの間の黒いICチップの中に書き込んであります。
これから書いてもらうプログラミングも、ここに転送していきます。いわゆる家電製品の制御などを行っているファームウェア、組み込みですね。ではここからプログラミングしていきましょう。
ロボットの動きが視覚的に分かるアイコンでプログラミングする、ビジュアルプログラミングですね。矢印とか時計とか、いろいろな命令のアイコンが並んでいてワクワクしてきた!
スタート(発進)とエンド(ストップ)というアイコンの間に、それらのアイコンを並べることで、実際にプログラミングしているのと同じ動作が命令できます。
複雑な動きを入れてみました。これで転送して……。
おぉプログラミング通りに動いた! 先生、机の端に行くとバックする動きは、どんなプログラムですか?
「条件分岐」という命令で行っています。このカードを使うと「◯」「×」2つのルート(動き)が示されます。◯側のルートは光センサーの前にものがあった場合の動きです。一方、×側のルートはその逆、ものがない場合の動きとなります。
なるほど。◯側のルートには前進の命令を、×側のルートには後進の命令を配置することで、オン・オフのセンサーのような動きとなるわけだ。もしかしてこのプログラミングって、ロボット掃除機の壁に当たったら別の動きをするような制御と同じですか?
ええ、実際にはもう少し複雑なプログラミングになりますが、基本的に同じと言えるでしょうね。
やっぱり。ビジュアルプログラミングを学ぶと、僕たちがふだん使っている家電製品などの仕組みも学ぶことができる。これはとても勉強になりますね。
自動ドアも似たようなプログラミング(制御)で動いています。
自動ドアも?
条件分岐を無限にループさせるプログラミングを組み込んでおくことで、常に人が入ってくる動きを待っています。センサーが人を感知したら、ドアが開くルートに進むと。また無限ではなく有限、たとえばループを3回と制限することで、3回ログインに失敗したらシャットアウトするといった仕組みが構築できます。
先生!!
こっちは前進と後進の動きを繰り返していますーー!!
それは、3歩進んで2歩下がる、というプログラムです。ではザコさんも色々とプログラミングしていきましょう。
よーし、とっておきの動きを…… 3歩進む、右旋回、左旋回、2歩下がる、にして。
おおっ! 命令どおりに動いた! これまたかわいい感じで動くなぁ。子どもたちの興味をひきそう。
足の材料を変えても面白いですよ。
お、じゃあプラスチックのフォークを使って……。
映画『マッドマックス』に登場する超シャコタンのアウトローな車みたいにしてみよう(笑)。
あれ、ぜんぜん動かない! ガンバレ!!
……。
しょうがない。 次は、アイスピック! はないのでドライバーにするか。
おおっ、
ドライバーだとサクサク動く!
それにかっこいい!
ただ、テーブルが傷きそう……。
ーーー遠くからマネージャーの鋭い視線が向けられる。
よしもとから怒られそうなので、そろそろやめておきます(笑)。 足の形状が違うだけでこうも動きが違うとは! ところで、ビジュアルプログラミングの裏側って、僕らがふだん書いているプログラミングに置き換えられているんですか?
ええ。正確にはプログラミング言語のその先、実際にロボットを動かしている、コンピュータが理解する16進数にまで置き換えています。そしてこれらのコードも、もちろん見ることができます。
例えばこれは、前進して、3秒停止、後進して3秒停止というプログラミングですが、 裏では、
このようなテキストベースのプログラムソースに変換され、
そこから、このようなバイナリデータ(16進数)に変換されているのです。 ちなみに、このキットのビジュアルプログラミングは、C言語やJavaを使っています。
僕らが配置したビジュアルプログラミングは、10行ぐらいのテキストコードというのが、一目で分かる! こうやって裏側を見るとプログラミングと動きの繋がりがわかるんだ。
奥が深いんだなぁ。
プログラムする人が増えれば日本の未来は明るい
――お2人とも無事完成しましたね。実際に電子工作をやってみてどうでした?
プログラミングを学ぶ入り口として、電子工作・ビジュアルプログラミングは、いいきっかけになります。おもちゃのような見た目でも、組み立てて動かすという体験を通して、実際の世の中のシステムを理解できるわけですから。 僕がプログラミングを本格的に始めたときはいきなりコーディングだったので、まあ、つまらなかったし、よく分からなかった。でも今日、電子工作をやってみて楽しみながら仕組みを学ぶことができました。
Webアプリの制作では、デザインなどもすべてパソコン上のプログラミングで行いますよね。そのためプログラミングに詳しくない人にとっては、ちょっとした変更が一筋縄でいかないことも多く、ストレスがたまってしまう。でも、電子工作であれば、目に見えるデザイン的な部分は手で工作するので、特に知識がなくてもできます。そしてビジュアルプログラミングも同じく、誰でも手軽にできることを、今日まさに体験しました。
――子どもたちが電子工作を通じてプログラミングを学ぶことに関してはどうお考えですか。
柔軟な発想を持つ子どもたちがプログラミングを学ぶことで、我々大人の凝り固まった頭では到底浮かばないような、斬新な製品やサービスが生まれるのではないかと期待しています。
お掃除ロボットや自動ドアが動く仕組みなどを知ることができることも大きいですよね。子どもの頃からそのような知識を持っていれば、我々とは違った目線で、世の中を見ることができる。その結果、より深い思考能力などが養われるのではないでしょうか。 それに電子工作は、筋道を立て命令(プログラミング)しないときちんと動かないので、論理的思考も身につくと思います。論理的思考はプログラミングに限らず、他の様々な領域においても活かせるスキルですから。
子どもたちが学ぶことも大事ですが、そもそも日本はプログラミングできる人材が少ないですから、大人でも興味がある人は、まさに僕たちのように学んでもらいたいですよね。そしてその入口というか架け橋に、電子工作はもってこいだと思います。
コロナの影響で経営が逼迫した会社や個人事業主に対して、給付金を支援する制度が設けられました。でも申請システムが立ち上がったのはかなり遅かったですし、精度もさほど高くなかったと指摘されていましたよね。このような状況も、プログラミング人材が増えることで改善するのではと個人的に期待しています。
――電子工作で楽しみながらプログラミングを学ぶことが、日本の明るい未来を作っていくきっかけになりそうですね。今日はありがとうございました!
まとめ
プログラミングは知識や経験があっても、応用するシーンが変わることで、その捉え方も大きく変わってきます。普段Webサイトやアプリなどを実装している人も、外の世界でプログラミングを応用することで、アイデアや可能性が広がっていくでしょう。また、電子工作をしたことがない人でも挑戦することで、楽しみながら仕組みを学び、社会との繋がりを感じることができるようです。
みなさんも電子工作を通じてプログラミングを体験することで、新しい世界が見えてくるかもしれません。
撮影:長野竜成
取材+文:杉山 忠義