IoTエンジニアの職務のひとつにプログラミングがあります。プログラミングと一口に言っても、IoTデバイスのファームウェアに使う言語、IoTデバイスの組み込み(センサからの情報取得やデータベースとの通信など)に使う言語、データベースに蓄積した情報の可視化(Web上に表示等)に使う言語と、様々なケースがあります。
できれば、多様な言語を渡り歩くより、学習する言語を絞りたいですよね。製造業のIoTエンジニアとして働く私の視点で、おすすめのプログラミング言語を解説します。
IoTエンジニアにおすすめのプログラミング言語
おすすめ言語
- 静的言語と動的言語をひとつずつ
- C言語とPython
- デバイス設計~データ分析まで網羅できる
デバイスに書き込むファームウェアはC言語が使われることが多く、逆にデバイスに組み込むプログラムはC言語以外で書かれることが多くなります。IoTデバイスの製作から始める場合は、2言語以上の習得が必要になります。IoTデバイスを一から製作する場合のプログラミング言語を順を追ってみていきます。
静的言語と動的言語をひとつずつ
プログラミング言語は、世の中に1500種以上あると言われています。主要な言語をまとめた本も出ており、プログラミング言語の種類を知ってから学びだすことも出来ます。
プログラミング言語は、大きく分けると静的言語(静的型付言語)と、動的言語(動的型付言語)に分類されます。
[st-midasibox title=”静的・動的とは” fontawesome=”fa-check-circle faa-ring animated” bordercolor=”#FFC107″ color=”” bgcolor=”#FFFDE7″ borderwidth=”” borderradius=”5″ titleweight=”bold”]
プログラム内でつかう「変数・関数」に、”変数Aさん、あなたは数字ですよ”、”変数Bさん、あなたは文字ですよ”という指定をあらかじめするかしないかの違いです。プログラミングを始めていない方にはわかりにくい説明ですが、静的/動的は、プログラミング言語を作った作者によって決められています。
静的言語は型が指定されているため処理速度が速く、動的言語はプログラムの翻訳機能が型を都度割り振っていくため処理速度が遅い傾向があります。コンピュータの処理能力が格段に上がった現代では、簡単なプログラムで速度差を感じることは少なくなりました。
[/st-midasibox]
静的言語と、動的言語それぞれにメリット・デメリットがあり、使い分けるものなので、どちらが良い悪いというものではありません。ただ、IoTのシステムを一から製作するような場合は、どちらの言語も習得しておく必要があります。またプログラマーとしても、静的・動的両方読めた方が、間違いなく仕事はスムーズになります。
次に、おすすめの静的言語・動的言語を紹介します。
C言語とPython
おすすめの静的言語:C言語
静的言語は型をプログラムの中で明示的に指定すると説明しました。その静的言語の代表格がC言語です。C言語は1970年代にできた古い言語ですが、マイコンのファームウェアの世界ではいまだに現役です。
言語として古参のC言語が選ばれ続ける理由は以下のように紹介されています。
その① コードが軽いので、資源が少ない環境や、制御などにリアルタイム性が要求される組み込みに最適な言語!
その② 開発資産や主流のソフトウェアがC言語でできている!
引用:FSI Embedded
マイコンが素早く理解できる言語は、自然言語(英語など)の文法から遠く、読むことも困難です。ですのでC言語は覚えるのが非常に難しい言語のひとつとしてあげられます。大学の授業でC言語を習う方が多いそうですが、いきなり高難易度のプログラミング言語に触れて挫折する生徒が後を絶たないようです。「実務でどうしても必要」などのケースに遭遇しなければ、なかなか本腰を入れて覚えられませんね。
しかし、IoTデバイスのようなハードウェアの世界では必須のプログラミング言語になります。IoTデバイスをいちから作ることになれば、避けては通れません。
おすすめの動的言語:Python
近年、AIや機械学習、ビッグデータ(データサイエンス)といった分野で脚光を浴びている言語がPythonです。Pythonの特徴は動的型付けということもありますが、提供されるモジュールの多さが、人気の理由です。
モジュールとは機能をまとめたものです。複雑な計算のアルゴリズム等を自分でプログラミングせずとも、無料で公開されているモジュールを読み込むだけで、複雑な処理を使えるようになります。この手軽さから、機械学習・ディープラーニグといった数学の知識が必須とされている分野でもメインで使われる言語となっています。
また、Pythonは自然言語に近く、読みやすいことから、初学者に向いているとされています。Python人気とともに、Pythonを学習できる本、動画レッスンサービス、スクール等がたくさんリリースされています。独学でも習得できる環境が整っていることが、Pythonをおすすめする理由の一つです。
Pythonを覚えると以下のことができます。
[st-mybox title=”” fontawesome=”” color=”#757575″ bordercolor=”#f3f3f3″ bgcolor=”#f3f3f3″ borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
- IoTデバイスの組み込みプログラム
- データの可視化(Webアプリ)
- データの分析
- バックグランド処理の自動化
[/st-mybox]
上記はどれもIoTシステムに必要な処理になります。Pythonひとつ覚えれば、これだけの処理をひとつの言語で書けるようになります。
※WebアプリにはHTML、CSS、Javascriptといったマークアップ言語、スクリプト言語が必要になる場合があります。
上述したモジュールを利用すれば、データベースとの接続は簡単ですし、Webアプリ制作にも、DjangoやFlaskといった強力なフレームワークがあります。IoTデバイスを作る工程が無ければ、PythonひとつでIoTシステムの構築と自動化が可能になるケースも多いでしょう。
[st-card id=598 label=”おすすめ” name=”” bgcolor=”” color=”” readmore=”on”]
デバイス設計~データ分析まで網羅できる
C言語とPython、この2つの言語を読み書きできれば、IoTデバイスの処理設計から取得したデータの可視化・分析までひととおり出来るようになります。
C言語とPythonは書き方も読み方もかなり違います。C言語ができればPythonも出来る、といった簡単な行き来は難しいのですが、プログラミングの基本的な考え方(変数・関数、繰り返し処理、条件分岐)といった知識は活きます。
これからプログラミングを始めるならまずはPythonをおすすめします。私は30歳過ぎてからプログラミングを始め、ひとりでIoTの組み込みプログラムを作れるようになりました。これは私が特別頭がよかったわけではなく、Pythonが初学者に優しい言語だったからです。学習環境も整っていることも追い風になりました。
いきなり両方の言語を始めたり、C言語から始めるようなことが無ければ、年齢・才能関係なくPythonプログラミングはできるようになります。
片手間に学習してできるほどプログラミングは甘くありませんが、「エンジニア」と名乗る以上は、ひとりである程度のプログラムが書けるほどには、学習しなければいけませんね。
[st-card id=60 label=”” name=”” bgcolor=”” color=”” readmore=”on”]
[st-card id=62 label=”” name=”” bgcolor=”” color=”” readmore=”on”]
まとめ
おすすめ言語まとめ
- おすすめはC言語とPython
- ※ただし、いきなりC言語から始めない
IoTエンジニアとして覚えたいプログラミング言語はC言語とPythonです。C言語は挫折しやすい言語ですので、まずは動的言語のPythonを覚えると良いでしょう。IoTデバイスのファームを書くことがなければC言語も必要ありません。
ただし、覚える必要が無いとしても、スキルアップの為に静的言語であるC言語を学習する機会は持ちたいですね。大人気著書「独学プログラマー」の中で、”プロのプログラマーは年に1つ新しい言語に挑戦すると良い”というくだりがあります。先進技術に触れるエンジニアは、日々研鑽なのですね!
コメント