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

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

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

カラフルな LEGO ブロック、使いやすいハードウェア、Scratch と Python に基づいた直感的なドラッグ&ドロップ コーディング言語を組み合わせた SPIKE プライムは、学習レベルに関係なく、遊び心のある学習活動を通じて生徒の批判的思考と複雑な問題の解決を促します。

プログラミングの経験

生徒は、アイコン ブロック、単語ブロック(デフォルト)、または 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.legoeducation.com でアクセスできる SPIKE ウェブアプリも提供しています。このアプリはブラウザにキャッシュ保存されないため、ウェブアプリを動作させるには常にインターネットに接続する必要があります。

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

SPIKE ハブに接続する

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

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

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

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

LEGO Education SPIKE の [Download to Hub] UI。

ハブとの通信には、Web Bluetooth と 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 近く増加します。ウェブアプリでは、レッスン コンテンツがストリーミングされるため、ユーザーは常に最新バージョンを利用でき、閲覧しているレッスンのみをダウンロードできます。

技術的な理由以外にも、ウェブ重視のメリットとして、教室での使いやすさも挙げられます。生徒はアプリをインストールして最新の状態に保つ必要がありません。代わりに、リンクをたどって常に最新バージョンを使用します。LEGO 側では、アプリストアの審査プロセスとは関係なく、コンテンツの更新はいつでも可能です。

ウェブでレゴを試す

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

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

大学は SPIKE を使用した機械学習に関するワークショップを開催し、手順とコードサンプルを含む Robotics Playground をホストしています。まずは Hello SPIKE から始めることをおすすめします。

ブレイクダンサーの LEGO モデルが音声ファイルと同期している。

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

長期的には、LEGO のデベロッパーが維持するアプリの数が減り、コストと開発労力が削減され、LEGO の最も得意とするところである創造性を解き放つことに時間を費やせるようになります。