はじめに
本ガイドは、Sencha TouchアプリケーションでSencha Cmdを使用するプロセスを解説します。最初にsencha generate app
コマンドを起動して、アプリケーションを実行して終了します。
本ガイドは、新しいSencha Touchアプリケーションにも既存のSencha Touch 2アプリケーションのアップグレード版にも適用されます。
前提条件
先に進む前に以下のガイドをご覧になることをお勧めします。
新しいアプリケーションの作成
次のコマンドでは、名前空間のMyApp
を持つ新しいアプリケーションを“/path/to/www/myapp”に生成します。
# Make sure the current working directory is the Sencha Touch SDK
cd /path/to/sencha-touch-sdk
sencha generate app MyApp /path/to/www/myapp
また、コマンドライン上でSDKにパスを指定することもできます。
sencha -sdk /path/to/sencha-touch-sdk generate app MyApp /path/to/www/myapp
WebKitベースのブラウザをhttp://localhost/myapp
にポイントすれば、それを試行できます。
おめでとうございます。わずか数秒で完全に動作するSencha Touchアプリケーションを作成しました。
アプリケーションの構造の理解
生成されるアプリケーションは、以下のファイル構造を持たなければなりません:
.sencha/ # Sencha-specific files (for example configuration)
app/ # Application-specific content
sencha.cfg # Configuration file for Sencha Cmd
plugin.xml # Plugin for Sencha Cmd
workspace/ # Workspace-specific content (see below)
sencha.cfg # Configuration file for Sencha Cmd
plugin.xml # Plugin for Sencha Cmd
touch/ # A copy of the Sencha Touch SDK
cmd/ # Sencha Touch-specific content for Sencha Cmd
sencha.cfg # Configuration file for Sencha Cmd
plugin.xml # Plugin for Sencha Cmd
src/ # The Sench Touch source
sencha-touch-*.js # Pre-compiled and bootstrap files
...
app # Your application's source code in MVC structure
controller
model
profile
store
view
Main.js # The main view of the application
resources
css
app.css # The main stylesheet, compiled from app.scss
sass
app.scss # The Sass file which compiles to app.css above,
# includes Sencha Touch theme by default
icons # Application icons for all mobile devices
# When replacing these default images with your own,
# make sure the file name and the dimension stays exactly the same
...
loading # Application start-up screens for iOS devices
# Similarly to icons, make sure the file names and
# dimension stays the same
...
images # Put other images used by your application here
index.html
app.js # Contains application's initialization logic
app.json # Application descriptor
packager.json # Configuration for native packaging
“app.json”も“packager.json”も、設定可能な各アイテムのインラインドキュメンテーションを持っています。単純に開いて、必要に応じて編集します。
アプリケーションの開発
sencha generate
コマンドのファミリーを使用すれば、共通のMVCコンポーネントを素早く生成できるようになります。
重要現在のディレクトリをアプリケーションのルートフォルダにしてください。
例えば、
cd /path/to/www/myapp
sencha generate model User --fields=id:int,name,email
このコマンドは、id
、name
、email
という名の3つのフィールドを持つUser
という新しいModelクラスをapp/model/User.jsに生成し、その参照を“app.js”ファイルに追加します。
アプリケーションのアップグレード
生成されるアプリケーションは、最初に生成されたSDKのコピーを常に備えています。アプリケーションをSDKの新バージョンにアップグレードすると、旧バージョンを新バージョンに交換することが求められます。sencha app upgrade
のコマンドで、これを実行します。
重要 現在のディレクトリをアプリケーションのルートフォルダにしてください。
より完全な例を以下に示します。
cd /path/to/www/myapp
sencha app upgrade /path/to/new_version_of_sdk
アプリケーションの運用
アプリケーションを開発するということは、単純にソースコードを編集してブラウザを更新することを意味します。すべてのソースファイルは、要求に応じて動的にロードされます。関与していないビルドのプロセスはありません。運用時には、Sencha Cmdによって以下の4つのビルド環境オプションが提供されます。
testing
- 生産工程の前の品質保証工程用です。すべてのJavaScriptとCSSソースファイルは結合されますが、最小化はされず、簡単にデバッグできるようにします。package
- Webサーバーを必要としないで、ローカルファイルシステムで正常に実行される自己完結型、再配布可能な製品ビルドを作成します。production
- 通常、Webサーバーでホストされている製品ビルドを作成し、複数のクライアント(デバイス)に提供します。このビルドは、HTML 5のアプリケーションキャッシュを使用してオフライン対応になり、Over-the-Airアップデートを実行できるようになります。native
- 最初にpackage
ビルドを生成してから、それをネイティブアプリケーションへパッケージ化し、ネイティブプラットフォームに配置する準備を整えます。
例として、次のコマンドを実行すると、アプリケーションのtesting
ビルドが生成されます。
重要現在のディレクトリをアプリケーションのルートフォルダにしてください。
cd /path/to/www/myapp
sencha app build testing
同様に、本番展開の準備ができた場合:
cd /path/to/www/myapp
sencha app build production
デフォルトデプロイパスはapp.json
のbuildPaths
から取られます。オプションの引数についての詳細は、以下のコマンドを実行してください。
cd /path/to/www/myapp
sencha help app build
Sencha Cmdでは、以下のようなアプリケーションのすべての最適化が自動化されます。
- アプリケーション読み込みの依存関係の解決、および最適なファイルサイズ/パフォーマンスに使用されるものの正確な追加。
- “cache.manifest”およびリソースチェックサムの自動生成を介したHTML 5のアプリケーションキャッシュの有効化。
- すべてのJavaScriptとCSSのアセットの縮小。
- 最初のロード時のローカルストレージ内のJavaScriptとCSSの全アセットのストア、およびリリース間のdeltaアップデートによるパッチ。
その結果、本番ビルドは最小限のネットワーク転送で後続のアクセスを瞬時にロードし、高速更新することができます。
重要cache.manifest
ファイルは自動で生成されます。Webサーバーがtext/cache-manifest
の正しいContent-Type
ヘッダーでこれを提供していることを確認してください。HTML5アプリケーションキャッシュについての詳細は、HTML5 Rocksのチュートリアルアプリケーションキャッシュを使用するための初心者ガイドを参照してください。
アプリストアでの公開に向けたアプリケーションのパッケージ化
packager.json
は、アプリケーションをパッケージ化するためのすべての設定値が含まれています。
OS Xを使用していて、XCodeをインストールしている場合、以下のコマンドによってアプリケーションがパッケージ化され、iOS Simulator上で実行されます。
sencha app build native
トラブルシューティング
Sencha Cmdの使用における共通の問題については、Sencha Cmdの導入のトラブルシューティングセクションを参照してください。
依存関係の解決中のエラー - パート2
新しいSencha Cmdコンパイラは、デフォルトでは依存関係を決定するために使用されます。旧リリースとは異なり、このコンパイラでは、ソースコード(アプリケーションとフレームワーク)を処理することによって依存関係が決定されます。これは依存関係を見失うことに繋がることがあります。つまり、過去リリースでは自動的に検出されていたものが、コンパイラでは検出できない、ということです。
この場合、解決法として理想的なのは、欠落しているrequires
ステートメントを追加して問題を解決することです。これによって、スイッチングオーバーライドが以下のような新しい名前のあるフォームに追加されます。
Ext.define('MyApp.patches.foo.Bar', {
override: 'Ext.foo.Bar',
...
});
これによって、その名前はオーバーライドを必要とするようになり、コンパイラはオーバーライドを正しい順序で処理するようになります。
その作業を延期する必要がある場合には、バージョン2の互換モード(依存関係を抽出するヘッドレスのWebView内のファイルシステムプロトコルを介したアプリケーションの実行に基づく)を有効化できます。これを行うには、sencha app build
の代わりに次のコマンドを使用します。
sencha config -prop v2deps=true then app build
または、以下の列を“.sencha/app/sencha.cfg”ファイルに追加し、上記のとおりsencha app build
を実行することもできます。
v2deps=true
このレガシーモードで、アプリケーションが動的なサーバーサイドスクリプティング(PHPスクリプトからのクラス設定のロードなど)に依存する場合には、アプリケーションがWebブラウザ上でロードされるURLにapp.json
内のurl
アイテムを設定する必要があります。例えば、
// app.json
{
"url": "http://localhost/myapp/",
// ...
}
これは、コンパイラを予定どおりに最適化してアプリケーションに自動で役立てることができないため、一時的な計測として表示される必要があります。