Umi Uyuraのブログ

プログラミング関連の作業ログ

Appcelerator CLIでもLiveView使えました&TiShadowとの比較

前回、Appcelerator StudioでLiveViewを触ってみて、「Studio版TiShadow」とか書いていたのですが。

umi-uyura.hatenablog.com

Q&Aサイトを眺めていたら、どうやらCLIでも使えるらしい?という投稿を発見してしまいました。

Liveview works on Studio, but doesn't work on CLI | Community Q&A

確かに、Appc (Titanium) CLIのリファレンスを改めて見てみると、 titanium build のオプションに --liveview が追加されています。

Titanium Command-Line Interface Reference - Appcelerator Platform - Appcelerator Docs

Enables LiveView allowing you to quickly preview changes to your application's UI. Requires Appcelerator Studio.

というわけで、試したところ、以下のようなコマンドでCLIからもLiveViewを使うことができました。

$ titanium build -p ios --liveview      # or `appc ti build -p ios --liveview`

--target device として端末向けビルドにすることで、実機ともつなげることができました。

Requires Appcelerator Studio.

と書いてありますが、特にStudioが起動するわけではありませんでしたので、EmacsなどのエディタとCLIベースで開発していて、Studioは使っていないような人でも、LiveViewを活用することはできそうです。

前回試した時に、バックグラウンドでnodeプロセスが色々と動いていることに気づきましたが、監視と通知処理のプロセスはStudioと分離されていて、CLIからでも叩けるようになっているということですね。

TiShadowと比較

そうなると、これまで使っていたTiShadowはいらないのかなー?と思ってしまったので、TiShadowを使うメリットなどを考えてみました。

メリット

複数端末へ同時配信できる

まず基本はこれでしょう。

$ ts run を実行するだけで、TiShadow Serverに接続している端末全てに、ビルドされたアプリが配信されます。

Android端末の断片化はもちろん、iOS端末もiPhone 6/6 Plusの登場で徐々に似たような状況になってきているので、一度のビルドで複数種類の端末上で見栄えや動作を確認できるのは、非常に助かります。

LiveViewでも複数端末同時配信はできる

実はLiveViewでも、複数端末に同時配信すること自体はできました。

例えば、LiveViewを有効にしてビルドしたバイナリをあらかじめ端末に入れておき、別の端末やシミュレータにつないでLiveViewを実行してから、最初に入れた端末でもアプリを起動すると、どちらもLiveViewを使うことができます。

ただ、TiShadowの場合はTiShadow Serverへ接続するための明確なインターフェイスがあるのに比べて、LiveViewは有効にして最初にビルドしたタイミングで接続先を自動で設定してしまう(してくれる)ため、IPアドレスが固定な環境でない場合に若干使いにくい気がするので、この点はTiShadowの方が有利ではないかと判断しました。

複数プラットフォームへ同時配信できる

TiShadowの一番のメリットとしては、複数プラットフォームにも同時に更新ができるところでしょうか。

プラットフォームを指定せずに $ ts run を実行している場合は、iOSAndroid両方に向けてビルドと配信をおこないます。

iOSAndroidの両プラットフォームに向けてアプリを作るような場合、両方の見栄えを確認しつつ、UIを構築することなどができます。

アプリを直接インストールする必要がない

LiveViewを使う場合、必ず最初に一度、LiveViewを有効にしたアプリをインストールする必要があります。

TiShadowの場合、TiShadowアプリが入っていれば(そして開発PCと同一ネットワークにいれば)、TiShadow Serverを立ち上げて、そこに接続するだけで、アプリを配信することができますので、例えば複数のメンバーに動かしてみてもらいたい、といった場合に有効だと思います。

TestFlightやDeployGateなどの配信サービスを使うことで軽減できますが、手軽にプロトタイピングを始められるという点では、TiShadowにもメリットがありそうな気がします。

デメリット

事前の準備が必要

TiShadowのデメリットとしては、事前の準備が必要な点でしょうか。

(Studioのインストールはしなくても良いですが)Titaniumの開発環境を構築後、加えてnpmからTiShadowをインストールし、さらにTiShadowのクライアントアプリを生成してビルド、端末へインストールしておく、という準備が必要です。

LiveViewに関しては、Appcelerator Studioで開発できる状態になっていれば使える、つまり公式の開発環境を作れば使えますので、その分手間は少ないと言えます。

あくまでもTiShadowクライアントアプリ上で動くアプリである

この点はTiShadowの少しわかりにくいところですが、TiShadow(クライアントアプリ)上で動いているアプリは、単独でビルドしたものとは違います。

具体的には、ビルドしたプロジェクトの Resources フォルダの中身を転送して、TiShadowアプリ上にアプリを構築することになるので、ガワNativeならぬガワTiShadowのようなものになります。

どのあたりに違いが出てくるかというと、よくあるのは、外部のモジュールを利用する場合やtiapp.xmlの設定を利用するような場合、開発するアプリだけでなく、TiShadowクライアントアプリにも同じモジュールやtiapp.xmlをあらかじめ設定しておく必要が出てきます。

他にも注意点があるようなので、より詳しくは公式サイトの gotchas のあたりをご確認ください。

tishadow | deploy

まとめ

基本的にはLiveViewで良いと思いますが、複数端末(とくに複数人で確認する場合など)や複数プラットフォーム(iOS/Android)向けに開発するのであればTiShadowが良いのでは、という感じでした。