2011年12月3日土曜日

dotcloudでDjango

dotcloudのチュートリアルでDjango + Mongo DBがうまく動かなかったのでメモ的に書いとく。 単にチュートリアルが古いだけなのでそのうち修正されるんだと思う。 http://docs.dotcloud.com/tutorials/python/django-mongodb/ このドキュメントの、requirements.txtの部分の記述が古くて、うまくdotcloud pushできない(エラーをよく見ると、django-mongodb-engineがgithubからpullできてないみたい)。これを、 このように書くとうまくデプロイできる。

2011年11月23日水曜日

Androidでランチャーから起動可能なActivityの一覧を取得する方法の要点だけ

PackageManagerというクラスを指定して、特定のIntentに対応するActivityの一覧をListで取得できる。ResolveInfoからは該当Activityに関する様々な情報が参照できる。

2011年11月19日土曜日

AndEngine Wallpaper Extension Exampleが動かないので直した。

Google CodeでホストされているAndEngine Wallpaper Extension Exampleのコードには古いライブラリjarが同梱されていて、最新のライブラリだと動かないというのを発見した。
パッケージ階層が変わっていたり、deprecatedなメソッドが出来ていたりするみたい。
http://code.google.com/p/andenginelivewallpaperextensionexample/

なので、諸々直したのを以下に置きました。
http://code.google.com/r/kh99mail-andenginelivewallpaperextensionexample/

GoogleCodeもMercurialもあまり使ってないのでどうやって作者さんに知らせたら良いか分からず、直したよってメールしてみた。これで合ってるのかな。正しいやり方があったら誰か教えてください。

AndEngine LiveWallpaper Extensionのサンプルプロジェクト

AndEngine LiveWallpaper Extensionを使ったライブ壁紙のサンプルプロジェクトをgithubに上げました。 https://github.com/hkurosawa/imhoandenginelivewallpaperexample

2011年11月17日木曜日

AndEngine TimerHandlerの使い方の要点だけ

AndEngineはチュートリアルが充実してないので、逆引き的にsnippetを溜め込むしかなさそう。一定時間間隔でメソッドを呼び出すTimerHandlerの使い方。org.anddev.andengine.engine.handler.timer.*にあります。

AndEngine ExamplesをソースコードからビルドするHowtoの要点だけ

AndEngineのデモはAndroidMarketからも落とせるけど、やっぱりソースコードからビルドしたい、、ときのための手順をまとめました。

2011年11月15日火曜日

AndEngineのライブラリJARの入手方法の要点だけ

【2011/11/16追記】以下の記事は古いソースコードに基づく。以下のchangelogによると、examplesからライブラリは削除したみたい。詳しくは調べて後でかく。
http://code.google.com/p/andengineexamples/source/detail?r=07a5aabdd0ce738a624863ca8d18895350a23356
【2011/11/16追記2】以下のブログは参考になりそうだ。
http://andenginefromscratch.blogspot.com/2011/06/off-topic-article-how-to-stay-up-to.html
【2011/11/17追記】新しいエントリをまとめました。 http://blog.imho.jp/2011/11/andengine-exampleshowto.html

以前のエントリで書いたAndEngineのエントリでは、AndEngine Exampleをインポートするとこまで書いたけど、これだけだといざ自分でプロジェクトを始めようとしたときに、ライブラリ群をどこからインストールすれば良いのか分からなかった。

AndEngineのプロジェクトサイトでも、バイナリ形式での配布は行ってないみたい。

このときもAndEngine Exampleが役にたつ。AndEngineExampleをインポートしたフォルダで、libという名前のディレクトリを見つけて、開く。そうするとandengine*.jarというファイル群が見つかるので、自分で新規作成したプロジェクトに必要なものをコピー&ペーストする。その上で、プロジェクトのProperties>Java Build path>Libraries>Add Jars...して、コピーしたjarファイル(群)をプロジェクトに追加すれば良い。

andengine.jarがベースのライブラリとして、その他は拡張ライブラリ。ファイル名と、AndEngineExamplesのデモを見て、必要なライブラリに見当をつけると良い。


2011年11月3日木曜日

HTML5 AppCache 細かい挙動の要点だけ

Google Developer Day 2011のオフラインコンテンツのセッションでAppCacheの話が出たんだけど、細かい挙動がよくわからなかったので調べてみた。

基本的な所は色んなブログとかがあるので、ググると良いと思う。



調べたのはもうちょっと微妙な所です。ちなみにOSX版のGoogle Chrome15.0.874.106で調べた。 間違ってたらコメントください。

  • CACHEにあるものは一度キャッシュされたらオンラインの状態でも更新されない(リロードボタンを押しても同じ) 
  • manifestを更新すれば、2回目の再読み込みでAppCacheが更新される  manifest更新後、一回目の再読み込みでは変更されないことに注意。 
  • manifestの変更は、コメント行でもOK。なので#VERSION 1みたいな行を付けるのが定石 
  • CACHEとNETWORK両方にエントリがあると、CACHEの方が勝つ=オンラインでも更新されない 
  • manifest設定をしているhtmlファイルそのものは暗黙でキャッシュされることに注意。(なので明示的に書いたほうが良いマナー。) 
  • NETWORKとFALLBACKの両方にエントリがある場合、NETWORKの方が優先されて、FALLBACKしないっぽい。FALLBACKさせるリソースはNETWORKに書かない
  • つまり、設定が強いのはCACHE>NETWORK>FALLBACKの順。常にネットワーク参照させたいリソースはCACHEに書かないし、FALLBACKさせたいコンテンツはNETWORKに書かない。
WebKitベースのスマートフォンブラウザは基本的に対応してると考えて良いので、スタティックなコンテンツは積極的にAppCacheに入れてくのが良さそうだ。

「オンラインな場合はキャッシュを更新する。オフラインならキャッシュをそのまま出す。」みたいのはJavaScriptで書く必要があるのかな。
<追記>思ったんだけど更新が必要なリソースにおいてそれがキャッシュなのか古いデータなのか分からない設計はそもそも良くないので適切なデータにFALLBACKさせるべきと思った。

OSXのPastorのexportをKeePassX XML形式に変換するスクリプト

以前のエントリで書いたけど、KeePassならWin/Mac以外にもiPhoneとかからも使えるのでパスワード忘れて困った!ということが基本的に無くなって便利なので乗りかえました。移行のときに、OSXのパスワード管理ソフトPastorの書き出したtsvをKeePassXで読み込めるXML形式にコンバートするPythonスクリプトを書きました。 この手のやつどこに上げたもんかと思ってたんだけど、さっきgistというものの存在を知ったので使って公開してみます。これ便利だな。

Google Developer Day 2011の要点だけ<HTML 5のオフライン機能>

正確でもないし網羅的でもないGoogle Developer Day 2011のメモを置いときます。大事そうなところは掘り下げてそのうちブログにするかも。HTML 5のオフライン機能というセッション。

Google Developer Day 2011の要点だけ<Google+ ウェブ アプリの構築>

正確でもないし網羅的でもないGoogle Developer Day 2011のメモを置いておきます。大事そうなところは掘り下げてそのうちブログにします(多分)。「Google+ ウェブ アプリの構築」というセッション。

Google Developer Day 2011の要点だけ<Android の優れたユーザーエクスペリエンス>

正確でもないし網羅的でもないGoogle Developer Day 2011のメモを置いときます。大事そうなところは掘り下げてそのうちブログにするかも。「Androidの優れたユーザエクスペリエンス」と題されたセッション。

Google Developer Day 2011 の要点だけ<基調講演>

正確でもないし網羅的でもないGoogle Developer Day 2011のメモを置いておきます。ほぼキーワードのみ羅列です。
大事そうなところは掘り下げてそのうちブログにするかも。まずは基調講演。

2011年11月1日火曜日

Aptana Studioをアップデートしたら起動しなくなったときの対応の要点だけ

OSXで、Aptana Studioをアップデート後に起動しなくなるときがある。
こんな具合のエラーが出る時:


"The AptanaStudio3 executable launcher was unable to locate its companion launcher jar."

このときは以下のような手順を取れば起動するようになる。

  1. AptanaStudio3.appを右クリック
  2. 「パッケージの内容を表示」する
  3. 以下のファイルをテキストエディタで開く:
    Contents/MacOS/AptanaStudio3.ini
  4. 以下の行を探す(たぶん最初の2行)
    -startup
    ../../../plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
  5. org.eclipse.(中略).jarが見つかってないことが起動しない(unable to locate)な原因。これを、plugins/org.eclipse.equinox.launcher(略).jarの存在するファイル名に書き換える。
  6. ファイル保存してAptanaStudio3.appを再起動。


以上で起動するようになります。
(ちなみに僕のケースでは、Aptana Studio 3を3.0.6にアップデートしたときに発生しました)

2011年10月21日金曜日

Xcode 4.2でiPhone 3G/armv6用にビルドするときの設定の要点だけ


Xcode 4.2にして以来?、iTunes ConnectにSubmit時にarmv6用のバイナリも
含める必要があるよ!と怒られることがある。
"At least one of the following architecture(s) must be present: armv6"みたいな感じのエラーがiTunes ConnectへのSubmit時に出る。

デバッグ用の実機検証のときも、この設定をしないと転送後すぐにRunning Finishedとか
出て実機できないことがある(iPhone 3Gとかの場合)。このときはこの設定を疑うようにするというメモ。

1.BUILD SETTINGのArchitecturesの部分に$(ARCHS_STANDARD_32_BIT)だけが設定されていることが原因。この項目をクリックして「Other...」を選択
「+」をクリックして"armv6"を入力して"armv6"と"$(ARCHS_STANDARD_32_BIT)"の2行が設定されている状態にする

2.その下にある"Build Active Architectures Only"とかいてあるところが
"No"になっていることを確認する。

これで上記のArchitectures両方(つまりarmv6とarmv7)用の
バイナリが生成されるようになります。

(補記)
Xcode 4.2で生成されるプロジェクトには、Info.plistの"Required device capabilities"に
"armv7"と入っているみたい(つまりarmv6を利用したiPhone 3Gは除外されている)。
iPhone 3Gなどのarmv6デバイスも対象とするには、上記に加えてこの設定を除外する必要があるようです。

2011年10月18日火曜日

パスワード管理をPastorからKeePassXに移行した

パスワード管理をPastorからKeePassXに移行して、iPhoneからもMiniKeePassとかで見れるようにしようと思って、PastorからKeePassX XMLファイルのコンバータをPythonで書いたので、あとでどこかで公開します。万が一超探してるというひとがいれば連絡ください。

I'm tring switch my password manager from Pastor to KeePassX on OSX and MiniKeePass on iPhone and I wrote a simple python converter script from pastor TSV export to XML that could be imported into KeePassX. I'll make it open later but if you are eager to use it, please let me know.

2011年9月27日火曜日

Windowsでgitの使い方の要点だけ

Windowsからgitを利用するには、TortoriseGitを利用するのが吉みたい。
TortoiseSVNがベースになっていてExplorerから利用できるので、良さそう。

以下のGoogle CodeからDLできる。
http://code.google.com/p/tortoisegit/

2011年9月23日金曜日

OSXでgitの使い方の要点だけ(インストール編)

Android自体のソースコードもそうだけど、最近いろんなオープンソースプロジェクトがSubversionから移行していたり、githubを使う機会もなんだか増えて来たのでgitの使い方を整理してみる。当方Subversionはまあまあ使っていて、OSX Snow Leopardという環境です。まずはインストールから。

2011年9月14日水曜日

iTunesConnectで"application executable is missing a required architecture"って怒られるときのXcode 4の対応の要点だけ

iTunes ConnectでSubmitするときに、
"application executable is missing a required architecture"と怒られるときがあります。どうも古いXcode 3系のプロジェクトをインポートすると起こるみたい(ちゃんと確認はしてない)

Build Settingsで"Build Active Architecture Only"という項目を探し、配信用のターゲットの項目を"NO"に設定する。そうすると全ての有効なアーキテクチャに対してビルドできるので、エラーが回避できる模様。

2011年9月13日火曜日

Adobe Edge Preview 2新機能の要点だけ

Adobe Edge Preview 2の要点だけ。

AdobeのHTML5アニメーション作成ツール、Adobe EdgeのPreview 2版が9/7日から公開されています。http://labs.adobe.com/technologies/edge/ のサイトに掲載されている新機能リストの要点だけ。まだ使ってないので違ってたら直しますので指摘してください。

Preview2は新機能に加えバランスと仕上げにフォーカスしていて、多くはコミュニティのフィードバックを汲み取っている。

  • スマートガイド
    オブジェクトのリサイズや移動時にガイドが表示される
  • エレメントのセマンティックタグの設定
    Edgeでシェイプ、イメージ、テキストのタグのタイプを変更可能
  • エレメントのコピー&ペースト
  • エレメントの配置と整列
    複数のエレメントを選択して、Modifyメニューの新しいオプションから
  • Zインデックスのドラッグによる調整
    elementsパネルでエレメントのZオーダーの調整が可能
  • Playheadタイムの編集
    タイムラインのカウンタでタイプかドラッグでプレイヘッドを特定の場所に移動できる
  • Windows 7アップデート
    Windowsにおける起動時のクラッシュ問題が解決、ディスプレイの色深度を32ビットから16ビットに直さなくてもOK
  • jQueryアップデート
    アニメーションフレームワークは最新のjQuery 1.6.2で動きます

2011年8月23日火曜日

Androidレイアウトの要点だけ: LinearLayoutでパーツを均等に配置したい

AndroidのUI制作で、LinearLayoutを使って画面の横幅のちょうど2等分にしたいときがあります。このようなときは、LinearLayoutされているパーツ(ボタンとか)にたいして"android:layout_weight"プロパティを設定します。これの使い方のちょっとしたコツのメモ。


2011年8月21日日曜日

AndroidでLayoutからイベントリスナの設定方法の要点だけ


どうやらAndroid 1.6かららしいんだけど、Layoutファイルにandroid:onClickというプロパティを指定することができます。例えばOK/Cancelボタンを配置した場合は、以下みたいなLayoutファイルになります。

<Button android:text="@string/label_button_cancel" android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:id="@+id/cancelButton"
android:onClick="onCancelClicked"/>
<Button android:text="@string/label_button_ok"
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:id="@+id/OKButton" 
android:onClick="onOKClicked"/>

こういう記述のあるlayout.xmlファイルをActivityの中でsetContentView()してやると、OKまたはCancelボタンをタップしたときに、そのActivityの中にあるandroid:onClickに指定した名前のメソッドを読んでくれます。listenerの設定とかが必要ないので、非常に便利。

メソッドのシグネチャは、public void aHandler(View v)なので、上記の例だとそれぞれ

public void onOKClicked(View v) {
Log.d("DEBUG", "ok clicked");
}
public void onCancelClicked(View v) {
Log.d("DEBUG", "cancel clicked");
}

みたいなメソッドだけを記述しておいてやればOK。

2011年8月10日水曜日

AndEngineのはじめかたの要点だけ


Android用の2Dゲームフレームワークみたいなものを探してて、iOS界隈だとcocos2dがメジャーなんだろうけど、cocod2dのAndroid版というのはプロジェクトが分裂してる上に、どうも更新が止まってるか、凄く遅いっぽい。色々調べてたらAndEngineというのが有望に見えたし類似と言って良いっぽいので、調べてみることにした。OpenFeintとの連携もOKみたい(調べてないけど)。とりあえずはAndEngineを始めるに有用なポインタを簡単に整理してみます。

2011年8月6日土曜日

Adobe Edge Previewの書き出しファイルを要点だけチェック

前回のエントリでは、Adobe Edge Previewの書き出しファイルが普通のHTML+JS+CSSファイルになると書きました。
こんな感じ。今回は、これらの中身を簡単に見てみようと思った。sample.edgeファイルは単にEdgeアプリケーションが使うプロジェクトファイルみたいなので、いったん無視する。構成ファイルは、プロジェクト固有のものがsample.html, sample_edge.js, sample_edge.cssの3つ。あとはランタイムと思われるedge_includes。

2011年8月3日水曜日

Adobe Edge Previewを使ってみて要点だけ

Adobe Labs で、AdobeのHTML5によるアニメーション制作ツールであるAdobe EDGEのプレビュー版が公開されました。AdobeそしてHTML5といえばiOSでのFlash騒動も記憶に新しいところ。一連のHTML5 vs Flash問題のAdobe側からの一つの回答ということで、さっそく使ってみました。

ちなみにAdobeから出ているサンプルファイルはこちら(Adobe Labs)

2011年7月29日金曜日

Android アプリレビュー&マーケットサイトの要点だけ

むしゃくしゃしたのでAndroidアプリレビューサイト・マーケットサイトを書き出してみた。後悔はしていないが網羅もできていないと思う。とりあえず国内、順不同。botがAndroid Marketをクロールするみたいのは除外。間違いや古い情報などあればコメント欄とかで指摘してください。

2011年7月21日木曜日

OSXのEclipseでコード補完有効にするやりかたの要点だけ

Androidに限らず、オープンソース系の開発環境のデファクトといって良いEclipseだけど、OSXだと標準インストールだとどうもキーバインドがコンフリクト?してしまってコード補完が効かないので、設定する必要があるというメモ。すぐ忘れるので。

OSX Snow Leopard + Eclipse Heliosで見てます。Heliosって3.6かな。

1.Eclipse起動
2.Eclipse(アプリケーションメニュー)>Preferences...>General>Keysを選択
3."Word Completion"という項目を探して、選択
4.下の"Binding"っていうところを選んで、目的のキーバインドを押す。
5."Apply"

以上で、4で設定したキーバインドが効きます。ちなみに英語UIなのはご容赦を。エラーをぐぐる時とかに英語UIのほうが早いのですよ。

2011年7月19日火曜日

Android Bazaar & Conference Summer 2011に行ってきた所感要点だけまとめ

Android Bazaar and Conference Summer 2011というAndroidのイベントに参加してきました。2011年7月17日@早稲田大学。

細かいことは置いておいて、気付いたことの要点だけ書く。聞いたセッションは以下。
主にDeNA、GREE、CyberAgentのセッションを聞いてきて、DeNAは2セッションあってどちらもngCore関係(2つ聞いたんだけど、ほとんど内容同じだった。)、GREEはGREE Platform、CyberAgentは自社の開発環境や体制についての話。

2011年7月12日火曜日

外部のActivityを明示的Intentで開始するやりかたの要点だけ

Androidアプリの開発で、パッケージ名およびActivity名が分かっているアプリを、自分のアプリから起動したい時がある。たとえばプリインストールのGoogle製アプリとか。

この場合も、自パッケージ内の明示的インテントと同様に起動することができる。具体的には以下みたいにする。

Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.setClassName("com.example.external.package", "com.example.external.package.SomeActivity");
//i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //外部Activityを自分のActivityスタックとは別に立てたいとき。
startActivity(i);

注意点として、setClassName(String packageName, String ActivityName)するときに、ActivityName側もフルパッケージ名で指定する必要があること。これをしないとClassNotFoundExceptionになる。

あと、setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)しないと、例えば起動したアプリをHOMEボタンで終了した後にもう一回自分のアプリを立ち上げた時、自分のパッケージから起動したSomeActivityの方の画面が出てよくわからない事になる。これを避けるにはIntent.FLAG_ACTIVITY_NEW_TASKフラグを指定した状態でstartActivity()する。

このへんはTASKについて整理する必要がありそうだけど、別の機会にします。

2011年7月9日土曜日

OSX用のMercurial Binary Package

Google Codeとかで使うMercurialのOSX用パッケージを探してたのでメモ。
http://mercurial.berkwood.com/

[追記]
こっちのほうが良いのかな? http://mercurial.selenic.com/downloads/

2011年7月7日木曜日

OSX Lionから"Mac"が消えたことを深読みすると見えてくる未来

OSX LionのGM seed(「ほとんど完成版」ていう意味で、問題がなければこのまま出荷される)が出たそうで、OSX Lionの一般リリースも今週末だとか来週の7/12だとか噂が出始めた。

OSX Lionの目玉は以前のエントリでも述べたLaunchpadやMission Control、マルチタッチジェスチャーなどで、これはiOSで培われたフルスクリーンUIの操作性をMacの世界にも取り込んだことだけど、今回はOSX Lionでこっそりと行われた大きな変更、OSXから"Mac"の文字がはずれたことに注目したい。

2011年6月29日水曜日

iOS Notification(通知)バッジナンバー表示の要点だけ

iOSのNotificationでは、アプリケーションアイコンの右肩に数字(バッジ)を表示することができるけど、その数字を消去するときにちょっとした落とし穴があるのでメモ。まずはUIApplicationオブジェクトを取得して直接バッジを設定する場合。

(1)アプリケーションオブジェクト(UIApplication)を通じて直接、バッジ設定する場合
[UIApplication sharedApplication].applicationIconBadgeNumber = badgeNumber;

この場合は、badgeNumber(NSInteger)の数字が正の数であれば、バッジ数字が表示、ゼロであればバッジアイコンは消去される。
ではローカル通知を通じた場合はどうなるか。

(2)ローカル通知オブジェクト(UILocalNotification)を通じたバッジ設定の場合。ちなみにローカル通知はiOS4から利用可能
NSInteger badgeNumber = 1;
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:30];//30秒後
notification.alertBody = @"ローカル通知メッセージ";
notification.applicationIconBadgeNumber = badgeNumber;
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
[notification release];

badgeNumberが正の数であれば、通知時に該当アプリのバッジにその数字が設定される。しかしゼロの場合は、直前のバッジ数字がそのまま残る。消去したい場合は、applicationBadgeNumberに負の数を設定すれば良い。ちなみに(1)のパターンのときもゼロでなく負の数を与えてもバッジは消える。

2011年6月28日火曜日

Android Developerサイトにあるデザインテンプレートまとめ(PSD)

Android Developersサイトを見ていたら、色んなところにデザインテンプレートが落ちていたのでメモ。慣れるまではこれを下敷きにすれば、効果的にデザインが作れるのではないでしょうか。PSDで提供されてるので使いやすい。

1.アイコン

色んなアイコンテンプレート詰め合わせ。
http://developer.android.com/intl/ja/guide/practices/ui_guidelines/icon_design.htm
中身は以下のとおり
・ダイアログ
・ランチャー(HOME)
・リスト
・メニュー
・通知
・タブ
Icon Templates Pack for Android 2.3
http://developer.android.com/shareables/icon_templates-v2.3.zip

2.ウィジェット
ウィジェットもサイズに合わせて色々とテンプレが用意されてました。
http://developer.android.com/intl/ja/guide/practices/ui_guidelines/widget_design.html

4x1_Widget_Frame_Portrait.psd
http://developer.android.com/images/widget_design/4x1_Widget_Frame_Portrait.psd

3x3_Widget_Frame_Portrait.psd
http://developer.android.com/images/widget_design/3x3_Widget_Frame_Portrait.psd

2x2_Widget_Frame_Portrait.psd
http://developer.android.com/images/widget_design/2x2_Widget_Frame_Portrait.psd

4x1_Widget_Frame_Landscape.psd
http://developer.android.com/images/widget_design/4x1_Widget_Frame_Landscape.psd

3x3_Widget_Frame_Landscape.psd
http://developer.android.com/images/widget_design/3x3_Widget_Frame_Landscape.psd


2x2_Widget_Frame_Landscape.psd
http://developer.android.com/images/widget_design/2x2_Widget_Frame_Landscape.psd

2011年6月15日水曜日

AndroidアプリをSDカードにインストール可能にする要点だけ

  • Android 2.2 "Froyo" からandroidmanifest.xmlで設定することでSDカードへのインストール、移動が可能になった
  • デフォルト設定は「端末のみ可」なので注意
  • <manifest>の要素にandroid:installLocationを指定する。
    • auto:通常端末内。端末容量が足りないときにSDカードへ。端末とSDカード間で移動可能
    • internalOnly:端末内のみインストール可。android:installLocationを設定しないときのデフォルト値
    • preferInternal:SDカードに優先的にインストール。SDカードの容量が足りないときに端末インストール。事後インストール可。
  • アプリがSDカードにあるときも各種データは端末内。
<追記>
つまり、アプリ側が対応してないと、SDカードに移動することは無理ってことですね。rootedな環境とかは知らない。

    2011年6月11日土曜日

    AndroidアプリからWEB検索させるインテント要点だけ

    1. Intent search = new Intent(Intent.ACTION_WEB_SEARCH);  
    2. search.putExtra(SearchManager.QUERY, "検索文字列");  
    3. startActivity(search); 

    こんな感じでいけるみたい。外部のアプリが立ち上がって検索実行できる。

    2011年6月9日木曜日

    ADT Plugin for Eclipse アップデート

    Android Developers Blog: New Editing Features in Eclipse plug-in for Android

    AndroidのEclipseプラグインがアップデートしたみたい。
    あとでDLすることにして詳細は>http://developer.android.com/intl/ja/sdk/eclipse-adt.html

    あとここ http://tools.android.com/recent

    さらに、Google I/O 2011でのプレゼン動画

    iCloudで訪れたiOSの「終わり」

    先日のWWDC 2011で事前の予告通り、Mobile meの後継になるクラウドサービスとなる"iCloud"が発表された。
    そして発表のKeynoteの中で語られたのは、iCloudは単なるネットサービスの枠を越えて、Appleの戦略上とても重要な位置を占めるものということだった。

    「10年前にAppleはデジタルハブというビジョンを掲げた。Macが様々なデジタル機器、メディアの中心になる」とジョブズ氏は語った。当時はまだやっとADSLが普及し出した頃だったしiPhoneみたいな小型の機器に一昔前のスーパーコンピューターに匹敵するみたいな性能が搭載されるなんてまだまだ先の話と思われた。レインポーiMacの発表はぶつぶつ切れるアナログモデム経由で見たんだった。

    2011年6月6日月曜日

    Eclipseが起動しなくなったときの対応の要点だけ

    Androidアプリの開発で使うEclipseだけど、作業途中でハングアップ、強制終了後に再起動しても起動中の"building workspace..."あたりで起動がハングしてしまうことがあって、その対応メモ。


    • Eclipseの強制終了後、起動しなくなる問題の一つはEclipseの一時ファイル.snapファイルというやつが壊れている事が原因みたい。
    • なので、このファイルを削除してしまえばOK。こんな感じ:
      rm path/to/workspace/.metadata/.plugins/org.eclipse.core.resources/.snap
      rm path/to/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/*/.*.snap



    • これはワークスペースの変更を記録しているファイルで、強制終了後とかに作業状態の復帰とかに使われるものみたい。これが壊れていると復旧途中で止まってしまうということっぽい。

    ということで削除後、Eclipseを普通に起動すればきちんと起動するはず。もしくは.metadata/.logを見ると、何かしらエラーログが記録されているはずなのでこれをチェック。

    2011年6月5日日曜日

    WWDC 2011:「iPhoneでなければiPhoneじゃない」なのか

    「iPhoneでなければ、そんなのiPhoneじゃないんです」という奇妙なフレーズのCMをAppleが放映中だけど、日本時間6月7日午前2時からのWWDC 2011で発表される予定のMac OSX LionおよびiOS 5、iCloudでその本当の意味が分ることになるのかもしれない。

    2011年6月1日水曜日

    Android LogCatがすぐ消えてしまうときの対策howto要点だけ

    Androidアプリの開発で使うDDMS(Dalvik Debug Monitor Serviceっていうらしい)についてるLogCat、たまに一瞬だけ表示されてすぐ消える、みたいな現象でバグだと思ってたんだけどすごい単純なことで治るみたいだったのでメモ。

    2011年5月29日日曜日

    Android Widgetのライフサイクルについて要点だけ

    Android App Widgetのライフサイクルイベントは4つ。公式ドキュメント読んだだけではいまいち分かりづらかったので調べてみたメモ。

    (1)onEnabled(Context context)
    一つ目のウィジェットがホームに追加されるとき。

    (2)onUpdate(Context context, AppWidgetmanager appWidgetManager, int[] appWidgetIds)
    ウィジェットがホームに追加されるとき。一つ目のときはonEnabledの直後に呼ばれる。2つ目以降(=同じウィジェットが既にホームに置かれている場合)はこのonUpdateだけがコールされる。
    appWidgetIdsには、アップデート対象のウィジェットのIDが入ってる。なので、widgetの追加時には基本的に1つのIDの配列で、定期更新時には2つ以上のIDが入ってる可能性があるっていうことみたい。

    (3)onDeleted(Context context, int[] appWidgetIds)
    ウィジェットがホームから削除されるとき。他にウィジェットが残っているとき(=同じウィジェットがまだホームに置かれている場合)はこのonDeletedだけが呼ばれる。

    (4)onDisabled(Context context)
    ホームから最後のウィジェットが削除されるとき、onDeletedの直後にコールされる。

    もういっこonReceivedは上記3つが結局コールされるので、通常はあんまり気にしなくて大丈夫みたい。以下4つ以外のBroadcastをなんとかしたい時にきにすれば良い。

    • ACTION_APPWIDGET_DELETED→onDeleted
    • ACTION_APPWIDGET_DISABLED→onDisabled
    • ACTION_APPWIDGET_ENABLED→onEnabled
    • ACTION_APPWIDGET_UPDATE→onUpdate

    2011年5月28日土曜日

    Xcode 4のシングルイウンドウUIに垣間見るOSX Lionの本気度

    まもなくAppleの開発者向けイベント、WWDC 2011が6月6日(日本時間7日深夜)から10日の予定で開催される。注目はもちろんiPhone 5、iOS 5が発表されるのかというのが一つとしてはあるけれど、もう一つの注目ポイントとしてMac OSXのメジャーバージョンアップ、Mac OSX Lion (10.7) の発表がある。

    Mac OSX Lionは2010年の10月に、その概要が発表された。特徴は、iPadに見られるようなフルスクリーンUIをOSXの世界にも導入した「Launchpad」や「フルスクリーンアプリケーション」。これは単純にiPhone、iPadの人気にOSXが便乗しようとしているだけにも見えるけれど、Appleはこの大胆な変更に本気で取り組んでいて、これでiOSのエコシステムをOSXの世界にも広げようとしているように見える。

    2011年5月27日金曜日

    Titanium Mobileモジュール開発ドキュメント間違いの要点だけ

    JavaScriptを使ってワンソースでAndroidとiOSのクロスプラットフォームができるとして話題なTitanium Mobileのモジュールの作り方を調べた。だけどどうも公式ドキュメントが違ってる(古い?)らしくてむしゃくしゃしたので、ついカッとなった部分のメモ。確かめたのはTitanium Mobile 1.6.2とXcode 4とiOS SDK 4.3です。基本的には以下のドキュメントに沿います。
    参照:Module Devloper Guide for iOS(Last edited on May 12, 2011のもの)
    要点だけ書くとドキュメントで違っている/足りていない記述が2カ所あることに注意:
    • できたモジュール(zip)のコピー先はLibraryじゃなくてアプリのルートディレクトリ
    • Titanium Mobile 1.6.2(Titanium Developer 1.2.2?)とiOS 4.3の組み合わせではLog/Info系の出力がTitanium Developerのコンソールに出ません。Xcodeで直接実行するか、iOS 4.2以前を使えば出る。
    • markdownモジュールはmarkdown2モジュールに変更されているのでbuild.pyの修正が必要。公式どおりにやるとモジュールのビルド過程でimport errorが出る。
    もう少し詳しい手順は続きに:

    2011年5月24日火曜日

    UIWebViewのバウンスアニメを無効にする要点だけ

    アプリ内でUIWebViewを使うときに困るのが、タッチ操作でスクロールできてしまうこと。
    ネイティブUIにUIWebViewが入りこんでいることが分かって、UIの統一性が失われてしまう。

    WebViewがドラッグ動作で範囲外までスクロールできる「バウンス動作」が無効にできれば良さそうだけど、、ということで調べたら、出てきたのでメモ。

    http://stackoverflow.com/questions/500761/stop-uiwebview-from-bouncing-vertically
    for (id subview in webView.subviews)
      if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).bounces = NO;

    要はUIWebViewsのsubViewsで取りだした子要素の一覧からUIScrollViewのインスタンスを取り出し、
    それのbouncesプロパティを無効にする。これがうまくスクロールをdisableにできれば、気兼ねなくネイティブUIとのハイブリッドが採用できそう。

    まだ実際には試してないけど後で試してみる予定。

    UIWebViewでloadHTMLStringするときの要点まとめ

    iOSアプリで適宜、UIの一部分をUIWebViewにしてHTMLで処理するようにすると開発効率が劇的に向上するということは間々あって、その中でもこのエントリではUIWebViewを使ってローカルでHTMLをloadHTMLStringするときの注意点のメモ。

    2011年5月23日月曜日

    Apple WWDC 2011まとめ

    日程:June 6-10(日本時間6/7~)
    基調講演は例年どおりなら6/7 AM 2:00ごろ?ジョブス氏くるのかな。

    今回のポイントは、
    ・Mac OSX Lionの正式リリース?
    ・iPhone 5?iPhone 4S?とiOS5?の発表があるか?
    ・iTunesのストリーミング配信サービス開始?

    2011年5月22日日曜日

    Android Manifestのuses-sdkの要点だけ

    AndroidManifest.xmlの<uses-sdk>項目について調べた。
    • Androidにおいて、APIレベルでの複数デバイスへの互換性を確保するにはAndroidManifest.xmlの<uses-sdk>を使う。
    • この項目はデフォルトでは存在しない。追記は<manifest>の子要素。
    • android:minSdkVersion、android:maxSdkVersion、android:targetSdkVersionの3属性が設定できる。
    • 値は整数で、Android SDKごとに設定されるAPI Levelの値を指定する。(参照:Android API Levels
    • 特に重要なのはandroid:minSdkVersion。この設定より古いAPI Levelの端末にはインストールされない。これはデフォルトでは1なので、Android Platform 1.0までアプリがサポートしていることになってしまう。ちなみにdocomoが初めて発売したAndroid端末はHT-03Aで、これはAndroid 1.5=API Level 3。
    • android:targetSdkVersionは、システムにこのバージョンでテストしていることを示すもの。OSが様々な互換性のための設定を行うときに利用されるみたい。
    • android:maxSdkVersionというのは設定しないほうが良い。アプリケーションが特定のバージョンより新しいものにインストールされなくできる。

    たとえばXperia arcで開発していると、ListViewの中身がスクロール時に拡大されてしまう問題というのがあるのだけど、この<uses-sdk>項目の設定で解決するようだ。以下のMLだとminSdkVersionを指定してやると解決すると書いてあるけど、上のドキュメントを読んでandroid:targetSdkVersionだけ設定してあげても解決できたみたい。

    参照:http://groups.google.com/group/android-group-japan/browse_thread/thread/78e5b1b66237ee9f

    2011年5月18日水曜日

    結局スマートフォンとケータイの違いってなんなんだ

    昨日(5/17)のdocomoに続いて今日、KDDIも2011年夏モデルの発表を行って、Androidを初めとするスマートフォンへの転換を打ち出した。SoftBankは震災の影響で大規模な発表を行わないものの、今後2〜3年で(ほぼ?)全ての機種をスマートフォンへ以降する意向を表明していて、いよいよスマートフォンへの移行が本格化してきた格好だ。

    各社とも様子見な感じが強かったこれまでと違って今回の各社の発表で印象的だったのは、既存のケータイ(ガラケーってやつ)のサービスをスマートフォンにも持ち込もうというもので、これはとくにドコモが強く方針を打ち出している。SPモードはもちろん、iチャネル、メロディコールなど、既存のサービスを順次Android端末でも利用可能にする方針なんだけど、果たしてスマートフォンとケータイの文化というのはそんなに簡単に相容れるものだろうかと考えてしまう。もちろん、技術的には十分に可能なものではあるのだろうし、だからこそそうしているのだろうけど。

    2011年5月17日火曜日

    Android Platform ロードマップの要点だけ:Google I/O 2011 update

    Google I/O 2011 で、Honeycomb新バージョンの3.1、Open Accessory APIがバックポートされたGingerbread 2.3.4、および時期バージョンIcecream Sandwichのロードマップが発表されました。3.1と2.3.4は発表と同時に公開みたいですね。


    ・リリース済み
    2010年1月 2.1 スマートフォン用 API Level 7
    2010年5月 2.2 Froyo スマートフォン用 API Level 8 高速化(JIT)/Flash 10.1/Web版Android Market(OTAインストール)/etc
    2010年11月 2.3 Gingerbread スマートフォン用 API Level 9 NFC/センサ(ジャイロ、コンパスetc)/フロントカメラ
    2011年2月 2.3.3 API Level 10 マイナーリリース。
    2011年2月 3.0 Honeycomb API Level 11 タブレット用 ホログラフィックUI/新しいアニメーションフレームワーク/Hardware-acceralated Graphics/マルチコアCPU
    2011年5月 3.1 Honeycomb API Level: 12 タブレット用 http://developer.android.com/sdk/android-3.1.html
    2011年5月 2.3.4 Gingerbread API Level: 10 maintenance release

    ・未リリース
    2011年第4四半期 4.0? Ice Cream スマートフォン用とタブレット用が統合される見込み

    2011年5月11日水曜日

    Google I/O 2011: Android Honeycomb 3.1の要点だけ

    Google I/O 2011のKeynoteで、Androidの新プラットフォームのAndroid 3.1 Platformが発表された。これはまだタブレット専用のもので、タブレットとスマートフォンOSの統合は次期Icecream Sandwichリリースを待つ事になる模様。

    一番注目すべきは外部デバイス向けのAPIが標準化されたことかな。ともあれこれとKeynoteで別途発表されたAndroid@Home構想(あとGoogle TVも?)を合わせると大まかなAndroid Platformの方向性が見えるということかも知れない。

    情報元:Android 3.1 Platform, New SDK tools, Android 3.1 Platform Highlights

    ユーザ向け:
    • UIの改善:最近使ったアプリ、リサイズ可能ウィジェットなど
    • 入力システムの拡張:マウス、キーボード、ジョイスティック等からの入力サポート
    • Wi-Fi接続の改善
    • アプリのアップデート:ブラウザ、ギャラリー、カレンダー、連絡先、メール
    • エンタープライズ向け:Wi-Fi接続にHTTP Proxyの設定が可能に。"encrypted storage card"サポート
    開発者向け:
    • Open Accessory API
    • USBホストAPI:USBホストモードをサポートするデバイスで、接続されたUSB機器の管理が可能
    • リサイズ可能なウィジェット:Keynoteで言ってたけど対応にはXMLの修正によるウィジェット側の対応が必要
    • Media Transfer Protocol(MTP):外部カメラの接続状態の通知をアプリが受けられ、それらのファイル管理
    • オーディオ向けReal-time Transport Protocol(RTP):VoIP、push-to-talk、ビデオカンファレンス、音楽ストリームなど
    Open Accessory APIは2.3.4にもバックポートされる。それぞれの詳細およびIcecream Sandwichリリースについてはおいおい。

    2011年5月10日火曜日

    2011夏端末発表会スケジュールを要点だけ

    整理してメモ。
    docomo:2011年5月16 12時15分~ ライブ配信あり 公式Twitter
    KDDI:2011年5月17日 11時~ USTREAMあり
    SoftBank:未定  震災の影響により大規模な発表会は自粛

    Test

    Tumblr, can you hear me?

    Google I/O 2011 Android関連セッションの5/11分要点だけ

    5/10-11日にかけて、Googleの開発者向けイベントであるGoogle I/Oが開催されます。そこで、Android関連のセッションをピックアップしてみました。5/11日分。ライブストリーム配信されるものもあるようです。あと時間はサンフランシスコ時間。ソースはhttp://www.google.com/events/io/2011/index.htmlAndroidアプリも出ているようです。twitterのハッシュタグは#io2011、公式アカウントは@googleio

    Google I/O 2011 Android関連セッションの5/10分要点だけ

    5/10-11日にかけて、Googleの開発者向けイベントであるGoogle I/Oが開催されます。そこで、Android関連のセッションをピックアップしてみました。まずは5/10日分。ライブストリーム配信されるものもあるようです。あと時間はサンフランシスコ時間。ソースはhttp://www.google.com/events/io/2011/index.htmlAndroidアプリも出ているようです。twitterのハッシュタグは#io2011、公式アカウントは@googleio

    2011年5月9日月曜日

    Androidの明示的インテントと暗黙的インテントについて要点だけ

    • Androidアプリのインテントには「明示的インテント」と「暗黙的インテント」の2種類がある。
    • 明示的インテントは呼び出す側から「名指し」でアクティビティを起動する仕組み。
    • 暗黙的インテントは、呼び出す側はやりたい事だけを指定する。呼ばれるアクティビティ側が自分の処理できる内容を把握(宣言)している。
    • あるインテントを複数のアクティビティが処理できる場合、ユーザが選択できる。

    2011年5月7日土曜日

    AndroidでListViewの要素の高さを固定したいときの要点だけ

    AndroidのListViewで、要素(行)の高さを固定したいとき。
    例えば行がLinearLayoutだとして、

    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent" android:layout_height="100dp">
    <!-- SOME UI --></LinearLayout>
    みたいなheightの設定だけでは不十分で、

    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent" android:layout_height="100dp" 
      android:minHeight="100dp">
    <!-- SOME UI --></LinearLayout>
    みたいにminHeight(最小の高さ)も設定する必要がある。

    2011年4月29日金曜日

    Androidアプリ主要な構成要素について要点だけ

    Androidのアプリにはいくつかの重要な構成要素があって、それぞれ大まかには以下のようにとらえれば良い。
    • アクティビティ:画面操作
    • サービス:バックグラウンド動作
    • ブロードキャストレシーバ:システム監視
    • コンテンツプロバイダ:データベース

    2011年4月27日水曜日

    Android Market販売レポート改善の要点だけ

    2011年4月26日付けの うAndroid Developer ConsoleからGoogle checkoutのマンスリー販売レポートへのアクセスが簡単になった模様。Developer ConsoleにログインするとMerchant Sales Reportという項目が追加されてますね。下記ブログによると現在は2011年3月以降、今後数週間のうちに2010年1月からのデータがアクセス可能になるとのこと。(詳しくは後でチェック予定)
    http://android-developers.blogspot.com/2011/04/merchant-sales-reports-on-android.html

    2011年4月24日日曜日

    Mac OSXのmailで送信したメールが文字化けするときの対策の要点だけ

    • macのmailから送ったメールが文字化けするときは、メール>テキストエンコーディングでISO 2022-JPを試す。

    Mac OSXのmailから送信したメールが「文字化けして読めないよ!」と言われることがある。

    これは文字コードの問題で、mailがデフォルトではUTF-8エンコーディングでメールを送信するのが原因みたい。このため、UTF-8に対応していないメーラで受信すると文字化けしてしまうというわけ。

    対策はメール作成画面で、メール>テキストエンコーディングを日本語(ISO 2022-JP)に設定してやればOK。ちなみにISO 2022-JPはJISコードとも呼ばれるもので、日本語のメールでは広く使われる文字エンコーディング方式。

    2011年4月23日土曜日

    Apple プッシュ通知とローカル通知の要点だけ

    Notificationとは
    Apple Push Notification(Push通知)とは、iOS上で非アクティブなアプリの状態をユーザに通知するための仕組み。アラート通知を通じてアプリはユーザにアプリの起動を促したり、バッジ(アプリアイコンに付与される数字)の表示、サウンド再生などを行う事ができる。

    Notificationの種類
    iOSで利用できる通知の仕組みは2種類。
    (1)Push Notification(プッシュ通知、リモート通知):サーバからユーザのデバイスに通知を行える。プロバイダ(Provider)と呼ばれるサーバ側の仕組みをサービス提供者が構築し、AppleのApple Push Notification Service(APNs)と通信する必要がある。
    providerとAPNsとの通信については別掲する。

    (2)Local Notification(ローカル通知):当該アプリが動作しているデバイスに限って通知を行える。

    必要iOSバージョン
    (1)Push Notification:iOS 3.0以降
    (2)Local Notification:iOS 4.0以降

    通知できるデータ
    (1)メッセージ
    (2)バッジ
    (3)サウンド:アプリに予め同梱されている必要があり、指定はファイル名で行う。
    (4)その他カスタムデータ:プッシュ通知が届くことは保証されていないので、重要なデータをここに乗せるべきではない。

    ただし、メッセージ、バッジ、サウンドはユーザ設定によってオフにできるので必ず通知されるわけではない。また、リモート通知で送信できるデータは256byte以内に制限されていることに注意。

    その他
    いずれも、通知を受けるためにアプリが起動している必要はない。アプリが起動しているときにも通知を受けたことを知る事は可能。通知を受けるときのパターンは以下の4パターン。それぞれ、内部的にコールされるメソッドとデータ、受取り方が異なるので注意。
    ・アプリが非アクティブで、ローカル通知を受ける
    ・アプリが非アクティブで、リモート通知を受ける
    ・アプリがアクティブで、ローカル通知を受ける
    ・アプリがアクティブで、リモート通知を受ける

    参照
    http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction/Introduction.html%23//apple_ref/doc/uid/TP40008194-CH1-SW1

    2011年4月15日金曜日

    Android Market でのキャリア決済対応状況の要点だけ(2011年4月15日現在)

    先日のポストでdocomoがAndroid Marketでの決済に対応したことを書いたけど、他のキャリアの対応状況を整理してみた。結論として、大手3キャリアの主要端末ではキャリア決済が既に可能、という理解でOKそう。
    いずれもキャリア決済可能なものは日本円で価格設定されている(約○○円と出ない)もの。あと、auは非対応の機種もあるので注意。


    ついでにAndroid Marketでない、Android上でのコンテンツ決済サービスのメモ。こちらはサイト側の対応が必要なので、対応サービスでのみ利用できる。さらにいうと上記のauのプレスリリースを見るかぎり、この決済サービスの「対応サイト」にAndroid Marketが加わった、という関係性みたい。

    2011年4月13日水曜日

    Xcode 4で古いライブラリのリンクエラーの解決方法を要点だけ

    Xcode 4にアップデートしたときに、古いarm6用にビルドされたライブラリのリンクでエラーになる場合の解決方法。
    "Undefined Symbols for architecture armv7" みたいな感じ。
    詳しくはみてないけどどうもXcode 4のビルド設定のデフォルトが変わった模様。

    これは、 ビルド設定のアーキテクチャにarmv6 と armv7のキーワードがあることが原因っぽい。
    ⇒Target > Valid Architectures をダブルクリックして、armv7のエントリを削除

    そうするとビルドに成功します。ただしiPhone 3GS以降はarmv7なので、当然armv7でビルドできるならそちらのほうが良いはず。

    2011年4月11日月曜日

    Android Market のdocomo決済について要点だけ

    Xperia arc SO-01C ではSIMカードを指してない状態でも Wi-Fi が利用可能。
    ついでなので、Android Marketの決済まわりがどのような挙動になるのかを
    いくつかの条件で試して、整理してみた。

    1.docomo決済について
    ・Wi-Fi接続だけ(SIMなし)のときはクレカ決済だけが可能。docomo決済はそもそも選択肢として出てこない。
    ⇒docomo決済をするには3G回線が生きていることが条件ということかな。なのでSIMがささっていても圏外では同様、だと思う。
    ・クレジットカード決済はSIMなしでも可能
    ・docomo決済を選択すると、初回には住所氏名の入力が求められる。これはGoogle checkoutの「支払方法」の一つとして、クレカと並列として扱われる。VISA xxxxxxに対して DOCOMO JP xxxxxxxxxxx見たいな感じ。決済完了メールもこのDOCOMO JPで来る。
    ・docomo決済でアプリを購入するには、spモードパスワード入力が必須。
    ・マーケットで「約○○円」と出るもの(たしか外貨払いのもの)は、docomo決済できない(項目としては出てるけど、グレーアウト)

    2.払い戻しについて
    ・アプリ購入ご15分間は払い戻しが可能。
    ・購入したアプリのAndroid Marketページに行くと、購入ボタンのところに「払い戻し」というボタンが出る
    ・「払い戻し」をタップすると、払い戻し処理に合わせてアプリのアンインストールも行われる
    ・一度払い戻しをしたアプリは、再購入時は払い戻し対象外。

    2011年4月9日土曜日

    Android App ウィジェットの更新頻度について要点だけ

    • updatePeriodMillsの最低間隔は30分
    • updatePeriodMillsによる更新はデバイスの復帰状態を解除する。要注意。
    • もっと短い間隔で更新したい場合はAlarmManagerを使う。こっちはスリープも有効。

    Android ウィジェット開発の要点だけに書いたとおり、Android ウィジェットの更新はAppWidgetProviderInfoのupdatePeriodMills間隔で行われることになっている。ただし、この更新は端末がスリープも解除して行ってしまうため、あまり頻繁に行う事は推奨されていないし、実際30分より短い間隔でonUpdateは呼ばれないらしい(設定値が無視される)。

    これはデバイスのバッテリー消費を抑えるためでごもっとも。望ましくはユーザに更新間隔を設定させるUIも必要かもしれない。

    仮に30分より短い間隔で更新を行いたい場合にはAlarmManagerからIntentをコールするような方法を使い、こちらはスリープ中にデバイスをウェークアップさせてしまうことはない(でも操作中はバックグラウンドで動作してしまうから、やっぱり過度な更新は控えるべきなんだろう)。

    AlarmManagerを使った更新のやりかたは別途まとめるつもり。

    2011年4月6日水曜日

    Androidロードマップの要点だけ

    POST時点でのロードマップを整理してみるテスト。必ずしも正式発表のものだけではないことに注意:

    ・リリース済み
    2010年1月 2.1 スマートフォン用 API Level 7
    2010年5月 2.2 Froyo スマートフォン用 API Level 8 高速化(JIT)/Flash 10.1/Web版Android Market(OTAインストール)/etc
    2010年11月 2.3 Gingerbread スマートフォン用 API Level 9 NFC/センサ(ジャイロ、コンパスetc)/フロントカメラ
    2011年2月 2.3.3 API Level 10 マイナーリリース。
    2011年2月 3.0 Honeycomb API Level 11 タブレット用 ホログラフィックUI/新しいアニメーションフレームワーク/Hardware-acceralated Graphics/マルチコアCPU

    ・未リリース
    2011年後半? 4.0? Ice Cream スマートフォン用とタブレット用が統合される見込み

    http://developer.android.com/intl/ja/sdk/android-2.1.html
    http://developer.android.com/intl/ja/sdk/android-2.2.html
    http://developer.android.com/intl/ja/sdk/android-2.3-highlights.html
    http://developer.android.com/intl/ja/sdk/android-3.0-highlights.html#DeveloperApis

    Info.plistから情報取得する方法の要点だけ

    Info.plistの特定の項目の値を参照する場合は:

    Android ウィジェット開発の要点だけ

    (参照:http://developer.android.com/guide/topics/appwidgets/index.html)

    概要
    App Widgetとは、他のView(典型的にはHome画面)に埋め込まれる小さいアプリケーション。

    構成要素
    (1)AppWidgetProviderInfo:XMLで定義。レイアウトや更新頻度などを定義する
    (2)AppWidgetProvider:updated(onUpdate)/enabled(onEnabled)/disabled(onDisabled)/deleted(onDeleted)なとき、このクラスを介して処理を行う。このほかonReceiveメソッドも利用できるが通常不要。onUpdateはupdatePeriodMillis間隔で呼ばれる。
    (3)View layout:Widgetのレイアウトを定義する。使えるレイアウトやウィジェットに制限がある(RemoteViews)

    手順
    AndroidManifest.xmlにAppWidgetProviderのreceiverを定義する。このときintent-filterはandroid.appwidget.action.APPWIDGET_UPDATE。meta-data要素としてAppWidgetProviderInfoリソースのxmlを指定する。AppWidgetProviderInfoで指定できるのは幅(android:minWidth)高さ(android:minHeight)更新頻度(android:updatePeriodMillis)レイアウト(android:initialLayout)および設定用のActivity(android:configure)。

    App Widget Configuration Activity
    App Widget Configuration Activityは通常のActivityとして定義するが、intent-filterとしてandroid.appwidget.action.APPWIDGET_CONFIGUREを設定する。
    そのうえでこのActivityはAppWidgetProviderInfoリソースで宣言される。WidgetがConfigurationActivityを使うとき、このアクティビティはWidgetの状態/設定を更新する責任がある。これはAppWidgetManagerのupdateAppWidgetメソッドを介して行う。

    2011年3月29日火曜日

    Android Content Providerの要点だけ

    http://developer.android.com/intl/ja/guide/topics/providers/content-providers.html
    1.アプリ間でデータを受け渡す仕組み。これ以外には無い。
    2.android.providerパッケージで標準のContentProviderを見ることができる
    3.permissionを宣言しないといけないものもある
    4.独自のものを作ることも可能。その場合、ContentProviderをサブクラス化する。
    5.データモデルは1行1レコードのシンプルなデータベース
    6.データセットにはURIが対応する。CONTENT_URI定数をチェックすれば分る。
    7.典型的な形式はcontent://com.example.transportaionprovider/trains/122。
     - スキーム部分(content:は固定)
     - ドメイン部分はauthorityを示す。カスタムの場合、Manifestのandroid:authoritiesアトリビュートで宣言されるもの
     - パスの部分はデータ種別。0~複数セグメントがあり得る。
     - 末尾はレコードの_ID値


    以下のブログとかを見ると、Content URIはOSバージョンとかメーカーとかで違っているケースがありそうなので要注意。
    Android 2.2 のカレンダーContentProvier に対応http://d.hatena.ne.jp/rmiya/20100725/1280028729

    2011年3月25日金曜日

    EKEvent howto: 設定できる項目

    Event Kit Programming Guideからのメモ。

    プログラムからEKEventを作成するときに設定できる項目は以下。
    ・タイトル
    ・開始および終了日時
    ・カレンダー:新規作成は不可で、既存のもののみ。
     カレンダーはEKEventStore.calendarsでEKCalendarのNSArrayが取得できる。もしくはEKEventStoreインスタンスのdefaultCalendarForNewEnents。
    ・繰り返し設定。EKRecurrenceRule。
    ・アラーム:EKEventにaddAlarm:(EKAlarm *)alarmできる。

    以上を設定した上で、EventStoreのsaveEvent:span:errorインスタンスメソッドを呼んであげる。

    Xcode 4 howto: フレームワークの追加

    Xcode 4で既存のフレームワークを追加する方法です。

    1.Project Navigatorを開く
    2.ターゲットのアイコンを選択
     そうするとSummary/Info/Build Settings/Buid Phases/Build Rulesというタブがエディタエリアに表示される。
    3."Build Phases"を選択
    4."Link Binary With Libraries"を選択
    5."+"を選択
    6.ダイアログでフレームワークの一覧が表示される。ここから選択して"Add"
    7.Project Navigatorにフレームワークが追加されます。

    ちなみにAdd Files...でフレームワークのフォルダを直接指定しても追加されるみたい。

    2011年3月13日日曜日

    地震救援情報まとめ:茨城関連

    ケータイの方はこちらからご覧下さい http://bit.ly/hrmI6N
    できるだけ掲載しますので、追加修正などあれば、 http://twitter.com/h_kurosawa まで、またはコメント欄に記入お願いします。

    茨城県>義援金・寄附金をお寄せいただく場合の窓口ご案内 http://www.pref.ibaraki.jp/important2/20110311eq/20110318_13/

    【茨城県ボランティア募集】
    茨城県のボランティアセンターは県内各地の避難所で食事を準備したりするボランティアのスタッフを募っています。センターでは午前8時半~午後9時までの間電話を受け付けていてボランティアを求めている避難所を紹介しています。029-241-1133

    以下の市町でボランティアを募集中。常総市、鉾田市、笠間市、小美玉市、潮来市、東海村、那珂市、石岡市、常陸大宮市、日立市、行方市、牛久市、鹿嶋市、大洗町、常陸太田市。受入は各市町村在住者のみ。詳細は下記URLまで http://bit.ly/dK1QpQ (@Asahi_Shakai)

    水戸市は災害ボランティア活動対策本部を設置したとのことです。問合せは、市民会館203号室(福祉総務課)又は水戸市社会福祉協議会ボランティアセンター電話029-309-5001/メール syakyo@mito-syakyo.or.jp /受付8:30-18:00

    日赤県支部029(241)4516は、震災義援金を同支部のほか、各市町村の赤十字担当窓口で受け付け。振り込みの場合は郵便局、ゆうちょ銀、常陽銀本店、筑波銀県庁支店、県信組県庁前支店。19日午後5時までに77件約3883万円受け付け(@ibarakishimbun)

    つくば市/物資は直接、避難所に持ち込むのではなく、まず、市災害対策本部(029・854・8522~8526)に電話して、支援できる物資と数量を登録してください。その後、市が必要に応じて支援者に連絡します。つくば市は、ボランティアも、市ボランティアセンター(029・883・1360)に連絡して登録し、調整してから活動するよう呼びかけています。(@Asahi_Shakai)

    総務省:東北地方太平洋沖地震に関するチェーンメール等にご注意ください。 http://www.soumu.go.jp/menu_kyotsuu/important/kinkyu01_000096.html
    ■東北地方太平洋沖地震、ネット上でのデマまとめ http://d.hatena.ne.jp/seijotcp/20110312/p1 限られた情報の中ではデマが蔓延しやすいです。落ち着いて判断・行動してください。

    メディア
    茨城放送 水戸局 1197kHz / 土浦局・県西中継局 1458kHz
    茨城放送Twitcasting http://twitcasting.tv/ibs_radio
    茨城放送Ustream http://ustre.am/vvn0
    茨城放送ニコニコ生放送 http://live.nicovideo.jp/watch/lv43674406
    NHK水戸放送局 http://www3.nhk.or.jp/saigai/jishin/mito/4385_1.html
    HNKに意見送ったら茨城のライフライン等情報が見られる一覧を送ってもらいました。 http://plixi.com/p/83914909
    つくば災害FM(つくば市) http://radio-tsukuba.net/ FM84.2MHz
    (非公式)コミニティFM「FMひたち」 FM82.2MHz http://twitter.com/FM822bot
    FMぱるるん(水戸市、76・2㍋ヘルツ)
    常陸六国.com http://hitachirokkoku.com/

    救援情報
    茨城県内の物資情報は、こちらで相談、共有してください:OKWave http://oketter.okwave.jp/my_page/answer/28593
    筑波大学: つくばエリアの地震被害とライフライン情報共有 http://tsukuba-share.main.jp/
    茨城県版 炊き出しまっぷ、緊急避難場所 http://genokita.sakura.ne.jp/googlemymaps/mymap.php?msid=213124412055050597835.00049e595d94fe1de47e7
    茨城県炊き出しポイントを携帯でも見やすいようにテキスト化しました http://www5.big.or.jp/~ksmagic/jishin/ibaraki.html @Kwkonamagic52氏
    茨城県 | 給水・炊き出し・日用品取得場所一覧 http://japanquake2011filehost.appspot.com/html/u-pyon.com/m/food/ibaraki_food/post.html
    日本透析医会災害情報ネットワーク http://www.saigai-touseki.net/sendsdata/total.php

    インフラ
    Yahoo!宅配 配送状況エリアマップ http://topic.takuhai.yahoo.co.jp/notice/2011/post_18/
    給水所マップ(携帯・スマフォからも利用可) http://kyusuisho.appspot.com/
    高速バスネット http://www.kousokubus.net
    茨城交通 http://www.ibako.co.jp/
    茨城交通バス運行状況 http://www.ibako.co.jp/information.html
    Google 自動車・通行実績情報マップ (データ提供:本田技研工業株式会社)http://www.google.com/intl/ja/crisisresponse/japanquake2011_traffic.html
    災害対策本部発表(ミラー)茨城県 給水情報等 http://saigaitaisaku.r-cms.biz/topics_list4/contents_type=15
    東京電力:停電情報 http://teideninfo.tepco.co.jp/html/08000000000.html
    東京電力:計画停電 http://www.tepco.co.jp/images/ibaraki.pdf
    東京電力 カスタマーセンター 茨城 0120-995-332

    FONのアクセスポイントは現在も完全フリーです。どなたでもネットに繋げるようにしています。なかなか連絡がとれない方、震災情報を知りたい方は使ってください。 http://bit.ly/ecVsuX(@fonjapan)

    医療
    救急医療情報コントロールセンターは24時間対応で診療可能な病院を紹介。029-241-4199
    インスリン入手相談先情報 By日本糖尿病学会 2011-3-14 14時 日立総合病院 荻原健英先生・岡 裕爾先生 連絡先:0294-23-1111 @hmebaeさんのツイートより。

    県精神保健福祉センターは17日から、フリーダイヤル「いばらきこころのホットライン」0120(236)556を毎日開設。午前9時から午後4時まで。日立を除く各保健所でも平日午前8時半から午後5時まで電話相談受け付け(@ibarakishimbun)

    【茨城】被災した日立保健所を除く県内の各保健所でも、被災者のメンタル相談に応じる。平日午前8時半~午後5時。

    県の救急医療情報システム(029・241・4199)が24時間対応で診察可能医療機関を案内。茨城子ども救急電話相談(029・254・9900 プッシュ回線と携帯からは#8000も)は毎日夜間18~23時半に看護師が応対。休日は9~17時にも。(@Asahi_Shakai)

    特設公衆電話
    @NTTRPツイートより。
    特設公衆電話【茨城1/4(東海村)】(13日17時) 東海村役場、石神幼稚園、宿幼稚園、須和間幼稚園、舟石川幼稚園、村松幼稚園、舟石川保育所、村松保育所、百塚保育所、石神小学校、白方小学校、舟石川小学校、中丸小学校、村松小学校、照沼小学校

    特設公衆電話【茨城2/4(東海村)】(13日17時) 東海小学校、東海南中学校、石神コミュニティセンタ、村松コミュニティセンタ、白方コミュニティセンタ、真崎コミュニティセンタ、中丸コミュニティセンタ、舟石川コミュニティセンタ

    特設公衆電話【茨城3/4】(13日17時) ひたちなか市役所、ひたちなか市高野小学校、ひたちなか市佐野公民館、ひたちなか市前渡公民館、ひたちなか市金上ふれあいセンタ、ひたちなか市那珂湊中学校、那珂市役所、日立市役所

    特設公衆電話【茨城4/4】(13日17時) 常陸太田市役所、那珂市役所瓜連支所、常陸太田市役所金砂郷支所、常陸大宮市役所、大洗町役場、茨城町役場、牟田市役所、牟田市役所旭支所、北茨城市役所

    自治体
    茨城県 http://www.pref.ibaraki.jp/important/20110311eq/
    日立市:東北地方太平洋沖地震への対応について http://www.city.hitachi.ibaraki.jp/viewer/urgent.html#53
    日立市の相談所が開設してます。場所:災害対策本部(消防拠点施設 神峰町2丁目)、本庁(市民課ロビー)、各支所 時間:8:30~17:15電話でのお問い合わせは、生活安全課(0294-22-3111 内線340)
    IBARAKI International Affairs Division / TEL: 029-301-2862 9:00AM-6:00PM http://www.pref.ibaraki.jp/bukyoku/seikan/kokuko/kokuko.htm
    ひたちなか市災害等緊急情報 http://www.city.hitachinaka.ibaraki.jp/SKYU/saigai/saigai0314_0800.html

    その他
    原子力施設周辺環境モニタリングデータ http://www.bousai.ne.jp/vis/jichitai/ibaraki/index.html
    日立一高地学部員 茨城県北部の災害情報 http://luxuria.zatunen.com/saigai.html
    原発に関するQ&Aまとめ http://smc-japan.mirror.myapp.jp/
    SAVE IBARAKI http://saveibaraki.at-ninja.jp/hitachi.html
    NAVERまとめ http://matome.naver.jp/odai/2130000980547522301
    茨城子ども救急電話相談18:30~23:30(日曜・祝日は9:00~17:00、18:30~23:30)水戸市メルマガより
    短縮ダイヤル #8000 / すべての電話から 029-254-9900 / ※緊急・重傷は119へ
    茨城県(水戸市・大洗町・県北地方)の現状 http://ameblo.jp/ashitano-gakkou/
    大洗・那珂湊の写真 https://picasaweb.google.com/105933233374974508704/20110316#
    井手よしひろ>2011東北関東大地震 https://picasaweb.google.com/miraipapa/201102#
    がんばっぺ茨城ポスター | 茨城王 http://www.ibaraking.com/archives/2363

    Twitterアカウント
    茨城新聞 http://twitter.com/ibarakishimbun
    茨城放送 http://twitter.com/ibs_radio
    木村犬介 [日立市情報まとめ中] @pavlovdog_JP
    鹿島市 http://twitter.com/kashima_city
    つくば市情報システム課 http://twitter.com/tsukubais
    井手よしひろ:茨城県議会議員 http://twitter.com/ibakengee
    NTT広報室 http://twitter.com/#!/NTTPR
    給水所マップ http://twitter.com/#!/kyusuisho/

    Twitterハッシュタグ
    #save_ibaraki⇒茨城に関する震災ツイート
    #jisin 地震一般
    #hitachis⇒日立市
    #hitachinaka⇒ひたちなか市
    #oarai⇒大洗町
    #takahagi⇒高萩
    #kasumigaura⇒かすみがうら市
    #mito⇒水戸市
    #shirosato⇒城里町
    #Ishioka⇒石岡市
    #takidashi⇒炊き出し情報
    #ibaraki⇒茨城全般

    mixi(ログイン要)
    茨城県ひたちなか市民 LOVE http://mixi.jp/view_community.pl?id=788387
    【茨城の情報まとめ】随時更新しています。 http://mixi.jp/view_diary.pl?id=1688933102&owner_id=21115565

    2011年3月11日金曜日

    災害時情報リンク集:東北地方太平洋沖地震関連

    Twitter等で流れている災害情報の情報ソースと思われるリンクをリストします。間違いや追加はhttp://twitter.com/h_kurosawaまでお願いします。

    寄付関連
    mixi
    GREE
    DeNA(モバゲー)
    Tポイント 【PC】 http://bit.ly/etWywJ 【MB】http://bit.ly/feeSpL
    Yahoo! http://volunteer.yahoo.co.jp/donation/detail/1630001/index.html
    グルーポン http://www.groupon.jp/cid/7995/dtype/main
    Googleチェックアウト http://www.google.com/intl/ja/crisisresponse/japanquake2011.html
    goo募金 http://special.goo.ne.jp/donation_earthquake/

    安否情報伝言板
    docomo災害伝言板 http://dengon.docomo.ne.jp/top.cgi
    au災害伝言板 http://dengon.ezweb.ne.jp/
    SoftBank災害伝言板 http://dengon.softbank.ne.jp/
    ウィルコム災害伝言板 http://dengon.willcom-inc.com/dengon/Top.do
    イーモバイル災害伝言板 http://dengon.emnet.ne.jp/
    NTT東日本の安否確認伝言板 https://www.web171.jp/top.php または、電話で171
    Google Person Finder 2011 Japan http://japan.person-finder.appspot.com/
    iPhone災害用伝言板アプリ http://itunes.apple.com/jp/app/id425650996?mt=8

    交通
    Tokyo metro 東京メトロ運行情報 http://www.tokyometro.jp/unkou/
    JR東日本 http://www.jreast.co.jp/

    その他インフラ
    Google 自動車・通行実績情報マップ (データ提供:本田技研工業株式会社)http://www.google.com/intl/ja/crisisresponse/japanquake2011_traffic.html
    東京電力 http://www.tepco.co.jp/nu/f2-np/press_f2/2010/2010-j.html
    経済産業省 原子力安全・保安院緊急時情報HP http://kinkyu.nisa.go.jp/kinkyu/2011/03/200-9.html
    日本透析医会災害情報ネットワーク http://www.saigai-touseki.net/sendsdata/total.php
    Ibaraki foreign consultation service call 029-301-2862 English
    みちのく銀行 http://www.michinokubank.co.jp/

    大学入試
    3月12日・13日に実施が予定されていた大学入試(国公私)の対応について http://www.mext.go.jp/b_menu/houdou/23/03/1303579.htm
    茨城大学 http://daigakujc.jp/ibaraki/

    自治体
    市民の皆さまへの仙台市からのお知らせ http://www.city.sendai.jp/
    宮城県 消防機関及び連絡先一覧 http://www.pref.miyagi.jp/syoubou/shoubouhan/fs_list.htm
    宮城県避難情報http://www.pref.miyagi.jp/kikitaisaku/wagayade/hinan_bashoshin/hinan_top.htm
    Iwate Emergency Info / 岩手県 - 県内市町村避難場所 http://www.pref.iwate.jp/view.rbz?of=1&ik=0&cd=28306
    福島県避難所リストhttp://www.bousai.ne.jp/vis/jichitai/fukushima/refuge_frame.html
    Tokyo Emergency Info / 東京都防災ホームページ http://www.bousai.metro.tokyo.jp/mobile/m-emergency/index.html
    つくば市 http://www.city.tsukuba.ibaraki.jp/1330/008380.html
    市原市 http://www.city.ichihara.chiba.jp/
    長野県防災情報 http://www.pref.nagano.jp/kikikan/saigai.htm
    大洗町 http://www.town.oarai.lg.jp/index.html

    メディア
    Ustream: NHK http://ustre.am/vmCj
    Ustream: 日テレ http://ustre.am/vnel
    Ustream: TBS http://ustre.am/kJ3E
    Ustream: フジ http://ustre.am/iEG9
    Ustream: テレ朝 http://ustre.am/vnnn

    NHK radio in several languages. http://h.hatena.com/herbe/243597512623822452
    各地域のFM周波数 http://www.nhk.or.jp/fm/frequency/tvres5/h50303.htm
    radio frequencies http://www.nhk.or.jp/r1/amradio/tvres5/h50302.htm
    NHK公式Ustreamhttp://www.ustream.tv/channel/nhk-gtv
    NHKの各局被災状況まとめ http://www.nhk.or.jp/saigai/jishin/
    日経新聞 http://www.nikkei.com/news/article/g=96958A88889DE0E6EBE2E2EBE3E2E3E0E2E1E0E2E3E3E2E2E2E2E2E2

    その他まとめサイト
    twitterブログ:東北地方太平洋沖地震に関して http://blog.twitter.jp/2011/03/blog-post_12.html
    twitter携帯特設サイト http://twtr.jp/earthquake
    Google災害情報まとめページ http://www.google.co.jp/intl/ja/crisisresponse/japanquake2011.html
    Google ‎2011 Japanese Earthquake and Tsunami(English) http://www.google.co.jp/intl/en/crisisresponse/japanquake2011.html
    地震対策まとめサイト http://mblg.tv/enokiiii/entry/1/
    毎日.jp:東北・関東大地震のライフライン・交通などの情報 http://mainichi.jp/select/jiken/graph/20110311lifeline/
    【緊急掲載】ネットと電話を使う被災地の方との連絡手段まとめ(公的機関、NHKなどのリンク集)
    東北地方太平洋沖地震 @ ウィキ http://www46.atwiki.jp/earthquakematome/
    現状のデマまとめ。 http://www.yukawanet.com/archives/3598689.htm

    ツイッターアカウント
    青森県庁 http://twitter.com/#!/AomoriPref
    NHKニュース http://twitter.com/nhk_news
    NHK広報局 http://twitter.com/NHK_PR
    気仙沼市危機管理課 http://twitter.com/bosai_kesennuma
    IBC岩手放送 http://twitter.com/IBC_online
    総務省消防庁 http://twitter.com/FDMA_JAPAN
    岩手県広聴広報課 http://twitter.com/pref_iwate
    茨城新聞 http://twitter.com/ibarakishimbun
    i時事ドットコム http://twitter.com/i_jijicom
    岩手県知事 達増拓也 http://twitter.com/tassotakuya
    千葉県浦安市 http://twitter.com/urayasu_koho
    ラジオ福島 http://twitter.com/radio_rfc_japan
    朝日新聞社会グループ http://twitter.com/Asahi_Shakai
    茨城新聞 http://twitter.com/ibarakishimbun
    茨城放送