iPod touch向けサイト 互換性→最適化→アプリ

続けて、にわかiPod touchユーザーです。

フルブラウザで普通のサイトを見てみたり、iPod touch専用インターフェースのサイトやWebアプリをいろいろ使ってみています。あとはブックマークレットなども試しています。

iPod touchで使うWebアプリは動作がは遅いということに加えて、iモードのほうが便利に感じるというのもあります。どこでもつながって高速なHSDPAで小容量のcHTMLをブラウズするのに慣れてますからね。Flashも使えたり、コンテンツも揃ってるし。iPhoneになれば、違うのかな。

一方、専用アプリは画面が大きいですし、通信しないアプリならオフラインでも使えるし、動作も軽快だし、Webアプリと比べると便利に感じてしまいます。RIAへの興味の延長上でiPod touchネイティブアプリも作ってみたいかも。

使える画面の大きさはWebアプリも一緒だし、専用のインターフェースの使いやすさもあるんですよね。単に通信回線の問題なのかなあ。

そんな中、以前満席で申し込めなかったセミナーの一部を開催してくれるとメールが(確かWeb標準とかのセミナーだったと思う)。

iPod touch向けWebアプリケーション開発セミナー

Web Apps Dev CenterのiPhone Tech Talkビデオ(見るには登録してログインする必要があります)の中の、

  • iPhone上のSafari パートI:互換性
  • iPhone上のSafari パートII:最適化
  • iPhone上のSafari パートIII:iPhone用アプリケーション

以上3つのビデオの概要を日本語にしたセミナーだそうです。さっそく申込しました。

今年の目標に英語に慣れるというのがあるので、上記のビデオはダウンロードしてiPod touchで見てます。

JavaやFlashはサポートしてないのは知ってましたが、<canvas>を勧めてくるとは思いませんでした。あと、WebKitの説明で出てきたDroseraってデバッガーも初めて知りましたよ。見るだけですが、Word/Excel/PDFもネイティブでサポートされているのは嬉しいかも(メールの添付ファイルとかとは連携できないみたいメールに添付されたものは見ることができるけど、ローカルファイルの添付はできない(修正))。ファイルのアップロードやダウンロードもできないんですよね。ま、しないか。

ずいぶん前に何かのセミナーでアップルジャパンに行った覚えがあるんだけど、なんだったかなあ。GoLive?


Safari

昔、Firebugを知った頃に、Safariでもないのかなあと探したことがあるんですが、Safari3で似たようなことができる「開発」メニューというのが追加されたらしいです(このメニューを使いそうな人は、インストールしたら気づくと思うんで、ちょっと古い情報ですが)。

この開発メニュー、隠し機能というわけではなく、環境設定の詳細でチェックを入れるだけ。

safari_menu.jpg

Webインスペクタのネットワークタイムラインでファイルの読み込み時間が時系列で見ることができます。

safari_mixi.jpg

ほかにも、ユーザーエージェントを切り替えたり(Safari/Internet Explorer/Firefox/Operaがプリセット)、JavaScriptとかスタイルシートを無効にしたり。

GmailをiPhoneインターフェースで試して遊んでみました。

最近、Firefox2のあまりにもっさりとした遅さにSafariをメインにしているので、これは嬉しい機能でした。

Firefoxはついいろいろアドオンを入れてしまっているのですが、SafariはGreaseKit程度しかカスタマイズしてません。標準で開発メニューが使えるのはありがたいです。


Google App Engine

Amazon EC2を試そうかと思っていたら、Google App Engineが始まったので、試してみることに。

残念ながら、プレビューリリースは10,000人のみらしく、順番待ちになってしまいました。

BigTableベースのストレージとか、自動で負荷分散とか非常におもしろそう。

サーバには設置できませんが、ローカルで試すことにしました。

とりあえず、Mac OS Xにインストールしてみて、Hello, World!まで実行。

設定を変えて、URLによってハンドラを変えてみたりしてみました。

●Getting Started

Getting Startedにしたがって進めます。

●開発環境

SDKをダウンロードして、インストーラにしたがってインストールします。

/usr/local/google_appengine

に一式インストールされ、

/usr/local/google_appengine/dev_appserver.py
/usr/local/google_appengine/appcfg.py

にコマンド(のリンクファイル)が設置されるので、パスが通った状態になります。

Mac OS Xだと最初からPythonがインストールされているので楽。

●Hello, World!

処理を行うPythonスクリプト(helloworld.py)を作成して、そのスクリプトで処理が行われるように設定ファイル(app.yaml)を書きます。

次は、dev_appserver.pyを実行して、アプリケーションサーバを起動します。Getting Startedでは、

google_appengine/dev_appserver.py helloworld/

でしたが、helloworldディレクトリの中にいて、dev_appserver.pyにもパスが通っているので、

dev_appserver.py .

でOK。

先に進む前に、app.yamlの

handlers:
- url: /.*
script: helloworld.py

を変えて、

handlers:
- url: /test.*
script: test.py
- url: /hello.*
script: helloworld.py

としてみました。

http://localhost:8080/だと、

Not found error: / did not match any patterns in application configuration.

が出ますが、http://localhost:8080/testとかhttp://localhost:8080/helloで始まるURLのときに、それぞれtest.pyかhello.pyで処理が行われます。直感的ですが、URLでマッピングできると。

とりあえず、今日はここまで。

すでに、自ドメインでの提供もできるようなので、早く使えるようにならないかな。


iモードIDの仕様公開

すっかり忘れてましたが、以前ブログに書いて気になっていたiモードIDの仕様が公開されてました。

iモードIDについて

リクエストに取得用パラメータをつけることで、レスポンスのヘッダが追加される。7桁の英数字と短い気もしますが、一意性があって、同番号でも名義変更でIDは変更され、iモードIDの再利用はないとのことなので、まあ安心かな。

SSL接続時の取得は、やっぱりできませんでした。残念。

「交換機などの工事・ネットワークの負荷状況によりiモードIDが送出できない」というのは、非通知と同様の動きになるってことなのかなあ。100%を保証はしないけど、大抵大丈夫ってことなんだろうけど。

今度、ちゃんとコード書いて試してみようかな。


IE6とIE7を使い分ける

IE7ってどうなんでしょう。このブログのアクセスだけを見ると、アクセス数比率はIE6:IE7=7:3くらい。まだまだIE6のほうが多い。最近はすっかりMacユーザーに戻ってしまったので、いまいち実情がわかりません。

そろそろ、テスト用にIE7環境も用意しなきゃなあと思っているんですよ。ちょっと前のエントリーなんですが、

IE7時代にIE6の検証環境を得るには

といったものも読みました。IE6/IE7の両方を併用できるとベスト。

今は、ノートPCとMacBook Pro上のVMWare Fusion上と2つのXP環境があるので、どちらか一方をIE7にするとか、 VMWare上にVistaを入れてIE7にするという案もあります。もちろん、仮想マシンを複数入れておけばいいんですが、ディスク容量が気になってしまいます(ライセンス的にもどうなんでしょうか。同時使用じゃなければ、OK?)。

といった感じで、いろいろ考えては先延ばしにしてたんですね。

IE7のインストール/アンインストールを繰り返すのは面倒。Multiple IEという切替ソフトは手っ取り早いので、試してみるのもいいかな。でも、やはり仮想マシン環境を用意するというのが現実の環境に近くてオススメです。IE以外に、ツールバーとかプラグインとか使わなきゃいけないこともあるかもしれない。

Windows XP/Vistaなら、無償配布されてるVirtual PCIEのバージョンごとに用意されたVPCイメージを使えますね。たとえ遅くてもテストだけなら我慢できるでしょう。

僕はMacユーザーなんで、別の道を。

(1)CrossOver Mac上でIE6を使う

(2)MicrosoftのVPCイメージをVMWare用に変換して使う

(3)VMWare上のWindows XPでMultiple IEを使う

といった感じで調べてみようと思います。(1)はすんなり環境ができたんですが、(2)でつまづいてます。変換して起動できたけど、ネットワークにつながりません。(3)は未挑戦。

というわけで、続きます。


Zoho Meetingを使ってみた

案外食わず嫌いなところがあるんだよなあと思うんですが、Zoho初体験。Google Sitesを使ってみて、コラボレーションツールといえばZohoがあるなあとあらためて思ったわけです。

オフィス系のツールもあるんですが、今回はオンライン会議ツールのZoho Meetingを使ってみました。以前、Skype ExtrasのUnyte Application Sharingを試してみたんですが、簡単にデスクトップ共有ができると嬉しいので。

Zoho Meetingは会議の開催者がWindowsじゃないとダメなんですが、参加者はMacでもOKです(VMWare上のWinXP/IE6で開催し、Mac/Safariで参加しました)。

開催者はZohoのアカウントが必要ですが、参加者は登録する必要はありません(開催者がメールアドレスを参加者リストに追加すると参加用のURLがメールで届く)。これは◎ですね。

デスクトップ共有は、開催者のデスクトップを見せるだけじゃなく、開催者が許可することで参加者側から操作することもできます。

Zoho Meetingに限らず、日本語化は途中なんですが、使う分には問題ないようです(日本語化ステータス)。

試してないんですが、WebページにZoho Meetingを埋め込むこともできます(IFRAME使ってます)。

Zohoの中には有料のサービスも一部ありますが、試しに使う程度は無料なので、うまく使えるかもしれませんね。

余談。今気づいたんですが、以前紹介したサイト監視のSite 24×7もZohoをやってるAdventNetが運営しているようです。いろいろやってる会社みたいですね。アメリカが本社のようですが、日本法人も2001年にできてるし、インド・中国にも法人があるようです。デモのムービーの英語も訛りがあるんですよね。聞き慣れてないのでビックリしました。


さっそくGoogle Sitesを使ってみた

Google AppsにGoogle Sitesが追加されたので使ってみました。

※Google Sites、まずはUS版だけらしく、 Domain settingsのControl panelでNext generation (US English only)を選んでおく必要があります。そうすると、DashboardでSitesサービスを追加できるようになります。
※僕が使ってるAppsは無料のStandard版です。

ニュースもいろいろ出てるので、2つほど。

グーグル、協業サイト構築ツール「Google Sites」を公開–JotSpotの資産を活用
Google、コラボレーションツール「Google Sites」立ち上げ
Google、コラボ型サイト作成ツール『Google Sites』をリリース

簡単にウェブサイトを構築できるとか、情報を共有できるコラボレーションツールとか書いてあります。

ページ作成だけなら、これまでもGoogle Page Creator(Appsの中ではWeb Pages)というツールがあったんですが、Sitesは情報共有がコンセプト。「ブラウザで見ることを前提にしてるので、Webサイトというメディアになっている」と捉えるといいでしょうか。

英語ですが、動画でプロダクトマネジャーの説明を見た方がわかりやすいかもしれません。

作成できるページは、Web Page/Dashboard/Announcements/File Cabinet/Listの5種類。

googlesites1.jpg

Dashboardは、Widgetみたいなのをまとめたページを作る機能。ほかのページを部品にして、まとめたページを作れます。

AnnouncementsはWhat’s newみたいなのをPostして時系列に並べていく機能。

File Cabinetは添付ファイルをアップロードできる機能。

Listは、Action Items/Issue List/Unit Statusという課題管理向けのテンプレートを元に(カスタマイズも可)リストを作ったり、Create your ownを選んで独自に入力項目を設定することも。

ほかにも、使える機能は……。

  • 作成するページに階層構造を持たせることができる。
  • (Web Pageの内容だけ)履歴が残り、元に戻したり、差分を見たりできる。
  • File Cabinetに同名ファイルをアップロードするとバージョン管理される。
  • 更新時に通知を送ってもらうことができる(サイト全体orページごと)
  • 公開範囲を設定できる(完全公開もできるし、メンバーだけとか、メンバー追加権の設定とか)
  • もちろん、検索もできます。

JotSpotを買収して作ったようなので、Wikiがベースらしいんですが、Wikiの記法は一切使わずに、GUIでページを作成できます。

画像をページ内に埋め込むのは、ドラッグ&ドロップではないですが、Insert Imageを選んでファイル選択するという簡単さ。Googleのほかの機能(Calendar/Docs/Picasa/Video)も同様に追加できます(VideoはGoogle Video、YouTube Videoの順(^^))。

googlesites2.jpg

機能や柔軟度を求めるなら、情報共有ツールではパワフルに使えるwikiのConfluenceが好きだし、しっかり課題管理をやるならJIRAが好きなのですが(ワークフローを設定したりとか)、手軽に立ち上げることができるのはすごい。

ソフトウェア開発者はSubversionと連携させて欲しいとか違う要望があるでしょうし、僕はクラウドコンピューティング支持者なので贔屓目かもしれませんが、汎用的で小規模なコラボレーションツールとては十分便利で使えると思います。

さらに便利さを求めるとすると、tracやRed Mineなんかが扱えるレベルでは、自分で設置してメンテナンスするのが面倒に感じてるんですよね。以前いろいろ検討したのですが、Subversion使いたいならunfuddle.comとか、プロジェクト管理だけならBasecampとかを使うのが気持ちよさそうです。


Apacheのmod_rewrite

Zend FrameworkでMVCを使うには、mod_rewriteを使って、全てのリクエストをフロントコントローラー に転送することになるんですが、ローカルでテストするときだけ、なぜかうまく行かなくて悩んでました。

RewriteEngine on
RewriteBase /apps/
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

dp.SyntaxHighlighter.ClipboardSwf = ‘/blog/syntaxhighlighter/clipboard.swf’;
dp.SyntaxHighlighter.HighlightAll(‘code’);

こんな感じでApacheに設定すると、/apps/loginにアクセスするとloginコントローラーのデフォルトアクションが呼ばれます。

テストサーバ上ではうまく動いているのと、/apps/index.php/loginとリクエストすれば同じ形になるので、ローカルでおかしいのは追求せずにいたんですね。

mod_rewriteはちゃんとロードされていたので、ちょっと現実逃避でmod_rewriteの使い方を調べてみたら、Options FollowSymLinksが必要らしいです。Apacheのエラーログにもちゃんと出てました(←全く見てない)。

「mod_rewrite Options FollowSymLinks」でググったら、一発で出てきました。

mod_rewriteを使うには「Options FollowSymLinks」が必要

いやあ、ちゃんとエラーログくらい見なきゃいけませんね。


アクセス元に合わせてコンテンツを差し替える

キリングルメガイドにアクセスしたところ、左のグルメ情報にアクセス元のエリアの情報が表示されてました。これが普段住んでる東京なら「会員情報からエリアをクッキーに入れててパーソナライズしてんだろう」くらいに流すんですが、実は年末の混雑を避けて、九州に帰省しています。

キリンさんが実家まで知ってるわけもなく、ついついソースを追いかけてみましたが、そんなことをしなくてもサイバーエリアリサーチ株式会社のSURFPOINTを使っているとバナーが貼ってありました。

SURFPOINTはアクセス元の位置情報、接続回線情報を取得することができるサービスです。

キリンのグルメガイドみたいに地域に合わせたコンテンツや、回線速度に合わせたコンテンツ(ブロードバンドならFlashを使って、それ以外は画像を使うとか)といったようにユーザーのアクセスしている状況に最適なものを配信したいというのがわかりやすい。そのほか、配信地域の制御をしたいというDRMとか不正行為の検出に活用するとか、ログ解析に使うというのもあるでしょう。

ログ解析もおもしろいでしょうが、それよりもアクセス元の情報に合わせてレスポンスを返すことができるという点のほうがおもしろい。

キリンではどういう構成なのかはわかりませんが、SURFPOINT for WebServersというApache/IIS用のモジュールでの提供や、どこどこJP&APIというASPでの提供などがありました。

モジュール型では、取得された情報がリクエストヘッダに追加されるようです。Webに掲載されている年間ライセンスの価格表だけでは、総費用が理解できなかったのですが、自由度とパフォーマンスは一番あるのでしょう。

API型では、初期費用が10万円ほどかかりますが、月額は30万クエリまで1万円。これくらいなら大規模サイトでなくても検討できそう。

また、1日5000リクエストと制限はありますが、無料のOPEN-SURFPOINTもありました(商用利用も可)。5000人目以降は認識できなくてもOKなら、これもアリですね。

精度を求めなければレスポンスをキャッシュしてリクエスト回数を抑えることもできるし、低コストでコンテンツの地域情報でのカスタマイズに取り組めそうです。

CDNのAkamaiでも地域情報や回線情報が取得できる(Geographic Example using EdgeScape)と数年前に知ったときも思ったんですが、なにか使いたいな〜。

ところで。SURFPOINT、競合はほかにもいるのでしょうか。


Skype x Unyte Application Sharing

最近、よくSkypeでミーティングします。

資料を一緒に見ることになります。事前に資料を送っておいて、同じ資料を見てもらいながら話すというのでもいいのですが、先日「こっちは最新版の資料を見ていて、相手は一個古い資料を見ていた」というせいで話がかみ合わないことがありました。

そんなわけで、同時に同じものを見ることができるWeb会議システムみたいなものはないものかと、軽く始められるそうなものをちらっと探してみました。

Macromedia Breeze(現Adobe Connect)を使ったことがありますが、あそこまで単体でできればいいですけど、結構なお値段がしますからね……。

希望としては、

・こちらの画面を見せることができる(チャットや音声はSkypeでやるので不要)

・相手は、ユーザー登録やソフトのインストールなどの事前作業が不要(重要)

・できればMacで使えるソフト(ま、VMWareでやるんでWindowsでも可)

という感じ。

Skype単体でビデオチャットはできるので、ビデオチャットの画面のソースとして自分の画面を設定できればいいんじゃないかなーと思ったら、Windows版だけど、そういうソフトがありました。

Skype Videoでデスクトップを送りつけるの作りました

Virtual Desktop Camera for Skype

今回は、これではなく。Windowsしか使えませんが、Skype ExtrasにもあるUnyte Application Sharingを試してみました(WindowsXPでSkype 3.5.0.239)。

現在は、IBMに買収され、Lotus Sametime Unyteになっているようです。

インストールは簡単。Skypeのメニューから「ツール」→「さらに活用」→「エクストラを入手」と進んで、Extraマネージャ内の「共同作業」にあります。

まずは、「Start Sharing」をクリック。

Unyte1

続いて、シェアする人を指定するのですが、SkypeのコンタクトならアクセスしてもらうURLをチャット経由で送信できます。Skypeユーザーじゃなくても、URLをメールなどで知らせることができれば、OK。

有償サービスの試用ということで使えている機能がいくつかありまして、表示したいアプリを限定することができます。試しに、WindowsのIEをシェアして、MacのFirefoxで閲覧してみました。

Unyte2

ほかにも有償のみのようですが、注釈をつけたり、リモート側から操作したり、いろいろ機能がありました。

今後は、録画やリプレイといった機能が追加されていくようです。

無料だと、画面を共有する機能を2ユーザー(つまり1対1)で使うことしかできませんが、追加機能は2ユーザーで年30ドルから。

ほかにもSkype Extrasには、ホワイトボードの共有とかもあるし、使うと便利そう。Macでも使えるようにならないかな。

無料のWeb会議サービスだと、Vyew.comというのがありました。なかなか多機能そう。でも、たぶん、相手にもユーザー登録してもらわないといけなそうで試してません。

Technorati Tags: