2008-08-12

Android 勉強会 第 8 回に参加した

第 8 回 Android 勉強会に参加した。

今回のセッションは 2 つ。各々持ち時間は一時間。計 2 時間の勉強会。

  • Android と MVC アプリケーション・アーキテクチャ
  • マッシュアップ・アプリケーション

Android と MVC アプリケーションアーキテクチャ

第一セッションは、Android のアプリ開発も MVC で開発するといいよ、といふお話。MVC は、Model-View-Controller の頭文字を取ったもので、アプリケーションの開発手法の一つ。詳しい説明はこちらをどうぞ。

MVC アーキテクチャー

話の前半は、MVC アーキテクチャーの簡単な説明、デモ・アプリのソース・コード解説、オブザーバー・パターンの紹介と実装について触れた。知ってる人は復習として、知らない人はキーワードを頭に入れて後で調べてねっ、て感じでさらりと流してた。ぼくは、Smalltalk MVC と MVC2 の違いが分からなかった。後で復習しよ。

以下、MVC がらみでメモったこと。

  • 入出力は、View と Controller が受け持つ
  • View と Controller の境界は分かりにくいので、明確に分けない。VC とセットにしてもいいかも。
  • Model が独立することが重要。結果、
    • Model の再利用がしやすくなる
    • UI の変更に強くなる
ローカル・マッシュアップと MVC

後半は、Android アプリ同士の連携のお話。そして、こっちが本命。

Android のアプリ同士を、連携させて使いたい (= マッシュアップ・アプリを作りたい)。この場合、ユーザーがアクセスする側のアプリを主と考える。もう一方のアプリは主アプリから呼ばれる従アプリで、従アプリはデータを持っていると考える。この考え方だと、主アプリは VC (View, Controller)、従アプリは M (Model) と見なせる。つまりアプリ同士の連携でも、MVC アーキテクチャーを適用できる。データが UI と分離して見通しのよい、マッシュアップ・アプリが作れる。といふのが話の骨子。

設計するにあたってのポイントは以下の通り。

  • 従アプリ (Model) のインターフェースには Service を使う
  • 通知には Intent を使う
  • イベント・ハンドラーには Intent Receiver を使う
  • Intent Receiver が Service を直接呼べれば良かったが、Activity しか Service にアクセスできない制約がある
  • Android に於いてアプリは全く等価。いつ「従アプリ」として利用されるか分からない。疎結合なアプリを心がけるとよい。

あと、今回 (MVC) とは違うアプリ間通信の方法が質問として上がった。残念ながら、ぼくの理解を越えていたので、ここには書かない。

Mashup Application

第二セッションは、throw Life の中の人、adamrocker さんのお話。ぼくが Android 勉強会を知ったのは、throw Life を読んでいたからなので、ドキドキ。

話は 3 つのセクションに分かれてた。

  1. Android + Android
  2. Android + Web
  3. Android + Device
Android + Android

P2P と地図を使ったマッシュアップ・アプリのデモ。

前回の Android 勉強会で、Cybird さんが提案なさってた「俺ナビ」を、二週間足らずでデモに仕上げて来た。まず「I'm here」メッセージを相手に送る。相手の地図アプリにはメッセージの送り主の居場所が表示される。それを見た相手は「Come here」メッセージで、自分の処までの道順を送る。かうして「相手」までのルート案内を受け取る仕組み。名前は DrawNavi。

「I'm here」メッセージ及び「Come here」メッセージを XMPP で送ってるところがミソ。XMPP は、Google Talk の後ろ側で動いてるプロトコル。つまり、IM で「自分の居場所」や「道順」を送れば、簡単に「俺ナビ」が作れちゃったよ。というデモだった。

「I'm here」や「Come here」メッセージを送るプロトコル (XMPP 上のメッセージ・プロトコルね) 次第で、汎用性が決まってしまうので注意とのこと。

俺流プロトコル実装入門 ~Private Implementation Protocol~

Android + Web

Cloud の話題。

2 つのデモが登場。一つ目は、移動時間を加味したスケジューラー。現在地とイベント情報 (時間と場所) を入力しておくと、「おすすめの出発時刻」を表示してくれるといふもの。前々からぼくはこういう機能がカレンダー・ソフトに欲しかった!

二つ目のデモは、地図と Twitter をマッシュアップしたサービス「geottr」。Android アプリは、geottr の入出力デバイスといふ位置付け。サーバー側で動かすサービスは、Google Apps Engine を使うと、高負荷を気にしなくてよいとのこと。

ちなみに、ユーザー認証にも Google Apps Engine の Google アカウント認証が便利。そして、スタンド・アロン型アプリには ClientLogin という認証 API がある。こいつは知らなかった!

Android + Device

Physical Computing。例えば Wii のような、キーボードともマウスとも違う新しい入力方式。

Android を使えば、新しい入力装置が作れるかも。

といふわけで、Gainer を使ったフライト・シュミレーター・アプリのデモを見せてもらった。

Gainer は、センサーとかボタンとか加速度感知とか、そういった入力を USB 経由でパソコンに取り込む I/O モジュール。キットは 3,500 円。完成品購入で 8,500 円。Gainer を Android で動かしたくて、ライブラリまで自作してしまったという。

Gainer に興味があれば、本もどうぞ。

+GAINER―PHYSICAL COMPUTING WITH GAINER はじめてのGainerプログラミングガイド (I/O BOOKS)

懇親会

Android 勉強会の懇親会に、初めて参加した。adamrocker さんの隣、Cave の安生さんの斜め前に座った。何とか何とか話についていくのが精一杯。次回は、もう少し腕を上げて来ます ;)

2008-08-07

iPhone のマップを「二本指タップ」で縮小

iPhone アプリでは、画面を拡大・縮小したい時には次の操作を行なう。

  • 拡大: ダブル・タップする (画面を指で二回連続叩く)
  • 拡大: ピンチ・アウトする (つまん指を広げる)
  • 縮小: ピンチ・インする (指をつまむ)

マップ・アプリでは、更にもう一つ、縮小用の操作が使える。それは、「二本の指で画面をタップ」するといふもの。ピンチ・インより指の動きが小さいので、何気に便利。ダブル・タップとも対応しているので分かりやすい。マップ・アプリ以外でも、この機能、使えるといいのだけど。

ref

2008-08-06

Google Reader の「すべてのアイテムを既読にする場合に確認する」オプション

Google Reader の「すべてのアイテムを既読にする」機能は、UI 的に嬉しくないポジションにある。つまり、「Mark all as read」ボタンは、「Refersh (更新)」ボタンの隣にあって、押し間違えやすい。キーボード・ショートカットの「A (shift+a)」は、記事をシェアしようと「S (shift+s)」を押すはずが誤って「a」を押したといふ話も聞く。

対策

Google Reader の「設定 > 各種設定 > その他」から「すべてのアイテムを既読にする場合に確認する」といふオプションにチェックを入れる。

Google Reader - Confirm mark all as read

このオプションにチェックを入れると、「50 アイテム以上の記事」を「mark all as read」する時に確認ダイアログが現れるやうになる。間違って「mark all as read」を押してしまっても、ここで「キャンセル」すればいい。

ただしこの機能、記事数が 50 を越えていないと動作しない。過信は禁物。あくまで補助的な機能と思っておく方がよいでせう。

iPhone 2.0.1 アップデート・リリース

iPhone のアップデートがリリースされた。iPhone のアップデートは、iPhone 3G が出てからは初めて。バージョン番号は 2.0.1 (iPhone 3G のバージョン番号は 2.0)。アップデートのサイズは約 250 MB。目的はバグ・フィクス。新機能 (例えばコピペとか) の追加はない。iTunes から最新版にアップデートできる。

ぼくも、早速インストール。

だけど!

アップデート後にこんなエラー・メッセージが現れる。

iTunes は iPhone のキャリア設定をアップデートできませんでした。不明のエラーが発生しました (0xE8000001)。

iPhone の設定からバージョン情報を確認してみると、2.0.1 になっている。でも、このエラー・メッセージは嫌ぁねぇ。

ネットで検索すると、各所でこのエラーに遭遇している。一説によると、SoftBank 側のキャリア設定ファイルがまだ用意されていないのだとか。復元すれば直ったとか。情報が入り乱れている。

安全を期す方は、アップデートを今少し控える方がいいかもしれない。

ref

2008-08-05

Google Maps のストリート・ビューが日本でも見られるようになった

Google Maps の日本地図がストリート・ビューに対応した。Google Maps の地図右上「ストリート・ビュー」ボタンを押すと、「ストリート・ビュー」で表示可能な「道」が青色で塗りたくられる。スクリーン・ショットは、ぼくがよく行くオーディオ・ショップの入ってる「ノジマ」(こんなマイナーなスポットも対応してる!)。

Google Maps - Street View in Japan

「青い道」か「人形のアイコン」をクリックすると、ストリート・ビューがポップアップ。人形アイコンはドラッグ可能。視点変更は、ビューの中をドラッグ。道に浮かぶ矢印をクリックすると、その方向に進む。

現在、対応地点は下記 10 都市。

  • 東京
  • 横浜
  • 埼玉
  • 千葉
  • 京都
  • 大阪
  • 神戸
  • 仙台
  • 函館
  • 札幌

この中では、特に京都が面白い。古都の街並みを、京都御所二条城の周りを、ストリート・ビューで見てみてはどうでせう。

追記

日本の他に、オーストラリアにもストリート・ビューが対応した。

また、米国で 30 以上の都市がストリート・ビューに対応したとのこと。

ref

Ctrl + F5 で強制リロード

ウェブ・ブラウザーの更新 (リロード) には、二種類あるというお話。

一つはリロード・ボタン、もしくは F5 キー。これは普通にページの「更新」が行なわれる。

もう一つは Ctrl キーを押しながら更新する方法。つまり

  • Ctrl キーを押しながらリロード・ボタンを押す
  • Ctrl + F5

こちらは、強制的な更新になる。つまり、ブラウザーはページが最新のものでも (タイム・スタンプが同じでも) 更新を行なう。言い換えると、キャッシュを無視してページの更新を行なう。

ウェブ・ページを見ていて、キャッシュが悪さをしているんじゃないか? なんて話を聞くでせう。そんな時、わざわざウェブ・ブラウザーのキャッシュを空にする必要はなくて、「Ctrl + F5」とすればいい。

あとがき

当ブログを IE で見ると、文字化けを起こすことがある。そんな時も、この Ctrl + F5 を試してみて欲しい。

実を言うと、文字化けした clmemo@aka を「Ctrl + リロード・ボタン」している人がいて、この方法を知った。

「ジャズに親しむ会」に行こうかな

神奈川は相模原のメイプル・ホールにて、今週末「ジャズに親しむ会」が開かれる。

プログラムは、こんな感じ。

  1. 14:00-14:30 ジャズの始まり (音楽映画の紹介)
  2. 14:40-15:20 サックスとジャズ 難しくないアドリブのお話
  3. 14:30-16:00 試してみよう、ジャズ!!! (オカリナ・グループの演奏)
  4. 16:00-16:30 ジャズ論議とオーディオ論議

値段も高くないし、たまにはコンサート・ホールで音楽も聴いてみたい。今週末は、少し足を伸ばしてみやうかな。

Firefox 3 on Ubuntu-8.04 で Google Toolbar のブックマーク機能を使う

Ubuntu 8.04 の Firefox 3 で、何故か Google Toolbar のブックマーク機能が使えない。Google Toolbar の「スター」を押しても、ブックマーク登録できないし、登録したブックマークにもアクセスできない。どうしたものかと悩んでいたら、OpenCage さんが解決策をブログに書いていた。

修正方法は簡単。次のコマンドを実行するだけ。

sudo apt-get install libxul-dev libstdc++5 gcc-4.1 libstdc++6

そしたら、Firefox を再起動する (ぼくは Firefox を起動しながら、上記コマンドを実行した。なので「再起動」。Firefox を閉じて apt-get を実行したら、普通に起動するだけで OK かも)。OpenCage さんが書いている「Google Toolbar の再インストール」は必要なかった。

2008-08-04

Google 検索に「天気予報」検索が加わった

Google の検索ボックスに「天気 地名」or「天気予報 地名」と入力すると、その「地名」の天気予報が検索結果として表示されるやうになった。

Google Search - Weather

スクリーン・ショットは、東中野の天気予報を検索したもの。ご覧の通り、表示されるのは次の項目

  • 現在の気温・天気・風向/風速
  • これから 4 日間の天気予報 (天気・最低気温・最高気温)

天気予報で表示されるのは国内の主要都市もしくは駅名のみ。国外 (例えばカイロとかニューヨーク、北京) はダメ。また、国内でもスポット名 (ディズニーランドとか東京タワーとか金閣寺とか) では検索できない。特に後者は Google Maps の検索機能を使ってすぐにも出来そうな気がするので、Google にはあと一歩頑張って欲しい。

あとがき

こういふ検索系の「天気予報」は、旅行や出張のやうに「いつもと違う場所」で天気を知りたい時に重宝する。旅先で天気を知りたい時に、天気予報サイトから「現在地」や「目的地」の地域を調べるより、「天気 ○○」って検索する方が早い。いざ使う時に、この機能を忘れてしまいさうなのが難点だけど、いい機能だと思ふ。

ref

2008-08-01

iPhone 版 Safari のダブル・タップ拡大が賢い

iPhone には、拡大表示 (ズーム・イン) する方法が 2 つ用意されている。一つは、ピンチ・アウト。つまんだ指を広げる方法。もう一つはダブル・タップ。画面を二回叩く (タップ) する方法。今回は、ダブル・タップが賢いといふお話。

iPhone 版 Safari にて

Safari でウェブ・ページを拡大したいとする。この時の適切な拡大率は、パラグラムを読むのに横スクロールしないサイズ。つまり、パラグラフが横一杯に表示されて、かつ最大のサイズ。言いかえると、パラグラフの幅に合わせて拡大して欲しい。

ピンチ・アウトを使うと、画面を大きくし過ぎて困る。拡大が足りなかったりして、やきもきする。

そこで、パラグラフに照準を合わせてダブル・タップ!

見事、パラグラフが丁度納まるように拡大してくれる。逆にパラグラフを拡大しすぎてる場合は、逆に縮小して幅を合わせてくれる。自動ズームな感じで、とてもいい。

あとがき

Safari では、ダブル・タップで「ブロック要素」単位に拡大してくれるとのこと。今回は、「段落 (パラグラフ)」を作る <p> もしくは <div> ごとに拡大している。他にも、ブロック型になってる領域があれば、ダブル・タップしてみるとよいでせう。横幅を合わせて、見易く表示してくれるはず。

ダブル・タップは基本の動作だけど、こういふ裏話を一つ知っとくと、使い勝手が増すね。

ネタ元

このネタは Android 勉強会 (第 7 回) で知った。本当のこと言うと、最初、この話を聞いた時は意味が分かってなかった。後日、自分で iPhone をいじって初めて、ようやく意味を理解した次第。話を聞くだけじゃ、これは実感できない。是非、iPhone 版 Safari をいじってお確めあれ。