By

Ti.Next に向けて Hyperloop を試してみた

Ti.Next はまだまだ先という噂ですが,現時点で試せる Hyperloop を試してみました.

このエントリーをはてなブックマークに追加

こんにちは, @isseium です.
Titanium 界隈では,Titanium の次バージョンのことを Ti.Next と呼んでいます.

hyperloop

主な特徴としては以下が挙げられています.

  • これまでの Titanium のアーキテクチャを大きく変更
  • 大部分はこれまでと同じAPIが使える
  • パフォーマンス向上
  • アプリサイズ削減
  • ネイティブAPI を操作可能
  • Windows をサポート

個人的にはネイティブAPIを Titanium から操作できるというのが気になるところです.
Ti.Next のリリースはまだまだ先という見通しですが,少しずつ動き始めているようです.

詳しくはTiConf NYC で Appcelerator社のCEO Jeff 発表したプレゼンをご覧下さい.(英語)

TiConf NYC 2014 from Jeff Haynie


こんな速くなるらしいですよ

Ti.Next: Conways Game of Life from Tony Lukasavage on Vimeo.

日本語記事だと donayama さんの Introducing Hyperloop 抄訳 や infosia さんのTi.Next Hyperloop - 次世代の Titanium を触ってみる などでその概要を知ることができます.

この記事では,Hyperloop という Ti.Next のコアのひとつとなるであろうコンパイラのインストールとサンプルの実行を試した雑感をまとめたいと思います.

ご注意: この記事の内容は2014年8月25日時点のものであり,Ti.Nextに関する情報は大きく変更される可能性があります

Hyperloop とはなにか?

Hyperloop は,次世代コンパイラのひとつで,JavaScript から iOS/Android などのネイティブアプリケーションのコードに変換するものです. 2014/8/25 の時点では,iOS と Windows 向けコンパイラが利用できる状態となっています.(とはいえ開発版なのでバグなどは当然あるものと考えたほうがよいでしょう)

Hyperloop のソースコード自体はオープンソースになっていて,github で自由に見ることができます.

Titanium の提供元である Appcelerator社のCEO自らが先陣を切って開発を進めています.技術屋のCEOなんですね!

Jeff Haynie              39.4%
Dawson Toth              23.0%
Tony Lukasavage          22.1%
Kota Iguchi              4.2%
Matt Langston            4.0%
Russ McMahon             3.0%
 (以下略)
  
※ 2014/8/25 日現在のコントリビューターとその割合

上記のリポジトリのほかに,各プラットフォームごとのレポジトリなどもgithub上で公開されています.

Hyperloop はあくまで JavaScript から各種プラットフォームのコードを生成するコンパイラであって Titanium ではありません.

Titanium API と Hyperloop の JavaScript (HJS) は分離された別モジュールになるので疎な関係だそうです.現在はまだ Hyperloop の開発がメインで,次世代Titaniumについてはその API階層の指針がCEOのJeffから公開された 程度のようです.

インストールしてみる

github の README には npm でのインストール方法が書いてありましたが,残念ながらこちらは古いバージョンなのかうまく動作できませんでしたので,リポジトリからのインストールをします.リポジトリは 2014/5/30のコミット 時点のものを利用しました.

git clone https://github.com/appcelerator/hyperloop.git
cd hyperloop
npm install
sudo npm link

このリポジトリには example ディレクトリがありまして各プラットフォームごとのサンプルがあります.

$ ls examples/
android/        build/          crossplatform/  ios/            native/         windows/

まだ iOS と Windows のみしかサポートされておらず,私の開発環境は Mac なので,今回は iOS をビルドしてみようと思います.

$ ls  examples/ios/
arraySortWithFunctionPointer/   classExceptions/                memoryarrays/                   subclass/
autoimports/                    customAppdelegate/              modules/                        tableViewController/
backgroundFetch/                distanceTraveled/               nib/                            thisBinding/
build/                          globals/                        opengl/                         touch/
builtins/                       helloworld/                     physics/                        trycatch/
buttonAlert/                    iBeacon/                        simple/                         webglport/
casting/                        life/                           sourcemaps/
chartfx/                        lifegl/                         spritekit/

たくさんのサンプルがあります.

アプリの実行には hyperloop コマンドを利用します.

$ hyperloop launch --src=examples/ios/tableViewController/
[INFO]  Compiling 247 source files
[INFO]  Generated universal library file at build/libApp.a
(以下略)

若干の時間はかかりますが,これを実行しますと iOS シミュレータが立ち上がって,アプリが実行されます.

ただ,なにかのバグなのか,launch 時は必ず真っ黒な画面が表示されました.

iOSシミュレータ上で Shift+Command+H を押していったんホーム画面に戻ってから今回インストールされた「App」というアプリを起動すると正しく表示されました.

おわりに

今回の記事では,次世代 Titanium である Ti.Next でコアとなるであろうコンパイラの「Hyperloop」を使ってiOSサンプルアプリを起動しました.

hyperloop の言語仕様が見当たらなかったのでまだプログラムをするのは辛いのですが,次世代 Titanium この言語で書くわけではないのでコアな開発者以外は特に知る必要はないのかもしれません.

気になったのは, hyperloop になることで

  • コンパイル時間遅くないかな?
  • TiShadow の資産は引き継げるのかな?もしくは類似のことできるかな?
  • Titanium側からネイティブAPIを実行する記法はどうなるのかな?

というあたりです.

引き続き,動向に注目していきたいと思います.