僕が働く前に気になったことや、今お伝えしといたほうがよさそうなことなどをまとめました。
これから組込みエンジニアになろうとしている方がどんな仕事なのかをイメージできるよう、基本的な役割や、最初にやる業務について書きました。
その他には、今後なった場合のさらに先の未来(将来性やそのあとのキャリアパス)についても最初に知っておいた方が良いと思いましたので、また別途記事を書きたいと思います。
役割
組込みの仕事をするうえでの役割分担がありますので、それについて書きます。
ここについては、他のソフト開発とほぼ同様となるのであまり変わったことは書いていません。
では、早速ですが役割としては以下の感じになります。
①マネージャー
②設計(仕様を決める・書く)
③実装
④テスト
①が全体をまとめる人で、②~④は実際に現場で作業する人といった感じです。
■マネージャー
マネージャーについては、全体をまとめるのが仕事になるのですが、会社の規模によって、まとめるレベルが異なったり、まとめる人が複数人いたりします。例えば、監視カメラシステムを例に挙げると、お客様に納めるモノとしては、カメラとサーバーPCがあります。この場合、プロジェクトとしては監視カメラシステムなのですが、その中にカメラ開発プロジェクトとサーバーPC開発プロジェクトの2つが存在し、その2つのそれぞれにまとめ役(マネージャー)がいたりします。
■設計
設計については、上流~下流があります。
お客様からの要求を元にこちらからそれにあった良い仕様を提案したり、それを書類にまとめたりする業務や、大まかな設計書(お客様に提示した仕様を満たすよう、製品に落とし込んだ仕様)を書く業務、詳細な設計書(プログラム上ではどうソースコードを書いて管理するかの仕様)を書く業務などがあります。
■実装
実装については、単純に上記設計で作成した仕様書を見ながらプログラムを書く業務になります。
以下でテスト業務について書きますが、通常はテスト業務を担当される方にテストをお願いする前に簡単なテスト(本格的なテストをする前のテスト)を実施しますので、これも実装業務の一環となると思います。
■テスト
テストについては、もくもくとテストをやる他に、テストの項目書を作成・検討・計画するのも業務の一環となります。
テストの計画段階で、開発量や期間を見ながらその中での最善を尽くせるようにテストを計画します。特に、開発ではよく遅れが発生するのですが、発売日は特に変わらずのため、そのしわ寄せが最終工程であるテスト工程にきます。なので、テストが何日で終わるかや、そのための必要な機材・人数の調整や確保も計画で見積もらなければならないです。
最初にやること
僕は組込エンジニアになる前は、漠然と設計をしたいと思っていましたが、実際に入社したらどんなことをするのかがわからなかったので、ここでは入社して最初の1年目にどんなことをするのかについて書いていきます。
就職先はメーカーやソフト会社(委託会社)があると思いますが、たぶん最初の仕事はこの3つのどれかになると思います。
①テストの手伝い
②バグなどの解析
③簡単なプログラムの作成
僕の経験上(委託先の配属も見ながらの経験)では①が一番確率が高く、その次が②、さらに次が③だと思っています。
設計やマネージャー業務は全体を把握していないと適切な指示やアドバイスなどを出すのが難しいので、最初から任されるはまずないと思います。
それでは①~③のそれぞれについて書いていきます。
■テストの手伝い
一番高い確率でここになると思います。
入社して配属される部署には、大抵テスト工程のプロジェクトがあるため、その中に投入されることになります。
たまたまなければ、②か③になるかなくらいですが、今まで見てきた感じだと、テスト工程のプロジェクトがなくても、テスト工程が近ければ、それまではちょっとした書類の整理や雑務などをしつつテストに備えるの(テストまでのつなぎ)をよく見てきました。
新入社員にテストをさせるには理由があって、最初は製品のことや、会社特有の仕組み(開発の流れ)、組み込みの基本を知らないので、テストを通じて(実際のモノを動かして)製品の仕様を覚えるのが一番最初としては入りやすい(学びやすい)ので、テストを最初にやってもらうという狙いがあります。
■バグなどの解析
テストでない場合、次に来るのがここで、どこかのプロジェクトでプログラムの作成工程やテスト工程でバグがいくつか発生していて、その助っ人で参加したりします。
とはいっても、新入社員なので何もわからないのはみんさんご存じです。なので、最初は先輩社員からデバッグ装置やツールの使い方や検索の仕方から教わります。
バグ対応というとあまり良いイメージはないかもしれませんが、ソフト開発の基本を身に着けることができます。
バグに対して、正しい(期待しいている)動作を把握して、それに対して今の現状がどうなっているのかを把握するところから始まります。その後は、プログラムの見方、読み方を学びながら、どのルートを通過しているのかをデバッグツールや、場合によってはデバッグ用のコードを仕込みながら確認していきます。
このデバッグ(バグの解析)を通じてプログラムを読めるようになりますし、一部ですが、プログラムの作りを理解できます。プログラムの作り・構造・設計は結構パターン化しているので、一つ覚えればそれは次から武器になります。
■簡単なプログラムの実装
最後はこちら、優先順位的には3位です。
簡単なプログラムとは主に保守ツールやデバッグツールの作成となります。保守ツールとは、お客さんは目にしないようなソフト(ツール)で、例えばどこかに設置するカメラだったら、フォーカスや明るさの度合いを微調整するようなツールのイメージです。デバッグツールはその名の通り、デバッグに役立てるための解析ツールとなります。
このあたりのツール類はお客様に納めるソフトよりは規模が小さいのがほとんどであり、更にその中の一部機能のカスタマイズとなるので初心者にはちょうど良い学習材料になります。
組込みは基本C言語かC++言語になりますが、保守ツール類はC++かC#、またはAI関係だったらPythonあたりの言語になるのでC言語よりは文法が多くなり、プログラミング初心者にはちょっと抵抗がある部分かもしれないです。
ただし、保守ツール類はPCアプリとなるので、デバッグは比較的簡単で、見た目的にも目に見えて操作できるため、その分簡単な所はあります。なので、トータルではそこまで難しくないです。
保守ツールだとPCアプリとなり、あまり組み込み機器の本体とは縁がなさそうですが、保守ツールで実装した機能が実機にちゃんと反映されているかなどもチェックするため、自然と組み込み機器との接点が増えて少しずつ知識が増えていきます。
また、保守ツールは組み込み機器と接続する種類は組み込み特有のシリアル通信(古い通信)や、LANでの通信、Bluetooth通信など、通信の種類はかなり限られているので一つ覚えればほかのプロジェクトの保守ツールでも知識やスキルの使いまわしが効きます。なので、結構重宝されると思います。
コメント