Cordovaプラグインでアクセスポイントの情報を取れるようにした

Apache Cordovaが公式的にメンテしているCordovaプラグイン Network Information (Connection) を拡張して、Wi-Fi接続時のアクセスポイントの情報を取得できるようにした。ただしAndroidに限る。

https://github.com/keik/cordova-plugin-network-information/tree/add-wifi-info-on-android

もともとこのプラグインは、現在のネットワーク接続の種別(Wi-Fiとか、LTEとか)だけが取得できる。

console.log(navigator.connection.type); // -> "wifi"

機能拡張によって、アクセスポイント情報を次のようにして取得できるようにした。

console.log(navigator.connection.wifi); // -> { ssid: '<your-ssid>', ipaddress: '<your-ipaddress>', macaddress: '<your-macaddress>', networkid: '<your-networkid>' }

なお、このプラグインAPI設計は、W3Cで策定予定だった The Network Information API に基づいているが、現在この仕様の策定状況は Retired になっている。なのであんまり細かいことを気にせず、適当に wifi とかいうプロパティにWi-Fiアクセスポイント情報を突っ込んだ。

(所感) Cordova本当に流行(って)るんすか?

Cordovaはプラットフォームの差分を "プラグイン" という形式で部分的に吸収するためのフレームワークにすぎないので、プラグインが豊富であればあるほどマルチプラットフォーム対応が容易になる。

じゃあそのプラグインはどれだけあるのか、と PLUGINS REGISTRY を見ると、まず登録されているプラグイン数は現在のところ281個とまずまず多い。しかし、これらのうち結構な割合で、メンテされてなさそう、または特定プラットフォームのみサポートするプラグインだったりして、様々な要求にどれだけ答えられるのかは微妙なところ。

こうした状況は、少なくとも個人でマルチプラットフォーム対応のプラグインを開発するハードルの高さが原因にあるんじゃないかと思う。プラットフォームごとの開発環境を準備するのも、開発スキルを習熟するのも、どちらも結構負担が大きい。プラグイン開発の面白みも、アプリを作るわけじゃないので、あまりない。

それと、Cordovaで救済されたい人ってのは、個人開発者よりも、顧客からマルチプラットフォーム対応を求められるエンタープライズの人たちなんじゃないかな。そういう背景もあって、Monacaのようなサービスは独自に開発したプラグインOSSとせず、サービスの価値を高めるための商売道具にしているんじゃないかな。


エスアイアーの心を掴んで離さない、コルドバ