FlutterはDartで書かれたフレームワークになります。元々iOSやAndroidといったスマートフォン向けでしたが、今ではWebやWindows、macOSといったマルチプラットフォームで動作します。Flutter/Dartを覚えることで、多くの環境に対してアプリケーション開発が可能になります。
NCMBでは公式SDKを提供していませんが、非公式に開発を進めているFlutter SDKがあります。元々ベータとして0.1系でしたが、大幅な機能変更に合わせて v2 になりました。
この記事では、初期化の方法と位置情報検索の使い方を紹介します。
インストール
pubspec.yaml を編集します。
dependencies: ncmb: ^2.0.2
そして dart pub get
でインストールできます。
使い方
任意のファイル上でライブラリを読み込みます。
import 'package:ncmb/ncmb.dart';
そしてNCMBオブジェクトを初期化します。
NCMB('APPLICATION_KEY', 'CLIENT_KEY');
基本的な使い方
まずは基本的なHello worldをデータストアに保存してみます。まずデータストアのオブジェクトを作ります。
var item = NCMBObject('Item')
そして位置情報を保存する際には NCMBGeoPoint を使います。
var latitude = 35.6585805; var longitude = 139.7454329; var geo = NCMBGeoPoint(latitude, longitude); item.set('geo', geo);
後は通常通り保存するだけです。
await item.save();
位置情報検索
位置情報検索は全部で5つのメソッドが用意してあります。たとえば、ある一点の付近にあるデータを取得するnear検索は次のように行います。
var query = NCMBQuery('Station'); var geo = NCMBGeoPoint(35.6585805, 139.7454329); query ..near('geo', geo) ..limit(5); // 付近の5件を取得 var ary = await query.fetchAll();
この他、次のメソッドがあります。
- withinKilometers(String key, NCMBGeoPoint value, int maxDistance)
- withinMiles(String key, NCMBGeoPoint value, int maxDistance)
- withinRadians(String key, NCMBGeoPoint value, int maxDistance)
- withinSquare(String key, NCMBGeoPoint southWestVertex, NCMBGeoPoint northEastVertex)
withinSquareは2つの位置情報を指定して検索を行い、2点間にあるオブジェクトを取得します。
var query = NCMBQuery('Station'); var geo1 = NCMBGeoPoint(35.6584168, 139.7286786); var geo2 = NCMBGeoPoint(35.6848414, 139.7697154); query ..withinSquare('geo', geo1, geo2); var ary = await query.fetchAll();
スマートフォンでは位置情報の取得や、位置情報に基づいた情報提供が大事です。これらの検索条件はよく使われるでしょう。
コード
コードはオープンソースで、GitHub上で公開しています。ライセンスはMIT Licenseになります。
NCMBMania/ncmb-dart: NCMB library for Dart and Flutter.
Flutter依存の部分を削除していますので、純粋なDartライブラリとして利用可能です。また、ネイティブアプリ部分も削除していますので、Flutter for Webでも利用可能です。
まとめ
Flutterを覚えればiOS、Androidアプリともに一つのコードで書けるようになります。DartはJavaScriptライクな言語で、JavaScriptをマスターしている人であれば、それほど苦労せずにDartを書けるようになるでしょう。ぜひFlutterを使ったアプリ開発にNCMBをご利用ください!