Ver.3.0をリリースしました。
このアプリは教育関係者の方々のご利用を目的として作りました。
実際にご利用されている方々も教育機関の方々です。
それらご利用者の中から
「for文やwhile文を学習できる機能の追加予定はないのか?」
とのご質問がありました。
当初は、「予定はありません」と回答しておりました。
実際、for文やwhile文に関して
ドローンを使ってどのように学習してもらえばよいのか、
どのようなアプリを開発すればよいのか、
全く想像ができなかったため、
予定はないと回答しました。
小学校でドローンを使ったプログラミング学習を行う場合、
単にドローンを飛ばして喜ぶだけでは学習になりません。
if文に関しては、ver2.0で何とか実装しましたが、
for文とwhile文に関しては、
なかなか良いアイデアが思いつきませんでした。
ただ、何らかの方法で実現したいとは思っていました。
そのようなときに新しいご利用者登録があり、
その方からこのアプリに関してとても高い評価を頂き、
是非、子供たちのために使いたいという熱い思いを頂きました。
その方から上記のような質問をされました。
当初「予定はない」と冷たく突っぱねたような感じになったことを
私としても大いに後悔した次第です。
そこで、一念発起し、今回、
for文とwhile文の機能も何とか追加した次第です。
長くなりましたね。。。すみません。
for文とwhile文の処理内容は以下のような感じです。
【while文設定画面】
while文は、ある条件を満たす間は
{}内の処理をループして継続するというものです。
顔検出機能を使って顔が検出できたかどうかを
isDetectedというフラグを使って判定します。
例えば、初期値としてfalseを設定し、
while文の条件として「isDetectedがfalseの場合」とします。
顔が検出されるまでドローンは少しずつ回転します。
時計回転か反時計回転かを選択できるようにしています。
ドローンは回転しながらカメラで撮影していますので、
その間に人の顔を検出するとisDetectedをtrueにします。
そうするとwhile文の条件に合いませんので、
while文のループ処理から抜け出すという想定です。
条件の設定次第でループを抜け出せない場合や
そもそもループ処理をしない場合がありますので、
そのような設定をしたときはアラートを表示して
正しい設定にやり直させるようにしています。
正しい設定で実行した場合でも人の顔を検出できなければ
ループ処理を永遠に行い続けますので、
その場合は「顔検出(while文)」ボタンをタップすると
処理を中止して次の処理へ進むようにしています。
【for文設定画面】
for文もwhile文に似た処理になりますが、
ある条件を満たす間は
{}内の処理を継続するというものです。
while文のループ処理と違う点は
永遠のループ処理ではなく有限の処理であることです。
良く使われるのがカウンターを使って
あるカウント数になるまで処理を行うというものです。
例えば、while文と似たような処理を行わせたい場合は、
counterの初期値を"0"として"10"になるまで顔検出をおこなう
と言うような処理です。
実際のfor文処理では1秒間に何回も繰り返し処理を実行しますので
10回程度ですと1秒かからず終了します。
このfor文処理では1秒間隔で処理を繰り返すようにしていますので、
カウンターを10までとすると10秒で実行することになります。
for文の場合も設定によっては永遠に処理を続ける場合がありますが
どのような設定があるのか数が多すぎで特定できませんので、
自由に設定して実行できるようにしています。
設定によってはfor文を全く実行しない場合もありますし、
for文から永遠に抜け出せない場合もあります。
それはそれで「なんで?」と悩んでもらうことも含めて
プログラミングの勉強と理解していただければと思います。
上記2つの機能追加が主な変更内容ですが、
それ以外にも以下の修正を行いました。
・プログラム実行中にプログラムを中止する機能を追加しました。
・プログラミングリストの各コマンドの後に1-2秒程度のホバリング(静止)コマンドを入れることを推奨していましたが、これを自動的に行うようにしました。これにより、各コマンドの後に1-2秒程度のホバリング(静止)コマンドを入れることは不要になりました。
・軽微な不具合を修正しました。
基本的には教育関係者の方々にお使いいただきたいですが、
個人の方でもお使いいただけます。
現時点では無料でご提供しておりますので、
ご興味のある方はご連絡ください。