はじめに
スマホアプリならではの便利で革新的な機能を実装しようとすると、センサーなどのデバイス機能を利用したくなります。iOSとAndroidの双方に対応したいと、マルチデバイス対応の開発環境を利用していても、この辺が機能限界の分岐点となり、どうしてもプラットフォーム固有のネイティブツールへとなびき、単一コードによる開発効率化を諦める結果になっているようです。
Delphi(そしてC++Builder)は、デバイス機能をネイティブでサポートしながらも、コンポーネントによってデバイス固有の部分をカプセル化し、共通の操作で各デバイス向けの機能を呼び出せるようになっています。そこで今回、さまざまなデバイス機能をてんこ盛りしたアプリを作成し、どの程度マルチデバイス対応がイケてるのかを検証してみようと思います。
なお、ここで紹介したアプリは、Webセミナー「Delphi Boot Camp」のDay 4でも詳しく取り上げています。
アプリの概要
今回作成するアプリには、次のような機能を盛り込んでみました。
-
地図表示
- GPSで取得した位置情報を使って現在位置を表示する
- 地図表示と衛星画像の切り替えを行う
-
現在位置の情報表示
- 測位された緯度経度の情報を表示する
- 緯度経度の情報から現在位置の住所を取得して表示する
-
加速度センサーを用いた水平器
- 加速度センサーで取得できる3軸(X、Y、Z)の値のうち、X軸とY軸の値を使って水平器を実現する
いずれも単体ではあまり実用的ではありませんが、業務アプリでもゲームでも、よく利用したくなる機能です。アプリには、次のようにタブで切り替えられる複数ページがあります。
ここで紹介するアプリのソースコードは、https://github.com/kazinoue/2016_Delphi_bootcamp_day4に掲載しています。