高機能になるモバイルアプリに必要なものとは

モバイルアプリ開発の現状

モバイルアプリはゲーム以外にも天気予報やニュース速報など日々の生活に欠かせないものとなりました。本稿では、より高機能になるiPhone/iPad(iOS)アプリ開発の裏側をご紹介します。

iOSアプリとAndroidアプリ

利用する端末とOSが異なるため各々専用のアプリになりますが、複数のプラットホームに対応するゲームエンジンであるUnity(ユニティ)やクロスプラットフォーム開発環境のXamarin(ザマリン)などが利用されることも多くなりました。ただし、どうしてもネイティブ(各OS固有)での開発の知識は必要になってきます。たとえば、Xamarinであれば根幹の機能部分はiOSとAndroidで共通化して、UI部分は別々に作成します。

iOSアプリの難易度

一般的には開発言語にSwiftが加わったことで、他のプログラム言語経験者が参入する敷居は下がったと言われています。開発環境(XcodeやiOSシミュレータ)も年々改善されており、サードパーティのツールも出揃ってきて開発はしやすくなっています。

ただし、これから始める人にとっては、iOSの機能が増えたり変更されたりしているので、膨大な量を把握する必要があって大変でしょう。ネットには古い情報が混ざっているので、最新OSではどうするのが正解なのかというところが把握しづらいというのがあります。

高機能なアプリ開発に必要なDB

一発ネタのようなアプリであれば扱うデータ量が少ないため、簡易なUIとロジックが組めればアプリを作成できました。しかし、高機能なアプリでは扱うデータ量が増えるため、効率的にデータを扱う必要がでてきました。

iOSアプリでデータを保存するには

これまでは、データをバイナリ形式やXML形式で保存するか、軽量でシンプルなSQLiteやiOSがサポートするCore Dataが利用され、それぞれ枯れた技術なので安定しています。また、Core DataはXcodeからできる機能が増えています。

モバイルアプリファーストなDBの登場

ただし、先述した旧来の方法では、扱うデータ量が限られていたり、取り扱いが複雑なため導入する学習コストが高いなどの問題がありました。

このような状況の中、現在のモバイル環境や端末スペックを踏まえて一から設計/開発されたモバイルデータベース「Realm(レルム⁠⁠」が登場しました。2014年7月に公開され、2016年5月にバージョン1.0、2016年9月にバージョン2.0が発表されました。モバイルアプリでの利用しやすさを重視したAPIとなっており、開発者に注目されています。

Realmの特徴

Realmでは、データベースに対してテーブル定義を設定することなく、リスト1のようにクラス定義がテーブル定義となり、アプリ開発者が扱いやすい仕様となっています。

リスト1 テーブル定義とクラス定義が同一(例)
class Person: Object {
    dynamic var name = ""
    let dogs = List<Dog>()
}

class Dog: Object {
    dynamic var name = ""
    dynamic var age = 0
}

また、このほかにも使いやすいAPI、高速な処理、複数プラットフォームの対応などが挙げられます。利用に際しては、下記の公式サイトのサンプルやレシピが参考になりますが、本書では、より実践的な使用方法なども取り上げていますので、ご活用ください。

公式サイトのサンプル(英語)
https://github.com/realm/realm-cocoa
公式サイトの日本語ドキュメント
https://realm.io/jp/docs/swift/latest/
公式ドキュメント内のレシピ(英語)
https://realm.io/jp/docs/swift/latest/#section-56