小学校のプログラミング教育でも利用されている「ビジュアルプログラミング」。
プログラミングに苦手意識を持っている方に向けて、視覚的・直観的に理解できる「ビジュアルプログラミング」をご紹介します。
ビュアルプログラミングでは、グラフや図形を使う
プログラミングと聞くと、「よく分からない英語が並んだもの」という印象を持っている方も多いでしょう。
しかし、プログラムはグラフや図形など視覚的なオブジェクトを使って作ることができるのです。これを「ビジュアルプログラミング」と言います。「グラフィカルプログラミング」とも呼ばれます。
文字を使わずにプログラムを表現できるため、プログラミングを学ぶ初学者や小さい子供にとっても最適。
次のように、特定の分野やアプリケーションに特化したプログラミング言語が多いため、何でも作れるわけではないことに注意が必要です。
- ロボットを制御することに特化
- ゲームのようにユーザーと対話することに特化
ビジュアルプログラミングとテキストプログラミング
「ビジュアルプログラミング」に対応する言葉として、「テキストプログラミング」があります。
違いは、プログラムを記述する方法。
ビジュアルプログラミング
ビジュアルプログラミングでは、図形やブロックを組み合わせてプログラムを表現します。
プログラムを記述するときに文字を打たなくても、画面上にあるブロックを組み合わせるだけでプログラムを作成できます。基本的な操作はドラッグ&ドロップなので、キーボード入力が難しい子どもでも使いやすいです。たとえば、Scratch(スクラッチ)やViscuit(ビスケット)がこのタイプです。
テキストプログラミング
テキストプログラミングは、プログラムを文字(テキスト)で記述します。たとえば、CやJava、Pythonなどがこのタイプの言語です。
複数人での開発や複雑な開発が得意といったメリットをもちますが、記述するためには文法や構文を理解する必要があるので、初学者や子どもが始めるには少し難しい印象があります。
どちらが良いかは、プログラマーや使用する目的によって異なります。どちらが優れているというものではありません。
ビジュアルプログラミングでできること・できないこと
「ビジュアルプログラミングは意味がない」と言われることがあります。これは、用途が限定されていたり、より限定された分野に特化していたりすることが多いためです。「ビジュアルプログラミングを学ぶことに意味がない」ということではありません。
どのプログラミング言語を使うかは利用目的によって決めます。
作りたいものに適した言語かどうか判断するために、「ビジュアルプログラミングでできること、できないこと」を理解しておきましょう。
できること
ビジュアルプログラミングでは、次のようなことができます。
- ゲームやアニメーションの作成
- 小さなプログラムの作成
- プログラミングの基本的な概念の理解
- プログラマーになるための基礎を学ぶ
ゲームやアニメーションの作成
ビジュアルプログラミングを使用することで、ゲームやアニメーションを作成できます。
複数のグラフや図形を組み合わせることで、ゲームやアニメーションのルールや動作を定義できます。
小さなプログラムの作成
ビジュアルプログラミングでは、小さなプログラムを作成できます。
小学校の授業では、数学の計算や、図形の描画、データを処理するプログラムをつくり、各教科をより深く学ぶ手段としても使われます。
プログラミングの基本的な概念の理解
ビジュアルプログラミングはグラフや図形などを使っているため、作りたいものを感覚的に作ることができます。そのため、変数や条件分岐、繰り返しといった、プログラミングの基本的な概念を学習に注力できます。
小学校のプログラミング必修化の目的でもある「プログラミング的思考」の獲得には最適。
将来、プログラマーになる予定はないとしても、「システムの仕組みを知っている」ということは「システムを使う」上でも、大きなアドバンテージになります。
プログラマーになるための基礎を学ぶ
ビジュアルプログラミングでプログラミングを学ぶことは、プログラマーの基礎を学ぶことに繋がります。
プログラマーはテキスト言語を使いますが、プログラミングの基礎を理解していると、テキスト言語への移行もスムーズです。
できないこと
ビジュアルプログラミングでは、次のようなことができません。
- 複雑なアルゴリズムや処理の実装
- プログラムをコマンドラインやターミナルから実行
- 複雑なデータ構造や、大量のデータ処理
- ライブラリやモジュールとしてプログラムを再利用
複雑なアルゴリズムや処理の実装
ビジュアルプログラミングはプログラムをグラフや図で表すため、テキストプログラミングで行えるような、複雑なアルゴリズムや処理を実装することはできません。
プログラムをコマンドラインやターミナルから実行
テキストプログラミングでは、プログラムをコマンドラインやターミナルから実行できますが、ビジュアルプログラミングではできません。基本的には、Webブラウザや専用アプリからの実行のみです。
複雑なデータ構造や、大量のデータ処理
複雑なデータ構造は作れません。実行速度が速くないため、大量のデータ処理も得意ではありません。
ライブラリやモジュールとしてプログラムを再利用
テキストプログラミングでは、作ったプログラムをライブラリやモジュール(他のプログラムから呼び出して利用できる部品)として再利用できます。ビジュアルプログラミングでは再利用できませんので、開発効率が悪くなります。
ここまで、ビジュアルプログラミングでできないことを見てきました。できないこともありますが、プログラムを作成することが目的ではない人や初学者にとっては、手軽で理解しやすい方法であるといえます。
ビジュアルプログラミングの需要と将来性
テキストプログラミングの方が処理速度や柔軟性が高いこともあり、ビジュアルプログラミングがテキストプログラミングに匹敵することは難しい側面もあります。
しかし、企業でのシステム開発にも、多くのビジュアルプログラミングが用いられています。ビジュルアルプログラミングを学んでムダになることはありません。
日本では、2020年の小学校でのプログラミング教育の必修化にともない、ビジュアルプログラミングの需要も高まっています。
ビジュアルプログラミング言語の例と分類
簡単に始められる「ビジュアルプログラミング言語」ですが、大きく次の3つに分類できます。
- ブロック型
- フロー型
- 独自ルール型
ブロック型
ブロック型に代表される言語はScratch(スクラッチ)。
プログラムを構成する基本的な操作や処理を表す「ブロック」を画面上にドラッグ&ドロップすることで、プログラムを作ります。ゲームやアニメーションなどの作成が得意です。
「繰り返し」や「条件分岐」、「変数の使用」などの基本的なプログラミング概念を学ぶことができます。
- Scratch(スクラッチ)
- Blockly(ブロックリー)
- QUREO(キュレオ)
- MakeCode(メイクコード)
- MOONBlock(ムーンブロック)
- Makeblock(メイクブロック)
- タイルズ
フロー型
フロー型は、プログラムを構成する各ブロックを、直線的な流れ図として特定の順番で実行するように組み合わせます。
プログラムの流れを視覚的に理解することができるという利点があります。
- MESH(メッシュ)
- embot(エムボット)
独自ルール型
独自ルール型は、ブロック型、フロー型にはまらない独自のルールを持ちます。
独自の意味を持つブロックやシンボルを用意しており、組み合わせたり設定することでプログラムを作成します。
一般的なプログラミング言語と異なる構文や記述方法を持っているため、一般的なプログラミング言語を学習した人でも、慣れないと使いにくい場合があります。
しかし、特定の用途や分野で使用されることがあり、慣れると効率よく開発できるように作られていることが多いです。
- Viscuit(ビスケット)
- Springin’(スプリンギン)
初心者・子どもにオススメのビジュアルプログラミング
ビジュアルプログラミングをはじめようと考えた時、いくつもの言語があり、迷ってしまいますよね。
以下に代表的なものを紹介します。
Scratch(スクラッチ)
Scratch(スクラッチ)はアメリカの有名な大学、MIT(マサチューセッツ工科大学)メディアラボで開発されたビジュアルプログラミング言語です。
ブロックをつなげていくだけでプログラミングすることができて、アニメーション、ゲーム、プレゼンテーションなど自由につくることができ、作品を世界に公開できる場も用意されています。
「子どもたちがかんたんに楽しく学習できる」ことを何よりも優先させて作られていますので、子どもから大人まで楽しく作品を作ることができます。
文部科学省の小学校プログラミング教育に関する研修教材 でも利用されており、学校教育においてはデファクトスタンダードとなっています。
mBlock(エムブロック)
mBlock(エムブロック)はScratch言語をベースにしたビジュアルプログラミング言語。
ロボットや電子機器を制御するための機能も備えています。たとえば、mBotと呼ばれるロボットを制御するためのブロックが用意されており、mBotを動かすプログラムを簡単に作成することができます。また、Arduinoボードを使った電子工作もできます。
プログラムの実行中にセンサーからの入力を受け取ったり、LEDライトを点滅させたりすることもできます。
mBlockは、教育現場で広く使用されており、プログラミングやロボット制御を学ぶのに良いですし、用意されているキャラクター(スプライト)が可愛くて、背景なども色鮮やかでおしゃれなものが揃っています。
Viscuit(ビスケット)
Viscuit(ビスケット)は、日本で開発されたビジュアルプログラミング言語です。
メガネという仕組みを使って直感的に操作でき、単純なプログラムから複雑なプログラムまでつくることができます。難しいルールがないので、子どもでもわかりやすく、遊びの延長でプログラミングを学ぶことができます。
文部科学省の小学校プログラミング教育に関する研修教材 でも利用されており、就学前の子供にも人気です。
Blockly(ブロックリー)
Blocklyは、Googleが開発した、ブロックを組み合わせることでプログラムを作成するための言語。
Scratchと似ていますが、より柔軟性が高く、次のプログラミング言語に変換できます。
- JavaScript
- Python
- PHP
- Lua
- Dart
QUREO(キュレオ)
QUREO(キュレオ) は、大手IT企業のサイバーエージェントグループが作ったプログラミング言語。
Scratchと同じようにブロック型ですが、キャラクターや背景のクオリティが高く、初学者でも簡単にプロのような作品が作れます。クオリティにこだわる方にはオススメです。
MakeCode(メイクコード)
Microsoftが提供するMakeCodeは、ビジュルアルプログラミングが可能なプラットフォームで、JavaScriptでの開発も可能。
イギリスのBBC(英国放送協会)が主体となって作った教育向けのマイコンボード「micro:bit」との連携など、現実世界の実機と繋げて実際に動かすことができます。
実機(マイコンボード)が手元になくても、シミュレーターを使ってプログラミング結果を確認できます。