Pebbeアプリの開発振り返り

Pebble Watchappを一個リリースできたので、自分の開発方法を振り返る。

今使っているのはPebbleSDK 2.8.1だけどPebbleの開発環境にどういったものがあるかはQiitaにまとめている。

Web上で開発できるCloudPebblePebble.jsが使えるようになったり、シミュレーターが追加されたりしてどんどん進化しているので途中で乗り換えようと思ったけど結局CloudPebbleは使わずにPebbleSDKをインストールしてローカルで開発していた。理由としては

  • すでにPebbleSDKの開発環境を作ってしまっていた
  • ローカルでビルドしたほうが速い
  • Settingsページが必要だった

などが挙げられる。

PebbleSDKの環境構築は若干面倒なんだけど、Macには最初からPythonも入っているし大分マシ。それでも面倒なのでChefのレシピを書いて自動化した。SDKを~/DownloadフォルダにダウンロードしておけばSDKのインストールはChef Soloの実行で終わる。

開発エディタとしてIntelliJ IDEAを使っていたがすごく捗った。IntelliJ IDEAにはGruntインテグレーションがあってIDE上でGruntのタスクを選択して実行できる。

GruntのPebbleプラグインは無いと思うんだけどgrunt-exec使えば任意のコマンド実行できるのでGruntfile.jsに以下のようにWatchappのビルドやインストールのタスクを定義してIDEから呼び出していた。

exec: {
  pebbleBuild: {
    cmd: 'pebble build'
  },
  pebbleDebugBuild: {
    cmd: 'pebble build --debug'
  },
  pebbleInstall: {
    cmd: 'pebble install'
  },
  pebbleLogs: {
    cmd: 'pebble logs'
  }
}

export PEBBLE_PHONE=192.168.1.41 のようにして環境変数 PEBBLE_PHONE を設定しておけば pebble コマンドにスマホの指定が不要になる。自宅の無線LANルータではMACアドレスでIPアドレスを固定にする機能があるのでiPhoneは毎回同じIPアドレスがDHCPで割り振られ PEBBLE_PHONE の設定はdotfileで設定しているので楽。

そんなわけでIntelliJ IDEA + GruntでCloudPebble並にビルドが楽になったのと、CloudPebbleよりローカルでビルド+インストールする方が速かったのでCloudPebbleに移行する気にならなかった。exec:pebbleLogsタスクを実行するとIntelliJ IDEA内でログも確認できるし全ての作業がIDE内で完結する。

あとはPebble2IRKitはSettingsページを使った。Watchappの設定画面はWebサイトとして提供する必要があるからWeb用の開発環境が必要になる。IntelliJ IDEAを使ったのはSettingsページの開発も兼ねたかったという意図もあった。Gitリポジトリもひとつにしてしまったし、Gruntfile.jsのほとんどはSettingsサイトのビルドのためのタスクだったりする。

以上、振り返るとWatchappの開発はIntelliJ IDEA万歳になってしまったわけだが、残念ながらIntelliJ IDEAはC言語のエディタとしては何の役にも立たなかった。Clionプラグインが公開されれば良いんだけど今のところ良さそうなC言語用のプラグインを知らない。

まぁ、どちらかというとJavascriptだけでWatchappを書くほうが生産性は上がるからPebble.jsの方に期待している。今回Pebble.jsで書きなおそうかと思ったけど、Pebble.jsはWatchappの中でかなり泥臭いことをやっているようでPebbleSDKで使う場合はPebble.jsをforkしてそこに実装していかないと行けないという状態だったので諦めた。Pebble.jsはまだBeta版だけど、PebbleSDKに導入されればWebStormで十分ということになるし、このJetBrains製IDEを活用する開発方法の敷居も下がるのでは。

とは言えどちらかというとCloudPebbleに注力している気がするので作るWatchappによってはCloudPebbleも活用した方がいいんだろうなぁと思う。