1.これまでの経歴
私は幼少期の頃からモノづくりをしたいという気持ちが強く、ロボットや家電などの組込機器に強い関心を持っていました。そのため学生の頃は工学系の中でも電気電子系を専攻し、学業と並行しながらプログラミングスクールにも半年間通い、基本的なソフトウェア開発および機械学習を学びました。
その中で培ったスキルが認められ2022年4月に新卒でAvintonに新卒入社し、Avintonアカデミーで学習。(学習を通して得た気づきや今後プログラミングや機械学習を学習する人に向けて私が書いたブログはこちらです。)新卒研修の後、都内の大手IT企業でC/C++を使ったAIカメラのLSI評価と、工事現場で使う測量機のシステム制御機器GUI開発の二つのプロジェクトを経験させていただきました。
今回の記事では自分が初めて案件に携わらせていただいた中で、自分なりに努力したことや苦労したこと・今後の話などをさせていただければと思います。
2.最初の配属プロジェクト先での経験と学び
まず自分が配属されたのが、トータルステーションと呼ばれる工事現場で使われる測量機の開発プロジェクトでした。具体的には道路工事などで角度と距離を同時に測量することにより観測から計算・地図編集までの工程を一つで賄える機械です。そこで私はGUIと呼ばれる機械の操作画面の開発を担当したのですが、その中で大きく分けて二つの壁に直面することとなりました。
1) 仕事の進め方
初めて仕事を任せていただくにあたり、分からないことも多数出てきました。これらを挙げ出すとキリがありませんが、一例を挙げると以下のような事例です。
- 詳細設計からコーディングに落とし込む部分で設計書に記載がなく自分だけでは判断がつかない部分の記述方法が分からない
- ライブラリ特有のクセのある記述方法が分からない
- テスト設計のモックの記述方法が分からない
さらにプロジェクトリーダーである上司も複数プロジェクトを掛け持ちで仕事をしており、相談するタイミングを伺うものの私自身の人に頼ることが苦手な性格も相まって中々声をかけられずにいました。やっと質問することが出来ても、上司がプロジェクトメンバー全員の進捗を逐一把握できている訳ではないこともあり、質問の際に伝えるべき情報を伝えきれずに認識齟齬を発生させてしまうことも珍しくありませんでした。
そのような中で自分は、以下二つを意識することで現状況を改善しようと試みました。
- 質問出来る時間が限られる中で、聞く内容を簡潔にまとめること
- 上司に質問する際、質問事項に関わる部分の図式を見せながら質問すること
社会人として初めての案件ということもあり、プロジェクト参画当初は進捗が止まってしまう場面も多々あったのですが、このような工夫をし始めてからは少しずつ状況は改善していったように思います。特に二番目は効果絶大で、抽象度の高い概念などで特に効果を発揮し、上司との質問の受け答えがスムーズになっていったのを覚えています。
2) 言語
C++を扱うのはこのプロジェクトが初めてでした。学生時代にC言語でメモリ操作・マイコン制御の経験があったため多くの内容はスムーズに理解できたものの、クラスのスコープや型の制約が細かいが故に分からない概念も多く出てきました。
この苦しい状況を打開する方法を私なりに色々と模索した結果、Googleが出しているC++のコーディング規約が大変勉強になりました。この規約には基礎的文法はもちろん、C言語やC++特有の「暗黙の了解」的な記述方法など他の教材では言語化されていないところを丁寧かつ簡潔に網羅されていて、情報がコンパクトにまとまっています。
このC++のコーディング規約を見よう見まねで真似していきながら、今までやってきた言語との共通点、相違点を明確にしていきコードを記述していくと、自然とコードを書けるようになっていきました。
3.舞ってきたチャンスーAIカメラ案件へのプロジェクト移動
それから4ヶ月ほどした後、案件の事情によりプロジェクトを移動することになりました。次に担当したプロジェクトは経験を積みたかった画像処理領域、最新のAIカメラのテストを扱うプロジェクトでした。自分は元々機械学習を活用したAIカメラに興味があったので、その中身を知れることにワクワクしていました。
最初はお客様が作成されていた画像処理用APIを評価する業務を行っていました。業務用カメラの用途は多岐にわたり、それに応じて大量のAPIを評価しなければならず、スピードと正確性が求められる仕事でした。ですのでタスクも一部自動化されていて、マクロを使ってテストを実施していました。
私自身テストに関してはCI/CDツールを少し触ったことがある程度で経験がなく、テストパターンやテストケースなどを考えることに苦労しましたが、上司から指導を受けながら経験を重ねることで、確実にスキルアップしていることを実感しました。
そのような中、自分はプロジェクトに関わる中で感じることがありました。今行っている作業は製品全体の中でどの領域を扱っていて、エンドユーザーに対し何の価値を提供できるかを考えながら作業をすることの大切さです。
お話ししていることは至ってシンプルですが、無意識に作業を行っていると本来自分がプロジェクトに入った目的やそこでの自分の役割が時間と共に薄らいでいき、業務に対するモチベーションに影響してくることが大きな理由です。また、プロジェクトの全体像に対するゴールを見失ってしまうと、求められていることと作業内容との乖離も発生します。以上のことに気づき、全体像をつかみながら作業をすることができるようになってきてから、非常に作業そのものも遂行しやすくなったと感じました。
4.経験を踏まえて今学んでいることと今後のプロジェクト探しについて
1) 経験を踏まえて現在学んでいること・学びなおしていること
これまでプロジェクトを通じ様々なことを経験した中で、改めて自分の将来の方向性に関して考えが変わってきました。それはソフトウェアには元々自身が想像したものよりも遥かに巨大な可能性があって、それに気づいていなかったせいで自分ができることへの可能性を狭めていたことが見えてきたためです。
例えば先ほど過去の案件内容のところでC/C++についてお話しましたが、私たちが日常生活を送る上で欠かせない業務システム・自動車や家電・ロボットなどのIoT/組込システムなどの基幹システムのほとんどにC言語やC++が採用されていて、技術に関して言えばその業界同士でも深く関わり合っています。業界では有名な話で、もともと私も情報としては知っていましたが、現場での業務を通じてその汎用性の高さを痛感することとなり、より広くこの分野に関わっていきたいと考えるようになりました。
現在は、自分が過去AIカメラのプロジェクトに従事していた経験から、組込関連で特につながりの深い自動運転車やロボティクス・画像処理関連とのつながりや各種ライブラリ・業界の将来性などを踏まえて調査・学習しています。
2) 今後のプロジェクトについて
今後についてですが個人的にPythonの実務案件に興味を持っています。というのもここ最近組込システムも多様化しており、ソフトウェアをインタプリタ方式で実行できるようになってきている背景があるからです。そのこともあり会社の営業の方と上記の観点を踏まえてお話しながら過去に培った経験を生かしつつ、C/C++及びPythonを使用した案件に携わることができるよう準備を進めています。
5.今後のキャリア
最後に今後のキャリアについてですが、メインは先ほど書かせて頂いた通り小さい頃からの夢でもあったロボット開発及びそれに関連する領域に携われるようになりたいと考えています。ロボット制御に必要な知識は沢山ありますが、一歩でも目標に近づけるように頑張りたいと思います。
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?