今回は組み込みプログラミングを行う上で必須となる前提知識について、概念的な用語に着目して解説したいと思います!
本記事を含む、組み込むプログラミング解説シリーズでは簡単な電子回路の制御が可能になるまでの道のりについて1から解説しています。
本記事を読むことで組み込みプログラミングに対する造詣を深めることが出来ますので、ぜひ最後までご覧ください!
用語の解説
組み込みプログラミングとは?
組み込みプログラミングとは、プログラミングの中でもマイコンを使ってロボットなどのハードウェアを操作するためのプログラミングのことを言います。

一般的なプログラミングはパソコン上のソフトウェアとして動くのに対して、組み込みプログラミングはマイコン上に書き込み、そのマイコンによるリアルでの動作に対し影響を及ぼします。
通常のプログラミングと大きく違う点は実際に現実世界で動作させるために、様々な環境要因を考慮したコーディングが必要である点です。
例えば、あるフィールド内で自分の位置を知りたいとしたら、ソフトウェア上なら座標を取得するだけでいいですが、実際にリアルでの制御を前提とする組み込みプログラミングだと、どんな情報が必要なのか、どのセンサが必要なのか、どのくらい精度が必要なのか、誤差はどうするのかのように、考えることがめちゃくちゃあります。
同じプログラミングでも普通のプログラミングとは大きく異なることが分かったと思います。
マイコン(ボード)とは?
マイコンは「マイクロコントローラ」の略で、電子回路を制御するためのコンピュータを指します。
ボードと呼ばれることもあります。

一般的にはこのように基板に実装されており、USBを通じてパソコンと接続し、プログラムを書き込んでいきます。
普通のパソコンとの大きな違いはOS(オペレーティングシステム)がないことです。
通常、パソコンにはOSという、様々なアプリケーションを動作させる、ベースとなるソフトウェアがあるのですが、マイコンにはそれが基本ありません。よってマイコンにモニターを接続したとしてもゲームやWordをするといったことはできません。
じゃあ何をするのかというと、電流を出したり出さなかったり、電流が流れてるのか流れていないのか判別したりします。
上の画像のマイコンでは基板の端にたくさん穴が開いているのがわかりますね。底の穴に導線を挿して、その導線に対し、判別や電流を流したりします。
いつ電流を出すのか、どのように電流が流れているか調べるというのを組み合わせに組み合わせて理想の動きを実現していくのです。
プログラミング言語とは?
プログラミング言語とはプログラミングに用いるコンピューターへの指示語のことを指します。
通常の言語と同じようにプログラミング言語にもそれぞれの文法が存在し、その文法に基づいて記述することで理想の動作を実現することが出来ます。
言語ごとの大きな違いは、「何ができるか」になります。
C系の言語は組み込みプログラミングに、Python(パイソン)やJava(ジャバ)はアプリケーション開発に、JavaScript(ジャバスクリプト)やPHP(ピーエイチピー)はWebアプリケーション開発に向いています。このようにそれぞれの言語にはそれぞれの得意分野があります。
組み込みプログラミングでは一般に「Arduino(アルドゥイーノ)言語」と「MicroPython(マイクロパイソン)」の2つが用いられています。
Arduino言語はC++(シーピーピー)という言語をベースに様々な機能を追加した言語になります。高度な操作が可能な反面、学習が多少難しいという特徴があります。
MicroPythonはPythonベースの言語で、Arduino言語ほどの高度な操作はできないものの、ライブラリが豊富で特に独立したセンサー用のマイコンの制御などに使用します。
基本的にはArduino言語を用いて組み込みプログラミングを行っていくことになります。
Arduino言語(C++)とは?
Arduino言語のベースであるC++はC系と呼ばれる、C言語というプログラミング言語の派生となる言語群の1種です。
C言語はかなり昔から存在する言語で、言ってしまえばかなり古臭い言語になります。
ほかの言語に比べ、書く量が非常に多いです。特にC++はオブジェクト指向という特殊な考え方も使う都合上、学習も難しいです。一方で高度な操作が可能でかつ動作が軽いというメリットもあります。
Arduino言語は文法などの基本はC++のものをそのままに、「Arduino.h」というライブラリ(よく使う記述をまとめたもの)を追加することでマイコンの操作を可能にした言語になります。
基本はC言語と全く同じなので、既にC言語を学習されている方にとっては学ぶのはそう難しくないです。
機械語とは?
機械語はプログラムの中でもコンピュータが解読できるものをいいます。
コンピュータが読み取れるものなので、実際の内容は0と1の羅列で基本的に人間が素で解読できるものではありません。
人間が書いたプログラムはそのままで実行することは出来ず、この機械語に翻訳する必要があります。
アセンブリ言語とは?
アセンブリ言語は機械語を人間に扱いやすくするために作られた言語です。
例えば、機械語で引き算をする命令が「01000101」だったりすると人間には全く解読できませんが、アセンブリ言語だと「SUB」と表されて分かりやすくなります。
低級言語(低水準言語)・高級言語(高水準言語)とは?
低級言語はプログラミング言語の中でも機械語に近いものを指します。
アセンブリ言語などがこれに当たります。
高級言語はプログラミング言語の中でも人間が理解しやすいものを指します。
通常のプログラミング言語のほとんどがこれに当たります。
あとがき
ここまで組み込みプログラミングの前提知識について解説させていただきました!
内容の改善に努めていますので何か間違った点やより良い方法があるといった意見があればコメント欄に書いてくださると幸いです。
記事を最後までご覧いただきありがとうございました。
コメント