プログラミング教育の必修化に伴い、新たなプログラミングツールが続々登場している。その中心となっているのは視覚的にロジックを操作してプログラミングできる「ビジュアルプログラミングツール」だ。
しかし、教育用のイメージばかりが先行するあまり、ビジュアルプログラミングは実務には使えないと思い込んでしまう方もいるだろう。実は今、実務でビジュアルプログラミングが用いられる場面が増えてきているのだ。
ビジュアルプログラミングの手法
by sekido ビジュアルプログラミングは一般に用いられるテキストベースのプログラミング手法と何が違うのだろうか? 作業の流れを比較してみよう。
テキストベースのプログラミング
どのようなソフトウェアを作る場合でも、何を作るのかをはっきりとさせなければ開発はできない。なので、実際にコーディングを始める前にユーザーが求める機能を明らかにし、そのために何を実装しなければならないかをまとめる。その後、コードの設計をしてどのように実装するかを決め、コーディングを始めていく。
設計の過程においてはアルゴリズムを図式化したフローチャートやコード内で用いるクラスの設計を表すクラス図などを用いることがあり、それらの図からコードを生成するツールも存在する。
設計と実装の工程は、実装時に判明したことや要求の変化などにより往復しながら開発を進めていくのが一般的だ。そして、機能が完成したらテストを行い、問題があればコーディングに戻る。このような工程を各機能ごとに並行して行い、一つのソフトウェアが作られていく。
一部で図を使うものの、基本的に実装はキーボードだけで完結される作業である。特に優れたプログラマーの中にはマウスを非効率的な道具だと考える者も多く、ショートカットやコマンドを駆使してアルゴリズムをコードに落とし込んでいく。
ビジュアルプログラミング
テキストベースのプログラミングでは設計を図にまとめ、それをコードに直していくのが一般的な手法だ。それに対し、ビジュアルプログラミングでは設計の工程を実装工程に組み込むことができる。
ビジュアルプログラミングではシンプルな機能をブロックやノードといったパーツにまとめ、それらをつなぎ合わせることでアルゴリズムを記述する。即ち、コード設計を図にまとめた時点で実装する機能の大枠が完成しているのだ。
ただし、全くテキストによるコードを書かないというわけではない。各ブロックに必要な機能を詳細に記述したり、特に速度が要求されたりする場合にテキストによってコーディングすることがある。ビジュアルプログラミングの機能を補う形でテキストベースのプログラミングが用いられるのだ。
テキストベースの開発環境のなかにはユーザーインターフェースをグラフィカルに設計できる、いわゆる「ポトペタ」開発が可能なものが存在する。このような手法もビジュアルプログラミングの一部と言えなくもないが、ビジュアルプログラミング自体はテキストベースのプログラミング同様に汎用的なものである。
各手法の得意分野
速く動き管理がしやすいテキストベースのプログラミング
テキストベースのプログラミングの利点の一つは実行速度だ。一般にプログラムの速度は、プログラミング言語がどれだけ機械の表現に近いかによって決まる。人間に理解しやすいビジュアルプログラミングは、その分無駄なものも多く含んでいるということだ。その点、テキストベースであれば必要な機能に特化してコーディングすることができ、実行速度を上げることができる。
もう一つの利点としてバージョン管理が容易なことが挙げられる。バージョン管理ツールは基本的にテキストの差分を記録することで各段階でのコードの状態を管理している。また、差分を表示することでどこをどのように変更したのかを容易に追跡できる。テキストで管理されているからこそ、図で示されるより分かりやすいことがあるのだ。
このように、テキストベースのプログラミングはその手法をよく理解したものが行うと効率的になる、玄人向きの手法だといえるだろう。特に、コマンドラインツールやOSのようなコンピュータそのものと密接に結び付いたものを作る際には、テキストベースのプログラミングが優れているといえるだろう。
マルチメディアを素早く作り上げるビジュアルプログラミング
ビジュアルプログラミングの特長はなんといってもアルゴリズムの流れが分かりやすいということである。どのようにデータが流れていくのか、並行して処理されるのはどこなのかといったことがプログラミングに不慣れな人でも直感的に理解できる。
さらに、アルゴリズムの中に画像や動画を直接配置できるという利点もある。これは、画像処理や動画再生をしたいときに大きな効果を発揮する。実際にどこを加工するかを見ながら直接アルゴリズムを操作できるのは、画像処理などに慣れない者にとっては大きな助けになる。
このように、ビジュアルプログラミングはプログラミングに慣れない者であっても複雑なアルゴリズムを作れるようにできている。特に、映像や音楽を活用するマルチメディア制作では、直感的に処理を実行できることからデザイナーによる活用が広まっている。
代表的なビジュアルプログラミング言語と活用例
このように、ビジュアルプログラミングにも実務で役立つ長所があるが、実際にはどのように使われているのだろうか? 実例を交えて紹介しよう。
リアルタイムな映像制作が可能な「vvvv」
映像制作で活躍するビジュアルプログラミング言語の代表が「vvvv」である。
一時期TeslaCryptというランサムウェアがその症状からvvvウイルスと呼ばれることがあったが、これはvvvv言語とは無関係である。
vvvvはノードを繋いでアルゴリズムを記述するビジュアルプログラミング言語で、Windows向けに提供させている。また、将来はMacに対応する可能性もあるという。商用利用にはライセンス購入が必要であるが、非商用であれば無料で利用できる。
最大の特長はリアルタイム性だ。ノードを繋ぎかえると、計算結果が即座に反映されるのだ。この特長により、出力される映像を見ながらプログラムを調整する、といったことが容易に行える。
vvvvはプロジェクションマッピングでの活用が積極的に行われている。次の動画はロシアで行われたプロジェクションマッピングである。制作にはvvvvが使われている。
このように、vvvvは実用に耐えるビジュアルプログラミング言語であるといえるだろう。
リアルな映像が魅力の「Unreal Engine Blueprint」
出典:www.unrealengine.com Unreal EngineといえばUnityと並んで代表的なゲームエンジンとして知られているが、実は映像制作の場面でも幅広く用いられている。そのUnreal Engineでの開発に使われるのが「Unreal Engine Blueprint」だ。
出典:docs.unrealengine.com デザイナーでもプログラマーと同等にロジックを作れるように設計されており、基本的にBlueprintだけで開発を行うことができる。また、必要な機能があればC++を使って拡張することもできる。
基本的に無料で利用でき、ゲームを販売した場合のみロイヤリティが発生する。映像制作やシミュレーションなどのゲーム以外の分野で利用した場合はロイヤリティは発生しない。
元々「Unreal」というゲームを作るために開発されているため、実用性は申し分ない。3Dモデルを作る技術がなくても、マーケットから利用したいものを選ぶことができる。
マルチメディアの発展とともに、利用者と開発者の境界線はますます薄れてきている。ビジュアルプログラミングはマルチメディア制作やプロトタイピングを誰もが行えるようにする技術だ。今後はプログラミング教育の普及とともに、ビジュアルプログラミングに対する既存のプログラミング技術の優位性が弱まっていくだろう。この機会に、あなたもプログラミングを始めてみてはいかがだろうか?
U-NOTEをフォローしておすすめ記事を購読しよう