投稿日 2020-03-12

Inventoryデバイス検索機能を作成しました

みなさま、こんにちは。ソラコムでインターンをしているtakuyaです。

Sigfoxデバイスの検索はサポートされていたのですが、加えてInventoryデバイスに検索機能を追加しました!

Web開発をしたいと申し出たところ

  • DBアクセス
  • API Serverの構築
  • コンソール開発

とサーバサイドからフロントエンドの開発まで携わらせていただき、リリースすることができました!

Inventoryデバイスの検索機能は基本的にSigfoxと同じです。

まずは、Inventoryのデバイス管理画面に行き、

検索ボックスに検索項目の選択、入力をし、あとは検索をポチッとするだけです!

今回は以下の検索項目をサポートしました。

  • デバイスID
  • 名前
  • グループ
  • タグ
  • IMEI
  • IMSI

さて、機能としては以上なのですが、具体的に開発の内容を紹介したいと思います。

DBアクセス

ここでは、DynamoDBデータをDynamoDB Streams経由で獲得し、ElasticsearchにindexするLambda functionを書かせていただきました。

開発の手順としては、

  • まずは、検索したい項目を考え、templateを作成
  • 次に、DynamoDBのレコードにマッチングするmodelを作成
  • Elasticsearchにindexするためのmodelも作成
  • そして、DynamoDBのmodelとElasticsearchのmodelを変換するconverterを書く
  • indexするためのサービスレイヤーを書く

以上が一連の流れになります。

API Serverの構築

初めに、HTTP REST API設計を考えるところから始まりました。

具体的には

  • HTTPメソッド
  • APIエンドポイント
  • 入力クエリパラメータ
  • 出力

を決定しました。

Web API開発をしたことのなかった私にとって、事前にAPI設計の機会を設けていただいたことは、開発方針の整理に繋がり、また設計指針の雰囲気を体験することもでき、非常にありがたく感じたことが記憶に残っています!

設計を終えた次には、実際に実装します。

具体的には、入力クエリを使ってElasticsearchからkeyを引っ張ってきたのち、そのkeyを使って外部APIを呼び出しデータを獲得し、そのデータを返すというような流れとなります。Java初心者でありながら、Springというフレームワークを初めて使う私は、時間がかかりながらもメンターの方に助けて頂き、なんとか完成させることができました!

コンソール開発

初めに、ページを構成するUI部分のコンポーネントの作成をしました。

検索部分のクエリパラメータを組み立てることができるようになったのち、サービスに渡してAPIをコールするようにします。

また、API開発のところでも書いたのですが、ここでもテストケースを書かせていただきunit testからintegration testまで体験させていただきました!

最後に

実はWeb開発に関してはドの付く初心者だったのですがリリースすることができたのは、基礎的な知識からデバッグまでお手伝いしていただいたメンターの方々のおかげです。感謝してもしきれないほどです!

初めは何かお役に立ちたいと始めたインターンでしたが、終わってみると自分が圧倒的成長を遂げてしまいました。このような貴重な時間を与えてください本当にありがとうございました!

takuya