ビジュアルプログラミングとは
ビジュアルプログラミングとは、視覚的な図形や絵・アイコン等のオブジェクトを用い、矢印で連結するプログラミング方法や言語を指します。プログラミング教育や電子機器・IoT・ロボティックスなどの操作にビジュアルプログラミングの利用が増えています。
従来のプログラミングはテキストベースで、言語仕様で定められた文字や記号で記述します。例えばコンパイラ言語のC・Java、インタープリタ言語のPerl・Python・Ruby等が主に用いられています。ビジュアルプログラミングでは、このような専門性が不要ですので誰にでもプログラミングが始められます。
ビジュアルプログラミングのメリット
ビジュアルプログラミングは視覚的に操作が可能のため、プログラム未経験者や子供から大人まで利用機会が拡大しています。ビジュアルプログラミングの広がりは、以下のメリットと効果の高さから伺われます。
高い学習効果
ビジュアルプログラミングでは視覚的なオブジェクトを用いますので、テキストベース言語で必要とされるような言語仕様を覚える必要がありません。感覚的に操作できるように設計されていますので、簡単に使用できます。
論理的思考力の向上
2020年度から小学校でのプログラミング教育が必修化されています。プログラミング教育は論理的思考能力を高める目的もあります。オブジェクトの選択や連結は、動作の順序や指示が理解できますので、最適な教育方法と言えます。
誰にでもプログラミング可能
テキストベースのプログラム知識不要で、幼児のコンピュータ教育から始められます。子供から未経験の大人まで実際にプログラミングし実行することができます。すぐに理解できますので、実行コード作成の障壁が取り除かれます。
プログラム品質の維持
ビジュアルプログラミングでは、視覚的なオブジェクトを用います。各オブジェクトにはあらかじめ操作や指示が設定されていますので、オブジェクトの組み合わせで所定の動作を実行させることができます。
テキストベースではコーディング作法も異なり、プログラマの経験により記述方法に違いがあり、品質にばらつきがありましたが、ビジュアルプログラミングではばらつきが少なく、品質が維持できます。
ビジュアルプログラミングのデメリット
ビジュアルプログラミングプログラミングも万能ではありませんので、実務利用の際にはデメリットや不向きな点も考慮する必要があります。検討状況によっては、学習効果の高いPythonを利用する場合もあります。
複雑な処理に不向き
オブジェクトは視覚的な図形や絵・アイコン等ですので、単純な指示の組み合わせで構成されます。そのため、複雑な処理は多数のオブジェクト連結が必要となり、得意ではありません。
処理が提供パーツに限定
指示や処理はオブジェクトで提供されますが、そのオブジェクトパーツはそれぞれの言語向けに提供されます。そのため必要とされる処理を、オブジェクトパーツの組み合わせで構成できないこともあります。その場合はほかの言語を利用し再作成することも必要となります。
言語間の互換性の低さ
ビジュアルプログラミングは共通言語仕様ではなく、各言語でオブジェクトパーツや実装、操作方法も異なります。そのため、ある言語で作成したコードは他の言語で再利用することが難しいです。コード移行の手段がまったくないこともありえます。
完成後の修正利用に不向き
作成したプログラムはパーツの組み合わせで変化するので、完成後の調整や変更が難しくなります。テキストベースと異なり該当部分を検索し、その箇所だけ修正するわけにもいきません。修正が頻繁に発生する開発手法では、テキストベース言語の方が効率的です。
ビジュアルプログラミング言語の分類
ビジュアルプログラミング言語では、概ね「ブロック型」「フロー型」「独自ルール型」の3つの言語タイプに分類されます。それぞれ特徴に違いがあります。ここからそれぞれの特徴や実際のプログラム言語について、解説していきます。
ブロック型の言語タイプ
ブロック型では、指示となる条件や具体的な動作が書かれたオブジェクトを小さなブロックに表します。このブロックをマウス操作でつなぎ合わせ、必要となる動作を完成させます。組み合わせを工夫することで様々な動作をさせることができます。
ブロックを並べるには指示の順序や論理構造の考え方がベースにあり、プログラムを学ぶことができます。物事を順番づける論理的思考は、テキストベース言語に近い発想力が育てられます。
代表的なブロック型言語は、マサチューセッツ工科大学メディアラボが開発したScratch(スクラッチ)やその派生版であるScratchJr(スクラッチジュニア)などがあります。 【参考】:Scratch 【参考】:ScratchJr
フロー型の言語タイプ
フロー型では、オブジェクトとしてアイコンを用います。アイコンには必要となる指示や機能・条件が書かれています。このアイコンを配置して線でつなぎますので、従来型プログラミングで用いたフローチャートを作成するイメージに近い思考法です。
実際の例ですが、SonyのMESHはフロー型プログラミングで仕組みを作成し、IoTブロックの操作が可能です。 【参考】:MESH
独自ルール型の言語タイプ
このタイプは前述のブロック型やフロー型と異なる、独自ルールで作られたものです。より直観的にプログラミングできるよう操作の最適化がされています。実際の操作方法や視覚表現は、それぞれの言語手順にしたがって利用していきます。
実際の例は、Viscuit(ビスケット)やSpringin’(スプリンギン)などがあります。Viscuitは、メガネという書き換えルールを用いて、考える能力を高めます。Springin’は、作ったものをみんなで遊び、作品の分析やコミュニケーションの能力を鍛えます。 【参考】:Viscuit 【参考】:Springin’
おすすめのビジュアルプログラミング言語
ビジュアルプログラミング言語で最も普及しているのがScratchです。マサチューセッツ工科大学メディアラボが小中学生向けに開発した言語です。完全無料で世界70カ国以上の言語で提供されています。登録利用者は公式サイトの情報によると、2022年5月現在で9,000万人を超えており人気の高さが伺えます。 【参考】:Scratch 【参考】:Scratch Community statistics at a glance
さらに5〜7歳向けには、Scratchの派生版であるScratchJrがタフツ大学リサーチグループらと共同で開発されました。お絵描きの延長線上からプログラムを学んでいきます。 【参考】:ScratchJr
無料のビジュアルプログラミング言語
無料のプログラミングは、ご紹介したScratch・ScratchJr、ViscuitやSpringin’が有名です。ゲームプログラミングのMOONBlock(ムーンブロック)やTILES(タイルズ)なども無料で利用可能です。一般社団法人 電子情報技術産業協会(JEITA)が開発した、課題解決型ゲームソフトのアルゴロジックも無料学習ソフトとなります。この他にも、多くの学習ソフトが無償公開されています。 【参考】:MOONBlock 【参考】:タイルズ 【参考】:アルゴロジック
ビジュアルプログラミングの学習サイト
ビジュアルプログラミングの学習サイトは多数あります。大手事業者では、MicrosoftやGoogleが学習サイトを公開しています。
Microsoftは、プログラミング学習プラットフォームMakeCodeを公開しています。ブロックを使ったビジュアルコーディングとJavaScriptによるテキストコーディングに対応します。Googleは、ブロックタイプのビジュアルプログラミングエディターBlocklyを公開しています。 【参考】:MakeCode プログラミング教育のハンズオン 【参考】:Try Blockly
実際の工作や機器操作の進め方
実際に機器を操作するためのキットが、いくつか市販されています。機器制御向けではブロック型・フロー型のプログラム言語が大半を占めます。
最初に、幼児教育向けキットについて見ていきます。LEGOのマインドストームは、Scratch Linkを用いてScratchプログラムを実行します。LEGOのロボットが実際に動作し、日本においてマインドストームが近日発売の予定です。toioも、Scratch Linkでキューブを操作します。LEGOとの連結も可能で共同サイトも公開されています。
【参考】:LEGO MINDSTORMS EV3 【参考】:レゴ® マインドストーム - ロボットの組み立て 【参考】:toio 【参考】:toio レゴ®ブロックと一緒に遊ぼう!
続いて、ロボット制御を見ていきましょう。Choregraphe(コレグラフ)は、ソフトバンクPepperのアプリケーション開発に利用されています。端末からビジュアル操作が可能です。 【参考】:ソフトバンクロボティックス
ソニーグループは、AIBOで培ったロボティクスの知識を教育事業で活用しています。ソニー・グローバルエデュケーションが展開するKOOVは電子パーツとブロックを組み立てて、動作させます。MESHは、フロー型でフローチャートの様にIoTへの指示や操作を組み立てます。 【参考】:KOOV 【参考】:MESH
学習効果の高い手法として注目されています
これまでも、プログラム教育は論理的思考を高めるために検討がされていましたが、言語知識が求められハードルが高いものでした。ビジュアルプログラミングは幼児教育から対応するソフトも登場しており、知的好奇心を高めながら思考能力や発想力・コミュニケーション能力向上に効果が期待されています。
プログラミング未経験者も学習できますので、エンジニアの視点から見ても新しい市場として注目です。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから