SenchaTouch入門

CSS NITE IN SHIZUOKAでLTしたSenchaTouchについてなんですが、LTに用いたソースが0.9.3用だったのですが、現在の0.9.5のバージョンでは動かない事が判明 orz。なので、補足として0.9.5用にブログに残しておくことにしました。

Photo 9月 28, 0 08 49

Sencha Touch とは

  • iPhone、アンドロイド向けサイトを作成するためのjavaScriptライブラリ
  • javaScriptの値を調整するようにプログラムを組むだけで、iPhoneアプリで見かけるようなエレガントで一貫したデザインのUIが簡単に作成可能。

まぁ、百聞は一見にしかず。下のデモページをスマートフォン、PCの場合はChromeSafariでご確認ください。

SenchaTouchのデモページ

かちびと.netさんも紹介されています。

iPhone等のWebアプリをHTML5で構築する為のフレームワーク・Sencha Touchを触ってみた – かちびと.net

SenchaTouchの導入

SenchaTouchのダウンロード

所定の場所にダウンロード後、解凍してください。

フォルダの中にSenchaTouchを動かすうえで最低限必要なファイルとフォルダは下記のとおりです。

  • ext-touch.js
  • resourcesフォルダとその中身

これを使って、リストがスライドして次々とページ遷移する簡単なページを作ってみました。

作成するファイルは以下の2つ。

  • index.html
  • index.js

完成イメージは次のとおりです。

Photo 9月 28, 9 50 28

それでは順番に見ていきます。

index.html

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Nested List</title>
        <link rel="stylesheet" href="../../resources/css/ext-touch.css" type="text/css">
        <script type="text/javascript" src="../../ext-touch.js"></script>
        <script type="text/javascript" src="index.js"></script>
</head>
<body></body>
</html>

重要な部分は6行目~8行目。

6行目でresourcesフォルダ内のcss/ext-touch.cssを

7行目でext-touch.jsを

8行目でindex.jsをそれぞれ読み込みます。

パスは環境に合わせて変更してください。

また、この例ではタグ内には何も書きません。

index.js

Ext.setup({
    onReady: function(){
        var data = {
            text: 'トップ',
            items: [{
                text: '静岡中部',
                items: [{
                    text: '静岡市',
                    items: [{
                        text: '葵区',
                        leaf: true
                    },{
                        text: '駿河区',
                        leaf: true
                    },{
                        text: '清水区',
                        leaf: true
                    }]
                },{
                    text: '焼津',
                    leaf: true
                }]
            },{
                text: '静岡西部',
                items: [{
                    text: '浜松',
                    leaf: true
                },{
                    text: '掛川',
                    leaf: true
                }]
            },{
                text: '静岡東部',
                items: [{
                    text: '沼津',
                    leaf: true
                },{
                    text: '伊豆',
                    leaf: true
                },{
                    text: '三島',
                    leaf: true
                }]
            }]
        };

        Ext.regModel('ListItem', {
            fields: [{name: 'text', type: 'string'}]
        });

        var store = new Ext.data.TreeStore({
            model: 'ListItem',
            root: data,
            proxy: {
                type: 'ajax',
                reader: {
                    type: 'tree',
                    root: 'items'
                }
            }
        });

        var nestedList = new Ext.NestedList({
            fullscreen: true,
            title: '静岡県',
            displayField: 'text',
            store: store
        });
    }

});

index.jsの中身はほとんどがjsonになっています。各項目に値を指定することで、ページ構成がデザインされます。SenchaTouchではこのjsonを上手く使いこなすことが重要になってきます。 とりあえず、これで完成となります。実際のサイトは下記URL先をご確認ください。

http://sencha-demo.studio-kingdom.com/

また、0.9.3に比べて0.9.5では色々と複雑になっていますので、それについて少し載せておきます。

  • 47~48行目では、リストに表示するjsonデータについて、モデル指定を行っています。これはデータベースで言う「カラム名」と「型」といったところでしょうか。jsonデータを使うにはこのモデル指定が必須になったのかもしれません。
  • 51~61行目はjsonデータを入力データとして各コンポーネントで扱えるようにしているようです。modelは上記のモデル指定、rootはjsonデータのオブジェクト名と思われますが、proxyの意味がいまいち分かりません…。

本格的に作る場合にはAPIを熟読する必要がありますね。英語ですが(^-^;)

Sencha Touch API Documentation

また、肝となるjsonについてですが、自分はこの本で習いました。10日で覚えるシリーズは根本から丁寧に説明してくれる良書が結構あったりしておススメです。

netstat–nr の意味

$netstat –nr
Kernel IP routing table

Destination    Gateway          Genmask         Flags    MSS   Window  irtt   Iface
192.168.1.0    0.0.0.0          255.255.255.0   U        0     0       0      eth0
127.0.0.0      0.0.0.0          255.0.0.0       U        0     0       0      lo
0.0.0.0        192.168.1.254    0.0.0.0         UG       0     0       0      eth0

どうしてもnetstat -nrの意味(読み方)が分からず、その筋の人にしつこく聞いてやっと理解できたのでメモ。

1行目

IPアドレス192.168.1.0~255のネットワーク空間(Destination 192.168.1.0、Genmask 255.255.255.0)に到達したい場合は、ゲートウェイに行かんでいいから直接(Gateway 0.0.0.0)行ってください。インターフェース(LANの出口)はeth0ね。という意味。

2行目

IPアドレス127.0.0.0に行きたい場合は、同じく直接行ってくださいという意味。ただし、インターフェースはloを指定。これはループバックという、物理的には存在しない論理的なインターフェース。127.0.0.0は実質、自機を表しているので。

3行目

それ以外のネットワーク空間(Destination 0.0.0.0、Genmask 0.0.0.0)に行きたい場合は、ゲートウェイ192.168.1.254に行って(Gateway 192.168.1.254)くださいという意味。インターフェース(LANの出口)はeth0ね。という意味。

0.0.0.0 が表すもの

各項目の0.0.0.0が何を表しているのか知っておくことが重要だと思いました。

Getewayでの0.0.0.0はゲートウェイを介さず直接、行き先へ向かってくださいという意味。

Destinationでの0.0.0.0はネットワーク空間を明示的に指定されていない、その他については、という意味。

この例はCentOSだけど、OpenSolarisでは0.0.0.0はDefaultだったりします。

CSSNITE IN SHIZUOKA vol.1に行ってきました

行ってきました、CSSNITE IN 静岡!

CSS Nite in SHIZUOKA 〜Web制作者のためのセミナーイベント CSS Nite の静岡県版

まずは会場入り。

CSS NITE IN SHIZUOKA vol.1

中の雰囲気はこんな感じ。

Photo 9月 24, 17 40 10

来場者全員に、こんな素敵なプレゼントが!一気にmozilla充です。

Photo 9月 24, 17 40 26

それでは、どんなセッションが行われたか紹介を。

HTML5とIE9

小山田さん(株式会社ピクセルグリッド / PixelGrid, Inc.)

Photo 9月 24, 17 40 42

IE無くなってほしい人!で、まずはアンケート調査。

会場の半分の人は無くなって欲しい派でした。もちろん、自分も手を挙げました…。

その後、HTML5の機能(audio,video,canvas,svg)やCSS3についてデモ付きで色々と説明していただきました。

で、個人的に気になっていたHTML5とIE9の現在の状況なんですが…

  • IEは他のブラウザに比べてHTML5対応にかなりの後れをとっている。
  • IE9になっても、他のブラウザに比べるとHTML5で実装されていない機能が多い。
  • よってHTML5を用いて開発する際はIE9ベースに行うべし。そうすれば、他のブラウザでも動くはず。
  • html5.jsを使えば、HTML5に対応していないブラウザでも、javaScriptの力でHTML5が実現できる!?

その後の懇談会でサラダとりわけてくれたり、腰が低くてめっちゃ良い人でした。

近々、年上の女性と結婚されるそうで、おめでとうございます!チラ見したiPhoneの壁紙が、彼女さんのウェディングドレスだったような気がします。

静岡市出身だけどあまり帰ってこないそうで、最近リニューアルされた日本平動物園をススメておきました。

Movable Typeを使用したCMS構築のTIPS

工藤さん(静岡県沼津市・三島市・駿東郡-ホームページ制作とインターネット活用コンサルティングのDigitalAssist)

Photo 9月 24, 17 41 19

CSS NITEを静岡に呼んでくれた三島のITエンジニアの集まりの中心メンバーの方。

工藤「ちゃん」と呼ばれたいそうな。。。

MTのカスタムフィールドIDを使ったテクニックなどを紹介していただきました。

でも、すいません(>_<) 自分、WordPress厨なんです。

ただ、個人でWordPress使う人は多いんですが、事例で紹介されてたように大手のキッチリした企業さんはMT支持なんですよね。

確かBusiness ArchitectsさんもMT使ってたと思います。

去年から今年の前半までを振り返る!2010年上半期海外Webデザイントレンド

原さん(株式会社エフエックスビイ : FXBはメディア作りを通じ、世の中を楽しく便利にしていきます)

Photo 9月 24, 17 41 45

2010年上半期海外Webデザイントレンドについて教えていただきました。

  • 巻き込みリボン、ネクタイのような下地のデザイン
  • 吹き出し
  • 背景のテクスチャに、ステッチ、皮、紙など
  • 背景に地平線、空、海を使用したデザイン
  • メインイメージをインタラクティブに(Flash→jQuery)
  • CSSによるドロップシャドウ、へこみ、浮きなど
  • フォームはより多彩に
  • 縦方向の小さな段組み(ユニクロ等)
  • アイコンがリアル志向から、ピクトグラム、単一色のシンプルで本来の役割に
  • 半透明レイヤーを重ねたデザイン
  • WEBフォントを多用したデザイン(日本語は現状無理…)
  • ペナント(旗)を使用
  • 玉をぼかしたようなイメージを使用(ヘッドライト、木漏れ日のような)

富士宮市出身だそうで、懇談会では富士宮焼そばについて語っていただきました!

ライトニングトーク

休憩のあと、5分間ずつ5人のライトニングトークがありました。

及ばずながら、私めも話をさせていただきましたが、初めての経験でしたので緊張しまくりでした。

時間制限というプレッシャーはやはり結構きついですね…。

皆さん、資料を作りこんであって正直お恥ずかしい限りでした。。。(^^;)

ジャンケンプレゼント

また、各セッションの合間にじゃんけんプレゼントがあり、あいこじゃんけんに勝ち残った人に書籍やグッズのプレゼントがありました。

途中、なんと運よく勝ち残ってしまい、下記のWP本をGET!あざっす!

他にも、MTやWebデザイン関連の本が5~6冊ほど、MTのTシャツ、トートバッグ、更に更に最新のiPod nanoプレゼントもありました。

ジャンケンが強ければ逆に儲ける事が出来てしまいますね。。。

懇談会でも、ジャンケンプレゼントが行われ、こちらのFirefoxレアグッズが!

勝ち残った人にお願いして、撮影させていただきました。

内容は、

  • クリアケース
  • ストラップ
  • フォクスケシール
  • ペンライト(マークが浮かび上がるそうな)
  • ボールペン

確認できたのはこんな感じでしたが、他にも何かあったかもしれません。

自分もめっちゃ欲しかった…。

Photo 9月 24, 17 42 11

皆様お疲れ様でした。

ともかく今回CSSNITEを読んでくださった工藤さんを三島近辺のスタッフの方々、CSSNITE代表の鷹野さん、いずれも静岡出身の講師の皆様、本当にお疲れ様でした。何でも、次回Vol.2の開催も決定しているそうで、非常に楽しみ。また、参加します。

本当にありがとうございました!