LEGO® Education における Web Bluetooth と Web Serial API の活用

LEGO で組み立てたブレイクダンサーのモデル。

LEGO® Education SPIKE™ Prime Set は、6 ~ 8 年生(約 11 ~ 13 歳)向けの STEAM(科学、技術、工学、芸術、数学)学習ツールです。

カラフルな LEGO の組み立て要素、使いやすいハードウェア、Scratch と Python に基づく直感的なドラッグ&ドロップ コーディング言語を組み合わせた SPIKE Prime は、学習レベルに関係なく、楽しく遊びながら、生徒が批判的に考え、複雑な問題を解決できるように、遊び心のある学習アクティビティを通じて生徒を引き付けます。

プログラミング経験

生徒は、アイコン ブロック、単語ブロック(デフォルト)、または Python コードを使用してモデルをプログラムします。プログラミング環境は、学校の初期の STEAM 教育で多くの生徒がすでに慣れている Scratch エディタから適応されています。

2 つのビジュアル モードでは、生徒はブロックをプログラミング キャンバスにドラッグ&ドロップしてブロックを接続します。さまざまなブロックを接続して、接続します。

単語ブロック プログラムを含む LEGO プログラミング環境。

上級者は、実際の Python コードを直接使用することもできます。このコードには、コード作成中の生徒をサポートする統合ナレッジベースが付属しています。

Python プログラムを含む LEGO プログラミング環境。

生徒は LEGO Education SPIKE アプリでプログラムを作成したら、Bluetooth または USB 接続を介して LEGO Education Spike Prime ハブにプログラムを送信します。ハブはプログラムを実行し、LEGO モデルを制御します。

付属のハードウェア

SPIKE Education キットの頭脳となるのがハブです。ハブは、センサーやモーターなどのさまざまなハードウェアを制御します。このキットには、カラーセンサー、距離センサー、力センサーが含まれています。モーターは 2 つあり、1 つは大型、もう 1 つは中型です。ハブは Bluetooth または USB でパソコンに接続します。

LEGO SPIKE Education キットのプログラム可能なパーツ。
大型のハブ、色、距離、力用の 3 つのセンサー、2 つのモーター。

サポートされているアプリケーション

LEGO には、プラットフォーム固有のアプリのほかに、SPIKE ウェブアプリもあります。このアプリは spike.legoeducation.com からアクセスできます。このアプリはブラウザにキャッシュに保存されないため、ウェブアプリを機能させるには、ユーザーが常にインターネットに接続している必要があります。

LEGO は、Windows 10 および 11、MacBook、Chromebook で Chrome ブラウザを公式にサポートしています。キャッシュの改善とアプリのインストール可能化は、今後の機能として予定されています。

SPIKE Hub に接続する

SPIKE Prime ハブと SPIKE Essential ハブは、Bluetooth または USB を使用してパソコンに接続できます。デフォルトでは、ウェブアプリは Web Bluetooth API で Bluetooth を使用します。

また、USB で接続している場合は、ウェブアプリが Web Serial API を使用します。どちらの場合も、USB ケーブルを除き、接続フローはほぼ同じです。

USB 接続手順が記載された LEGO Education SPIKE アプリ。

接続すると、生徒は大型ハブの 20 個のストレージ スロットのいずれかにプログラムをアップロードします。

LEGO Education SPIKE の [ハブにダウンロード] UI。

ハブと通信するには、Web Bluetooth API と Web Serial API にそれぞれ BluetoothDevice または SerialPort が必要です。これらは、ライブアプリから取得したコード スニペットで取得されます。

Web Bluetooth API 接続

(X.next = 4),
  navigator.bluetooth.requestDevice({
    filters: [
      {
        namePrefix: 'GDX',
      },
    ],
    optionalServices: ['d91714ef-28b9-4f91-ba16-f0d9a604f112'],
  });

Web Serial API 接続

const v = yield navigator.serial.requestPort({
  filters: [{
    usbVendorId: Zt.SerialVendorId.LEGO // 1684
  }]
});
yield v.open({
  baudRate: 115200
});

ウェブファーストに移行してウェブ ハードウェア API を使用する理由

現在、LEGO は Android、macOS/iPadOS、Windows 向けのアプリの独立したバージョンを維持しています。また、ウェブアプリに加えて、プラットフォーム固有のアプリのレガシー バージョンも維持しています。Chrome の基盤となるウェブ ハードウェア API をサポートするプラットフォーム(macOS、Windows、ChromeOS)にウェブアプリをプッシュすることで、LEGO デベロッパーはアプリのメンテナンスの負担を大幅に軽減できます。

別の理由として、ダウンロード サイズがあります。ウェブアプリのダウンロード サイズは合計 20 MB 未満ですが、macOS アプリと iPadOS アプリは 115 MB、Android アプリは 178 MB、Windows アプリは 292 MB です。ただし、最初のインストールには、教室で必要なレッスン マテリアルは含まれていません。このマテリアルをダウンロードすると、サイズが約 1 GB 増加します。ウェブアプリでは、レッスン コンテンツがストリーミングされるため、ユーザーは常に最新バージョンを利用できます。また、表示しているレッスンのみをダウンロードできます。

これらの技術的な理由に加えて、教室での使用の簡素さも、ウェブファーストに移行するもう 1 つの強力な理由です。生徒はアプリをインストールして最新の状態に保つ必要はありません。代わりに、リンクに沿って移動し、常に最新バージョンで作業します。LEGO 側では、アプリストアの審査プロセスに関係なく、コンテンツの更新をいつでも行えます。

ウェブで LEGO を組み立てる

LEGO は常に、ブロックを創造的に組み立てることを目的としてきました。LEGO Education SPIKE はウェブブラウザからアクセスできるため、このキットはその例外ではありません。

デベロッパー コミュニティはすでに、SPIKE とやり取りするコードの作成を開始しています。たとえば、PyREPL-JS は、Tufts University の Gabriel Sessions によって開始されました。PyREPL-JS は、ウェブページが SPIKE ハブと通信するための MicroPython REPL(読み取り、評価、出力のループ)を提供します。同じく Tufts の Ethan Danahy は、この REPL を使用して SPIKE Prime の Web インターフェースをいくつか作成しています。そのうちの 1 つが、音声ファイルに同期されたブレイクダンサーです。

同大学では、SPIKE による ML に関するワークショップを開催し、手順とコードサンプルを含む Robotics Playground を開催しています。Hello SPIKE から始めることをおすすめします。

音声ファイルと同期されたブレイクダンサーの LEGO モデル。

Web Serial API と Web Bluetooth API を使用すると、生徒はブラウザ内から物理的な LEGO モデルと通信できるため、教育、創造、エンターテイメントの各アプリケーションでさまざまな可能性を広げることができます。生徒は、アプリを更新しなくても常に最新バージョンのアプリを使用できます。

長期的には、LEGO デベロッパーがメンテナンスするアプリの数が少なくなるため、費用と開発労力が削減され、LEGO の最大の特徴である創造性の解放に多くの時間を割くことができます。