Pebbleアプリ開発
PebbleはSDKを公開しているため、ユーザはそれを使って自分の望むアプリを作りやすい環境にあります。後述しますが、クラウド上での開発も可能としているため、開発環境の導入であれこれ悩んでやる気ゲージが下がるのを防ぐこともできます。PebbleアプリはWatchappとWatchfaceの2種類があることは前述しましたが、開発する上ではWatchappとWatchfaceの区別はほとんどありません。大きな違いはボタン入力を取れるかどうかで(Watchappはボタン入力が取れます)、開発途中で値を1つ変更するだけで切り替えることができます。
Pebble本体側で動作するコードはC言語、親機側はJavaScriptで書くのが一般的ですが、Simply.jsやPebble.jsの登場で、Pebble本体側で動作するコードもJavascriptで書けるようになりました。ここでは、Pebble 2.xでのアプリを開発環境と、開発方法を主に取り上げたいと思います。
Pebble Timeとの互換性
SDK 3.0が公開され、Pebble Time用のアプリも先行して開発できるようになりました。
そうなると、SDK 2.9までを使って開発していたアプリはPebble Timeで動くのかどうか気になるところですが、今のところは、SDK 2.9を使って開発したPebbleアプリをリビルドをせずにファームウェア3.0を積んだPebble Timeでもそのまま動作するようになる「予定」のことです。まだあくまでも「予定」ですが、互換性は期待して問題無いと思います。
Pebble SDK 3.0での変更点などは公式サイトを覗いてみてください。カラーの設定や、対象プラットフォームの指定(PebbleかPebble Timeか、またはその両方か)ができるようになったり、エミュレータに対応したなど更新内容は盛りだくさんです。
Pebbleアプリの開発環境
Pebbleアプリの開発環境は大きく分けて2つから選択できます。1つはローカル、もう1つはCloudPebbleです。CloudPebbleはクラウド上で開発ができ、開発環境をローカルに整える必要がなくなるため、初めてPebbleアプリを開発する際にはCloudPebbleから触ってみることをオススメします。
また、アプリ開発する際は、iPhoneやAndroidといった親機側にPebbleの公式アプリを事前にインストールして、開発者モードを有効にしてください。CloudPebbleとローカルのどちらで開発する場合も、同一LAN上に存在する親機に対してインストールの命令を送り、そこからPebble本体にアプリがインストールされます。CloudPebbleの場合には、勝手に同一LAN内にある親機を探索してインストールしてくれますが、ローカルの場合は親機側のIPを知っておく必要があるので、公式アプリ内から確認してみてください。
CloudPebbleとは
Pebbleのアプリ開発をブラウザ上のIDEを使って開発することができるサービスです。クラウド上で開発するとなると、できないことも多々ありそうに思えますが、基本的にローカル環境でできることは、ほぼ全てできると思っても問題ないレベルで色々できます。以下にできることを列挙してみます。
- Pebbleのスクリーンショットの撮影
- ビルドログ、実行時ログの確認
- GitHubとの連携
- リソース(png画像やフォント)のアップロード
- 入力補完方法の設定
- キーバインドの設定(vim-likeやemacs-likeをサポート)
- エディタのテーマの設定(EclipseやSolarizedなど)
- プロジェクトをまとめたzipのダウンロード
- ブラウザ上で動作確認可能なエミュレータ
さくっと何か作る分にはこれ以上のものは無いと思います。
また、CloudPebbleは2014年末にエミュレータに対応したため、手元にPebbleが無い場合でも開発やデバッグが可能になりました。キー入力も取れますし、バッテリー残量や給電中かどうか、Bluetooth接続は有効な状態かどうかなどのシミュレータもついていて、開発をサポートしてくれます。コンパスや加速度系は、スマートフォンなどの携帯機から専用サイトにアクセスし、コードを打ち込むことで携帯機のコンパスと動機してくれるようです(自分の手元でも試してみようと思ったのですが、うまくいきませんでした……)。
2月末に公開された、Pebble Timeに対応したSDK 3.0でもエミュレータに対応したため、ローカル環境で開発する際でもPebble本体がなくても開発可能になりました。
ローカルでの開発環境
ローカルに開発環境を整える場合は、Pebbleアプリの開発者用ページからPebble SDKをダウンロードして、解凍して中身を適当な場所に配置してください。
今はSDK 2.9と3.0がダウンロードできますが、基本は3.0を使用して問題ありません(※4)。現在のPebbleのファームウェアはv2.9ですが、SDK 3.0はPebbleとPebble Timeのそれぞれに対応したPebbleアプリの開発ができるためです。
LinuxやMacの場合は問題になりませんが、Windowsの場合はバーチャルマシンにUbuntuなどを入れてLinux環境を整える必要があります。自分はVirtualBoxにUbuntuを入れてLinuxユーザ向けの導入方法を見ながら開発環境を整えました。
※4 自分の環境では、SDK 3.0を使ってビルドしたアプリがファームウェアv2.9のPebble本体で動作することの確認はできました。もし、SDK 3.0でビルドしたアプリの調子が悪い場合には、一度SDK 2.9を使ってビルドしてみてください。
SDKの中には結構な量のサンプルが入っているので、実装を見たり、動作確認をしてみたりすると良いと思います。例えば、SDKを入れてみた直後に動作確認をするために、サンプルの中にある適当なWatchfaceを入れてみたい場合には以下のようにしてみてください。今回は勝手に○☓ゲームを始めるWatchfaceを入れてログも確認してみます。コマンドラインツールに関しては、このサイトの開発者用ページにもまとまっています。
$ cd PebbleSDK-3.0-dp1/Examples/watchfaces/tic_tock_toe $ pebble build $ pebble install --phone 192.168.11.7<公式アプリで確認した親機のIPアドレス>
成功した場合は、Pebble本体に○☓ゲームのWatchfaceが表示されると思います。pebble installで失敗した場合には、既にPebble本体に8つアプリが入っていないかどうか確認してみてください。Pebble本体にインストール可能なアプリ数は、開発中のアプリも含めて全体で8つまでなので、既に8つある場合にはどれかを1度ロッカーに戻す必要があります。
Pebble SDKは3.0からエミュレータに対応したため、インストール先にエミュレータを指定することでPebble本体が無くても動作確認ができます。
$ cd PebbleSDK-3.0-dp1/Examples/watchfaces/tic_tock_toe $ pebble build $ pebble install --emulator basalt
ここでの「basalt」は、カラー表示に対応したファームウェア3.0の名前です。Pebbleにはファームウェア2.9、Pebble Timeにはファームウェア3.0が搭載されます。ちなみにファームウェア2.9の名前はApliteです。basaltの代わりにapliteを指定すると白黒スクリーンのエミュレータが起動します。
カラー表示できるようにサンプルの中をいじって、basaltのエミュレータで表示してみると少し楽しめるかもしれません。
それぞれの長所・短所
ローカルでの開発とクラウド上での開発、両方とも軽くですがトライしてみた結果、それぞれの長所・短所が見えてきたのでまとめてみます。
ローカル
-
長所
- 自分の好きなエディタやIDEを使って開発が可能
- ビルドや実行の待ち時間がクラウド開発に比べると早い
- Pebble SDK 3.0からエミュレータに対応
-
短所
- 環境導入時に躓く可能性有り
- リソースの追加時に直接管理ファイルをいじるため、事故が起きやすい
- Windowsの場合はバーチャルマシンの導入が必要
クラウド
-
長所
- 導入が容易
- ローカルに環境を整える必要が無くなる
- 専用のアップローダページがあるため、リソースの取り扱いが容易
- Pebble、およびPebble Timeに対応したエミュレータをサポート
-
短所
- サービスが落ちていてまともにコードを書けないときがある
- ビルドして実行する際に、インジケータダイアログが最前面に出るため開発の手が止まる
- 外部ライブラリを取り込む仕組みが無いためコピペが必要
- 親機にビルド結果を流し込む時のログが不十分で、問題が起きた時に対処しづらい
- 多くのイメージリソースを使う場合、一つ一つアップロードするのが少し面倒
- GitHub連携をサポートはしているが、複数人で開発するのには不向き
- 現在はBitbucketなど他のホスティングサービスを利用できない
これだけを見ると「じゃあローカルで開発したらいいじゃない!」となるぐらい、クラウド側が不利ですが、個人的には最初はクラウドで作って途中からローカルに切り替えることを推奨します。移行時期は以下の目安を参考にしてみてください。1つ以上該当するのであれば、多少時間がかかってもローカルに開発環境を整えたほうが良いと思います。
クラウドからローカルへの移行時期の目安
- クラウド上のIDEに耐えられないとき
- 開発スピードが必要なとき
- 外部ライブラリをバリバリ使う必要が出てきたとき
- 複数人開発する必要が出てきたとき
- GitHub以外のホスティングサービスを使いたいとき
- Pebbleアプリの開発慣れたわー、というとき
CloudPebbleで既にPebbleアプリを開発している場合には、CloudPebbleのSETTING画面にある「DOWNLOAD AS ZIP」をして、プロジェクトをまるごとzipで落としてくることで、ローカルでも同じ環境で開発を継続できます。