<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ExtJSで楽しくRIA業務アプリ開発 &#187; 佐竹 裕行</title>
	<atom:link href="http://extjs.blog.sus4.co.jp/author/h-satake/feed/" rel="self" type="application/rss+xml" />
	<link>http://extjs.blog.sus4.co.jp</link>
	<description>株式会社sus4 開発チーム</description>
	<lastBuildDate>Wed, 01 Sep 2010 02:15:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ext.Carouselのインジケーター設定 &#124; Sencha Touch Tips</title>
		<link>http://extjs.blog.sus4.co.jp/2010/09/01/sencha-touch-tips-carousel-indicato/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/09/01/sencha-touch-tips-carousel-indicato/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 02:15:15 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[ExtJSチュートリアルｓｕｓ４版]]></category>
		<category><![CDATA[ExtJS勉強会＠名古屋資料]]></category>
		<category><![CDATA[Sencha Touch]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=786</guid>
		<description><![CDATA[Sencha Touchにはいかにもタッチスクリーン向けなパネルとして、Ext.Carouselがあります。今回はこのExt.Carouselのインジケーターについてのちょっとしたサンプルを紹介します。
インジケーターについての記述はほとんどAPIリファレンスに載っていないので、ソースコードを見ないとわかりません。]]></description>
			<content:encoded><![CDATA[<p>Sencha Touchにはいかにもタッチスクリーン向けなパネルとして、Ext.Carouselがあります。<br />
このパネルはカードレイアウトのパネルの一種で複数のカードを左右（または上下）に一列にならべて、<br />
スワイプジェスチャーによって切り替えることができます。</p>
<p>各カードの下にはインジケーターとして、○がアイテムの数だけ並んで現在のアイテムの位置は●になります。<br />
今回はこのインジケーターの表示/非表示を簡単に切り替えるサンプルです。<br />
インジケーターについての記述はほとんどAPIリファレンスに載っていないので、ソースコードを見ないとわかりません。</p>
<p><a href="http://dev.sencha.com/deploy/touch/docs/?class=Ext.Carousel">Ext.Carousel &#8211; Sencha Touch API Documentation<br />
http://dev.sencha.com/deploy/touch/docs/?class=Ext.Carousel</a></p>
<p><strong>・サンプルコード</strong><br />
<script type="text/javascript" src="http://jsdo.it/blogparts/gDkH/js"></script>
<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://jsdo.it/satake.sus4/gDkH" title="Show/Hide Carousel Indicator">Show/Hide Carousel Indicator &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
<p>インジケーターの初期設定はExt.Carouselのindicatorコンフィグで行えます。</p>
<blockquote><p>
indicator : Boolean<br />
Provides an indicator while toggling between child items to let the user know where they are in the card stack.
</p></blockquote>
<p>APIリファレンスによると受け付けるのはBooleanとのことですが、ソースコードを見ると以下のようになっています。<br />
インジケーターについての記述はこれくらいで、他の情報がありません。なのでソースコードを見ます。</p>
<pre class="brush: js; ">

//Ext.Carouselクラス

    initComponent: function() {
       ・
       ・
       ・
        if (this.indicator) {
            var cfg = Ext.isObject(this.indicator) ? this.indicator : {};
            this.indicator = new Ext.Carousel.Indicator(Ext.apply({}, cfg, {
                direction: this.direction,
                carousel: this,
                ui: this.ui
            }));
        }

        Ext.Carousel.superclass.initComponent.call(this);
    },
   ・
   ・
   ・
</pre>
<p>indicatorコンフィグにオブジェクトが渡された場合、Ext.Carousel.Indicatorクラスのコンフィグオプションとしてバイパスするようになっています。<br />
またCarouselが生成されると、このインスタンスのindicatorにはExt.Caorousel.Indicatorオブジェクトが設定されます。</p>
<p>つまり</p>
<ul>
<li>Ext.CarouselのindicatorコンフィグにはExt.Carousel.Indicatorクラスのコンフィグが渡せる。</li>
<li>Ext.Carouselのindicatorコンフィグにtrueを渡すとデフォルトのExt.Carousel.Indicator、falseだと何も生成しない。</li>
<li>Ext.CarouselオブジェクトのindicatorプロパティによってExt.Carousel.Indicatorオブジェクトが参照できる。</li>
</ul>
<p>Ext.Carousel.IndicatorクラスはExt.Componentのサブクラスなので、Ext.Componentで設定できるコンフィグは受け付けることができます。サンプルコードではインジケーターの初期値にhiddenとshowAnimationを設定しています。</p>
<pre class="brush: js; ">

indicator:{
  hidden:true,
  showAnimation:{
    type:&#039;fade&#039;
  }
}
</pre>
<p>サンプルコードではさらにツールバーの稲妻ボタンで、インジケーターの表示/非表示を切り替えています。</p>
<pre class="brush: js; ">

if (carousel.indicator.isVisible()){
  carousel.indicator.show();
}else{
  carousel.indicator.hide();
}
</pre>
<p>ここではコンフィグで設定した、showAnimationで設定したアニメーションで表示が切り替えられます。ただし現状では非表示するときのアニメーションしか効いてないようです。<br />
インジケーターもコンポーネントとして扱えるので、もっと複雑なことできそうです。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F09%2F01%2Fsencha-touch-tips-carousel-indicato%2F&amp;linkname=Ext.Carousel%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%B1%E3%83%BC%E3%82%BF%E3%83%BC%E8%A8%AD%E5%AE%9A%20%7C%20Sencha%20Touch%20Tips"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/09/01/sencha-touch-tips-carousel-indicato/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ext JS/Sencha Touch入門40　Ajaxリクエスト処理</title>
		<link>http://extjs.blog.sus4.co.jp/2010/08/05/ext-tutorial40/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/08/05/ext-tutorial40/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 02:06:27 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[ExtJSチュートリアルｓｕｓ４版]]></category>
		<category><![CDATA[Sencha Touch]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Ext.Ajax]]></category>
		<category><![CDATA[Ext.Ajax.request]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Toolbar]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[チュートリアル]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=765</guid>
		<description><![CDATA[今回はExt JS,Sencha Touchのどちらでも非常によく使うAaxの処理を紹介します。
サンプルコードはSencha Touchですが、Ajaxリクエストの処理はExt JSでもほぼ同じです。]]></description>
			<content:encoded><![CDATA[<p>今回はExt JS,Sencha Touchのどちらでも非常によく使うAjaxの処理を紹介します。</p>
<p>サンプルコードはSencha Touchですが、Ajaxリクエストの処理はExt JSでもほぼ同じです。<br />
<div id="attachment_774" class="wp-caption aligncenter" style="width: 208px"><a href="http://extjs.blog.sus4.co.jp/files/2010/08/picture-8.png" title="Ajax サンプル" rel="lightbox[765]"><img src="http://extjs.blog.sus4.co.jp/files/2010/08/picture-8-198x300.png" alt="Ajax サンプル" title="Ajax サンプル" width="198" height="300" class="size-medium wp-image-774" /></a><p class="wp-caption-text">Ajax サンプル</p></div></p>
<p>まずAjaxでリクエストする先を用意する必要があります。<br />
今回はPHPで作成しました。<br />
<strong>・PHP</strong></p>
<pre class="brush: php; ">

&lt;?php
//サンプル

//3秒待つ
sleep(3);

//POST値の処理
$param = $_POST[&#039;id&#039;];
$res[&#039;id&#039;] = $param;

if ($param) {
    $res[&#039;success&#039;] = true;
}else {
    $res[&#039;success&#039;] = false;
}

//JSONで返す
header(&#039;Content-Type: application/json&#039;);
echo json_encode($res);
die();
?&gt;
</pre>
<p>3秒処理を遅らせています。<br />
レスポンスにはJSON形式でPOSTされた情報とサーバーサイドでの処理が正しく終わったらsuccessにtrueを返すようにしています。</p>
<p>HTMLファイルはSencha Touchの基本形のものでよいです。<br />
<strong>・HTML</strong></p>
<pre class="brush: html; ">

&lt;!DOCTYPE html&gt;
&lt;html manifest=&quot;index.manifest&quot;&gt;
&lt;head&gt;
    &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
    &lt;title&gt;Ajax Sample&lt;/title&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../st/resources/css/ext-touch.css&quot; type=&quot;text/css&quot;&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;../../st/ext-touch-debug.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;index.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>今回のサンプルではパネルをひとつ作ってツールバー上に、Ajaxリクエストをキックするボタンを配置します。このボタンをタップするとAjax リクエストが実行されるようにします。</p>
<p>・Javascript</p>
<pre class="brush: js; ">

Ext.setup({
    onReady: function() {

        //リクエスト処理
        var ajax = function(callback) {
            //ローディングマスク
            panel.el.mask(
                false,
                &#039; &lt;div style=&quot;margin:50% auto; text-align:center;color:#EEE;&quot;&gt;&lt;img src=&quot;loader.gif&quot;/&gt; &lt;br /&gt;お待ちください...&lt;/div&gt;&#039;);

            //Ajax リクエスト
            Ext.Ajax.request({
                url:&#039;post.php&#039;,
                params:{
                    id:&#039;test&#039;
                },
                success:function(result,opt){
                    //マスクを外す
                    panel.el.unmask();
                    var res = Ext.decode(result.responseText);
                    if (res.success) {
                        window.alert(&#039;Success&#039;);
                        if (Ext.isFunction(callback)) {callback()};
                    }
                },
                failure:function(result,opt){
                    window.alert(&#039;リクエスト失敗。ネットワーク接続を確認してください。&#039;);
                }
            });
        };

        //パネルの生成
        var panel = new Ext.Panel({
            fullscreen: true,
            styleHtmlContent:true,
            dockedItems:[
                {
                    xtype:&#039;toolbar&#039;,
                    dock:&#039;top&#039;,
                    items:[
                        {
                            ui:&#039;mask&#039;,
                            iconCls:&#039;action&#039;,
                            handler:function(){
                                //コールバック関数
                                var callback = function(){
                                    panel.update(&#039;Success!&#039;);
                                };

                                //Ajax処理実行
                                ajax(callback);
                            }
                        }
                    ]
                }
            ],
            html:&#039;Ajax Request Sample&#039;
        });
    }
});
</pre>
<p>前回のHello, World　+ Tbarのサンプルによく似ていますが、今回はxtypeでツールバーを作成しています。<br />
xtypeについては<a target="_blank" href="http://extjs.blog.sus4.co.jp/2009/11/11/extjs-tutorial5/">コチラ</a></p>
<p>ボタンのコンフィグオプションで<br />
ui:&#8217;mask&#8217;,<br />
iconCls:&#8217;action&#8217;<br />
が設定されています。iconClsではボタンに配置する画像をCSSで設定できますが、今回はSencha Touchに予め用意されているactionクラスをそのまま使います。<br />
Sencha Touchのパッケージ内のexamplesのiconsサンプルをみるとどんなアイコンがあるのかが分かります。</p>
<p><strong>Ajax リクエスト処理</strong><br />
Ext JSおよびSencha TouchではExt.Ajaxクラスを使用してAjax処理を行ないます。このクラスはシングルトンですので、Ajax処理を呼びたい箇所でExt.Ajaxのrequestメソッドを呼び出します。パラメーターはURLなので設定はオブジェクトで渡します。</p>
<p><strong>・Ext.Ajax.request</strong><br />
Ext.Ajax.requestの引数に渡しているもの</p>
<ul>
<li>url:(String)リクエスト先のURL</li>
<li>params:(Object) パラメータ</li>
<li>success:(Function) Ajaxリクエスト成功時のコールバック関数</li>
<li>failure:(Function) Ajaxリクエスト失敗時のコールバック関数 </li>
</ul>
<p>最も単純なAjaxリクエストへ渡す設定は上の4つのものになります。<br />
paramsに設定されているパラメータをurlの先にPOSTして,正しいレスポンスが返ってきたときにsuccessに設定されているコールバック関数が実行されます。リクエスト自体が失敗した場合(404などが返ってきた場合。)にfailureに設定されているコールバックが実行されます。</p>
<p>サンプルではajaxという関数にAjaxの処理をまとめています。<br />
Ext.Ajax.request()の部分で実際にAjaxを実行します。</p>
<p>ajax関数の中では、リクエスト中に画面全体にマスクを掛ける処理を、行っています。</p>
<p><strong>・ローディングマスク</strong><br />
<div id="attachment_775" class="wp-caption aligncenter" style="width: 208px"><a href="http://extjs.blog.sus4.co.jp/files/2010/08/picture-10.png" title="ローディングマスク" rel="lightbox[765]"><img src="http://extjs.blog.sus4.co.jp/files/2010/08/picture-10-198x300.png" alt="ローディングマスクを表示" title="ローディングマスク" width="198" height="300" class="size-medium wp-image-775" /></a><p class="wp-caption-text">ローディングマスクを表示</p></div></p>
<pre class="brush: js; ">

panel.el.mask(
                false,
                &#039; &lt;div style=&quot;margin:50% auto; text-align:center;color:#EEE;&quot;&gt;&lt;img src=&quot;loader.gif&quot;/&gt; &lt;br /&gt;お待ちください...&lt;/div&gt;&#039;);
</pre>
<p>Ext.Elementのmaskメソッドでそのエレメントにマスクをかける処理を実行します。Ext JSとSencha Touchでは引数が違うので注意が必要です。<br />
Sencha Touchのマスク処理はスタイルがあんまり良くないので、独自で設定する必要があります。ローディング用の画像もないので適当なものを用意する必要があります。今回はこんなのGifアニメを作って設定しています。<br />
<div id="attachment_769" class="wp-caption aligncenter" style="width: 62px"><a href="http://extjs.blog.sus4.co.jp/files/2010/08/loader.gif" title="loader" rel="lightbox[765]"><img src="http://extjs.blog.sus4.co.jp/files/2010/08/loader.gif" alt="ローディング用Gifアニメ" title="loader" width="52" height="52" class="size-full wp-image-769" /></a><p class="wp-caption-text">ローディング用Gifアニメ</p></div></p>
<p>マスクを外すときは同様にExt.Elementのunmaskメソッドで行ないます。サンプルでは<br />
successのコールバックの中でpanel.elをunmaskを実行しています。</p>
<pre class="brush: js; ">

success:function(result,opt){
　//マスクを外す
　panel.el.unmask();
　　　　　・
　　　　　・
　　　　　・
}
</pre>
<p><strong>・コールバック処理</strong></p>
<pre class="brush: js; ">

success:function(result,opt){
  //マスクを外す
  panel.el.unmask();
  var res = Ext.decode(result.responseText);
  if (res.success) {
    window.alert(&#039;Success&#039;);
    if (Ext.isFunction(callback)) {callback()};
  }
},
failure:function(result,opt){
  window.alert(&#039;リクエスト失敗。ネットワーク接続を確認してください。&#039;);
}
</pre>
<p>リクエスト成功/失敗時はwindow.alertを使って結果を表示してます。<br />
また今回のサンプルではsuccess時にさらに呼び出し元でコールバックを設定して、パネル内の要素を&#8221;Success&#8221;に書き換えています。</p>
<p><strong>・レスポンスボディーの取り出し</strong><br />
successのコールバックの第一引数にレスポンスがオブジェクトとして渡されます。<br />
サンプルではresultという名前に設定しています。resultの中のresponseTextにレスポンスのボディーが格納されています。<br />
サンプルのPHPの場合ではJSONの文字列を返しています。レスポンスボディーはそのままではただのテキストです、そのため文字列からJSONに変換する必要があります。<br />
Sencha TouchでもExt JSと同じようにExt.util.JSONクラスを使ってJSONの変換を行います。<br />
今回は文字列からオブジェクトへの変換(JSON.decode)処理を使います。</p>
<pre class="brush: js; ">

success:function(result,opt){
  //文字列からオブジェクトに変換する
  var res = Ext.decode(result.responseText);

  //resはオブジェクトとして扱えるようになる。
  if (res.success) {
    window.alert(&#039;Success&#039;);
   　　・
　　　・
　　　・
  }
}
</pre>
<p>Ext.decodeはExt.util.JSON.decodeへのエイリアスです。Ext.decodeで呼び出した方が簡素なのでこちらを使っています。<br />
このExt.decodeを使ってレスポンスボディの文字列をJavascriptのオブジェクトとして扱えるように変換します。<br />
変換されたレスポンスボディはオブジェクトとして扱えるので、res.successのようにドットシンタックスで任意のプロパティ値を取得できるようになります。</p>
<p>以上、Ext.Ajax.requestの簡単な使い方です。詳しくはAPIリファレンスをご覧ください。<br />
<a target="_blank" href="http://www.sencha.com/deploy/touch/docs/?class=Ext.Ajax">Sencha Touch API Documentation<br />
http://www.sencha.com/deploy/touch/docs/?class=Ext.Ajax</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F08%2F05%2Fext-tutorial40%2F&amp;linkname=Ext%20JS%2FSencha%20Touch%E5%85%A5%E9%96%8040%E3%80%80Ajax%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E5%87%A6%E7%90%86"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/08/05/ext-tutorial40/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7月のExt JS勉強会（東京）「Sencha Touchのはじめかた　」まとめ</title>
		<link>http://extjs.blog.sus4.co.jp/2010/07/29/tutorial-tokyo-20100728/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/07/29/tutorial-tokyo-20100728/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 11:52:18 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[dockedItems]]></category>
		<category><![CDATA[Ext.Panel]]></category>
		<category><![CDATA[Ext.Toolbar]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[HelloWorld]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[Sencha Touch]]></category>
		<category><![CDATA[勉強会]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=741</guid>
		<description><![CDATA[7月のExt JS勉強会（東京）のまとめ
]]></description>
			<content:encoded><![CDATA[<p><div style="margin-left: 1em; float: right;"><script type="text/javascript"><!--
google_ad_client = "pub-9023017642999258";
/* 336x280, ExtJS Blog 09/11/15 */
google_ad_slot = "7497179445";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<p>7月の勉強会(東京)のまとめになります。</p>
<hr />開発環境<br />
→　好きなやり方。とりあえずささっと試したいならjsdo.itがおすすめ。コードの共有もできる。デバイスに依存しない部分なら結構使える。</p>
<p>検証機(タッチパネルデバイス)<br />
→　iPhone 3GS以降 or iPad　が無難。Mac があるならiPhone　シュミレーターが一番安定している。iPhone 3G,Android端末は微妙。</p>
<p>APIリファレンス<br />
→　発表し忘れ項目。Sencha Touchを学ぶうえで公式のAPIリファレンスはとても重要。Ext JSほど充実していないが、サンプルコードも載っているのですごく参考になります。Sencha Touchのパッケージにも入っていますが、以下のURLで見れます。もちろん英語です。<br />
<a href="http://www.sencha.com/deploy/touch/docs/">http://www.sencha.com/deploy/touch/docs/</a></p>
<p>本家フォーラム<br />
→　Sencha はExt の頃からforumで活発な議論が交わされています。Sencha のメンバーからのリプライも早いので、バグっぽいものを見つけたらとりあえずforum内を見てみると以外とすでに質問があがっていたりします。Sencha Touchのライブラリ自体に怪しい部分がたくさんあるので、困ったら覗いてみると良いかもしれません。<br />
<a href="http://www.sencha.com/forum/">http://www.sencha.com/forum/</a></p>
<p><span id="more-741"></span></p>
<p><strong>Hello,World!</strong><br />
とにかく短い行数でSencha Touchアプリを書く。<br />
HTML + JSで30行くらいかけば、とりあえずSencha Touchで動くWebアプリになっている。<br />
XCodeのプロジェクトテンプレートのviewベースのテンプレートのようなものを目指しました。<br />
コードはjsdo.itにあがっている Hello, World!になります。<br />
勉強会当日のサンプルコード間違ってました。すいません。jsdo.it上も修正済みです。</p>
<p><script src="http://jsdo.it/blogparts/dPu2/js" type="text/javascript"></script></p>
<p><a title="Hello, World!" href="http://jsdo.it/satake.sus4/dPu2">Hello, World! &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
<p>多くのSench TouchのHTMLは以下のようにシンプルなものになります。<br />
 <strong>・HTML</strong></p>
<pre class="brush: html; ">

 &lt;html&gt;
 &lt;head&gt;
 &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
 &lt;title&gt;helloworld&lt;/title&gt;
 &lt;!-- 1. Sencha Touch CSSの読み込み--&gt;
 &lt;link rel=&quot;stylesheet&quot; href=&quot;st/resources/css/ext-touch.css&quot; type=&quot;text/css&quot;&gt;
 &lt;!-- 2. Sencha Touch ライブラリの読み込み--&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;st/ext-touch-debug.js&quot;&gt;&lt;/script&gt;
 &lt;!-- 3. Sencha Touch アプリケーションの読み込み--&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;main.js&quot;&gt;&lt;/script&gt;
 &lt;/head&gt;
 &lt;body&gt;&lt;/body&gt;
 &lt;/html&gt;
</pre>
<p>この中でやることは3つ。</p>
<ul>
<li>Sencha TouchのCSSを読み込む</li>
<li>Sencha TouchのJSを読み込む(3種類から選べるますが,ext-touch-debug.js)</li>
<li>自分のアプリケーションのJSファイル</li>
</ul>
<p>Sencha Touchの中には3種類のライブラリがあります。ext-touch.jsが本番用の圧縮されたライブラリです。<br />
 運用環境ではこのライブラリを使うとファイル読み込みファイルが小さくなります。<br />
 ただし、難読化されているのでライブラリ中のバグが見つけにくくなります。開発中は-debugのついた2つのライブラリから選択するが無難です。<br />
 ext-touch-debug.jsとext-touch-debug-w-comments.jsはファイル名の通りコメントがあるかないかの違いがあります。コメント付きは当然ファイルが大きくなるので、ext-touch-debug.jsを選んでおくとちょうどよいかもしれません。</p>
<p>ではmain.jsの中を見ていきます</p>
<p><strong>・javascript</strong></p>
<pre class="brush: js; ">

 Ext.setup({
 onReady: function() {
 var panel = new Ext.Panel({
 fullscreen: true,
 styleHtmlContent:true,
 html:&#039;Hello, Sencha Touch!!&#039;
 });
 }
 });
</pre>
<p>これだけです。なるべくよけいな物を排除しました。ポイントはExt.setup()とその引数のオブジェクトです。複雑なアプリを作る場合でも、このサンプルのような処理を必ず行います。</p>
<p>Ext.setup()でアプリの起動時の動作を定義します。引数にアプリの基本設定をオブジェクトの形式で渡します。(オブジェクトリテラル)</p>
<pre class="brush: js; ">

 Ext.setup(
 {
 //オブジェクトリテラル
 }
 );
</pre>
<p>Ext JSおよびSencha Touchではこのオブジェクトでコンポーネントの基本設定を記述する方法をよく取ります。</p>
<p>引数に渡されているオブジェクトはこんな感じです。</p>
<pre class="brush: js; ">

 {
 onReady: function() {
 //起動の処理
 }
 }
</pre>
<p> onReadyというプロパティに関数をセットしています。この関数がSencha Touchアプリの起動ポイントになります。複雑なアプリでも基本的にこのonReadyに設定されている部分から処理が始まっていきます。</p>
<p>さらに、その処理の中身をみると、以下のようになっています。</p>
<pre class="brush: js; ">

 var panel = new Ext.Panel({
 fullscreen: true,
 styleHtmlContent:true,
 html:&#039;Hello, Sencha Touch!!&#039;
 });
</pre>
<p> panelという変数で新しいExt.Panelを作成しています。このパネルの引数にもパネルの初期設定がオブジェクトが渡されています。<br />
 ここで今回のサンプルの基本となるパネルを作成します。Sencha Touchでは様々なパネルが用意さていますが、このサンプルでは最も基本的なExt.Panelクラスのパネルを作成しています。<br />
 Ext.Panelクラスにはコンフィグオプションと呼ばれるもので作成するパネルを定義することができます。new Ext.Panel()の引数に渡されてるオブジェクトの中身が今回作成するExt.Panelのコンフィグオプション設定になります。<br />
 コンフィグオプションはクラスごとにあらかじめ定義されている、<br />
 特別なオプションのことでAPIリファレンスを見るとどのクラスがどんなコンフィグオプションを持っているかが分かります。<br />
 <a href="http://extjs.blog.sus4.co.jp/files/2010/07/picture-5.png" title="Ext.PanelのAPIリファレンス" rel="lightbox[741]"><img class="aligncenter size-medium wp-image-746" title="Ext.PanelのAPIリファレンス" src="http://extjs.blog.sus4.co.jp/files/2010/07/picture-5-300x201.png" alt="Ext.PanelのAPIリファレンス" width="300" height="201" /></a><br />
 <a href="http://www.sencha.com/deploy/touch/docs/?class=Ext.Panel">http://www.sencha.com/deploy/touch/docs/?class=Ext.Panel</a><br />
 今回のサンプルではfullscreen,styleHtmlContent,htmlの３つだけを使っています。</p>
<p>・fullscreen:boolean パネルのwidthとheightを可能であれば100%に設定する。初期値false。これをtrueにするとmonitorOrientationのコンフィグが強制的にtrueに設定されるそうです。</p>
<p>・styleHtmlContent:多分boolean(APIリファセンス間違ってる) 自動的にHTMLコンテンツ用のスタイルを適応します。初期値はfalse。これをtrueにするとSencha Touchで定義されているパネルないHTMLコンテンツ用のスタイルを設定します。パネルの内容がコンポーネント等でなくHTMLの時はtrueにしておくと良いようです。具体的には以下のCSSがパネルのHTML要素に設定されます。</p>
<blockquote><p>
-webkit-user-select: auto;<br />
 color: #333;<br />
 font-size: 0.8em;<br />
 line-height: 1.5;<br />
 padding: 1.5em;</p></blockquote>
<p>・html:パネル内のHTMLコンテンツを設定。パネルがレンダリングされた後にこのHTMLが描画されます。</p>
<p>以上がHello, Worldサンプルのためのすべてのコードになります。<br />
 jsdo.it上であればHTMLファイルの方を記述する必要がないので、javascriptを10行書いて、Sencha Touchのライブラリ(jsとcss)を追加すればおしまいです。</p>
<p><strong>・実行結果</strong><br />
 <a href="http://extjs.blog.sus4.co.jp/files/2010/07/picture-7.png" title="Hello, World" rel="lightbox[741]"><img class="aligncenter size-medium wp-image-748" title="Hello, World" src="http://extjs.blog.sus4.co.jp/files/2010/07/picture-7-207x300.png" alt="Hello, World" width="207" height="300" /></a></p>
<p><strong>Hello,Worldにツールバーを追加するサンプル<br />
 </strong><br />
 <script src="http://jsdo.it/blogparts/z1IF/js" type="text/javascript"></script></p>
<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a title="Hello, World + tbar" href="http://jsdo.it/satake.sus4/z1IF">Hello, World + tbar &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
<p><strong>・HTML</strong><br />
同じ</p>
<p><strong>・Javascript</strong></p>
<pre class="brush: js; ">

Ext.setup({
onReady: function() {
//dockするアイテム
var tbar = new Ext.Toolbar({
dock:&#039;top&#039;,　//dockする場所,
title:&#039;Hello, World&#039;,　//Toolbarの見出し
items:[
{
text:&#039;ボタン&#039;
}
]
});

//Dock先
var panel = new Ext.Panel({
fullscreen: true,
styleHtmlContent:true,
dockedItems:tbar,　//ここでtbarをdockedItemsに設定。
html:&#039;Hello, Sencha Touch!!&#039;
});
}
});
</pre>
<p>つぎにHello,Worldにツールバーを追加します。Ext JSではtbarというコンフィグオプションで設定していました。Sencha TouchではdockeItemsというコンフィグで設定します。<br />
APIリファレンスによると<br />
dockedItems:このパネルにドックされるコンポーネントまたはコンポーネントのまとまり(配列)<br />
となっています。<br />
コンポーネントであればなんでも設置できそうです。ここにExt.Toolbarオブジェクトを渡すことでiPhoneぽいUIのツールバーをパネルに追加できます。<br />
まずExt.Toolbarを作成します。</p>
<pre class="brush: js; ">

//dockするアイテム
var tbar = new Ext.Toolbar({
dock:&#039;top&#039;,　//dockする場所,
title:&#039;Hello, World&#039;,　//Toolbarの見出し
items:[
{
text:&#039;ボタン&#039;
}
]
});
</pre>
<p>Ext.Toolbarにも様々なコンフィグオプションがあります。詳しくはAPIリファレンスで確認してください。ここではdock,title,itemsの3つを設定します。<br />
<a href="http://www.sencha.com/deploy/touch/docs/?class=Ext.Toolbar">http://www.sencha.com/deploy/touch/docs/?class=Ext.Toolbar</a></p>
<p>・dock：String(ドックさせる場所)。APIリファレンスに載っていませんが、親パネルのどの位置に自分を設置するかを指定します。選べる位置は4種類,top,bottom,left,rightです。<br />
・title：String このツールバーの見出しのテキストを設定します。<br />
・items：Object/Array　このツールバーの子の要素を設定します。</p>
<p>今回のサンプルではExt.Toolbarのitemsにnew したクラスでなくオブジェクトを渡しています。今のところはサンプルのように書けばボタンが作れると思っておいてよいです。そのうちブログでも取り上げるかもしれません。defaultsコンフィグとxtypeでボタンを生成しています。こちらの記事を参考にしていただけるよいかもしれません。<br />
<a href="http://extjs.blog.sus4.co.jp/2009/11/11/extjs-tutorial5/">http://extjs.blog.sus4.co.jp/2009/11/11/extjs-tutorial5/</a></p>
<p>これでExt.Toolbarがtbarという変数で作成できたので、これをパネルのdockedItemsに設定します。</p>
<pre class="brush: js; ">

//Dock先
var panel = new Ext.Panel({
fullscreen: true,
styleHtmlContent:true,
dockedItems:tbar,　//ここでtbarをdockedItemsに設定。
html:&#039;Hello, Sencha Touch!!&#039;
});
</pre>
<p><strong>・実行結果</strong><br />
<a href="http://extjs.blog.sus4.co.jp/files/2010/07/picture-6.png" title="Hello, Worldにツールバーを追加" rel="lightbox[741]"><img class="aligncenter size-medium wp-image-747" title="Hello, Worldにツールバーを追加" src="http://extjs.blog.sus4.co.jp/files/2010/07/picture-6-200x300.png" alt="Hello, Worldにツールバーを追加" width="200" height="300" /></a></p>
<p>ツールバーがあるだけで、iPhoneアプリっぽくなりました。<br />
Sencha Touchアプリの基本は今回のHello, Worldになります。これを改造していくことでより複雑なアプリが作れるようになります。Sencha Touch付属のexamplesの中を眺めてみるとよいかもしれません。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F07%2F29%2Ftutorial-tokyo-20100728%2F&amp;linkname=7%E6%9C%88%E3%81%AEExt%20JS%E5%8B%89%E5%BC%B7%E4%BC%9A%EF%BC%88%E6%9D%B1%E4%BA%AC%EF%BC%89%E3%80%8CSencha%20Touch%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F%E3%80%80%E3%80%8D%E3%81%BE%E3%81%A8%E3%82%81"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/07/29/tutorial-tokyo-20100728/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sencha Touch 入門:Sencha Touchのはじめかた（Ext JS &amp; Sencha Touch勉強会7月＠東京）のサンプルコード</title>
		<link>http://extjs.blog.sus4.co.jp/2010/07/27/sencha-studygroup-tokyo20100728/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/07/27/sencha-studygroup-tokyo20100728/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 12:27:19 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[dockedItems]]></category>
		<category><![CDATA[Ext.Carousel]]></category>
		<category><![CDATA[Ext.Toolbar]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[jsdo.it]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[Sencha Touch]]></category>
		<category><![CDATA[勉強会]]></category>
		<category><![CDATA[勉強会まとめ]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=736</guid>
		<description><![CDATA[2010/7/25のExt JS &#038; Sencha Touch勉強会7月＠東京でのsus4　佐竹の担当箇所のSencha Touch入門篇で使うサンプルコードをjsdo.itで公開しました。]]></description>
			<content:encoded><![CDATA[<p>2010/7/25のExt JS &amp; Sencha Touch勉強会7月＠東京でのsus4　佐竹の担当箇所のSencha Touch入門篇で使うサンプルコードをjsdo.itで公開しました。<br />
明日の勉強会では、PCのブラウザでも動作するサンプルばかりですので、jsdo.it上でも動作を確認できます。<br />
また簡単なサンプルばかりですので、forkしていただいて実際に手を動かしてももらうとより理解が深まると思います。<br />
勉強会では持ち時間的に２,３つしか紹介できないと思います。<br />
勉強会のアジェンダはこちらです。</p>
<p><a href="http://extjs.blog.sus4.co.jp/2010/07/27/getting-started-width-sencha-touch-tokyo/">Sencha Touch 入門: Ext JS &amp; Sencha Touch勉強会7月＠東京(2010/7/25 )のアジェンダ</a></p>
<p><strong>Sencha Touchのはじめかたサンプルコード</strong></p>
<p><strong>Sencha Hello, World!</strong><br />
<script src="http://jsdo.it/blogparts/dPu2/js" type="text/javascript"></script> <a title="Hello, World!" href="http://jsdo.it/satake.sus4/dPu2">Hello, World! &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
<hr />
<span id="more-736"></span><br />
<strong>Sencha Hello, World! + tbar</strong> <script src="http://jsdo.it/blogparts/z1IF/js" type="text/javascript"></script></p>
<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a title="Hello, World + tbar" href="http://jsdo.it/satake.sus4/z1IF">Hello, World + tbar &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
<hr />
<p><strong>Sencha Touch Complex Docked Items</strong><br />
<script src="http://jsdo.it/blogparts/eh7b/js" type="text/javascript"></script> <a title="Sencha Touch Complex Docked Items" href="http://jsdo.it/satake.sus4/eh7b">Sencha Touch Complex Docked Items &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a> </p>
<hr />
<p><strong>Sencha Carousel (Edit)</strong><br />
<script src="http://jsdo.it/blogparts/czlu/js" type="text/javascript"></script></p>
<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a title="Sencha Carousel (Edit)" href="http://jsdo.it/satake.sus4/czlu">Sencha Carousel (Edit) &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
<hr />
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F07%2F27%2Fsencha-studygroup-tokyo20100728%2F&amp;linkname=Sencha%20Touch%20%E5%85%A5%E9%96%80%3ASencha%20Touch%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F%EF%BC%88Ext%20JS%20%26%23038%3B%20Sencha%20Touch%E5%8B%89%E5%BC%B7%E4%BC%9A7%E6%9C%88%EF%BC%A0%E6%9D%B1%E4%BA%AC%EF%BC%89%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/07/27/sencha-studygroup-tokyo20100728/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sencha Touch 入門: Ext JS &amp; Sencha Touch勉強会7月＠東京(2010/7/25 )のアジェンダ</title>
		<link>http://extjs.blog.sus4.co.jp/2010/07/27/getting-started-width-sencha-touch-tokyo/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/07/27/getting-started-width-sencha-touch-tokyo/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 05:44:06 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[ExtJSチュートリアルｓｕｓ４版]]></category>
		<category><![CDATA[Sencha Touch]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[チュートリアル]]></category>
		<category><![CDATA[勉強会]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=732</guid>
		<description><![CDATA[2010/7/25のExt JS &#038; Sencha Touch勉強会7月＠東京でのsus4　佐竹の担当箇所のSencha Touch入門篇アジェンダです。
]]></description>
			<content:encoded><![CDATA[<p><div style="margin-left: 1em; float: right;"><script type="text/javascript"><!--
google_ad_client = "pub-9023017642999258";
/* 336x280, ExtJS Blog 09/11/15 */
google_ad_slot = "7497179445";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<p>2010/7/25のExt JS &amp; Sencha Touch勉強会7月＠東京でのsus4　佐竹の担当箇所のSencha Touch入門篇アジェンダです。</p>
<p>時間と場所は下記の通りです。残念ながら既に定員に達しているようです。<br />
当日はUstreamでも配信も予定されているようですので、こちらでご覧ください。<br />
<a href="http://www.ustream.tv/channel/extjapan" target="_blank">http://www.ustream.tv/channel/extjapan</a><br />
以下 Ext Japanブログより転載</p>
<blockquote><p>日時：2010年7月28日（水）19:00～21:00（18:45開場）<br />
募集人数：45名<br />
場所：東京都港区東新橋1-9-1 東京汐留ビルディング9Fソフトバンク株式会社内（今回はいつもと会場が違いますので、ご注意ください。）<br />
参加費：無料<br />
アジェンダ：<br />
Senchaへのブランド変更について（直鳥）<br />
Sencha Touch入門（株式会社sus4 佐竹様）<br />
Sencha TouchとYubizoで作るネイティブアプリ（株式会社アイキューブドシステムズ 佐々木様）<br />
SpreadOfficeとSencha Touch（小堤）<br />
ホワイトクラウド シェアードHaaSのご紹介（ソフトバンクテレコム株式会社 加藤様）</p></blockquote>
<p>&#8212;&#8211;</p>
<p><strong>Sencha Touch入門：Sencha Touchのはじめかた　佐竹裕行 &#8211; 株式会社sus4</strong></p>
<p><strong>・Sencha TouchでつくるiPhone/iPadアプリ</strong></p>
<p><strong>・Sencha Touchの環境</strong><br />
エディタ等<br />
デバッグコンソール</p>
<p><strong>・Hello, World!</strong><br />
Sencha Touchのアプリを作る。<br />
HTML + JS合わせても30行くらいで<br />
APIリファレンス、デバッグ環境など</p>
<p><strong>・付属サンプルCarouselの解説</strong><br />
以前書いたブログの記事ベースにもう少し詳しく、Sencha Touchアプリの作り方を紹介します。<br />
<a href="http://extjs.blog.sus4.co.jp/2010/06/28/sencha-ex-carousel/" target="_blank">http://extjs.blog.sus4.co.jp/2010/06/28/sencha-ex-carousel/</a></p>
<p>&#8212;&#8211;</p>
<p>時間的にSencha Touchのさわり位しかできないと思いますが、<br />
実際に手を動かしてSencha Touchを作ることと、その際のTipsが紹介できれば良いかなと思います。<br />
APIリファレンスの読み方、フォーラム利用等。<br />
内容はできるだけ簡単にして、ExtJSを知らなくても分かる内容です。<br />
まさに入門という内容で、サンプルもできる限り簡単なものにしました。<br />
Hello,World!に至ってはHTML + JS合わせても30行程度コードを書くだけです。<br />
Sencha Touchの開発の雰囲気がつかめれば良いかなと思っています。<br />
またSencha Touchのパッケージに含まれるexamplesを自力で読めるようになるのが目標です。</p>
<p><strong>事前の準備しておくと良いもの：</strong><br />
・Sencha Touch ライブラリのダウンロード<br />
<a href="http://extjs.co.jp/products/touch/" target="_blank">http://extjs.co.jp/products/touch/</a></p>
<p>・iPhone、iPad、Androidでバイスの実機　もしくは　XCode付属iPhoneシュミレーター<br />
Android,iPhone 3G以下はあまりおすすめできません。<br />
XCodeはダウンロードに数GBかかるので事前にインストールしておくいていただくとスムーズです。</p>
<p>・ExtJS自体を知らない方はこのブログのチュートリアルの以前の記事を読んでおいていただけると良いかと思います。<br />
<a href="http://extjs.blog.sus4.co.jp/2009/10/29/勉強会ext-onreadyからはじめるextjsのまとめ/" target="_blank">勉強会ext-onreadyからはじめるextjsのまとめ</a><br />
<a href="http://extjs.blog.sus4.co.jp/tag/sencha-touch/">sus4 Ext JSブログ内Sencha Touchの記事</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F07%2F27%2Fgetting-started-width-sencha-touch-tokyo%2F&amp;linkname=Sencha%20Touch%20%E5%85%A5%E9%96%80%3A%20Ext%20JS%20%26%23038%3B%20Sencha%20Touch%E5%8B%89%E5%BC%B7%E4%BC%9A7%E6%9C%88%EF%BC%A0%E6%9D%B1%E4%BA%AC%282010%2F7%2F25%20%29%E3%81%AE%E3%82%A2%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%80"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/07/27/getting-started-width-sencha-touch-tokyo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sencha Touch入門:Sencha Touch の付属サンプルCarouselを使ってSencha Touchのコツをつかむ</title>
		<link>http://extjs.blog.sus4.co.jp/2010/06/28/sencha-ex-carousel/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/06/28/sencha-ex-carousel/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 06:39:24 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[ExtJSチュートリアルｓｕｓ４版]]></category>
		<category><![CDATA[Sencha Touch]]></category>
		<category><![CDATA[Carousel]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[Ext.setup()]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[onReady]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[チュートリアル]]></category>
		<category><![CDATA[レイアウト]]></category>
		<category><![CDATA[入門]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=712</guid>
		<description><![CDATA[Sencha Touch入門




Sencha Touch に付属するでもCarouselを見ながら、基本的なSencha Touchの使い方を紹介します。
コードは配布されているSencha Touchパッケージの/examples/carousel　にあります。
ここではindex.htmlについては,前回の記事をごらんください。
index.jsをお好きなエディタで開きながらご覧下さい。
iPad or iPhoneがあるとなおよいと思います。
Ext JSの基本についてはこちらをご覧下さい：
Ext.onReadyからはじめるExtJSのまとめ
Sencha TouchはこれまでのExt JSのコードと違う個所がいくつかあります。
今回はその中でも基本となる、3点を紹介します。
1.Ext.setup()
2.onReadyコンフィグ
3.panelのfullscreenコンフィグ
1.Ext.setup();
これまでのExt JSのアプリではExt.onReady()をアプリの起動ポイントとして使っていることがほとんどでした。
Sencha Touch付属のサンプルではExt.setup()を使って、様々な初期設定を行っています。onReady()もこの
Ext.setup()のなかで設定されています。
APIをみるとsetupで設定できる項目一覧が乗っているので簡単に訳しておきます。


fullscreen &#8211; Boolean -　フルスクリーン設定
tabletStartupScreen &#8211; String &#8211; iPad用の起動時画像へのパス　サイズは768&#215;1004 縦長でないといけない
phoneStartupScreen &#8211; String &#8211; iPhoneと iPod touch用起動時画像へのパス　320&#215;460 で縦長でないといけない
icon -タブレットとスマートフォン両方に使われるアイコン画像へのパス　72&#215;72がよい
tabletIcon &#8211; String &#8211; タブレット用アイコン画像へのパス こちらがiconで設定される画像より優先される　72&#215;72がよい.
phoneIcon &#8211; String &#8211; スマートフォン用アイコン画像へのパス こちらがiconで設定される画像より優先される　57&#215;57がよい.
glossOnIcon &#8211; Boolean &#8211; iPhone, iPad and iPod Touchのアイコンにグロスのエフェクトをつけるかどうか
statusBarStyle &#8211; String &#8211; iOS web アプリのステータスバーのスタイルの設定. default, black,black-translucentのどれかを選択。
preloadImages [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Sencha Touch入門</strong></p>
<p><div style="margin-left: 1em; float: right;"><script type="text/javascript"><!--
google_ad_client = "pub-9023017642999258";
/* 336x280, ExtJS Blog 09/11/15 */
google_ad_slot = "7497179445";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<p>Sencha Touch に付属するでもCarouselを見ながら、基本的なSencha Touchの使い方を紹介します。<br />
コードは配布されているSencha Touchパッケージの/examples/carousel　にあります。<br />
ここではindex.htmlについては,前回の記事をごらんください。<br />
index.jsをお好きなエディタで開きながらご覧下さい。<br />
iPad or iPhoneがあるとなおよいと思います。</p>
<p>Ext JSの基本についてはこちらをご覧下さい：<br />
<a href="http://extjs.blog.sus4.co.jp/2009/10/29/%E5%8B%89%E5%BC%B7%E4%BC%9Aext-onready%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%8Bextjs%E3%81%AE%E3%81%BE%E3%81%A8%E3%82%81/">Ext.onReadyからはじめるExtJSのまとめ</a></p>
<div id="attachment_714" class="wp-caption aligncenter" style="width: 210px"><a href="http://extjs.blog.sus4.co.jp/files/2010/06/iphone1.PNG" title="Sencha Touch Examples" rel="lightbox[712]"><img class="size-medium wp-image-714" title="Sencha Touch Examples" src="http://extjs.blog.sus4.co.jp/files/2010/06/iphone1-200x300.PNG" alt="Sencha Touch Examples" width="200" height="300" /></a><p class="wp-caption-text">Sencha Touch Examples</p></div>
<p>Sencha TouchはこれまでのExt JSのコードと違う個所がいくつかあります。<br />
今回はその中でも基本となる、3点を紹介します。<br />
1.Ext.setup()<br />
2.onReadyコンフィグ<br />
3.panelのfullscreenコンフィグ</p>
<p><strong>1.Ext.setup();</strong></p>
<p>これまでのExt JSのアプリではExt.onReady()をアプリの起動ポイントとして使っていることがほとんどでした。<br />
Sencha Touch付属のサンプルではExt.setup()を使って、様々な初期設定を行っています。onReady()もこの<br />
Ext.setup()のなかで設定されています。</p>
<p>APIをみるとsetupで設定できる項目一覧が乗っているので簡単に訳しておきます。</p>
<blockquote>
<ul>
<li>fullscreen &#8211; Boolean -　フルスクリーン設定</li>
<li>tabletStartupScreen &#8211; String &#8211; iPad用の起動時画像へのパス　サイズは768&#215;1004 縦長でないといけない</li>
<li>phoneStartupScreen &#8211; String &#8211; iPhoneと iPod touch用起動時画像へのパス　320&#215;460 で縦長でないといけない</li>
<li>icon -タブレットとスマートフォン両方に使われるアイコン画像へのパス　72&#215;72がよい</li>
<li>tabletIcon &#8211; String &#8211; タブレット用アイコン画像へのパス こちらがiconで設定される画像より優先される　72&#215;72がよい.</li>
<li>phoneIcon &#8211; String &#8211; スマートフォン用アイコン画像へのパス こちらがiconで設定される画像より優先される　57&#215;57がよい.</li>
<li>glossOnIcon &#8211; Boolean &#8211; iPhone, iPad and iPod Touchのアイコンにグロスのエフェクトをつけるかどうか</li>
<li>statusBarStyle &#8211; String &#8211; iOS web アプリのステータスバーのスタイルの設定. default, black,black-translucentのどれかを選択。</li>
<li>preloadImages &#8211; Array &#8211; プリロードする画像へのパスの配列（詳細は後日調査）</li>
<li>onReady &#8211; Function &#8211; DOM構築後に実行される関数。アプリの起動ポイントになることが多い。</li>
<li>scope &#8211; Scope &#8211; スコープの設定</li>
</ul>
</blockquote>
<p>画像系の設定が多いですね。</p>
<p>CarouselサンプルのExt.setup()で設定される、他の項目をみるといくつか画像が設定されています。<br />
Sencha TouchのWebアプリをホーム画面に追加してから起動すると,iPadはtabletStartupScreen,<br />
iPhoneはphoneStartUpScreenが起動時の画面として登録されます。</p>
<p>Safariのツールバーで[+]をタップすると以下のようなメニューがでるので、ホームに追加します。</p>
<div id="attachment_716" class="wp-caption aligncenter" style="width: 210px"><a href="http://extjs.blog.sus4.co.jp/files/2010/06/iphone3.png" title="Sencha Touch アプリをホーム画面に追加" rel="lightbox[712]"><img class="size-medium wp-image-716" title="Sencha Touch アプリをホーム画面に追加" src="http://extjs.blog.sus4.co.jp/files/2010/06/iphone3-200x300.png" alt="Sencha Touch アプリをホーム画面に追加" width="200" height="300" /></a><p class="wp-caption-text">Sencha Touch アプリをホーム画面に追加</p></div>
<p>iconはホーム画面に設定される際のアイコンになる画像です。（ただし現状ではiPadでは正しく設定されましたが、iPhone4では上手くいきませんでした。もう少し詳しく調べてみます。）<br />
iPhone4だとこうなりました。</p>
<div id="attachment_719" class="wp-caption aligncenter" style="width: 210px"><a href="http://extjs.blog.sus4.co.jp/files/2010/06/iphone6.PNG" title="ホーム画面に追加されたSencha Touch アプリ" rel="lightbox[712]"><img class="size-medium wp-image-719" title="ホーム画面に追加されたSencha Touch アプリ" src="http://extjs.blog.sus4.co.jp/files/2010/06/iphone6-200x300.PNG" alt="ホーム画面に追加されたSencha Touch アプリ" width="200" height="300" /></a><p class="wp-caption-text">ホーム画面に追加されたSencha Touch アプリ</p></div>
<ul>
<li>tabletStartupScreen　:　タブレット用（iPad）</li>
<li>phoneStartupScreen　: スマートフォン用（iPhone,iPod Touch）</li>
<li>icon :アイコンとなる画像（iPadでしか正しく設定されない？）</li>
</ul>
<p>まだAndroidの文字がありませんが、これから対応されていくと思います。</p>
<div id="attachment_717" class="wp-caption aligncenter" style="width: 210px"><a href="http://extjs.blog.sus4.co.jp/files/2010/06/iphone4.PNG" title="iPhoneでの起動時の画像" rel="lightbox[712]"><img class="size-medium wp-image-717" title="iPhoneでの起動時の画像" src="http://extjs.blog.sus4.co.jp/files/2010/06/iphone4-200x300.PNG" alt="iPhoneでの起動時の画像" width="200" height="300" /></a><p class="wp-caption-text">iPhoneでの起動時の画像</p></div>
<p>またホーム画面から起動すると自動的にURLバーとSafariのツールバーが非表示になります。これだけでぐっとネイティブアプリのような見た目になります。</p>
<p><strong>2.onReadyコンフィグ</strong><br />
次にonReadyで実行される処理を見ていきます。<br />
Carouselサンプルでは上下2つの領域に2つのカルーセルのコンテナが配置されています(carousel1,2)。それぞれのコンテナにはさらに子となる要素を設定して、その要素をスライドさせることができます。<br />
carousel1も2もほぼ同じ内容ですので1のほうだけを紹介します。</p>
<pre class="brush: js; ">

// Create a Carousel of Items
var carousel1 = new Ext.Carousel({
defaults: { cls: &#039;card&#039; },
items: [
{
html: &#039;&lt;h1&gt;Carousel&lt;/h1&gt;&lt;p&gt;Navigate the two carousels on this page by swiping left/right or clickin    g on one side of the circle indicators below.&lt;/p&gt;&#039;
}, {
title: &#039;Tab 2&#039;,
html: &#039;2&#039;
}, {
title: &#039;Tab 3&#039;,
html: &#039;3&#039;
}]
});
</pre>
<p>基本的にはExt JSでpanel等の配下にさらに子となるパネルを入れる作業とおなじです。<br />
TabPanelやCardレイアウトのパネルで設定したように,itemsの中にパネルを設定しています。ここでは単純にHTMLで内容を記述した3枚のパネルを使っています。defaultsでそれぞれのパネルのCSSクラスにcardというセレクタを追加してます。</p>
<p><strong>3.fullscreen設定</strong><br />
このサンプルはほんとに簡単で上で作ったカルーセルコンテナをパネルに配置しているだけです。<br />
ただしこのカルーセルの親となるパネルのコンフィグでfullscreen設定をtrueにする必要があります。<br />
この設定で、Ext JSのViewportのように画面全体にパネルを広げます。<br />
ここではlayoutでvboxを設定しています。これはExt JSのレイアウトと同じですね。<br />
この部分だけをみるとExt JSのコードとほとんど区別が付きません。<br />
これまで培ったExt JSのノウハウをそのままSencha Touchで作るタッチスクリーンのアプリに活かせるのよく分かります。</p>
<pre class="brush: js; ">

new Ext.Panel({
fullscreen: true,
layout: {
type: &#039;vbox&#039;,
align: &#039;stretch&#039;
},
defaults: {
flex: 1
},
items: [carousel1, carousel2]
});
</pre>
<p>またデバッグの方法を考える必要があります。モバイルSafariではデバッグメニューを表示できますが不十分です。<br />
FirefoxでSencha Touchアプリを見るとレイアウトがかなり崩れています。<br />
よい方法を見つけられた方は是非教えてください。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F06%2F28%2Fsencha-ex-carousel%2F&amp;linkname=Sencha%20Touch%E5%85%A5%E9%96%80%3ASencha%20Touch%20%E3%81%AE%E4%BB%98%E5%B1%9E%E3%82%B5%E3%83%B3%E3%83%97%E3%83%ABCarousel%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6Sencha%20Touch%E3%81%AE%E3%82%B3%E3%83%84%E3%82%92%E3%81%A4%E3%81%8B%E3%82%80"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/06/28/sencha-ex-carousel/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sencha Touch をはじめよう 1　(Getting Started with Sencha Touch の邦訳 その１)</title>
		<link>http://extjs.blog.sus4.co.jp/2010/06/21/sencha-touch-%e3%82%92%e3%81%af%e3%81%98%e3%82%81%e3%82%88%e3%81%86-1%e3%80%80getting-started-with-sencha-touch-%e3%81%ae%e9%82%a6%e8%a8%b3-%e3%81%9d%e3%81%ae%ef%bc%91/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/06/21/sencha-touch-%e3%82%92%e3%81%af%e3%81%98%e3%82%81%e3%82%88%e3%81%86-1%e3%80%80getting-started-with-sencha-touch-%e3%81%ae%e9%82%a6%e8%a8%b3-%e3%81%9d%e3%81%ae%ef%bc%91/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 08:38:14 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[Sencha Touch]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[チュートリアル]]></category>
		<category><![CDATA[翻訳]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=695</guid>
		<description><![CDATA[Sencha Touch をダウンロードするとGetting Started width Sencha Touchというオライリーの本のタイトルっぽいチュートリアルが付属しています。
当然英語なので勝手に翻訳してみます。
英語としては簡単な文章になっているので、原文でも読みやすいとおもいます。
Ext JSの知識がある人にとっては、内容があまりありません。ExtJSの知識無しでいきなりSencha Touchはじめる人のためのチュートリアルといった感じです。



Sencha Touch をはじめよう　(Getting Started with Sencha Touch の邦訳)
これはSencha Touchのはじめ型を解説した文書です。
Sencha Touchを使ってタッチスクリーンを持つデバイスに特化したWebアプリを作る際の基本的なステップを紹介しています。この解説では、今回のSencha Touchのリリースに含まれるサンプルアプリGeoTweetsの詳細な製作ステップも紹介しています。
この解説はSencha Touchを使ってすばやく、タッチスクリーンに対応したデバイス向けのWebアプリを作りたい全てのWebデベロッパーに向けて書かれています。
以下の準備を先に済ませている前提で話を進めます
Sencha Touchのライブラリをダウンロード。
開発用のサーバーの準備
HTML + CSS + JSを使用したWebアプリの開発の知識がある。
それでははじめましょう。
この解説では以下のセクションがあります。

Sencha Touch の紹介 ：Introduction to Sencha Touch
Sencha Touch の使い方（基本編）：Using Sencha Touch: Main Steps
Sencha Toutchの使い方（応用編：GeoTweetsの解説）：Using Sencha Touch: Detailed Steps for Creating the GeoTweets Application
まとめ：Summary and Further Reading

※訳注：今回の翻訳はSencha Touchの使い方（基本編）までです。




Sencha Touch の紹介 ：Introduction to [...]]]></description>
			<content:encoded><![CDATA[<p>Sencha Touch をダウンロードするとGetting Started width Sencha Touchというオライリーの本のタイトルっぽいチュートリアルが付属しています。<br />
当然英語なので勝手に翻訳してみます。</p>
<p>英語としては簡単な文章になっているので、原文でも読みやすいとおもいます。<br />
Ext JSの知識がある人にとっては、内容があまりありません。ExtJSの知識無しでいきなりSencha Touchはじめる人のためのチュートリアルといった感じです。<br />
</p>
<hr />
</p>
<p><strong>Sencha Touch をはじめよう　(Getting Started with Sencha Touch の邦訳)</strong></p>
<p>これはSencha Touchのはじめ型を解説した文書です。<br />
Sencha Touchを使ってタッチスクリーンを持つデバイスに特化したWebアプリを作る際の基本的なステップを紹介しています。この解説では、今回のSencha Touchのリリースに含まれるサンプルアプリGeoTweetsの詳細な製作ステップも紹介しています。</p>
<p>この解説はSencha Touchを使ってすばやく、タッチスクリーンに対応したデバイス向けのWebアプリを作りたい全てのWebデベロッパーに向けて書かれています。<br />
以下の準備を先に済ませている前提で話を進めます<br />
Sencha Touchのライブラリをダウンロード。<br />
開発用のサーバーの準備<br />
HTML + CSS + JSを使用したWebアプリの開発の知識がある。<br />
それでははじめましょう。</p>
<p>この解説では以下のセクションがあります。</p>
<ul>
<li>Sencha Touch の紹介 ：Introduction to Sencha Touch</li>
<li>Sencha Touch の使い方（基本編）：Using Sencha Touch: Main Steps</li>
<li>Sencha Toutchの使い方（応用編：GeoTweetsの解説）：Using Sencha Touch: Detailed Steps for Creating the GeoTweets Application</li>
<li>まとめ：Summary and Further Reading</li>
</ul>
<p>※訳注：今回の翻訳はSencha Touchの使い方（基本編）までです。</p>
<p><span id="more-695"></span><br />
</p>
<hr />
<br />
<strong>Sencha Touch の紹介 ：Introduction to Sencha Touch</strong><br />
Sench Touch はタッチパネルデバイス向けWebアプリケーション開発用JavaScriptフレームワークです。Sencha Touchを使うことで、Webデベロッパーの既に持っているスキルを使いながらエレガントで一貫性のあるUIを使ったWebアプリケーションを最小限の努力で作成することができます。</p>
<p></p>
<hr />
<br />
<strong>Sencha Touch の使い方（基本編）：Using Sencha Touch: Main Steps</strong></p>
<ol>
<li>開発環境を作る</li>
<li>HTMLファイルの作成</li>
<li>アプリケーションのJSファイルを作成</li>
<li>アプリのテスト</li>
<li>リリースのための設定　Update the Application for Production</li>
<li>アプリケーションを運用する　Put the Application into Production</li>
</ol>
<p><strong>1.環境を作る</strong></p>
<ol>
<li>Sench Touchライブラリのダウンロード</li>
<p>　　　
<li>Webアプリの開発環境の確認（エディタ、ブラウザなどのことだと思います。）</li>
<li>開発及び運用のためのサーバーの設定を確認</li>
<li>独自のCSSファイルを使う場合はファイル名を確認しておく（これは次のステップでHTMLファイルの中で必要になるためです。）</li>
</ol>
<p><strong>2.HTMLファイルを作る</strong><br />
お好きなエディタでこのアプリケーションのためのHTMLファイルを作ります。HTMLファイルの例は以下のようなものがあります。ここではmyapp.htmlとしています。<br />
アプリケーションのHTMLには特定のリンクを設定する必要があります。</p>
<ul>
<li>Sencha TouchのデフォルトのCSSファイル ext-touch.css</li>
<li>アプリケーションのカスタムのCSS(mycss.cssなど)</li>
<li>使用したバージョンのSencha Touch ライブラリ
<p>ただしSenechaチームは以下の点をお勧めしています。<br />
	アプリケーションの開発、テスト時：ext-touch-debug.js（デバッグバージョン：このバージョンはライブラリのどこでエラーが起きているかを見つけやすくなっています。非圧縮バージョン　難読化されていない。)<br />
	運用時：ext-touch.js(運用バージョン：圧縮バージョン　運用時のtipsは「リリースのための設定」をご覧下さい)
</li>
<li>アプリケーションのJavaScriptファイル（次のステップで作成します。myApp.jsなど）</li>
</ul>
<p>※訳注：以下はオリジナルのドキュメントではアンカーリンクの先の部分です。</p>
<blockquote><p>
HTMLファイルの作成の詳細<br />
Sencha Touchのアプリケーションの開発の最初のステップはHTMLファイルの作成です。<br />
このHTMLファイルはSencha Touchライブラリ、Sencha TouchのデフォルトCSS、アプリケーションのためのCSS,JSとリンクしている必要があります。</p>
<p>例えばGeoTweetsのHTMLファイル（index.html）は以下のようになります。</p>
<pre class="brush: html; ">

 &lt;!DOCTYPE html&gt;
 &lt;html&gt;
 &lt;head&gt;
     &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
     &lt;title&gt;GeoTweets&lt;/title &gt;

	 &lt;!-- Ext Touch CSS -- &gt;
	 &lt;link rel=&quot;stylesheet&quot; href=&quot;../../resources/css/ext-touch.css&quot; type=&quot;text/css&quot;&gt;

	 &lt;!-- Custom CSS -- &gt;
	 &lt;link rel=&quot;stylesheet&quot; href=&quot;css/guide.css&quot; type=&quot;text/css&quot;&gt;

	 &lt;!-- Ext Touch JS -- &gt;
	 &lt;script type=&quot;text/javascript&quot; src=&quot;../../ext-touch-debug.js&quot;&gt; &lt;/script&gt;

	 &lt;!-- Application JS -- &gt;
	 &lt;script type=&quot;text/javascript&quot; src=&quot;src/index.js&quot;&gt; &lt;/script&gt;

 &lt;/head&gt;
 &lt;body&gt; &lt;/body&gt;
 &lt;/html&gt;
</pre>
<p>このHTMLでリンクしているファイルは以下のようになります。</p>
<ul>
<li>Sencha Touch のデフォルトCSS (ext-touch.css)</li>
<li>アプリケーション独自のCSS(guide.css)
<p>この解説ではguide.cssについては解説しません。CSSを見てもらえば一目瞭然です。またこの文書の対象をWebアプリを開発する際のCSSの利用法について基本的な知識がある人と考えているからです。</li>
<li>Sencha Touch ライブラリ（開発,テスト中はデバッグバージョンのext-touch-debug.jsを使用する）
<p>デバッグバージョンは非圧縮で、コメントが記述されています。これはエラーがどこで起きているかを分かりやすくしてくれます。運用の際は運用バージョンのext-touch.jsを使うべきです。</li>
</ul>
<p>注意点：HTMLファイルの<body>タグの中身が空っぽです。これはSencha TouchではページのコンテンツをJavascriptで自動的に生成するためです。
</p></blockquote>
<p><strong>3.アプリケーションのJavaScriptファイルを作成する</strong><br />
お好きなエディタでアプリケーションのJavaScriptファイルを作成します。アプリケーションのサンプルは以下になります。Creating the Application JavaScript File.</p>
<ul>
<li>アプリケーションを好きな名前で保存します。例えばmyapp.jsなど(.js拡張子です)。このファイルを一つ前のステップで作成したHTMLファイルからリンクします。 </li>
<li>以下は本家のドキュメントではアンカーで飛ばされていた部分です。詳細は次回のSencha Touchをはじめよう：GeoTweets編。</li>
</ul>
<p><strong>4.アプリケーションをテストする</strong><br />
テストのため先にやっておくことは以下の通りです。</p>
<ol>
<li>開発用サーバーにライブラリをアップロードします。</li>
<li>アプリケーションのファイルをアップロードします(myapp.html.myapp.css,myapp.js)</li>
<li>アップロードした場所にブラウザで移動します。localhostの8080ポートで開発している場合はhttp://localhost:8080/myapp.html にアクセスします。myapp.htmlは先ほど作ったアプリケーションのHTMLです。</li>
</ol>
<p><strong>5.運用のための変更</strong><br />
アプリケーションのテストが完了したなら、Sencha Touchライブラリを運用バージョンに変更します。</p>
<ol>
<li>HTMLファイルを開く</li>
<li>以下の箇所を探します。
<pre class="brush: js; ">

&lt;!-- Ext Touch JS -- &gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;../../ext-touch-debug.js&quot; &gt; &lt;/script&gt;
</pre>
</li>
<li>ext-touch-debug.js　を　ext-touch.js　に変更して、運用向けにします。このバージョンのライブラリは圧縮されて、コメントが除去されているため軽量です。</li>
<li>HTMLをもう一度保存します。</li>
</ol>
<p><strong>6.アプリケーションを運用する</strong><br />
アプリケーションに運用のための変更が施されたなら、ソースコードともし必要であればそのほかのファイル（例えばアプリケーションのリファレンス）などをサーバーにアップロードするだけで完了です。</p>
<p></p>
<hr />
<br />
以上が	Sencha Touch の紹介 ：Introduction to Sencha Touch から<br />
Sencha Touch の使い方（基本編）：Using Sencha Touch: Main Steps　までの翻訳になります。</p>
<p>応用編以降は時間があればまたの機会にやりたいと思います。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F06%2F21%2Fsencha-touch-%25e3%2582%2592%25e3%2581%25af%25e3%2581%2598%25e3%2582%2581%25e3%2582%2588%25e3%2581%2586-1%25e3%2580%2580getting-started-with-sencha-touch-%25e3%2581%25ae%25e9%2582%25a6%25e8%25a8%25b3-%25e3%2581%259d%25e3%2581%25ae%25ef%25bc%2591%2F&amp;linkname=Sencha%20Touch%20%E3%82%92%E3%81%AF%E3%81%98%E3%82%81%E3%82%88%E3%81%86%201%E3%80%80%28Getting%20Started%20with%20Sencha%20Touch%20%E3%81%AE%E9%82%A6%E8%A8%B3%20%E3%81%9D%E3%81%AE%EF%BC%91%29"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/06/21/sencha-touch-%e3%82%92%e3%81%af%e3%81%98%e3%82%81%e3%82%88%e3%81%86-1%e3%80%80getting-started-with-sencha-touch-%e3%81%ae%e9%82%a6%e8%a8%b3-%e3%81%9d%e3%81%ae%ef%bc%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ext JS +JQTouch =  Sencha Touch!!</title>
		<link>http://extjs.blog.sus4.co.jp/2010/06/18/ext-js-jqtouch-sencha-touch/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/06/18/ext-js-jqtouch-sencha-touch/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 04:02:11 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPhone/iPad]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[Sencha Touch]]></category>
		<category><![CDATA[Webアプリ]]></category>
		<category><![CDATA[モバイル]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=681</guid>
		<description><![CDATA[



先日の会社名変更の衝撃からまだそんなに日がたっていませんが。早くもSencha.comからSenchaブランドのプロダクト第一弾が公開されました。
ExtJSとJQTouchを組み合わせたようなモバイルWebアプリ開発フレームワークです。

Sencha &#8211; Sencha Touch Overview &#8211; HTML5 Mobile App Framework.

タイトルにもあるようにHTML5の機能をふんだんに使用しています。ExtJSがIE6から動くマルチプラットフォームが一つの売りだったためHTML5の機能を入れられないんじゃなと思っていました。
モバイル機器専用として割り切ることでHTML5に対応させたExtJSとも考えられます。
将来的にHTML5の機能はExtJSに組み込まれんだろうと思います。
サンプルも沢山用意されているので、一度iPhoneやiPadで試してみるとよいかもしれません。

iPhone 3G,3GSで試すと3GSはなかなかの使用感ですが、3Gだとピッカー系のUIやフォームの動きがあやしいかんじです。メモリとCPUが結構必要な感じです。
Androidはまだ改善中とのことです。UIの制御でバグっぽい箇所がいくつかありました。スライドさせるUIが全体的に不安定な気がします。

現在のところまともに使えそうなのはiPadとiPhone 3GSですね。
実際サンプルのソースコードを見ると、Ext.～が使われて安心しました。Sencha.get()だったらどうしようと心配してましたがExtで使えるようです。
サンプルのソースコードを見ると、Extと同じ書き方がされているのが分かります。ExtJSの開発者はスムーズにSencha Touchに移行できそうです。APIドキュメントも慣れ親しんだExtJS APIドキュメントと同じようなものが用意されているので全体を眺めてみるとExtJSとの違いが分かります。videoやaudioといったHTML5っぽいクラスが追加されています。
ただこのSencha TouchドキュメントはiPadではまともに動きません。Sencha TouchドキュメントはExt JSで書かれているということなんだと思います。APIドキュメントがiPadで見れると実用は別にして、なんとなくうれしい気がするので期待しています。
あとはCANVASが使えれば、携帯ゲームを作ることも簡単になるかもしれません。
Sencha Touchは既存のモバイル向けJavascriptライブラリとは違いフレームワークです。雰囲気でいえばApple のDashcodeのようにモバイルアプリケーションを作るのに近いといえます。JQTouchを含め既存のJSのCocoa Touch風UIライブラリではUIのみしか提供されませんでしたが、Sencha TouchではモデルやAjax処理も内包しています。そのためより高度なモバイル向けWebアプリを作ることが可能になりそうです。
またいわゆるハイブリッドアプリケーションの形式を取れば、iPhone Appとして開発してAppstoreへの申請も可能かもしれません。
最近AppleのiPhone AppではFlashやC#など開発言語の締め出しがおこなわれましたが、Javascript + HTMLは現状OKです。またAppleのDashcodeがある以上Javascriptが禁止されることはまずないと思います。
色々期待はしますが、まだベータ版といった感じなので遊びで色々やってみるのも面白いかもしれません。Ext JSを開発してれば、簡単なアプリをすぐ作れてしまうんじゃないかなと思います。
追記：Vimeoにビデオも上がってました。

Sencha Touch Introduction from Sencha on Vimeo.
]]></description>
			<content:encoded><![CDATA[<p><div style="margin-left: 1em; float: right;"><script type="text/javascript"><!--
google_ad_client = "pub-9023017642999258";
/* 336x280, ExtJS Blog 09/11/15 */
google_ad_slot = "7497179445";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<p>先日の会社名変更の衝撃からまだそんなに日がたっていませんが。早くもSencha.comからSenchaブランドのプロダクト第一弾が公開されました。</p>
<p>ExtJSとJQTouchを組み合わせたようなモバイルWebアプリ開発フレームワークです。</p>
<p style="text-align: center;"><a href="http://www.sencha.com/products/touch/index.php"><img src="http://extjs.blog.sus4.co.jp/files/2010/06/logo-sencha-sm.png" alt="" /></a></p>
<p><a href="http://www.sencha.com/products/touch/index.php">Sencha &#8211; Sencha Touch Overview &#8211; HTML5 Mobile App Framework</a>.</p>
<p><span id="more-681"></span></p>
<p>タイトルにもあるようにHTML5の機能をふんだんに使用しています。ExtJSがIE6から動くマルチプラットフォームが一つの売りだったためHTML5の機能を入れられないんじゃなと思っていました。</p>
<p>モバイル機器専用として割り切ることでHTML5に対応させたExtJSとも考えられます。</p>
<p>将来的にHTML5の機能はExtJSに組み込まれんだろうと思います。</p>
<p>サンプルも沢山用意されているので、一度iPhoneやiPadで試してみるとよいかもしれません。</p>
<p style="text-align: center;"><a href="http://www.sencha.com/products/touch/index.php"><img src="http://extjs.blog.sus4.co.jp/files/2010/06/animation2.png" alt="" /></a></p>
<p>iPhone 3G,3GSで試すと3GSはなかなかの使用感ですが、3Gだとピッカー系のUIやフォームの動きがあやしいかんじです。メモリとCPUが結構必要な感じです。</p>
<p>Androidはまだ改善中とのことです。UIの制御でバグっぽい箇所がいくつかありました。スライドさせるUIが全体的に不安定な気がします。<br />
<a href="http://extjs.blog.sus4.co.jp/files/2010/06/sencha-touch-sample.jpg" title="Sencha Touchのサンプル" rel="lightbox[681]"><img class="aligncenter size-medium wp-image-686" title="Sencha Touchのサンプル" src="http://extjs.blog.sus4.co.jp/files/2010/06/sencha-touch-sample-200x300.jpg" alt="Sencha Touchのサンプル" width="200" height="300" /></a></p>
<p>現在のところまともに使えそうなのはiPadとiPhone 3GSですね。</p>
<p>実際サンプルのソースコードを見ると、Ext.～が使われて安心しました。Sencha.get()だったらどうしようと心配してましたがExtで使えるようです。</p>
<p>サンプルのソースコードを見ると、Extと同じ書き方がされているのが分かります。ExtJSの開発者はスムーズにSencha Touchに移行できそうです。APIドキュメントも慣れ親しんだExtJS APIドキュメントと同じようなものが用意されているので全体を眺めてみるとExtJSとの違いが分かります。videoやaudioといったHTML5っぽいクラスが追加されています。</p>
<p>ただこのSencha TouchドキュメントはiPadではまともに動きません。Sencha TouchドキュメントはExt JSで書かれているということなんだと思います。APIドキュメントがiPadで見れると実用は別にして、なんとなくうれしい気がするので期待しています。</p>
<p>あとはCANVASが使えれば、携帯ゲームを作ることも簡単になるかもしれません。</p>
<p>Sencha Touchは既存のモバイル向けJavascriptライブラリとは違いフレームワークです。雰囲気でいえばApple のDashcodeのようにモバイルアプリケーションを作るのに近いといえます。JQTouchを含め既存のJSのCocoa Touch風UIライブラリではUIのみしか提供されませんでしたが、Sencha TouchではモデルやAjax処理も内包しています。そのためより高度なモバイル向けWebアプリを作ることが可能になりそうです。</p>
<p>またいわゆるハイブリッドアプリケーションの形式を取れば、iPhone Appとして開発してAppstoreへの申請も可能かもしれません。</p>
<p>最近AppleのiPhone AppではFlashやC#など開発言語の締め出しがおこなわれましたが、Javascript + HTMLは現状OKです。またAppleのDashcodeがある以上Javascriptが禁止されることはまずないと思います。</p>
<p>色々期待はしますが、まだベータ版といった感じなので遊びで色々やってみるのも面白いかもしれません。Ext JSを開発してれば、簡単なアプリをすぐ作れてしまうんじゃないかなと思います。</p>
<p>追記：Vimeoにビデオも上がってました。<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="311" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12636777&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="311" src="http://vimeo.com/moogaloop.swf?clip_id=12636777&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/12636777">Sencha Touch Introduction</a> from <a href="http://vimeo.com/sencha">Sencha</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F06%2F18%2Fext-js-jqtouch-sencha-touch%2F&amp;linkname=Ext%20JS%20%2BJQTouch%20%3D%20%20Sencha%20Touch%21%21"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/06/18/ext-js-jqtouch-sencha-touch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ext JSはSenchaに</title>
		<link>http://extjs.blog.sus4.co.jp/2010/06/16/ext-js%e3%81%afsencha%e3%81%ab/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/06/16/ext-js%e3%81%afsencha%e3%81%ab/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 08:31:32 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[sencha]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=671</guid>
		<description><![CDATA[ExtJSはJQTouchとRaphaëlを統合してSenchaというプロダクトになるようです。]]></description>
			<content:encoded><![CDATA[<p>ExtJSはJQTouchとRaphaëlを統合してSenchaというプロダクトになるようです。<br />
会社名もSenchaになり、www.extjs.com も www.sencha.comになっています。<br />
<img alt="" src="http://www.sencha.com/assets/images/ext-js-is-now-sencha-splash.png" title="Sencha" class="aligncenter" width="300" /></p>
<p>以下Extブログ改めSenchaブログです。</p>
<p><a target="_blank" href="http://www.sencha.com/blog/?p=3356">Ext JS + jQTouch + Raphaël = Sencha</a></p>
<p>なぜSencha(煎茶)なのかは、</p>
<blockquote><p>
Why Sencha?<br />
We’re choosing Sencha as our name because it evokes next-generation software development and it’s easy to remember, spell and pronounce. Sencha — the name of a popular Japanese green tea — is in the tradition of Java, and represents a new level of development. It feels memorable to us. We hope you like it too.</p>
<p>The roadmaps for Ext JS, Ext GWT, Designer, Direct etc. don’t change as a result of this. We’re very excited about the new things in Ext JS 4.0 and the rest of the product line. Some of the individual product names might evolve in the future (for example, we’re thinking of renaming Ext Designer to Sencha Designer), but don’t expect any major or immediate changes here. One of the benefits of the name change is also that it separates a product name – Ext JS – from the company name, Sencha.
</p></blockquote>
<p>だそうです。<br />
名前が変わるよ以外は今のところあまり情報がありません。<br />
JQTouchはJQueryベースのCocoa Touch風UIプラグインで、Raphaël ベクター系のJavascriptグラフィックライブラリです。<br />
JQTouchとRaphaëlを取り込んでモバイルや、タッチスクリーンに適したUIを構築できるようになりそうです。<br />
追加情報に期待しましょう。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F06%2F16%2Fext-js%25e3%2581%25afsencha%25e3%2581%25ab%2F&amp;linkname=Ext%20JS%E3%81%AFSencha%E3%81%AB"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/06/16/ext-js%e3%81%afsencha%e3%81%ab/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ExtJS入門39　ファイルをアップロードするフォームフィールド</title>
		<link>http://extjs.blog.sus4.co.jp/2010/05/24/extjs-tutorial39-fileuploadfield/</link>
		<comments>http://extjs.blog.sus4.co.jp/2010/05/24/extjs-tutorial39-fileuploadfield/#comments</comments>
		<pubDate>Mon, 24 May 2010 09:15:23 +0000</pubDate>
		<dc:creator>佐竹 裕行</dc:creator>
				<category><![CDATA[ExtJSチュートリアルｓｕｓ４版]]></category>
		<category><![CDATA[ExtJS勉強会＠名古屋資料]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Ext.form.FormPanel]]></category>
		<category><![CDATA[Ext.form.TextField]]></category>
		<category><![CDATA[Ext.ux.form.FileUploadField]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[TextField]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[エディタブル・グリッド]]></category>
		<category><![CDATA[エディター]]></category>
		<category><![CDATA[コールバック]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[チュートリアル]]></category>
		<category><![CDATA[ファイルアップロード]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[フォームパネル]]></category>
		<category><![CDATA[勉強会]]></category>

		<guid isPermaLink="false">http://extjs.blog.sus4.co.jp/?p=663</guid>
		<description><![CDATA[ExtJSの標準のライブラリではファイルアップロード用のフォームフィールドは用意されていません。ファイルのアップロードフィールドを作成するためには、uxのExt.ux.form.FileUploadFieldを使うことが比較的多いです。今回はこのUXを使ってファイルを送信するフォームパネルのサンプルです。]]></description>
			<content:encoded><![CDATA[<p>ExtJSの標準のライブラリではファイルアップロード用のフォームフィールドは用意されていません。ファイルのアップロードフィールドを作成するためには、uxのExt.ux.form.FileUploadFieldを使うことが比較的多いです。今回はこのUXを使ってファイルを送信するフォームパネルのサンプルです。</p>
<div id="attachment_664" class="wp-caption aligncenter" style="width: 160px"><a href="http://extjs.blog.sus4.co.jp/files/2010/05/greenshot_2010-05-24_18-07-17.png" title="Ext.ux.form.FileUploadField" rel="lightbox[663]"><img src="http://extjs.blog.sus4.co.jp/files/2010/05/greenshot_2010-05-24_18-07-17-150x150.png" alt="Ext.ux.form.FileUploadField" title="Ext.ux.form.FileUploadField" width="150" height="150" class="size-thumbnail wp-image-664" /></a><p class="wp-caption-text">Ext.ux.form.FileUploadField</p></div>
<p>フォーム関連の過去の記事はこちらからです。</p>
<ul>
<li><a href="http://extjs.blog.sus4.co.jp/2010/04/22/extjs-tutorial-form-baseic/">ExtJS入門　ExtJSのフォームについて（基本編）</a></li>
<li><a href="http://extjs.blog.sus4.co.jp/2010/05/13/extjs-tutorial32-formbasic/">ExtJS入門32　フォームパネルとフィールド(基本編)</a></li>
<li><a href="http://extjs.blog.sus4.co.jp/2010/05/14/631/">ExtJS入門33 Columnレイアウトのフォー</a></li>
<li><a href="http://extjs.blog.sus4.co.jp/2010/05/17/extjs-tutorial34-combobox/">ExtJS入門34 ComboBoxの基本</a></li>
<li><a href="http://extjs.blog.sus4.co.jp/2010/05/18/extjs-tutorial35-tablelayout/">ExtJS入門35 Tableレイアウトのフォーム</a></li>
<li><a href="http://extjs.blog.sus4.co.jp/2010/05/20/extjs-tutorial37-formerrors/">ExtJS入門37 サーバーサイドで処理したフォームのエラーメッセージを表示するム</a></li>
<li><a href="http://extjs.blog.sus4.co.jp/2010/05/21/extjs-tutorial38-formvtype/">ExtJS入門38　独自のVTypeを定義してフォームを検証する</a></li>
</ul>
<p><span id="more-663"></span></p>
<p><strong>PHP</strong></p>
<pre class="brush: php; ">

&lt;?php
    $target = &#039;upload/&#039; . $_FILES[&#039;my-upload-file&#039;][&#039;name&#039;];
    @move_uploaded_file($_FILES[&#039;my-upload-file&#039;][&#039;tmp_name&#039;],$target);

    $res = array(
        &#039;success&#039; =&gt; true
    );

    if (!file_exists($target)) {
        $res = array(
            &#039;success&#039; =&gt; false,
            &#039;msg&#039;   =&gt; &#039;ファイルのアップロードに失敗しました。&#039;
        );
    }

    header(&quot;Content-Type: text/html; charset=utf-8&quot;);
    echo json_encode($res);
</pre>
<p><strong>HTML:</strong></p>
<pre class="brush: html; ">

&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;

&lt;html&gt;
&lt;head&gt;
    &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
    &lt;title&gt;ExtJS名古屋勉強会　フォーム　ファイルのアップロード&lt;/title&gt;

    &lt;!--Ext JS CSS--&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;../js/ext/resources/css/ext-all.css&quot; type=&quot;text/css&quot; /&gt;
    &lt;!--Ext JS--&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;../js/ext/adapter/ext/ext-base.js&quot;&gt;&lt;/script&gt;

    &lt;script type=&quot;text/javascript&quot; src=&quot;../js/ext/ext-all.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;../js/ext/src/locale/ext-lang-ja.js&quot;&gt;&lt;/script&gt;

    &lt;!--ux fileupload--&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;../js/ux/fileuploadfield/FileUploadField.js&quot;&gt;&lt;/script&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;../js/ux/fileuploadfield/css/fileuploadfield.css&quot;/&gt;

    &lt;script type=&quot;text/javascript&quot; src=&quot;form-fileupload.js&quot;&gt;&lt;/script&gt;
    &lt;style TYPE=&quot;text/css&quot;&gt;
    &lt;!--
        .tick {background-image: url(../img/icon/tick.png) !important;}
    --&gt;
    &lt;/style&gt;

&lt;/head&gt;
&lt;body&gt;
    &lt;div style=&quot;width:500px;margin:0 auto;padding:15px;background-color:#D3E1F1;font-size:small;&quot;&gt;
        &lt;p style=&quot;font-weight:bold;padding:3px;margin-bottom:10px;&quot;&gt;
            Extのファイルのアップロードフォーム&lt;br /&gt;
            ux.fileUploadField　を使ってファイルをアップロードできるフォームを作成します。
        &lt;/p&gt;
        &lt;div id=&quot;form&quot;&gt;&lt;/div&gt;
        &lt;br/&gt;
        &lt;div id=&quot;form2&quot;&gt;&lt;/div&gt;

        &lt;br/&gt;
        Java Script：&lt;a href=&quot;form-fileupload.js&quot;&gt;form-fileupload.js&lt;/a&gt;&lt;br/&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><strong>Java Script:</strong></p>
<pre class="brush: js; ">

Ext.onReady(function()
{
    var form = new Ext.form.FormPanel({
        renderTo:&#039;form&#039;,
        url:&#039;file-upload.php&#039;,
        fileUpload: true,
        title:&#039;フォームの簡単な紹介&#039;,
        height:280,
        width:500,
        bodyStyle:{
            padding:&#039;8px&#039;
        },
        footerStyle:{   //ボタン周りの表示の調整用スタイル
            border:&#039;solid 1px #99BBE8&#039;,
            &#039;border-top&#039;:&#039;none&#039;
        },
        labelWidth:180,
        monitorValid:true,  //定期的に妥当性のチェックを行いボタンを連動させます。ボタン側でformBindを設定する
        defaults:{
            anchor:&#039;100%&#039;
        },
        items:[
            {
                xtype: &#039;fileuploadfield&#039;,
                id: &#039;form-file&#039;,
                emptyText: &#039;ファイルを選択&#039;,
                fieldLabel: &#039;ファイルアップロードフィールド&#039;,
                name: &#039;my-upload-file&#039;,
                buttonText: &#039;ファイルを選択&#039;
            },{
                xtype:&#039;textfield&#039;,
                fieldLabel:&#039;キャプション&#039;,
                name:&#039;caption&#039;
            }
        ],
        buttonAlign:&#039;center&#039;,
        buttons:[
            {
                text:&#039;送信&#039;,
                formBind:true,
                iconCls:&#039;tick&#039;,
                handler:function(){
                    //ファイルを送信してコールバックを設定。
                    form.getForm().submit({

                        //リクエスト時にローダーを表示する
                        waitMsg: &#039;ファイルを送信中です...&#039;,

                        //リクエスト成功時
                        success:function(basicForm,action){

                            if (action.result.success){
                                form.getForm().reset();
                            }else{
                                Ext.Msg.alert(&#039;エラー&#039;,&#039;ファイルのアップロードに失敗しました。&#039;).setIcon(Ext.Msg.ERROR);
                            }
                        },

                        //失敗時
                        failure:function(basicForm,action){
                            Ext.Msg.alert(&#039;エラー&#039;,&#039;サーバーへの接続に失敗しました。&#039;).setIcon(Ext.Msg.ERROR);
                        }
                    });
                }
            }
        ]
    });
});
</pre>
<p>uxは都度作者のサイトやExtJSのフォーラムなどで入手する必要があります。<br />
Ext.ux.form.FileUploadFieldはExtJSのライブラリをダウンロードしたときに含まれるexsamplesの中にもあります。</p>
<p>今回は<br />
js/ext<br />
js/ux/fileupload/FileUploadField.js<br />
js/ux/fileupload/css/fileuploadfield.css<br />
というディレクトリ構成になっています。</p>
<p>uxファイルの読み込みはext-all.jsの後、使用される処理の前に行います。<br />
今回はファイルをポスト後にPHP側で処理を行うので、サーバーサイドも所定の位置に設定しておきます。<br />
これで読み込みが正しくできれば準備は完了です。</p>
<p>では早速FileUploadFieldを使ってみます。基本的いままのフィールドと同じやり方で作成します。<br />
formPanelには送信先のURLをurlコンフィグに設定しておきます、またfileUploadコンフィグをtrueにしてファイルを送信するためformPanelを指定します。<br />
次にfileuploadfieldをitemsに設定します。xtypeは&#8217;fileuploadfield&#8217;です。</p>
<pre class="brush: js; ">

    var form = new Ext.form.FormPanel({
        ・・・
        url:&#039;file-upload.php&#039;,
        fileUpload: true,
		・・・
        items:[
            {
                xtype: &#039;fileuploadfield&#039;,
                id: &#039;form-file&#039;,
                emptyText: &#039;ファイルを選択&#039;,
                fieldLabel: &#039;ファイルアップロードフィールド&#039;,
                name: &#039;my-upload-file&#039;,
                buttonText: &#039;ファイルを選択&#039;
            },{
                xtype:&#039;textfield&#039;,
                fieldLabel:&#039;キャプション&#039;,
                name:&#039;caption&#039;
            }
        ],
		・・・・
  });
</pre>
<p><strong>実行結果:</strong><br />
<div id="attachment_664" class="wp-caption aligncenter" style="width: 310px"><a href="http://extjs.blog.sus4.co.jp/files/2010/05/greenshot_2010-05-24_18-07-17.png" title="Ext.ux.form.FileUploadField" rel="lightbox[663]"><img src="http://extjs.blog.sus4.co.jp/files/2010/05/greenshot_2010-05-24_18-07-17-300x226.png" alt="Ext.ux.form.FileUploadField" title="Ext.ux.form.FileUploadField" width="300" height="226" class="size-medium wp-image-664" /></a><p class="wp-caption-text">Ext.ux.form.FileUploadField</p></div><br />
<div id="attachment_665" class="wp-caption aligncenter" style="width: 310px"><a href="http://extjs.blog.sus4.co.jp/files/2010/05/greenshot_2010-05-24_18-09-04.png" title="フォーム送信時のローディングマスク" rel="lightbox[663]"><img src="http://extjs.blog.sus4.co.jp/files/2010/05/greenshot_2010-05-24_18-09-04-300x229.png" alt="フォーム送信時のローディングマスク" title="フォーム送信時のローディングマスク" width="300" height="229" class="size-medium wp-image-665" /></a><p class="wp-caption-text">フォーム送信時のローディングマスク</p></div></p>
<p>フィールド自体の設定はこれまでのほかのフォームフィールドと同じです。formPanelのfileUploadをtrueにすることが重要です。<br />
後は送信ボタンをつけてformPanelのurlに指定した場所にPOSTするだけです。送信されるサーバーの方は簡単なサンプルです。適時お好みの処理に変更してください。<br />
ファイルの送信ではページの読み込みは行われません、フォームのsubmit()メソッドの引数にリクエスト成功後のコールバックを指定して。ファイルの送信が完了したら、フォームをクリアして初期状態に戻るようにします。</p>
<p>basicFormのsubmit()メソッドにオブジェクトでコールバックが設定できることは既に説明しました。今回もファイルの送信成功後の処理をsuccessの中で実行します。また接続などのエラーはfailureの中に記述します。今回は成功すればフォームをクリアし、失敗時はポップアップを表示します。</p>
<pre class="brush: js; ">

    var form = new Ext.form.FormPanel({

        items:[
			・・・ファイルアップロードフィールド・・・
		],
        buttonAlign:&#039;center&#039;,
        buttons:[
            {
                text:&#039;送信&#039;,
                formBind:true,
                iconCls:&#039;tick&#039;,
                handler:function(){
                    //ファイルを送信してコールバックを設定。
                    form.getForm().submit({

                        //リクエスト時にローダーを表示する
                        waitMsg: &#039;ファイルを送信中です...&#039;,

                        //リクエスト成功時
                        success:function(basicForm,action){

                            if (action.result.success){
                                form.getForm().reset();
                            }else{
                                Ext.Msg.alert(&#039;エラー&#039;,&#039;ファイルのアップロードに失敗しました。&#039;).setIcon(Ext.Msg.ERROR);
                            }
                        },

                        //失敗時
                        failure:function(basicForm,action){
                            Ext.Msg.alert(&#039;エラー&#039;,&#039;サーバーへの接続に失敗しました。&#039;).setIcon(Ext.Msg.ERROR);
                        }
                    });
                }
            }
        ]
    });
</pre>
<p>formの送信後はファイル保存の処理はサーバーサイドで行われます。ファイルを送信するので、これまでの短いテキストのやり取りとは違いリクエストからレスポンスまでの時間が多少気になります。そのためsubmit()メソッドに渡す設定の中のwaitMsgに送信～完了までの間に表示するロードマスクで表示するテキストを設定します。このロードマスクはリクエストが完了後に自動的に消えるので手軽に使用できます。ファイルアップロードなどの処理はサーバーサイドでの処理に時間が駆るので、一般的にロードマスクを表示させるようにしておくのがよいでしょう。</p>
<p>今回のサンプルの注意として,FireFoxでfirerebugを起動したままファイルの送信リクエストを事項すると、レスポンスのJSONが上手く展開できないようです。上手くいかないときは一度Firebugを無効にして試してみてください。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fextjs.blog.sus4.co.jp%2F2010%2F05%2F24%2Fextjs-tutorial39-fileuploadfield%2F&amp;linkname=ExtJS%E5%85%A5%E9%96%8039%E3%80%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89"><img src="http://extjs.blog.sus4.co.jp/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://extjs.blog.sus4.co.jp/2010/05/24/extjs-tutorial39-fileuploadfield/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
