新卒エンジニアの挑戦:電気錠シミュレータ開発の全記録
初めに
こちらは、Akerun Advent Calendar 2023 7日目の記事です。
皆さんこんにちは。この度新卒でFWエンジニアとして入社したwipaltoです。
記事を書くことが初めてなので、緊張しております。
いきなりですが、新卒研修としてフォトシンスに入社してからさまざまな研修を行ってきました。そこで、現在行なっている研修が電気錠シミュレータ開発なるものです!
電気錠シミュレータ開発とは
企画・要件定義・設計・実装・効果検証までをドライブし、開発プロセスを理解する目的で行われました。
私の所属するFWチームは、Akerunコントローラー(Akerun Ctl)の開発において実物の電気錠を用いて開発を行っておりますが、実物の錠を使用するのは様々な課題がありました。
- 課題
- 扉の開け閉めなど手動の操作が必要となる
- 開発者間での貸し借りで、配線し直しの作業が発生する
- 数に限りがある
- その他諸々
以上の課題を解決するのが電気錠シミュレータです!!
成果物
こちらが電気錠シミュレータです。
右側がラズパイ、左側が自作の回路となり、左側から出ている配線をAkerunコントローラーに接続します。
あらかじめ、社内にある電気錠の動作波形をオシロスコープで測定しその信号変化をjsonファイルに書いてある為、電気錠シミュレータは基本的に電気錠を模倣して動作します。
また、jsonファイルを編集することでチャタリングを故意に起こせたり、任意のタイミングで信号をメーク・ブレークできるので、扉の開け閉めなどを自動で行うことができます。
使い方は
UIから、シミュレートする錠タイプを選択して、runボタンを押下!
すると、シミュレータの施錠信号ランプが点灯し、ICカードリーダーにカードをかざすと、、、
解錠信号が流れました!!!
また、シミュレータにはタクトスイッチを搭載しており、ボタンをポチポチするだけでAkerunコントローラーに期待した信号を送ることが可能です。
電気錠シミュレータには履歴を記録する機能があり、Akerunコントローラーから出るログと見比べて、デバッグを容易にすることが可能です。
また、電気錠シミュレータを使ってくださる方が、多ければ基盤を発注し、複製することも視野に入れています!
次に、どういった過程を経てここまで来れたのかについて記載します。
企画
企画の段階では、先ほど述べたような課題もわからない状態でスタートしましたが、ざっくりと以下の流れで企画を行いました。
- 顧客の真の課題を可視化する
- 課題解決した場合の利益を見積もる
- 課題を解決するソリューションを考える
- 開発に必要な予算(時間)をざっくり見積もる
- 企画書を作成、提案し承認をとる
特に顧客の真の課題を可視化する部分では、まずはAkerunコントローラー(Akerun Ctl)の開発に関わっている方々にヒヤリングをしました。
それぞれが抱えている課題に違いがあり、自分の中で真の課題を見つけるのがとても困難でした。
また、その課題を解決するとどのくらいの利益が出るか、予算の見積もり、ROIの算出、企画書の作成、などビジネスサイドの視点で考えることが多かったです。
要件定義
要件定義ではざっくりと以下の流れで要件定義を進めていきました。
- ソリューションを実現するために必要な要件(タスク)を一覧化する
- 不確実性の高い要素の技術検証を実施する
- 開発に必要な予算(時間)を見積もる
- 構成図・業務フローなど必要な設計書を作成する
どのマイコンを使用するのか、他にハードウェアを使用するのか、それぞれ購入費用と自分の人件費はいくらかかるのか、開発にかかる工数の見積もり、どんな機能を実装するのかなど、考えることがとても多かったです。
これまた、わからないことが多かったです。
ただ、社内にあった過去の情報や、先輩方に沢山お聞きして進めることができました。
次に、部品の購入にあたり部品を選定しないといけないので、回路図の作成も行いました。
これも初めての経験でした。
学生時代に、何度も回路図を見たのですが、自分で回路を書くとなると本当に難しい!!
これらもエレキのチームの方に沢山教えていただき、何度もレビューもしていただき、完成しました。
みなさん本当にありがとうございました。
設計
次に立ちはだかる壁は、設計です。 要件定義の時に作成した回路図から、ユニバーサル基盤に半田付けです。 半田付けは、簡単な回路作成や、ちょっとした修理等の経験しかなかったので、 自分で書いた二次元の回路図が、三次元の電子回路になっていくことに感動を覚えました。 何度か、電気錠シミュレータに実装したフォトカプラを壊したり、会社のテスターのヒューズを飛ばしたり、沢山迷惑をかけてしまったのですが、なんとか完成しました。
実装
今回はラズパイを使用していたこともあり、pythonで実装しました。
要件定義で、あらかじめ機能を定義していたのですが、そこに漏れがあったり、実装をしてから気がつくことも多かったです。
本当にいい勉強になりました。
また現在も、実装を行なっておりますが、ほぼほぼ完成しており先輩方にシミュレータを使用していただいて、フィードバックをもらいながら修正作業を行っております。
最後に
この研修を通じて得られた知識と経験の価値は計り知れないものがあります。特に、新卒として開発業務に留まらず、企画や要件定義といった上流工程に携わることができたのは、非常に貴重な経験でした。エンジニアとしての旅はまだ始まったばかりですが、この経験を生かして、これからも精進していく所存です。また、貴重なアドバイスを賜りました皆様に、心より感謝申し上げます。
株式会社フォトシンスでは、一緒にプロダクトを成長させる様々なレイヤのエンジニアを募集しています。 photosynth.co.jp
Akerunにご興味のある方はこちらから akerun.com