VEXcode VR でスイッチブロックを使用してブロックからテキストベースのコーディングに移行する

VEXcode VRでスイッチブロックにアクセスするには、VEXcode VRプレミアムライセンスが必要です。 VEXcode VRでスイッチブロックにアクセスする方法については、こちらの記事をご覧ください。

初心者のプログラマーはブロックベースのインターフェースを使用する傾向がありますが、上級の学生は Python などのテキストベースのプログラミング言語を使用してロボットをコーディングすることに興味があるかもしれません。歴史的に、ブロックからテキストベースのプログラミングへの移行は、学生にとってはまったく新しい言語を学習しているように感じられ、ブロックを使用して以前に学習したロジックを適用することはできません1 VEXcode VR のスイッチ ブロックは、ブロックベースのプログラミングからテキストベースのプログラミングへの移行を容易にするために開発されました。この記事では、VEXcode VR でスイッチ ブロックを使用する方法について説明し、教室のシナリオを通じてそれらの機能を状況に応じて説明および図示します。

VEXcode VRでブロックベースコードとテキストベースコードが同等であることを示すスイッチブロック

スイッチブロックの使用

Switch は、ブロックベースのプログラミングの使い慣れた要素を組み込み、テキスト コマンドを入力できるテキスト ボックスを統合します。これにより、生徒は Python に伴うコマンドと構文を学習しながら、徐々にテキストに移行することができます。以下の動画をご覧いただくと、PythonコードをSwitchブロックに入力する例をご覧いただけます。


Switch は、生徒に Blocks からテキストベースのコーディングへの自然な橋渡しを提供します。生徒がコマンドのロジックと順序に慣れてくると、プロジェクトを 1 ブロックずつ変換できるようになります。この動画では、ブロックをスイッチブロックに変換するプロセスが示されています。

これにより、生徒はブロックベースのプログラムのロジックフローを引き続き操作することができ、他のブロックの周りをループがラップする様子などを物理的に確認しながら、テキストコマンドを自分で試すこともできます。ブロックが Switch に変換されると、生徒はパラメータを簡単に変更し、テキスト コマンドの構文を理解し始めることができます。このセクションでは、学生による Switch の使用例を取り上げながら、VEXcode VR プロジェクトでこれらのブロックを使用する方法を説明します。

Switch は VEXcode VR Premium ライセンスで利用できます。 VEXcode VRサブスクリプションの詳細については、こちらをご覧ください

ライセンスを取得したら、この記事の情報を使用してSwitchにアクセスする方法を学んで

教室のスイッチ

オースティンは、数年間ブロックを使ってコーディングを続けている学生です。クラスの生徒の中にはまだコーディング初心者もいますが、オースティンは Python についてさらに学び、テキストを使用して VR ロボットをコーディングする方法を学びたいと考えています。コンピュータサイエンスの教師であるハンター先生は、オースティンがさらなる挑戦の準備ができていることに気づき、オースティンの学習を支援し、テキストベースのコーディングを導入するために Switch を導入しました。ハンターさんは、ブロックを変換したり、ヘルプを開いて各ブロックの Switch Python コマンドの詳細を確認したりするなど、いくつかの基本を実演しました。 

今日、ハンター先生はクラスに サンゴ礁の清掃活動 を割り当てました。彼女はコーディングの授業に VEXcode VR を使用しています。指導内容を差別化し、同じアクティビティでさまざまなコーディング レベルの生徒にアプローチできることを知っているからです。スイッチ モードは、オースティンのような生徒の差別化を促進するのに役立ちます。サンゴ礁クリーンアップアクティビティの目標は、VR ロボットのバッテリーが切れる前にできるだけ多くのゴミを集めることです。課題と基本的なアルゴリズムのコーディング方法を理解したオースティンは、ダウンアイセンサーを使用してプレイグラウンドの境界を検出し、サンゴを傷つけないように後進する VEXcode VR プロジェクトを作成しました。

仮想ロボットをプログラミングするためのブロックベースのコマンドを備えたVEXcode VRワークスペース

単一ブロックをスイッチに変換する

1ブロックを変換する


Austin はテストして動作を検証したプロジェクトを作成したので、次のステップではブロックを Switch に変換して Python の調査を開始します。 


 

こちらのビデオに示されているように、ブロックを長押しするか右クリックし、「スイッチ ブロックに変換」オプションを選択すると、ブロックをスイッチに変換できます。

オースティンは、[Drive for] ブロックが drive_for Python コマンドに変わったことを確認できる。変換後、オースティンはプロジェクトを実行して、意図したとおりに動作することを確認します。変換後、オースティンは drive_for コマンドについてもっと詳しく知りたいと考えています。 [Drive for] ブロックのヘルプを開くと、Austin はブロックのパラメータと Python コマンド間の接続を作成できます。

ヘルプを使用して Switch Python コマンドの詳細を確認する

ヘルプを開く


ヘルプの Switch Python コマンド情報を確認するために、Austin はヘルプ ウィンドウを開いて [Drive for] ブロックを選択し、こちらのビデオに示されているように一番下までスクロールします。 

ハンター先生がチェックインすると、オースティンが [Drive for] ブロックについてさらに学んでいることがわかりました。彼女は、ブロックを変換して新しいブロックに入力することで学んだことを応用するように彼に挑戦させました。彼女はスイッチブロックをドラッグする方法を示し、オースティンにブロックに turn_for というコマンドを入力させようとした。 Austin はブロックのヘルプを開き、コマンドの構造についてメモします。 

スイッチブロックの入力

ブロックを追加する


ヘルプを確認して Python コマンドを知っているので、Austin は Switch ブロックに直接入力したいと考えています。このビデオで示されているように、Austinはツールボックスから[Switch Stack]ブロックをドラッグして[Turn for]ブロックの上に追加します。 

ブロックに入力してください


次に、Austin はカーソルを使用して Switch ブロックを選択し、ここに示されているように turn_for Python コマンドの入力を開始します。 


 

新しいコマンドを入力し、パラメーターが元のブロックと一致していることを確認したら、このビデオで示されているように、[Turn for] ブロックを削除できます。 

ハンター先生がオースティンの進捗状況を確認するためにやって来ます。彼女は Switch プロジェクトを見て、コマンドが正しく入力されているか確認するためにプロジェクトの実行を依頼します。プロジェクトが機能することを確認した後、彼女は別の機能である複数行ブロックのデモンストレーションを行います。

コピー&ペースト


[スイッチ スタック] ブロックには、複数行のコードを入力できます。オースティンは turn_for というテキストをコピーし、このビデオで示されているように、上のブロックに貼り付けます。

 

Austin は、キーボードで「Enter」または「Return」を押すとブロックに行を追加できることに気づき、Python コマンドの追加を続けます。

Python の Drivetrain コマンドの達人になったような気分になった Austin は、証明書を印刷し、次回のためにプロジェクトを保存します。

スタックをスイッチに変換する

学年の後半に、ハンター先生はサンゴ礁清掃活動を再度取り上げ、より高いスコアを獲得するか、テキストベースのコーディングを使用するか、どちらかを学生に課します。 Austin は Switch ブロックで Drivetrain コマンドを使用していますが、このアクティビティは Python の「C」ブロックとブール値に相当するものについてさらに学ぶ機会となります。 

ラッパーを変換する


Austin は [If then else] ブロックを長押しまたは右クリックし、「ラッパーとコンテンツを Switch ブロックに変換」を選択します。この動画で示されているように、ループとその内容を単一のSwitchブロックに変換します。


 

変換が完了した後のインデントに注意してください。 1 つの Switch ブロック内の複数のコマンドが意図したとおりに機能するには、適切なインデントが必要です。

追加のスイッチブロック

Austin は [Switch Stack] ブロックのみを使用していますが、追加の Switch ブロックも利用できます。オースティンは、改善されたサンゴ礁清掃プロジェクトを提出する準備ができていますが、ハンター先生と一緒に、次の授業で以下にリストされているような新しい種類のスイッチ ブロックを試す計画を立てています。

スイッチ ブロックは、他のブロックと同じ形状規則に従います。次の表は、ブロックの形状、意味、および同じタイプのスイッチ ブロックの比較を示しています。

ブロック形状 説明 ブロックの例 スイッチの例
ハットブロック ブロックのスタックを開始し、その下にブロックを接続する形状にします。 VEXcode VRワークスペースには、プレイグラウンドでドライブトレインを回転させるための同等のブロックとPythonコマンドを表示するスイッチブロックがあります。 VEXcode VRでスイッチブロックと一緒に使用されるハット、スタック、ブール、レポーターブロックの形状の例
ブロックを積み重ねる メインコマンドを実行します。他のスタック ブロックの上または下に取り付けられるように形作られています。 VEXcode VRにおけるハット、スタック、ブール、レポーターブロックタイプのスイッチブロックの例 VEXcode VRにおけるハットブロック、スタックブロック、ブールブロック、レポーターブロック、およびそれらに対応するスイッチブロックの例
ブールブロック 条件を true または false として返し、他のブロックの六角形 (6 面) 入力を持つ任意のブロック内に収まります。 ブロックツールバーとブロックを使ったプロジェクト作成用のコーディングエリアを備えたVEXcode VRワークスペース VEXcode VRにおけるハットブロック、スタックブロック、ブールブロック、レポーターブロック、およびそれらに対応するスイッチブロックの例
記者ブロック 値を数値形式で報告し、楕円形の入力を使用して他のブロック内に収まるようにします。 VEXcode VRにおけるブロックベースコードとテキストベースコードを組み合わせたスイッチブロックの例 スイッチブロックで使用される、帽子、スタック、ブール値、レポーターのブロックカテゴリを含むVEXcode VRブロックパレット
Cブロック ブロックをループするか、条件が真か偽かを確認します。スタック ブロックを上、下、または内部に取り付けられるように形作られています。 VEXcode VRのハット、スタック、ブール、レポーターブロックの形状と、それに対応するスイッチブロックの形状の例 VEXcode VRにおけるハットブロック、スタックブロック、ブールブロック、レポーターブロックのスイッチブロックの例 ブロック形状をテキストベースのコードに変換したスイッチブロックの例 VEXcode VRプロジェクトでは、ワークスペース内でブロックベースとテキストベースのコーディングを組み合わせるために使用されるスイッチブロックが示されています。

すべてをまとめる

ハンター先生は、オースティンが Switch ブロックでさまざまな Python コマンドの入力をテストするのを観察しながら、Switch によって生徒たちが独自の学習を段階的に進めることができることを理解しました。彼女のクラスを始める前、生徒たちは皆それぞれ異なるコーディング経験を持っていましたが、VEXcode VR 内の課題により、生徒たちは自分のレベルに合わせてコーディングすることができます。生徒の中には Blocks のみでコーディングする生徒もいれば、Python のみでコーディングする生徒もいます。また、Austin のように Switch を使用して Python コーディングに移行する生徒もいます。その後数か月間、オースティンは、Switch の使用から学んだ知識を応用して、ブロックからテキストへの移行をより簡単かつスムーズにし、Python のみでコーディングするようになりました。 

VEXcode VR の Switch Blocks を使用すると、ハンター先生のような教師は、さまざまなコーディング レベルの生徒が同じ課題を完了する間、学習の促進者になることができます。一方、オースティンのような学生たちは、VEXcode VR の Switch Blocks を使用してブロックからテキストに移行しながら、コーディング アクティビティを解決する新しい方法を試す力を得ています。


1ワイントロップ、デヴィッド、ウリ・ウィレンスキー。「ブロックベース、テキストベース、ブロック/テキストのハイブリッド方式が初心者のプログラミング実践にどのように影響するか。」  国際児童・コンピュータインタラクションジャーナル 17 (2018): 83-92

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: