目次

講師の皆さんへ

はじめに

CHIRIMEN for Raspberry Pi (以下、CHIRIMEN RasPi) と本チュートリアル (以下、本教材) を用いて IoT プロトタイピングやプログラミングの教育をする講師の皆さんに注意して頂きたいことをまとめています。

学校での講義・ハッカソンイベント・プログラミング塾などで利用する際には、先生やメンター・チューターなどのスタッフの皆さんはこちらもご覧ください。

始めに簡単にまとめると次の通りです:

以下、教材の目的や意図した使い方、躓く人が多く講師側が意識すべきポイントなどを説明します。

教材としての目的

本教材は JavaScript の初学者もしくはプログラミング未経験者であっても簡単にソフトウェア・ハードウェア・電子回路すべてを同時に楽しく、ホンモノのプログラムとプロトタイピングを通じて学べる環境を意図して作られています。

また、本教材では実際のプログラミングやプロトタイピング開発を行っていく上で必要となる実用的な技術を、ホンモノのプログラムとプロトタイピング機材を用いて、実践的に習得もらうことを目的としています。

これまでもプログラミング教材としては Scratch や NodeRed のように学習用に GUI で簡単な操作でできる環境、プロトタイピング教材としては MESH のように簡単で安全に使えるツールなどは存在しました。しかしこれらはいずれも実践的技術の習得という意味では課題がありました。

一般的なプログラミング言語を用いて学習すれば、そのまま同じ言語で多様な Web サービスやアプリと実際に連携することも、本格的なプログラミング言語の学習に繋げていくことも可能です。電子工作ショップで一般的に入手可能なセンサーや機材を用いて学習すれば、安価で様々なデバイスを使ったプロトタイピングを実践してプロダクト開発へと繋げていくことも可能です。

一方で実践的なプロトタイピングを行うためには単にソフト・ハード・回路の知識が必要なだけでなく、開発環境の構築、複数のプログラミング言語の習得、コンパイル、サーバとクライアントの通信モデルなど多数の知識が必要となり、初学者が始めるには非常にハードルが高いものでした。そのため、本教材ではブラウザを開くだけで開発ができ、JavaScript の単一プログラムで全てを制御できる環境を用意しています。

Web を通じて多様な情報、ノウハウ、サービスが使える今こそ、Web の標準言語である JavaScript を用いてプログラミングとプロトタイピングを学ぶことが、最初のハードルを低く抑えて高い学習意欲を保ちつつ、実践的な応用に繋げられる知識を習得していくのに役立つと考えて作られた教育環境が CHIRIMEN for Raspberry Pi です。

学習方法と進行方法

本チュートリアルは初学者でも講師に教えられることなく、順に読みながら試すことで独学できるように意図して書かれています。初学者は特に多くのことを聞いても理解が追いつきませんので、聞くだけの座学を長く設けず、すぐに各自読みながら手を動かして試させることをお薦めします。

講師一人あたりに数人程度までの小規模で学習する場合はどのようなスタイルでも問題ありませんが、人数が多く学習速度・進捗にバラツキがみられるようになってくるほど、講師と同時に全員で進行するのは難しく時間もかかります。従って、できる人は自分で次に進めていき、本文に書かれていないが example が用意されているデバイスも順次自由に試してもらうことをお薦めします。

また、ソフトウェア・ハードウェア・電子回路の全てを同時並行で学ぶことになるため、いずれか単独で学習するときよりも、講師から見たら些細なことで躓く人が多く出てきます。

若年層やプログラミング未経験者などを対象とするときは特に、コードを手入力させたりせず、jsbin/jsfiddle にチュートリアル本文のコードをコピペしたり、各チュートリアルページ末尾からリンクしているステップ毎の完成版ページや example ページ で用意されているサンプルコードを元に書き換える方法で学習させることをお薦めします。

できた人は自由に先に進めたりチュートリアル外のサンプルを試したりコードを書き換えたり、あるいは Tips 集 などを見て独創的な応用を考えるようにしてもらいつつ、講習会として取れる時間に応じて途中までを全員で進めるような学習の仕方を想定して書かれています。

総務省が学生や若者を対象に実施する IoT システム開発のスキルアップイベント「Web×IoT メイカーズチャレンジ」、Mozilla Festival でのワークショップ、慶應義塾大学や中央大学の講義などで使われた経験からすると、1 時間程度しかない場合は最初の L チカだけ、半日〜1 日程度あれば基礎編の終わりまで、2-3 日あれば応用編までを全員 (小中学生から大人まで) で進行可能です。

講師が事前に入念な準備をすることで 2 日で発展編まで含めて実施したケースもありますが、一般的には応用編までを皆が実施し、各自が作りたいものを考えて作っていく上で必要と興味に応じて発展編やチュートリアル外の example を試していくことを想定しています。

この教材で学べること・学べないこと

本教材では初学者でも簡単にソフトウェア・ハードウェア・電子回路を学べることを意図していますが、基礎知識全てを学べることを意図して作られているものではありません。

スクラッチから独力でプログラムを書けるようになるための JavaScript の基礎構文やデバッグの仕方であったり、オームの法則から始まる電子回路の基本であったりといったことを一から全て本チュートリアルだけで学ぶことは想定していません。学びたい内容に応じて、Appendix や本文中のリンクで紹介している教材などを利用して別途学習して頂く必要があります。

また、初学者向けで最初に時間がかかる開発環境のセットアップ、実際にハードを動作させるまでに用意すべきステップを最小限にするため、機材を繋いでブラウザを開くだけですぐに実際のデバイスを動作させたり、ブラウザ上でコードを書き換えるだけで即時反映させたりできるようにしています。逆に本教材では開発環境のセットアップなどについては学習できません

教材として用意されているもの

CHIRIMEN コミュニティでは教材として利用する上で扱いやすいように次のものを用意しています。

講師やイベント主催・運営側の注意

ワークショップやハッカソンなどで CHIRIMEN RasPi を使用する際には主催・運営側で注意すべきことがいくつかあります。 実施する範囲については前述の「学習方法と進行方法」の説明をご覧ください。

Raspberry Pi の故障・破損

Raspberry Pi はイベント中に故障する消耗品として考える必要があります。ピンに力を入れすぎて曲げた、micro SD カードスロット、micro USB 端子、HDMI 端子などが物理破損した、回路・配線のミスでショートさせるなどして過電流が流れたなど、簡単なミスで故障して使えなくなります。慣れない利用者が使用する場合には初期不良でなく破損した場合も原因を把握しておらず「最初は動いていたが動作しなくなった」などと申告されることもありますが、故障させることも含めて学習として受け入れ、予備を用意した体制でイベントを実施するように

必要機材の確保・購入の指導

経験のないまたは浅い参加者に機材確保を任せると、センサーやモータなどを使用する上で一緒に必要となる機材の手配を忘れることが多くあります。例えば圧力、水分などのアナログセンサーだけを用意して ADC や抵抗などを用意していないと Raspberry Pi には ADC が搭載されていないため利用できません。機材手配時には分かる人が相談に乗って不足がないように指導する体制を用意するか、運営側で十分な予備機材を用意して対応するようにしてください。

その他のセンサー機材の準備

チュートリアル 3 の「I2C 応用編 (その他のセンサー)」では本文中に例として光センサー、測距センサー、三軸加速度センサーを採り上げていますが、これらは多数ある I2C デバイスのセンサーの中の一例に過ぎません。

具体的に挙げたこの 3 つのセンサーの使い方を学習するのが目的ではなく、いろいろなセンサーを回路図とサンプルコードを使って動かしてみることで、サンプルが何処にあるのか知って自ら試す能力を身につけつつ、各センサーの実挙動を把握して具体的に CHIRIMEN RasPi で何ができるのかというイメージを持つことが目的です。

本文で解説はされていないがその他のモジュールとして紹介、リンクされている example ページ に掲載された各種デバイスを可能な限り多数種用意し、受講者が順番に試せるようにしてください。

本文の 3 つのセンサーを人数分用意するのではなく、いろいろなセンサーを少しずつ用意して皆がそれぞれ異なる順番で試すように指示・誘導してください。例えば、6〜10 種類くらいのデバイスを 1〜3 個ぐらいずつまとめた「いろいろセンサーパック」を 4〜6 名くらい毎に割り当てて、そのグループ内で回して使ってもらうようにしてください。

なお、機材は購入だけでなくピンヘッダの半田付けなど事前可能と動作確認が必要となります。特に GP2Y0E03, PCA9685 などは面倒ですのでご注意ください。

怪我や事故が生じるポイント

ものづくりやプロトタイピングの開発では怪我や事故の原因となることがあります。のこぎりや半田ごてなどの一般的な工具の使い方を注意・指導することやイベント主催側では保険に加入しておくことも重要ですが、ここでは CHIRIMEN チュートリアルを進める中で特に怪我が多く見られる点について説明します。

温度センサー (ADT7410) などの配線

I2C 基本編 で利用する 温度センサー (ADT7410) の配線を左右逆にすると、短時間でセンサーのチップが発熱し故障します。数秒程度で 100 度を超える温度になり、一瞬でも触ると指に水膨れが出来てしまいます。温度センサーに限らず、電源線を含むデバイスの配線はしっかり注意するよう指導してください。

躓く人が多いポイント

Typo

初学者は頻繁に Typo します。特に、モバイルディスプレイなどで視認性が低い場合や、英語が得意でない人は特に読み間違い・打ち間違いが増えます。

CodeSandbox や VS Code (に eslint をプラグインを導入したもの) など、構文チェック機能を備えたエディタを利用すればコーディング中に下線が表示されて気付きやすいし、上手く動かない時にコンソールを見てエラーメッセージを理解しエラー行を確認できる人は文字が違うことに気付けますが、初学者はそれもすぐにはできません。講師一人あたりに数人程度までの小規模で行うのでない限り、コードを写経 (見本を見ながら手で入力) させながら学ばせるのは非常に時間もかかり難しく感じられてしまうためお薦めできません。

実際の開発でも調べてサンプルをコピーしたりエディタに補完させつつコードを書くのが通常です。チュートリアル本文からコードをコピーしたり、各チュートリアル末尾でリンクしているステップ毎の完成版ページを開いたり、example ページの JSBin や CodeSandbox ページあるいはデスクトップの gc ディレクトリ配下にあるローカルファイルを編集したりしながら学習させるスタイルをオススメします。

タクトスイッチの使い方

タクトスイッチには 2/4pin の 2 種類がありますが、チュートリアル中の各回路図では 2pin のものを利用しています。4pin のタクトスイッチを用意している場合にはその使い方をしっかり教えるようにご注意ください (4pin タクトスイッチの内部配線はチュートリアル中で説明しています)。

非同期処理 (Async/Await)

非同期処理は初学者が学ぶプログラミングとしては難しいものですが、非常に重要なため回避していません。記法としては同期プログラミング同様に読み書きしやすい Async/Await を採用しているため「非同期処理は await で受け、await を使う関数は async で定義する」ことだけができれば問題ありません。

一方、Promise などは使わないし解説していません。JavaScript 非同期プログラミングを一式学習させる上で有効な教材ではないことにもご注意ください。

フィードバック

本教材を使っていて多くの人が躓く、困ったポイント、改善して欲しいポイントなどがあれば是非 Github Issues にご報告や直接プルリクエストを送ってください。

CHIRIMEN RasPi 環境だけでなく本教材もオープンソーススタイルで、利用される講師の皆さんがお気づきの点を共有することで改善を続けていきたいと考えています。