2011年12月29日木曜日

2011ねんまつの日記


'Montery Bay Aquarium' photo (c) 2009, taylorandayumi - license: http://creativecommons.org/licenses/by/2.0/

 

最近のこととか来年に向けての考え事とかをいくらか。

 

来年何やったら儲かりそうですかねえ

とりあえず自分に関係ありそうなトコを大雑把に言ってるやつを並べてみる。

おっきいトレンドは、モバイル / クラウドサービス / ソーシャルネットワーキング / ビッグデータ解析。ただしソーシャルなんちゃらはいつまでもやたら儲かり続けるわけじゃないような気もする。

組込アプリ屋さんで今はモバイルやってる訳だが、ぐぐる先生その他に振り回されて見積もりよりいっぱい働いちゃったわりにはあんま儲かんね!みたいのがいやんな感じなのでなんか別の…何か…もうちょっとなんか無いの、って気持ちが今年はモヤッとあった。あったので別の波にもクビ突っ込めれば突っ込みたいトコだけど仕事こそあるもののやっぱあんま儲からないね…だと同じなのでいろいろ悩ましい。ジリ貧はいかん。ドラッカーちゃんは自ら変化を創りだせって言ってた。

 

Android関係で調べようかと思ったけどまだあんま調べてないこと

・Android2.x以下でActionbarとかをやるためのライブラリとか無いのかな

無いこともナイっぽかったけど、試しにいじったりとかはまだしてない。

  • GreenDroid : Actionbarに限らずいろいろある。シャレオツ。画面をフリックで切り替えたりとか各種シャレオツ用ライブラリとなっているらしい。
  • ActionBarSherlock : Actionbarに限らずいろいろある。これは明確に3.x以上とそれ以前の奴のGUIの互換性問題をがんばりまっせというノリを表明している、ように見える。
  • android-actiobar : Actionbarのみのもの。これは前使ったことあって、ちゃんと動いてた。これは互換性云々がんばるとかの子じゃなくて、GDD2010あたりでイケてるUIとしてActionbarが紹介されていたので、じゃあライブラリ作るべという感じで作られた物。

 

・リストのドラッグ&ドロップとかできるライブラリとかないかな

無いことも無いっぽかった(cwac-touchlist)けど例によってまだいじれてない。

 

・その他

 

その他もろもろろ

・ReadWriteWebの、Top 10 Startups of 2011

知らねえのばっかりだな…。

 

AP通信が今年のトップ10タイトルを発表、「Portal 2」が“The Elder Scrolls V: Skyrim”を下し首位に選出

今年はわりと洋ゲー豊作だったんじゃねえのという気がする。

 

・「BeingGeek - ギークであり続けるためのキャリア戦略」って本読んだ

同意できるとこもできないとこもあったけど、けっこう面白かった。本書で繰り返し書かれている、自分が成長してるかを確かめるための3つの問いとして上げられたモンがなかなか耳が痛い。

  • 最近、何か失敗をしたか?
  • 自分に異議を唱える人が身近にいるか?
  • この1週間の間に何か学んだことはあるか?それについて説明できるか?

アウチ!

 

それでは良いお年を。

2011年12月6日火曜日

Android4.0の使用上のTips及び感想を少々

3日ぐらい使ったので使い方とかについてちょっと書いてみます。

設定画面へのショートカットがNotificationsウインドウの上のとこにある

Settingonnotif

前はランチャーのオプションメニューに設定があったからランチャーに設定のアイコン置かなくてよかったのになー邪魔だなーと思ってたら、なかなか適当なとこにショートカットがありました。ランチャーの起動中でなくてもここからアクセス出来るようになったので便利になったと言えるかもしれません。

 

テキストの入力方法(IME)の切替え方

Keyborad

前はテキスト入力領域の長押しから選択だったと思ったんですが変わってました。ソフトキーボードの表示を行うと「入力方式の選択」というアイテムが通知されるので、ステータスバーをドラッグしてNotificationsウインドウ開いてタップすると切替えが出来ます。

注意点は、新たにインストールしたIMEを使いたい場合は設定→言語と入力→キーボードと入力方式で有効にしておいてね(これは昔からだけど)ってのと、入力方式の選択アイテムの出現にはテキスト入力領域にフォーカスがあたってるだけじゃなくソフトキーボードが表示されている必要があるよというとこですかね。

 

USBマスストレージ接続できなくなった

Trns

ので、Macの人とかはUSBで繋いでもファイルのやりとりできねーやという状況になりそうです。Winの場合はVista以降ならMTPでいけるので特になんかしなくてもファイルのやり取りできるらしいですが、MacはGoogle配布のAndroid File Transferでがんばりましょう。ダウンロードしてきてApplicationsに持ってきて、その後Galaxy Nexusを接続すると図のようなやつが立ち上がってファイルの移動ができます。

 

Galaxy Nexusの筐体がでかいことについての文句

R0010211

赤丸は親指がアクセス可能な範囲のおおまかな図示です。

自分は手の大きさは今ざっくり測ったら手長さ19cmの手幅8cmなので日本人の成人男子として普通ぐらいだと思うのですが、写真の左側のアクションバーにアクセス可能な持ち方をするとキーボードの一部やナビゲーションバーに指が届かなくなります。逆に右のキーボードやナビゲーションバーにアクセスしやすい持ち方(下端に小指がかかるような持ち方)だとアクションバーにアクセスできなくなります。

Screenshot 2011 12 05 23 43 02

このことから、例えばWebブラウザのように閲覧がメインのアプリケーションの場合は上方にUIが集まっていてもそれはそれで問題がそれほど無いかもしれませんが、テキスト入力などが多いアプリケーションの場合はsplit action bar等を用いて下側にUIを集めたほうが親切かもしれないなーと思ったりします。この辺はプリインストールアプリのwebブラウザとGmailのUIの違いを見ると中の人も意識してるっぽいことが分かる気がします。

Recent Apps ってそれほど便利じゃなくね

Recent Appsは、2.xのHome長押しで最近起動したアプリアイコン一覧が表示される機能から、専用のボタンをタップでサムネイルとアイコンやアプリ名が表示される機能にオサレ強化されたアレです。これでアプリの切換が便利になるよという事だと思うのですが、Home押してランチャーに戻ってからアイコンタップして切替える操作と比較してあんま便利な気がしないんですよね。

Recent Appsは表示が過去の起動順であり毎回表示される順番が異なるため、起動したいアプリが直前やごく最近に起動したものでない限り、きちんと見て判断してタップしなければなりません。 一方でランチャー上のアイコン配置ならほぼ覚えているし、自分で変えない限りは変わらないので、Homeキーでランチャーを表示してからアイコンをタップする操作には一貫性があり負担が少ないです。予想される操作回数だけで言っても2タップと場合によってスクロールなので同じだし、あんまりうれしい気がしないんですよね個人的に。

一応ボタン押してからの起動はランチャー表示よりRecent Apps表示のほうが見て分かるくらいは早い(0.数秒ぐらい)んですけどね。でも2.x以前にはずっと存在していてユーザーも慣れていると思われるMenuボタン潰して入れる価値があったのかなーとかぐちゃぐちゃ思っちゃいます。

2011年12月2日金曜日

Android4.0で変わったいろいろの確認、およびGalaxy Nexus予約したよ話

'Droid For Earth' photo (c) 2011, victoria white2010 - license: http://creativecommons.org/licenses/by/2.0/

(11/12/05 間違った記述とか足したい記述とか合った場合にごりごり追記しています。増え過ぎたらそのうち別エントリーとして清書するかも。)

そんでは前回の2.2→Honeycombに続き、Android4.0(ice cream sandwich)を見てこうと思います。ごく大雑把に。

とりあえず公式のバージョンノートとそれを和訳してくださってる記事を真面目に読むと以下は読まなくても大丈夫です。

Galaxy Nexusを店頭でちょっと触った印象と実用上のアレ

まだ店頭でちょっと触っただけで手元に来てないですが、クソでっけーです。4.65インチですもんね。たぶん4.0のネイティブ解像度である720pが出せるディスプレイとしては相当小さい方なんでしょうけど、絶対的にでっけーです。まあ土曜日に来る予定なのでしばらく使ってみて慣れるかどうか様子見ですね。3.7インチ以下のほうが幸せになれると個人的には思うんだけど、最近のハイスペックなAndroid端末はどれもこれもでっかいですなぁ…。

ボタン変わったね―とかはあとでやるので割愛しますけど、それ以外でつまづきそうなのはMacからのファイル転送でして、4.0ではどうもUSBマスストレージ接続できない(MTPかPTPが利用できる)ようです。MacはMTPでやりとりとかデフォではできないので、Googleが配布しているAndroid File Transferてのを使うとよいらしいです。

基本のUIまわりについて

とりあえずあったらしいUIの用語確認から。

Usage all lg

Status Bar(一番上のおなじみの)、Action Bar(ステータスバーの下の3.0からの)、Navigation Bar(Back / Home / Recent Appsのソフトウェアボタンが表示されてるところ)が表示されます。

あとはSplit Action Bar(Navigation Barの上くらいに表示されるアクションバー)とかもたまに出ます。あとAction Barの左に表示されるアプリアイコンはHome Buttonて呼ぶらしいです、その名前どうなんだって感じするけど。

このNavigation Barが表示されている領域ですが、端末がタブレットである場合はsystem barというのが出ます。system barはHoneycombで下に出てたやつと同じもので、ボタンの表示だけじゃなく時計とかなんとかStatus Bar的な表示もちょろちょろしてるところがNavigation Barと違います。

じゃあPhoneなのかTabletなのかの判定はどうやってるんかというと、短辺が600dp(densityが160なら600px)以下だとPhoneとしてるということらしいです。ソフトウェア的に判定する方法はみんなすきすきstackoverflowのDeveloping an universal android application (phone and tablet)なぞが参考になります(スクリーンレイアウトてパラメータとってきてSCREENLAYOUT_SIZE_LARGE以上だったらタブレットだコリャという感じ)。

あと、Menuボタンが引退した件の4.0の話ですが、基本的にはHoneycombと同じで今後はAction Barをよろしくという話です。あと2.x以下向けのオプションメニューを持つアプリを実行した場合、HoneycombではRecent Appsボタンの横にMenuボタンが帰ってくるんぬという方法が取られていましたが、4.0ではAction Bar上にMenuっぽいアイテムが出てくれてダサくないも以下のように同じくRecent Appsボタンの横に出るようです(実機確認したらウソだったので11/12/03修正)。

ただメニューボタンのonKeyDownをフックしてなんかしてからメニュー出すべとかやってた場合は救われないです。

せっかく画面あるのでついでに4.0でははどうするとフルスクリーン出来るんざんしょかという話もしちゃおうかと思います。ステータスバーは多分いつものFLAG_FULLSCREENでよろしくなんですが、下側が曲者らしいです。ナビゲーションバーはsetSystemUIvisibilityでHideにしてやると隠せます(ただしユーザーがなんか触ると表示状態になる)が、system barは隠せないらしいらしいです。low profileを渡してボタンのアイコンを薄暗くはできるけど、機能と表示領域は維持されます。

(11/12/05 フルスクリーンの方法について以下に追記)

まずは書き忘れたなーと思ったAction Barの隠し方。Action Barを隠すは簡単で、静的にやる場合はManifestでActivityにandroid:theme="@android:style/Theme.Holo.NoActionBar"を設定、動的にやる場合はActivity.getActionBar().hide()を実行すればOKです。

あとstatus barの隠し方についてFLAG_FULLSCREENでいいんじゃねと書いておりましたが、非推奨になったりとかはしてないのでたぶんこれも機能はするんですが、恐らく4.0においては3.0で追加のsetSystemUiVisibility()を用いる方法が推奨かと思われた事を追記します。パラメータは4.0で新しく追加されたSYSTEM_UI_FLAG_LOW_PROFILE(status barは隠れる、Navigation Barは薄暗くなる)又はSYSTEM_UI_FLAG_HIDE_NAVIGATION(status barもNavigation Barも隠れる)のいずれかを使うとよいです。

もろもろ新機能

  • Android Beam(NDEF Push with NFC) : NFC経由で端末間通信できる。あまりたくさんのデータは送れない。
  • Wi-Fi Direct : アクセスポイントを経由せずにアドホック通信出来ちゃう。discoverPeers っての叩いて接続先候補探してきて接続するらしい。探される側で準備や設定とかねえのかな。
  • GridLayout : グリッドを切って、そのグリッドのどこに置いてねって感じでViewが配置できるレイアウト。
  • Social API : ユーザーのプロファイルがPermission切ると読み書きできたりとか、Invite Intentというコンタクト追加リクエスト用アクションとか。
  • Hoverイベント : カーソルやスタイラス用に、UI上にカーソルが来たぜというonHoverイベントが用意された。
  • ActionProvider : 今までswitchでメニュー番号判定してーとかビチョビチョやってたのがもう少しきれいに書けるようになる、のかな。
  • その他、カレンダーのデータの読み書き強化、メディア再生や操作関連の強化、カメラ周りの機能追加、Accessibilityの改善用API(テキスト読み上げ等)、グラフィックがどうたらとかエンタープライズ向けがこうたら等。
  • あとデジタイザーペンの筆圧とか傾きとかをAPIで拾えるようになったらしいので、なんかこうAndroidタブレットで液タブ的なのが廉価で出てくるといいですね。

んで、こいつらをすぐ使えるのかなと少し考える

ActionBarとかFragmentsとかなんとかびしばし使えば、シャレオツで複数プラットフォーム対応なUI作れそうではあるよねというのが見える一方で、今はまだ2.x端末がシェア大きいので、minSDKを4.0にしちゃうのは厳しいように思われます。

一方で提供されている互換性確保手段(前回紹介したHoneycombから追加されたcompatibility package)が、現バージョンのv4時点でFragmentsとアクセシビリティ系APIと他少々しかカバーしていない(せめてAction Barはやってほしいよね)といういまいちな子なので、これが充実してこないと明確に大画面タブレットがターゲットとかじゃない限りまだ仕事では3.0+のアプリ書くチャンスあんまないんじゃないかという気がします。まあ4.0ならではのUXを実現したアプリを先行して出しちゃうのも楽しそうではありますよね。

(11/12/05)たぶんGoogle先生的にはきっと「一般開発者にはどうしようもないFragmentsは実装しといたので他は頑張ってね」という事なんじゃないかって気がしてきたので、オプションメニューは一切使わず、Action bar や split action bar、Action barのフローティングメニューとかを自力で実装するなりサードパーティの適当なライブラリ使って実装するなりしてで互換性を確保すればいいのかもしれません。なんか大変だしAction Barのデザインがアプリごとにまちまちになりそうなのでやっぱ本来はcompatibility packageでひと通り提供されるのがいいと思うんですけど。

その他4.0とあんま関係ないAndroidメモ

 

 

2011年12月1日木曜日

Android2.2くらいで脳みそ止まってたので4.0の前にHoneycombまでの予習

'android_3_wallpaper' photo (c) 2011, Jake Maymar - license: http://creativecommons.org/licenses/by-sa/2.0/

一応あんじょろりん関係のソフトウェア書くこともそこそこあるのですが、この端末でちゃんと動くように作ってッて言われるとだいたい2.1とか2.2とかなんで、以降の連中はチラ見はするものの基本スルーして生活してました。しかしいよいよ4.0も来てますしそろそろキャッチアップしましょうかというアレです。ホントに大雑把に拾ってくのでちゃんとしたい人は公式とか見たほうがいいと思います。

2.x最後となりそうな2.3

公式のバージョンノートを見ると、NFCサポートとSIP-basedなVoIP、NDK関連の改善とかがあるようです。また、StrictModeというパフォーマンスが低下するような処理を補足してくれるチューニングに便利なナニが追加になってます。わりと地味ですね。

タブレットのための3.x

公式の3.0のバージョンノートや世に出てる板とか見て分かるとおり、かなりUIまわり変わってます。でかいのは2点で、消えるMenuボタン他(こんにちわAction Bar) と、Fragmentsの追加です。

Menuボタン等が無くなってる件ですが、2.3以前ではHome / Menu / Back ( / あとたまに検索)のボタンがあるのが一般的だったものが、3.0からはHome / Back / RecentApps(最近使ったアプリ一覧)に変わっています。無くなっちゃったMenuボタンの代わりのオプションメニューを展開する手段ですが、アプリが3.x向けのデフォルトテーマ(Theme.WithActionBar)だった場合に上の辺り表示される、Action Barって奴の右の辺りに表示されるメニューっぽいボタンを押すとびょろっと出ます。もし2.3以前向けのアプリが起動した場合は救済措置としてRecentAppsボタンの横にMenuボタンっぽいのが出現し、押すと昔ながらのオプションメニューが下からしゃきっと出ます(4.0だとまた救われ方が違うけど今度)。

Fragmentsは@itの記事が分かりやすいのですが、大きな画面向けに2ペインでやる時とかに便利なように作られた、Activity内に配置できるライフサイクルを持つコンテナらしいです。そんなめんどくさそうなもん追加しなくてもレイアウトでいい塩梅にカチ割ってView当てたらいいんじゃないのという気もしますが、とりあえず上モノはFragmentsにしておくと後でタブレット対応したいなというときに便利なのかもしらんですね。

他はクリップボードの拡張(URIとかもコピペできるよ)とか、ドラッグ&ドロップ用のAPI追加、NtificationやAppWidgetsの拡張とかそんなところでしょうかね。あと複数のビューで同時にタッチイベントが拾えるようになったらしいです(デフォルトでタッチイベントがそれぞれに分割して送られるようになった)。

あとグラフィクス関係もちょっとあって、Renderscript 3D graphics engineとかは自分見てもあんまわかんないけど見る人が見れば面白いかもしれません。2D Hardware acceleratedについてはManifestで有効にしないとFlash動かないじょんという地雷としてお目にかかったので個人的に恨みがあります。

3.0とその前の連中(〜1.6)の互換性とか(Compatibility package)

これも@itの記事が分かりやすいのですが、要はコレでFragmentsを実装すると1.6以上のどこのご家庭にでもある普通のAndroid端末でそれなりに動く、動かなかったりするというほどほどの互換性を実現出来るもののようです。テストとかが楽しそうなのであんま使いたくない気がします。

そして4.0へ

Androidビーム(NFCでデータ通信)とかwifi経由で別の4.0端末とp2p通信するためのAPIとかごちゃごちゃあるのですがまた今度。