車載ソフトウェア開発のお仕事内容
車載ソフトウェアの仕事って?普段どんなことやってるの?どんなスキルが必要?といった疑問にお答え出来ればと考え、私の経験を踏まえ紹介していきたいと思います。
これまでに携わった業務
車載ソフトウェア開発に携わり10数年が立ちました。まずは、 私がやってきた業務紹介を。
ECUと呼ばれる車に搭載されているコンピュータのソフトウェア開発というのがベースです。その中で、どんな機能に関わってきたかをまとめてみました。
日常のお仕事
先述のようにキャリアの中で色々な機能のソフトを作ることになります。
しかし、車載ソフトの開発では、基本的な流れは、いつも同じです。V字プロセス/V字モデル等と呼ばれる開発プロセスに従い仕事を進めていきます。 これは、どこでも言われていることですね。
1つだけ先にお話ししておくと、車載ソフトの場合、差分開発がメインになってきます。基本的にはベースとなるソフトが既に存在することが大半を占めます。新規で1から作っていくことは、少ないでしょう。そのため、先ほどのV字プロセスに関しても、既にあるものを変更していくことが、最初はメインになります。私も新入社員で初めて関わった開発も既存ソフトの車両変更への対応程度の内容でした。
使ってきたプログラミング言語
- C言語:製品ソフト開発のメイン言語。
- アセンブラ:起動時の処理など、マイコンまわりの機能で利用。
- simlink(言語?):昨今のモデルベース開発の流れもあり、自分。主に制御部分。
- VBA,C#,Python:開発の中でちょっとしたツールなどを使うときに利用。
- 各種ツールの専用言語:独自言語を利用したツールとかもありました。
この仕事の好きなところ
- 車だったり、ACTだったり動きがわかる
- システム設計からソフト設計・評価、車両評価まで色々なことができる
- メカ・ハード・工場・車など幅広い知識が身につく
そもそもこの業界でソフト屋さんを選んだ理由になるかもしれませんが、動くところが自分で見たり、体感できたりするところが好き。普通のSEやプログラマーにはなりたくないなぁと漠然と思って選びました。
嫌いなところ
- 監査
- 考えが古い
担当する製品によるところはあるかと思いますが、私の場合、この2つでした。
安全・品質が確実に求められる車に搭載されるソフトなので、どのように作られ、どうやって品質保証されているか、これを監査することは必要だと思います。でも、やっぱり煩わしいと思ってしまう自分はいます。(反省)
「考えが古い」ですが、いい所と表裏一体ではありますが、年功序列な人事制度のおかげで、承認権を持つ管理職は、「昔はこうやっていた」なんて言うおじさまがいっぱいいます。新しいやり方・新しいツールを使おうとすると、なかなか理解が得られないこともあります。
必要なスキル
- コミュニケーション力
メカ屋さん・ハード屋さん・監査屋さん・承認権を持つおじさん達、色んなレベルの人にソフトという(彼らにとって)よく分からないものを説明する必要があります。相手に伝わるように話す必要や、自分の要求をのんでもらうよう交渉するなど、コミュニケーション力はとても重要です。
- プログラミング能力(特にC言語)
メモリ管理や処理負荷等、リソースに依存したソフトを作成することになるため、C言語が最も使われると思います。C言語にこだわる必要は個人的にはないと思いますが、プログラミング的思考はできるようになっておきたいですね。
- 好奇心と冒険心
計画的偶発性理論というキャリア理論の中でも提言されています。企業勤めのソフト屋さんにも、自分の知識や技術に広げ高めていくために必要です。
日進月歩の自動車業界では、常にアンテナを広く張って、飛び込んでいくことが重要です。自分のやりたい将来に近づくためにも必要ですね。
最後に・・・
10年やっても、自分の中でもこうすれば完璧という段階には、まだまだ到達していません。
日々改善していけるマインドが一番必要な仕事ですね。