| Invalid Date
字数 0阅读时长 1 分钟
カテゴリー
IoTチーム日記
テキスト
投稿日
Apr 8, 2024
2024年1月に先進技術部門に中途入社した多田 信洋が、当社のOJTで作成した社内システムをご紹介します。
※Fusicでは、エンジニアの新入社員に対し、数か月間の教育制度を導入しています。エンジニアとしての技術力向上や、一人でクライアントとやり取りができるようになることを目的とし、OJTを実施しています。

1. イントロダクション

こんにちは。2024年1月にIoTチームに入社した多田です。
今までIoTシステムを触ってきたわけでないこともあり、研修の期間を設けていただきました。
Ruby on Rails、HTML、CSS、React、AWSなどを使ったお題をいただきました。

2. 企画

入社時にはすでにオフィスにダッシュボタンというIoTシステムがありました。
notion image
ダッシュボタンは、社内にある紙コップやティッシュなどの消耗品のストックが減ってきた時に、ボタンを押すとバックオフィスが管理する消耗品管理ちゃんねるに通知してくれます。
 
ただし、ダッシュボタンには管理する消耗品がハードコードされている。さらに新オフィスへの追加がしたい。
などの要望があったため管理を簡単にすべくダッシュボタンのV2を作成する運びとなりました
 

3. 設計

 
Web上でデバイスごとの消耗品追加と削除ができるようにし、以下のような構成になりました
 
notion image
 
 
ダッシュボタンのデバイスとしてM5Stack basicを使用しています。
IoT Coreというメッセージブローカを用いてデバイス、サーバ間でMQTT通信を行います。
デバイスで管理したい消耗品の変更があった場合にはRailsアプリケーションからIoT Coreに通信し、その変更をデバイスが検出します。
逆に、デバイスで消耗品が減ったよボタンが押された場合はIoT Coreに通知し、それをトリガーにLambdaが起動、slackに通知を行い、DynamoDBに保存します。

4. 開発

いざ、開発です!
1ヶ月目は順調でしたが2ヶ月目からは研修以外の開発も開始して、研修開発に使える時間が50%になりました。
本格的なAWSを使った開発、Railsやデバイス、MQTTなど触ったことのないものがとても多い中での開発となりました。
中でも、デバイスの実装では馴染みのない問題に直面し、解決のために様々な試行錯誤が必要となりました。

問題1 SDカード読み込まない

デバイスの実装では、SDカードから日本語フォントを読み込み日本語表示をする予定でしたが同じデバイスを購入したはずなのにSDカードを認識する機器と認識しない機器に分かれてしまったのです!
手元にあるデバイスとSDカードの組み合わせなどいろいろ確認し、工場出荷時のプログラムではどの機器でも正常にSDカードが読み込めていることを発見し、差分を探っていったところライブラリ内部で使用しているSDカード初期化処理に問題があった事が原因だとわかりました。
 

問題2 メモリが不足し、クラッシュする

SDカード自体はなんとか認識しましたが、今度はフォント読み込み時にクラッシュしてしまいます!
なんと軽いフォントを探しても、日本語フォントの読み込みだけで70%ものヒープメモリを消費してしまうことがわかりました。
いろいろ思案し、デバイスを変えざるを得ないかとも思いましたがいろいろ探してみると、ヒープメモリを使用せず別の領域にフォントを保存することができるライブラリを見つけたのでそちらを使用することで解決しました。
 
他にも初めてのことが多く様々な問題とぶつかりました。
また開発とのタスクの切り替えが難しく2ヶ月目、3ヶ月目は思うように進まないことも多い開発になりましたが、なんとか完成しました

5. 感想

使用するユーザへのヒアリングから始めて、フロントエンドもバックエンドも両方一から作る経験はとても貴重で、とても楽しいです
毎朝状況を確認する簡単なミーティングを行い、方針の確認が出来たので大きな手戻りもなく完走することができました。
社内発表でもとても緊張していましたが、他のチームの皆様がいろいろ反応をくださって、楽しく話をすることができました。(緊張していたのであんまり細かいことは思い出せませんが笑)
 
これからもこの経験を活かしてガンガン開発していこうと思います
 


 
notion image
Loading...
目录