株式会社スマートドライブに入社して4ヶ月くらいがたった
気がついたら3ヶ月が過ぎて試用期間が終わって、4ヶ月過ぎようとしているのでもろもろ書いてみる
何やってる会社なの?
ざっくり言うと車に専用のハードウェアを取り付けて走行データを収集して、スマホ経由でサーバに送ってサーバで解析して、見やすい形にしてブラウザで表示するというサービスをやってる。
車から走行データを収集するためのハードウェア開発、 ハードウェアで吸い上げた情報をBluetoothでスマホに送り、 スマホからサーバに情報を送る部分や、情報を表示するためアプリ開発。 サーバ側で各種情報を受け取って解析する部分や各種APIを開発しているサーバサイド開発、 解析した結果を見やすい形で表示するフロントエンド周り。
ハードからアプリ、サーバ、フロントエンドといろんな事をやってる会社です。
ハード周りはあまりちゃんとわかってないけど、ファームウェアはC言語で書かれてるっぽい。サーバサイドはRailsとGo。フロントエンドはSPAでReactとか使ってるっぽい。
かなりざっくり書いたけど、もうちょっと詳しく知りたい方は以下のページをさらっと見てもらうのがいいと思います。
スマートドライブで僕がやってること
Androidエンジニアとして働いています。
一般的なWebサービスのアプリエンジニアと大きく違うところは、ハードウェアとの通信があるところです。 ハードウェアとスマホをBluetoothで接続して情報をやりとりする。WebのAPIとは違ってjsonというわけではないので、どうやって情報をやりとりするのかを話して決めて、実装して。みたいな感じ。
ハードウェアはこのページの下の方にあるやつです。
サーバとの通信について考えるだけでなく、ハードウェアとの通信も考える必要があって、 その辺が大変なところでもあり、やりがいがあるところでもあります。何かうまく動かないなーと思った時にうまくアプリ側が原因か、ハードウェアが原因か切り分けていろいろやります。
入社してしばらくは裏側のServiceで動く処理を主に書いていてAndroidのViewとは完全に無縁の世界でした。その後View側もそれなりに触るようになって全体感がある程度見えてきたかなという感じです。
Bluetooth Low Energy
今の会社に入るまではBLE周りに触れ合う事はなかったんですが、AndroidでBLEといえばつらいという感じです。
まだドヤ顔で具体的に何がツラミなのか言えるレベルではありませんが、ざっくり以下のような感じです。
↑のQiitaの記事にも書いてありますが、BLEのツラミに対応するために別プロセスで動くようにしており、プロセス間のやりとりがまた大変だったりもします。
プロセス間のやりとりはdex.fmの以下の回で多少言及されてた気がします。たぶん
dex.fmSDK
ハードウェアと通信したりする部分をSDKとしてアプリとは別に切り出していて、別アプリで使う時もそれを使っています。 特に外部に公開しているわけではなく、今のところは内部で使っているものです。
この機能はSDKが持つべきだよなとか、ここからはアプリ側が持たないとなとかその辺を考えたり、SDKとアプリは別リポジトリで管理してるので、普段の開発の進め方とか、ブランチの切り方とか、リリースする時にどうするかとか、その辺いろいろ考えさせられます。
言語とかライブラリとか
ほぼすべてKotlinで書かれています。Javaは2〜3ファイルあるくらいです。 RxJavaもバリバリ使ってます。入社するまでKotlinもRxJavaもあんまり使った事なかったけど、だいぶ使えるようになってきました。
- 作者: 長澤太郎
- 出版社/メーカー: リックテレコム
- 発売日: 2017/03/21
- メディア: Kindle版
- この商品を含むブログを見る
RxJavaリアクティブプログラミング (CodeZine BOOKS)
- 作者: 須田智之
- 出版社/メーカー: 翔泳社
- 発売日: 2017/02/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
この2つの書籍をAndroid開発してるエンジニアはほぼみんな持っているという意識の高さです。
という事で
4ヶ月くらいたった感想でした。