Posted by & filed under 開発.


「現場で役立つノウハウを」というコンセプトで始まった Practical Sencha Touch シリーズ、今回は第 2 回目です。Sencha Touch のアプリが動作する環境は様々です。場合によっては、特定の端末だけ動作がおかしい、ということもあるでしょう。今回は、そんな時に重宝するツールをご紹介します。

Problem:

特定の端末だけアプリの動作がおかしい。原因を調査するために、詳細な情報が欲しい。

Solution:

weinre を使います。weinre は Web インスペクタ リモート(WEb INspector REmote)の略で、端末のブラウザで表示しているページを PC ブラウザ(*)の Web インスペクタを使ってデバッグできるツールです。気になる発音ですが、公式ページによると「”ワイナリー”か”ワイナー”と呼ばれているが、どちらの発音が正しいかは知らない」とのことです。。私は「ワイナリー」と呼んでいます。

*… ここで言う PC ブラウザは、Google Chrome か Safari を指します。

以下にインストール&利用方法を示します。

1. weinre は Node.js 上で動作します。まずは Node.js の実行環境を準備します。

以下のサイトからインストーラをダウンロードして、インストールして下さい。

node.js:
http://nodejs.org/download/

2. npm(Node.js のパッケージ管理システム)を使って weinre をインストールします。

3. weinre のサーバーを起動します。起動コマンドは「weinre」です。このサーバーで、端末ブラウザの情報を受けとります。デフォルトのポート番号は 8080 ですが、httpPort オプションで任意の番号を指定できます。

コマンド実行の際、boundHost オプションを指定している点に注意して下さい。boundHost オプションは、weinre のサーバーに接続できる IP アドレスを指定するオプションで、指定しない場合 localhost のみ接続可能となります。実機からアクセスするために –boundHost オプションに -all- を指定します。

weinre

4. 端末のブラウザから weinre サーバーのページを開きます。ページの URL は「マシンの IP アドレス」+「指定したポート番号(指定なしの場合は 8080)」です。

weinre-page

私は、普段は社内の無線LAN経由で、実機から PC にアクセスしています。Mac Book に実機から接続したい場合は「インターネット共有」を設定し Wi-Fi 経由でアクセスするとよいでしょう。

5. ページ下部の「Target Bookmarklet」にある JavaScript をコピーします。

weinre-bookmarklet

6. Sencha Touch アプリのページを開いて、アドレスバーにコピーした JavaScript をペーストして実行します。

7. PC ブラウザから weinre サーバーの debug client user interface ページ({$weinre サーバーの URL}/client/#{$id})を開くと、接続している端末から情報が送られていることが確認できます。あとは、普段と同じ要領でデバッグしてみて下さい。但し、PC ブラウザの Web インスペクタに比べて機能が不足しているので注意して下さい。具体的には、スクリプトのステップ実行やプロファイリングなどができません。

weinre-client

8. サーバーの停止は、コマンドライン上で「Ctrl + C」を入力します。

Discussion:

これだけだと weinre 紹介の二番煎じの記事なので、Sencha Touch アプリ特有の話も少しだけ。先日、作成した Sencha Touch アプリで、特定の Android 端末だけボタンを押しても反応しない、という問題がありました。

Sencha Touch は独自のイベントシステムを持っていますが、発火の起点は当然ながら、ブラウザの DOM イベントです。具体的には、Ext.event.publisher.Dom クラスと、それを継承した Ext.event.publisher.TouchGesture クラスの onEvent メソッドで DOM イベントを受け取っています。hashchange イベントなど例外もありますが、大抵は、この 2つのクラスがイベントシステムの起点です。この時の調査では、onEvent メソッドにログを張って(*1) weinre のコンソールでイベントが発火しているかどうかを確認しました。結果、文字の上だと touch イベントが発火しないことが判明して、対応に苦労しましたが。。

debug-with-weinre

weinre は無料で、且つ、どのプラットフォーム(Windows・Mac・Linux)でも利用できる点が素敵ですね。Sencha Touch アプリのデバッグでは、かなり頼りにしています。デバイス固有の問題に悩んだ時は、ぜひ活用して下さい。

See Also:

weinre – Home:
http://people.apache.org/~pmuellr/weinre-docs/latest/


関連文書:

Posted by & filed under 開発.


先週、「Sencha Touch パーフェクトガイド」が出版されました。売れ行きはなかなか好調のようです。ご購入頂いた皆様、本当にありがとうございます。そして「はじめに」の正誤表を読んで、大事なことを思い出しました。今週から週1回のペースで Sencha Touch の記事を投稿します。。

実は「Sencha Touch パーフェクトガイド」には、書いていない内容があります。それは、所謂「バッドノウハウ」です。バッドノウハウはバージョンが変わると必要なくなったりする代物ですが、実際の開発現場では役に立つ情報です。今週から「Practical Sencha Touch」シリーズと題しまして、Sencha Touch アプリを開発する現場で役に立つノウハウを公開します。また、開発に便利な周辺ツールも併せてご紹介したいと思います。

Problem:

Sencha Touch のドキュメントに含まれているサンプルなどを参考にアプリを作ったが、どうにも画面の初期表示が遅い。

Solution:

コンポーネントの生成を「できる限り」遅延させましょう。例えば、以下のような構造の画面を作っていたとします。

最初に必要なのは itemId「firstPage」のコンポーネントだけなので、それ以外のコンポーネントは items に含めないようにします。items への追加を必要な時まで後回しにすることで、画面の初期表示を大きく改善できます。

Discussion:

コンポーネントの生成をいかに後回しにするかは Sencha Touch のみならず、Ext JS でも定石のようです。サンプル程度の小さなアプリでは、最初にまとめてコンポーネントを作っても影響は少ないです。ただ、画面数の多いアプリを作る場合は、いかにコンポーネントを遅延生成するかに配慮した方がよいでしょう。

遅延生成させるためには Controller クラスの refs で指定できる autoCreate オプションが便利です。autoCreate オプションは、利用時に存在しない場合、コンポーネントを自動生成してくれるオプションです。以下のコードでは autoCreate オプション付きの refs を定義し(*1)、利用時にコンポーネントが存在しない場合に自動生成して(*2)画面に追加(*3)しています。わざわざコンポーネントを生成するコードを書かなくてもよいので、すっきりします。ぜひ一度試してみて下さい。


関連文書:

Posted by & filed under いろいろ.


HTML5モバイルアプリケーションフレームワーク Sencha Touchパーフェクトガイド」(タイトル長!)が今日から発売ですね。今の時点ではまだ、Amazonのページに表紙の画像がありません。悲しいですね。(<= 表紙表示されるようになりました。いいですね)。本の中身の紹介は他の人がやってくれているので、「はじめに」のところの正誤をこっそりと…。

[続きを読む…]


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under 開発.


さて、昨日届いた懸垂マシンIIIで早速懸垂大会が行われました。
朝っぱらから何やってんだという感じですが、日々の礼拝も同じ時間なのでどっちにしても何やってんだとつっこまれることでしょう。

みんな大体3回くらいで力尽きます。
多い人は7回くらいだったり、少ない人は1回とか1.5回とかそんな感じでした。

大会の様子は以下です。
おっさんが懸垂しているだけで暑苦しい絵面なのでサラっと流しますね。

IMAG0371 IMAG0370 IMAG0368 IMAG0367 IMAG0365 IMAG0363 IMAG0362 IMAG0361 IMAG0360 IMAG0359 IMAG0357
必死に懸垂するおっさんたち

IMAG0372
同率優勝の二人(10回)
優勝賞品はラスボス提供によるりんご

IMAG0376 IMAG0375
懸垂大会終了後はそのまま続けて礼拝が行われました。
バカですよねえ。

懸垂よりロックリングスで指鍛えたほうがよっぽど生産的ですよ!


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under 開発.


さて、前回導入予定と書いたチンニングマシンとロックリングスですが、今日届きました。
導入したのは懸垂マシンIIIロックリングスです。ゼロスタさんとこと全く同じ組み合わせですね。

早速明日は懸垂大会をやるらしいので、また明日もなんか書くことでしょう。

しかしロックリングス捗るわー。いいわー。

ロックリングスの二段目(指三本)で懸垂してたら「なにそれ意味わかんない」とか言われました。
意味わかんない意味がわかんないですよね。

IMAG0346
ロックリングスが届いて歓喜する壁バカ

IMAG0347
チンニングマシンの箱でかいです

IMAG0349
開封

IMAG0351
これからビルドです

IMAG0352
できあがって早速懸垂する購入者


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under いろいろ.


パーフェクトPython 」の執筆者の一人がPython3を日常的に触っていないのはいかがなものか、と言うおしかりを受けて、webscoket-clientがPython3.3で動くようになりました。現状はまだ、ブランチを直接チェックアウトして動かす必要があります

[続きを読む…]

PS. コロコロ教は、僕の健康診断の結果と全く関係がありません。


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under いろいろ.


コロコロといっても雑誌じゃないですよ。

弊社ではラスボスの健康診断結果がやばかったからエンジニアの体力向上のためにコロコロ教なるものが誕生しました。
いわゆる腹筋ローラーで筋トレをするという行為が礼拝と呼ばれ、朝の 10:45 から 15分間行われます。
礼拝の対象は CTO です。

これだけでは飽きたらず、チンニングマシンとロックリングスを購入し、さらなる体力向上を目指す信者もいるとか。
とか色々企んでいたら、なんとゼロスタートさんが弊社で導入予定のものと全く同じ懸垂器とロックリングスを使ったエントリを書いているではないですか。
なんという親近感。届いたら弊社でもやることでしょう。

IMAG0333 IMAG0334

日々の礼拝の様子

IMAG0335

礼拝中に休憩室に貼られる礼拝中表示

IMAG0336

自主コロで体力向上に務める信者

 

引っ越したばっかりで何してるんでしょうねこいつら。

 

 


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under .


先日の Developer Summit でのプレゼンに失敗して、すっかり意気消沈している開発部 川野です。

この度、弊社エンジニアの大谷、土江、稲垣、私、そして NTT レゾナント株式会社の森本恭平さん、フリーエージェントとして活動されている高岡大介さんの 6 名で、Sencha Touch の解説本を執筆しました。今月の 27 日、アスキー・メディアワークス様より出版します。

本の紹介

本のタイトルは「HTML5 モバイルアプリケーションフレームワーク Sencha Touch パーフェクトガイド」です。長いタイトルと一部で不評ですが、私は気にしていません。

書籍では Sencha Touch の導入から、フレームワークの基本構成、そして実践的なアプリケーションの開発方法までを扱っています。タイトルの「パーフェクト」の言葉通り、Sencha Touch に関する一通りのトピックを網羅しています。

以下、目次です。

この本を読み終える頃には、「Sencha Touch のアプリ、作れますよ!」と自信を持って言えるようになると思います。

エンタープライズ・モバイルアプリ

アリエルでは、自社製品 Ariel AirOne Enterprise のモバイル機能を Sencha Touch を使って開発しています。今回の執筆を終えて、「やはり Sencha Touch は、エンタープライズ向けのモバイルアプリケーションの開発に適している」という思いを強くしました。

元々、モバイル端末向けの業務アプリは、ネイティブではなく、ウェブで提供する方がメリットが多そうです。Objective-C や Android 向けの Java に長けたエンジニアはそれほど多くはいなそうですし、対応するプラットフォームが増えた場合(例えば、Windows Phone 対応)の負担も大きいでしょう。その点、Web アプリであれば、同一のソースコードで対応できます。技術者の確保も比較的容易に思われます。また、セキュリティ的な観点からも、端末にデータを残さない Web アプリの方が安心感があります。

それに加えて、Sencha Touch には、以下のような特徴があります。

メンテナンス性に優れている

Sencha Touch では、アプリケーションを MVC(モデル・ビュー・コントローラ)のアーキテクチャに従って構築します。また、「クラスベース」のオブジェクト指向プログラミングができるよう、独自のクラスシステムが用意されています。これらの仕組みは、複雑なプログラムを見通しよく構築でき、機能追加を容易にしてくれます。保守期間の長い業務アプリでは、ありがたい特徴です。

データを扱うための機能が豊富

Sencha Touch には、「データパッケージ」というデータを簡単に扱うための一連の機能群があります。また、リストやチャート、入力フォームなどデータを表示・操作するためのコンポーネントが充実しています。業務アプリでは主にデータの管理がメインのため、これらの機能はすぐに役立ちます。

サポートが充実している

Sencha Touch の特徴で、開発者へのサポートが充実している点も見逃せません。高機能な API ドキュメントだけでなく、無料の学習教材(動画・チュートリアル・サンプルアプリ)が多数用意されています。また有償のサポートもあります。業務アプリの開発はチームで行うことがほとんどですが、こうした資料は教育にかかる負担を下げてくれるでしょう。

エンタープライズ向けのアプリ開発に適している点を強調しましたが、もちろん一般消費者向けのアプリ開発にも Sencha Touch は頼りになります。通常の Web アプリとして提供する以外に、ネイティブアプリにパッケージングして、App Store で iOS アプリとして、Google Play で Android アプリとして配布することもコマンドひとつで可能です。Sass・Compass をベースに作られた独自のテーマシステムも、魅力的なユーザーインターフェイスを作るのに便利です。

今後、業務アプリケーションのモバイル対応ニーズは高まると予想されています。実現する技術を選定する際は、ぜひ、Sencha Touch も候補に加えて頂ければと思います。そして採用が決まったら、拙著「Sencha Touch パーフェクトガイド」のご購入を、何卒よろしくお願いします。


関連文書:

Posted by & filed under いろいろ.


今年もバレンタインの季節がやって参りました。
弊社非リアチームとしましては看過できない事態でございますので、例年通り(二回目)にうまい棒テロを実行する所存です。

というわけで大量に買いまくってきましたよ。
目標は前年の本数を超えること。

去年はこんな感じ

IMG_20120214_133253

そして今年はこれ

IMAG0328

圧倒的戦力!

あ、チロルチョコもありますが気にしないでください。

ちなみに512本とキリいい数を買ってきたのですが、管理のお姉さんには「キリがいいとかなにわけのわからないこといってんですか」などと一蹴されてしまったことを報告しておきます。

チロルチョコは802個あったらしいのですが、ホモチョコ的には801個の方がよかったんじゃないかなーと思います。

今週末は会社の引越しです。


関連文書:

  • 関連文書は見つからんがな