Swift Playgroundsで本格テキストプログラミング!

- Advertisement -
プログラミング教育用トイドローンTello EDUを使って、ドローンプログラミングを紹介するこのシリーズ。前回は、ブロックを組み立てて簡単にプログラミングできるTello EDUアプリを中心に紹介しました(バージョンアップにより現在は英語版のみダウンロード可)。
従来のTelloでもプログラムの知識があれば他の言語を使用することは可能でしたが、公式に対応しているのはScratch だけでした。Tello EDUでは、Scratch、Swift、Pythonといった複数のプログラミング言語に対応しています。これらの言語の中でTello EDU用のアプリが用意されているのはSwiftだけです。今回は、AppleのiPad専用アプリSwift Playgroundsを使ってTello EDUをプログラミングしていきたいと思います。
Swift Playgroundsをインストール
まず、iPadにApp StoreからSwift Playgrounds(iOS 11.0以降iPad対応)をダウンロードします。
- Advertisement -
Swift Playgroundsを開くと「コードを学ぼう」などたくさんのアプリが並んでいます。一見どれを選べばいいのかわからないのですが、画面いちばん下From Other Publishersの中からTello by Ryzeを選び、「購読」を押します。するとTello Space Travelがマイプレイグラウンドの中にインストールされTello EDUのプログラミングが可能になります。

Tello Space Travel画面
宇宙探索ミッションにチャレンジ
Tello Space Travelは、ミッションに従い宇宙探索を行うというストーリーになっています。コードを使って何ができるのかを段階的に学ぶことができます。また、ブロックでプログラミングしたTello EDUアプリと違い、Swift Playgroundsは実際にコードを書いてプログラミングします。
Tello Space Travelは日本語に対応していないため、与えられるミッションやヒントなどはすべて英語です。従って、ブロックなどのビジュアル言語を卒業した、ある程度英語が読めてキーボード操作ができる中学生・高校生以上が対象になりそうです。ただ、入力するときには漢字の予測変換のようにキーボードに候補が現れるため、やってみるとそれほど難しくはありません。
- Advertisement -
Tello Space Travelでは、Basic、Advanced、Mission Pad、Swarmの4段階のステージが用意されています。ここで注目したいのが、Mission PadとSwarmです。
前回どのように活用すればいいのかわからなかったミッションパッドと編隊飛行。これがアプリ内のミッションをクリアするとできそうなのです。プログラミング初心者の筆者には本格的なテキスト言語ということに多少抵抗がありましたが、これはやってみるしかありません!
まずはBasicのTakeOff and Landingからミッションに従ってテキスト入力部分にコード書いていきます。Tello EDU の電源が入っているのを確認し、iPadとTello EDUをWi-Fiでつないでから、コマンドを組み合わせて入力し、右下の「コードを実行」ボタンを押します。すると、Tello EDUの機体がコマンドに従って動き出します。思ったよりも簡単に「離陸と着陸」というミッションをクリアすることができました。

Swiftを使ったプログラミング飛行テスト(離陸と着陸)。アプリを使えばテキスト言語でも簡単にプログラミングできる
Swift Playgroundsでミッションパッドを使ったプログラミングに挑戦
Basicは、前後左右、上昇下降といった基本的なコードを使ったスペースステーションでのトレーニングです。Advancedは、高さやスピードといった制御、座標を指定しての飛行などを行い、地球に似た惑星を探索します。
基本的な動かし方を学んだら、次のステージはMission Padです。付属しているミッションパッドは4枚(表裏8枚)。ロケット、1から8の星座に見立てた数字、惑星の絵がそれぞれ描かれています。ロケットの方向が前方のX軸を表しています。Tello EDUがミッションパッドの情報を画像認識することによって位置を認識させたり、コマンドを実行させたりすることができるようです。
ミッションパッドの説明(Mission Pad User Guideより)
https://dl-cdn.ryzerobotics.com/downloads/Tello/Tello%20Mission%20Pad%20User%20Guide.pdf
Mission Pad ステージのGalaxy Jampというミッションでギャラクシーに見立てた2つのミッションパッド間をジャンプさせてみます。ミッションパッドを使った飛行は前回紹介したTello EDUアプリでも可能ですが、実際にコードを書いて見ると仕組みを理解することができます。

Swiftでのミッションパッドを使ったコード例
Swiftでミッションパッドを使ったプログラミング飛行テスト。1つ目のミッションパッドから2つ目のミッションパッドまで画像認識で移動できるようプログラミングしている
座標を指定して実際に物を操作するという場面は、日常生活ではなかなかありません。空間を飛び回るドローンプログラミングは、数学や空間認知という側面からも子どもが実体験できる面白い教材だと思います。慣れてくれば角度や時間を指定するなどより複雑な動きができそうです。
複数台のTelle EDUをコントロールできる編隊飛行!
Tello EDUの特徴の1つは、複数の機体を飛行させる編隊飛行が可能になったことです。1台のデバイスで複数台のTello EDUをコントロールするためにはWi-Fiルーターに接続する必要があります。
4つ目のSwarmステージに進むと、Connect Tellos to an APというアクセスポイントに接続するというミッションがあります。まず、いつものようにiPadとTello EDUをWi-Fiで一度つないでから、コマンドによって家庭などにあるWi-Fiルーターに接続します(Wi-FiルーターのSSIDとパスワード情報が必要)。
2台以上のTello EDUを用意し、それぞれこのアクセスポイントに接続するミッションを繰り返します。最後にiPadでも設定画面で同じアクセスポイントを選択してから、複数台を制御できるコマンドを実行させます。まずは2台のTello EDUを1台のiPadにつなぎ、基本の離陸と着陸を実行してみました。

Connect Tellos to an APミッション画面
編隊飛行のプログラミングテスト(離陸と着陸)。アプリを使って1台のデバイスで複数台のTello EDUを認識し同時に動かしている
協働的な学習コミュニティの重要性
しかし、実はこのミッション、簡単ではありませんでした。Wi-Fiルーターに接続できたと思っても離陸できません。果たしてWi-Fiの問題なのか、コードが間違っているのかわからず手詰まりです。
そこで、いつもお世話になっている「Drone Engineer Tea Party(お茶会)」に参加して、エンジニアの皆さんの協力を仰ぐことにしました。お茶会では、月に一度自分の興味を持っている課題などをそれぞれが持ち寄り、ドローンに興味がある人もない人も集まってお茶を飲みながらワイワイガヤガヤと自由に過ごしています。
参加者の職業もさまざまです。編隊飛行がうまくいかないと筆者がTello EDUを持ち込むと、早速検証が始まりました。いくつかあるWi-Fiのうちの1つにつなげることに成功し、やっと2台同時に離陸・着陸することができました。
一人では1ヶ月悩んで解けなかった問題が2時間で解決してしまったこともあります。プログラミングをしていると必ずうまくいかない場面が生まれます。ネット上で相談することもできますが、やはり直接会って問題を共有し教え合うという協働的なコミュニティの重要性を改めて実感しました。
今回の問題はWi-Fiへの接続でした。Wi-Fiで利用される周波数は2.4GHzか5GHzのいずれかになっています。Tello EDUのマニュアルを見ると動作周波数は2.4〜2.4835GHzです。筆者が試したところ2.4GHzのWi-Fiに接続すると成功することが多かったのですが、中にはセキュリティ設定なのか2.4GHzでも動作しないことがありました。うまくいかない場合はWi-Fiの接続先を変更して試してみてください。
また、みなさんに協力してもらい、筆者が2台しかTello EDUを持っていない為できなかった、4台での編隊飛行にもチャンレンジすることができました!
4台のTello EDUをつないで編隊飛行にチャレンジ。ミッションパッドの1から4までを並べてセットし、一台ずつ動きを指定してコントロール。2台を交互に上下させるとまるでダンスをしているような動きに
4台のTello EDUをつないで編隊飛行にチャレンジ。1から4のミッションパッドを正方形に置き、ロケットの絵を次の番号のミッションパッドに向けてセット。Tello EDUがそれぞれミッションパッドの位置や方向を読み取って4台でパトロール
プログラミングで問題解決能力を育てるには
Swift Playgroundsでは、ミッションに失敗しても正解を教えてくれるのではなく、ヒントを提示します。ヒントで問題が解決するときもあれば、今回のようになかなか解決しない場合もあります。
Tello Space Travelには宇宙探索ミッションが用意されていますが、試行錯誤を繰り返しながらもなんとか成功できたのは、多くの人の協力と、何よりドローンをプログラミングで飛ばしたい!実際に何が起こるのか自分の目で確かめたい!というモチベーションでした。この辺りの進め方はプログラミング教育を行う上で大きなヒントになりそうです。
また、Swiftは、Appleが開発したプログラミング言語です。実際にiPhoneやiPadで使うアプリを作る時にも使われており、本物の知識と技術を最初から学ぶことができます。ビジュアル言語からステップアップしたい子どもたちにとって、このSwift PlaygroundsとTello EDUの組み合わせはおすすめです。従来のTelloでもAdvancedまではミッションを進めることができるので、ぜひ試してみてください。
今回は、iPad用アプリSwift Playgroundsを中心にドローンプログラミングを紹介しました。次回はいよいよ最終回。ScratchとPythonについてレポートしていきたいと思います!