ハードウェアエンジニア(回路設計)にプログラミングは必要なのか?

記事更新日: 2021/05/09

ライター: いまり

この記事を書いた人
いまり@組み込みエンジニア

某国立大学にて物理学を学んだのち、誰もが知っている大手電気メーカーに入社。大半の日本人が一度は使用したことがあるであろうBtoC製品を開発している組み込みエンジニアです。
ハードウェア開発歴:4年
ソフトウェア開発歴:1年
ARMマイコン搭載システムの開発経験あり
所有特許:4件

エンジニア志望のひと

ハードウェアエンジニア(回路設計)にもプログラミングって必要なの?どこまでやるべきなの?組み込みプログラマとの違いは?

 

こんな疑問に答えます。

 

結論から言えば、

ハードウェアエンジニア(回路設計)にもプログラミングは必要

です。

 

プログラミングができないと就職できない…なんてことはありませんが、それなりに重視されるポイントにはなりますよ。

わたしは大手BtoC電機メーカーで働いている組み込みエンジニアなので、ハードウェアエンジニアのプログラミングの必要性をよく知っています。

 

この記事では、ハードウェアエンジニア(回路設計)にプログラミングが必要なこと、その理由、組み込みプログラマとの違いについてお話します。

「ハードウェアエンジニア(回路設計)になりたい」
「電気メーカーでモノづくりがしたい」

という方は、ぜひ続きを読んでいってください。

 

ハードウェアエンジニア(回路設計)でもプログラミングってするの?

冒頭でも述べましたが、ハードウェアエンジニア(回路設計)でもプログラミングは必要です。

絶対ではありません。会社・部署の方針やマネジメントにもよります。

ただ、プログラミングができるハードウェアエンジニアの方が、間違いなく重宝されますし需要は高いです。

なぜなら、マイコンやメモリなどのデバイスを動かすときに必ずプログラミングが必要になるからです。

 

例えばですが、現場で新製品を開発するとなった時、必ずマイコンの選定から始まります。

そのマイコンの動作検証の際には、プログラムを組む必要があるんですよね。マイコンはプログラムなしには動かせないので。

ただ、そこでハードウェアエンジニアがプログラムを組めないからと、わざわざプログラマを用意するのは会社にとっては不便です。

仮にプログラマを用意してもらったとしても、プログラマの仕事の中身が理解できていないと、コミュニケーションが取りづらく開発効率も落ちます。

いまり

実際、ソフトウェアを知らないままプログラマと開発を進めるのは面倒なことも多いです。

何か不具合が発生した時、原因がハードかソフトか、下手をすると責任のなすり付け合いになることもあります。

 

会社としても、そういうのは面倒なんです。どちらも理解している人材がいれば、その辺りは解決されます。

会社や部署によってはハードとソフトの業務が明確に別れているということもありますが、業界全体としてはハード・ソフト両方を理解する人材が望まれていると考えておきましょう。

だからこそ、ハードウェアエンジニア(回路設計)でも、プログラミングスキルは必要です。必須ではなくとも、あれば間違いなく有利です。

 

ハードウェアエンジニアと組み込みプログラマの違い

エンジニア志望のひと

ハードウェアもプログラミングも扱う『組み込みプログラマ』っていうのがいるらしいのだけど、ハードウェアエンジニアがプログラミングまでやるなら、それぞれの違いは何なの?

 

組み込みプログラマとは、ハードウェア制御をプログラミングする役割のことですね。なので、ハードウェアのこともある程度は理解しているポジションです。

>> 【現役が教える】組み込みエンジニアとは?

 

ハードウェアエンジニアと組み込みプログラマの違いは、あくまで仕事の比重の違いです。

被っている部分はあるけれども、主にはハード・ソフトのどちらを担当しているかというだけです。

ハードウェアエンジニアは回路設計したり、はんだ付けしたり、電流や電気信号の波形を検証していることが多いです。

組み込みプログラマはプログラミング・コーディングをしていることがほとんどです。

それでも、ハードウェアエンジニアがプログラミングすることだってあるし、組み込みプログラマがはんだ付けしたり信号波形を確認したりすることもあります。

そうしたほうが、お互い仕事の効率が良いからです。細かいことまでいちいち相手にお願いするのも面倒ですから。

 

ハードウェアエンジニアが扱うプログラミング

ハードウェアエンジニアが扱うプログラミングは、およそ次の2通りです。

  • 組み込みプログラミング:C, C++など
  • HDL:ハードウェア記述言語

 

組み込みプログラミング:C, C++など

ハードウェアを制御するプログラミングを、組み込みプログラミングと呼びます。

言語としてはC言語, C++などです。プログラムの実行速度やメモリ使用効率にメリットがあることから、組み込み業界で好んで使用されています。

 

HDL(ハードウェア記述言語)

HDL(ハードウェア記述言語)は一般的なプログラミングとは違い、回路を記述するためのプログラミングです。

マイコンやLSI(大規模集積回路)を開発する場合、内部構造がとても複雑になるためにHDLプログラミングにより回路設計を行います。

…一応紹介しましたが、実際のところHDLの経験がないハードウェアエンジニアの方がいまや多いと思います。

昔はマイコンやLSI、FPGAを自社開発していた企業もありましたが、最近は半導体メーカーの汎用品で済ますことが多いからです。

いまり

HDLに関しては特別な理由がなければ、概念を押さえておくだけでOKです!

 

ハードウェアエンジニアとしてプログラミングをどう学べばいいか

組み込みプログラミングを学ぶ方法として、最もわかりやすいのは電子工作をしてみることです。

PICマイコンArduinoなどを購入してみて、とりあえず動かすところから始めましょう。

どちらも有名な商品かつ教材としても頻繁に使用されていますので、参考書も豊富です。

代表的なマイコンボード『Arduino』(※写真はクローン品ですが…)

こんな感じで初心者向けの参考書もあります

Arduinoは独自言語ですが、ほぼC, C++ベースのものです。勉強に不足はありません。

教科書になぞれば、一番最初にやるのはきっとLEDをチカチカ光らせることです(俗に”Lチカ”と呼ばれます)。

勉強を進めていけば、センサーを使用して人感センサーにしたり、Bluetoothなどの無線通信デバイスを搭載してIoT機器を作ったりできるでしょう。

 

具体的に学ぶべきスキル

電子工作・プログラミングと言っても具体的に何を勉強したら良いかわからない…という人のために、必要な知識としての固有名称をいくつか伝えておきます。

必須というわけではなく、あくまで迷った時の勉強の指針としてです。作りたいものが思いつく人は、好きなものを作ればOKです。

ハードウェアエンジニアとしてのプログラミングですから、ハードウェア寄りはプログラミングを勉強するのがオススメです。

勉強の指針となる技術

  • インターフェース
    I2C, SPI, UART, USB, SDなど

  • 無線通信
    Wi-Fi, Bluetoothなど

  • その他
    チャタリング, キーマトリクスなど

いまはまだ単語の意味がわからなくても大丈夫です。

何をプログラミングしたら、何を勉強したら良いのか悩んだ時に、上記の単語をもとに調べたりしてみてください。

 

【まとめ】ハードウェアエンジニア(回路設計)でもプログラミングスキルは重要!

今回の内容をまとめます。

ハードウェアエンジニア(回路設計)とプログラミング

  • ハードウェアエンジニア(回路設計)にも、プログラミングは必要
  • ハードとソフト両方できる人材が業界全体で望まれている
  • 組み込みプログラマとの違いは、あくまで仕事の比重だけ
  • プログラミング言語はC, C++, HDLあたり
  • プログラミングは電子工作で学ぶのがオススメ

電子回路には興味を持っていても、プログラミングに苦手意識を感じるひとは少なくないと思います。わたしも以前はそうでした。

ただ、やってみると意外とできたりするし、面白かったりします。

特にArduinoマイコンボードはそれほど難しくありませんので、ぜひ触ってみることをオススメします。

いまり

ここまで読んで頂き、ありがとうございます。

 

ご質問などあれば、Twitterお問い合わせフォームからどうぞ。
良ければ、Twitterもフォローお願いします!

この記事を書いたライター

いまり

某国立大学にて物理学を学んだのち、誰もが知っている大手電気メーカーに入社。大半の日本人が一度は使用したことがあるであろうBtoC製品を開発している組み込みエンジニアです。

* ハードウェア開発歴:4年
* ソフトウェア開発歴:1年
* ARMマイコンを使用したシステム開発経験あり
* 所有特許:4件

この記事に関連するラベル

ページトップへ