
Ouluでの仕事の一つとして、これまで開発したいたAWARE Frameworkを大規模センシングにも対応できるように、AndroidライブラリはKotlin、iOSライブラリはSwift、サーバサイドはNode.jsで再設計・実装中。KotlinとSwfitは言語仕様がかなり似ているの、新しいAWAREではAndroidとiOSの両プラットフォーム上でほぼ同じ記述でセンサを操作できるようになる予定。
Android側のコードレビュー中に、Kotlinの「apply」と呼ばれるスコープ関数をうまく使って、センサの初期設定をしているのを発見。今回は、そのapplyをSwiftでも実装してみたのでその技術メモ。調べてみたところ、どうやらSwiftでもクロージャを使えば再現できるみたい。
SensorクラスとConfigクラスの実装。
インスタンス化は、Sensorクラスのコンストラクタ引数に、Sensorクラス内のConfigクラスを与える。Configクラスのapplyメソッド呼び出すことで、スッキリしたコードでセンサクラスの初期化とConfigの設定が可能。センサの設定項目を増やしたい場合は、Config側に変数を追加するだけ。
初期段階ではビルダーパターンで実装していたけど、各センサ毎に設定メソッドを実装するのはかなり面倒だったので、applyの方がかなり楽に実装できる。
参考資料
https://qiita.com/tsumuchan/items/e4913c9583d00d9bea7d
https://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e