雑文発散

«前の日記(2015-06-22) 最新 次の日記(2015-06-24)» 編集
過去の日記

2015-06-23 [長年日記]

[Pebble] Pebble のアプリをマルチプラットフォーム化するためのベストプラクティスページがあった

先日、#ifdef でプラットフォーム切り替えの処理が書けるということを知ったのだけれど、そのあたりのやり方をまとめたガイドが Pebble 公式ドキュメント内に存在していた。

オレが使った PBL_PLATFORM_BASALT (もしくは PBL_PLATFORM_APLITE )のやりかたは下記の感じになる。

#ifdef PBL_PLATFORM_BASALT
  // for Pebble Time
#else
  // for Pebble
#endif

この他に、PBL_COLORPBL_BW というマクロもあるようだ。ガイドの中にはこのように使われている。プラットフォームで分けるのではなく、ディスプレイの表示色による切替方法なんだね。

#ifdef PBL_COLOR
  // for Color
#elif PBL_BW
  // for Black and White
#endif

現在の商品構成では、PBL_PLATFOME_BASALT == PBL_COLOR が成り立つけど、将来的には「Basalt プラットフォームでモノクロディスプレイ」なんて製品が出てくるのかも?

それから、色指定に関しては COLOR_FALLBACK() を使って「この色が出せなかった場合にはこっちを使う」みたいなことができた。

window_set_background_color(s_main_window, COLOR_FALLBACK(GColorJaegerGreen, GColorBlack));

こっちの方が #ifdef によるインデントの崩れ(崩れじゃないけど)が少なくなるので、色指定の部分では積極的に使っていきたい。

その他にも、watch_info_get_model() による各モデルの見分けかたとかも載っている。そのサンプルで知ったのだけど、Pebble のモデルによって、ボタンレイアウトが違っているのね。そのサンプルでは「センターボタンの位置に合わせて何かを表示する」ときの使い方が載っている。なるほど、こういうのは、自分で持っているモデルとエミュレータだけでは分からない領域だった。

それにしても Pebble の developer 向けドキュメントは、個別の解説がシンプルだし、カテゴリが整理されていて読みやすい。