【新入社員必見】自動車部品メーカーでソフト開発するのに必要なスキル・知識
こんにちは。
4月で社会人15年目を迎えたレオハルです。
4月になると新人が配属されてきたり、中途採用の新しいメンバーが増えたりする時期ですね。
入社以来ずっと車載ソフトウェアの開発に従事してきました。
今では、新人にOJTで指導することも何度か経験しています。
今回は、自分のもとに入ってきた後に教えていくことになるスキル・知識をお伝えしたいと思います。
心構えや一般論ではない具体的なスキル・知識の習得
いろんなブログやサイトにも、「エンジニアに必要なスキル」みたいな内容が掲載されていますが、心構え的な内容や、論理的思考、コミュニケーション能力などなど、当たり障りない記事が多い印象です。
ただ、自分が新人の頃や、今まで見てきた新人さんたちを思い起こすと、そういった部分は基本わかってる人が多いですし、急に身に着けろと言われて身につくものでもないと思います。
もちろん重要ではないというわけではありませんよ!!
ただ、今回は具体的に業務につながるスキル・知識をお伝えできればと考えております。
開発プロセス
自動車部品メーカーでソフト開発業務を進めていくのにまず覚えてほしいのは、開発プロセスです。
どんな手順でソフト開発が進んでいるのかを理解しておかないと、任された仕事も何をやっているのかわからない状態になってしまいます。
結果として、アウトプットも求められていたものと違ってしまうという事態にもなり得てしまいます。
自動車業界のソフト開発で最も広く普及しているプロセスは、「ウォーターフォール開発」です。「V字モデル」とも言われます。
おそらく、入社した会社毎に開発プロセスが規定されているはずです。これをまずは覚えることになりますが、「ウォーターフォール」を理解していれば、難なく対応していけるでしょう。
最近では、「アジャイル開発」という小さな期間に開発を分けて、どんどん機能追加を行っていくような開発プロセスも出てきています。
開発環境の習得
ソフト開発でまず慣れないといけないのは、開発環境の習得です。
組込み系の場合、非組込みソフトのように開発環境が充実していません。
おそらく職場毎にそれぞれの開発環境があると思います。
製品が違ったり、マイコンが違ったりで多種多様の開発環境があると思います。
コンパイラはもちろん、デバッグ環境や評価環境を習得していくこともソフト開発を進めるうえで重要になります。
マイコン
プログラムを作ったことがあるという学生でもマイコンを扱った組込みソフトを作ったことがあるという人は少ないのではないでしょうか?
かく言う私も大学時代は、CやC#でプログラミングしていた記憶があります。
マイコンには、ハードウェアを制御する周辺機器(=ペリフェラル)がいろいろ付いています。
基本的には、マイコンの外部と接続するための入出力機能だと理解していいでしょう。
代表的な周辺機器としては、以下のようなものがあります。
- GPIO・・・汎用入出力I/Oポート。ON/OFFのデジタル信号を入出力する機能。
- ADC・・・AD変換。アナログ信号をデジタル信号に変換する機能。
- タイマー・・・時間を計測したり、一定時間毎に処理を実行する機能。
- シリアル通信・・・外部との通信機能。UART・SPI・I2Cなど。
他にもいろいろありますが、マイコンにどんな機能があるのかを知っていると担当製品のソフトを理解していくうえでも有利に働くでしょう。
気になる人は、国内最大手のルネサスのHPとかでマイコンのカタログやマニュアルをのぞいてみると勉強になるでしょう。
他にも超入門的にラズパイ使って電子工作とかしてみるのもおすすめです。
通信機能
車両には、多くのECUが搭載されています。
ECU同士がデータのやり取りをするのに通信は欠かせません。
カーメーカーから通信の仕様が提供されそれに基づいてデータを取得することも多くのECUで行われています。
現在利用されている代表的な通信プロトコルには以下のものがあります。
- LIN:リン。ボディ系など通信速度が遅くても問題ない製品で利用。
- CAN:キャン。もっとも多くのECUが利用している通信方式。
- CANFD:キャンエフディー。最近普及が進んでいる。CANを拡張した方式。
- FlexRay:フレックスレイ。シャシーなど通信速度が必要な製品で利用。
- Ethernet:イーサネット。高速大容量な通信が必要な場合に利用。
ダイアグ通信機能
先ほどの通信機能を利用して、ECUの内部情報を取得したり、故障診断を行う方法がダイアグ通信です。
車についている診断用のコネクタに、診断テスターを接続するのが一般的です。
自分の車にも運転席の下あたりにコネクタがついています。
「OBDコネクタ」や「DLCコネクタ」などと呼ばれています。
ECUに搭載したソフトのテストを実施する際にこのダイアグ通信機能を利用することがあります。もちろん要求仕様としてこのダイアグ機能の実装が各製品求められるため、ダイアグ通信機能自体を評価する必要もあります。
通信・ダイアグ通信の勉強には、ベクター・ジャパンの「初めてシリーズ」を読むと大変勉強になります。
ベクターは、車載ソフト開発で重要なパートナーとなっており、通信ドライバーソフトや通信テスト用のソフトウェアなどを提供するベンダーです。
最後に
車載組込みエンジニアといえばC言語でプログラミングというイメージがあるかと思いますが、C言語の知識は、必要な知識のごくごく一部だと自分は思います。
それ以外にもたくさんの知識が必要になります。大変ですが、そこがやりがいにもなってきますし、どんどん新しいスキルや知識、新しいツールに触れて吸収できるのが楽しい仕事だと思います。