2013年12月20日金曜日

2013年購入した物・手放した物について

細かい物は差し引いて、PCとか携帯端末のみピックアップすると
以下のようになった。2013年は購入した物がかなり少なかった。

【購入した物】
(1)自作PCパーツ一式
Core2DuoからCorei3にパーツ換装して、とりあえずあと数年は普通に
使えるようになった。音楽、動画、プログラミング程度なら十分。

(2)Nexus7 2013
好評だったNexus7 2012に続いて流れで購入。重さが軽くなって質感は
アップしたが、タッチ感度の悪さは相変わらずだった。

(3)Xperia A
大きさと質感はXperia acro HDとほぼ同等だが、ROMとメモリ容量および
動作速度が上がったので快適になった。

(4)Nintendo 3DS
先日購入したばかりだが中々楽しい。手に合わないのか使っていると
指の付け根が痛くなってくる…。

【手放した物】
(1)iPod touch 5th
メイン使用のAndroid端末があったため、ほとんど使用する事なく売却。

(2)MacBook Pro 13inch 2011 early
iOSアプリを開発しようと考えていたが結局やらずに終わった。そうなると
デスクトップPCだけでいいよねって事で売却。

(3)Xperia acro HD
Xperia Aの購入と同時に売却。あと1年使うかなと思っていたけれど、
Xperia Aのコストパフォーマンスの良さに敵わなかった。

(4)Nexus7 2013
初期不良とタッチ感度の悪さに嫌気が差して返品。ASUS製品は2度と買わないかも。


振り返ると必要な物はグレードアップ、不要な物は売却という感じの1年だった。
個人的にはApple製品、タブレットは不要と判断して、おそらく来年もそうなる予定。
Android端末は通常用途では十分な域に達しているので買い換える事は当分なさそう。

2014年は興味の矛先を別の所にも向けてみたいなと思う所存。

2013年11月15日金曜日

最近T-SQUAREにハマっている

個人的にT-SQUAREと言えばF1グランプリのテーマ曲とPlayStation用ソフトの
グランツーリスモのテーマ曲(T-SQUAREの曲ではないが安藤まさひろさんが作曲)
くらいしかイメージがなかった。


先日たまたまYoutubeで「Omens of Love」を聴き、これ昔学校?で聴いた事あると
思ったら、Twitterで吹奏楽で定番だと教えてもらった。またWikipediaを見てみると、
色々なTV番組、CMのテーマ曲を手掛けているのを知って、とりあえず昔のアルバムを
借りてみる事にした。

1990年前後の旧名THE SQUAREからT-SQUAREに改名した辺りなどはすごく好きで、
特に疾走感ある曲が好みだ。例えばアルバムのHUMANの「HIGH TIME」、IMPRESSIVEの「FACES」、WAVEの「ARCADIA」などBGMとして最適。他にも挙げたらきりが無いが、
聴けば「あ~これ聴いた事ある!」となる曲ばかりで、再発見した気分で楽しくなる。

ちなみにF1グランプリのテーマ曲はアルバムのTRUTHの「TRUTH」、グランツーリスモの
テーマ曲「MOON OVER THE CASTLE」はアルバムのBLUE IN REDの「KNIGHT'S SONG」
として収録されていた。後者はゲームと異なるアレンジになっているので聴き比べてみると
いいかもしれない。

今度は2000年以降のアルバムに手を出してみようかなと思う。

2013年10月31日木曜日

AppleIDは削除出来なくなったらしい

今年の最初にこのエントリーで開発用のAppleIDを削除してもらった経緯について
書いた。今度は本アカウントも削除してもらおうとAppleのサポートセンターに
電話で問い合わせてみた。
まず結果から書くと、2回問い合わせて2回とも無視 or 削除に応じなかった。

【AppleID削除依頼における対応】
・(事例1) 素直に応じた(と思わせた)ケース

以前と同じように自動音声案内の全ての項目でその他の用件を選んで、繋がった
オペレーターにアカウントの削除依頼を行った。何故アカウントを削除したいのかを
問われて理由を答えた後、電話が何度か保留状態になって下記URLに誘導された。

http://www.apple.com/jp/privacy/contact/

「質問の内容」で「プライバシーに関する問題」を選んだ後、地域、姓、名、
Eメールアドレス、件名、コメントを入力する欄があるので、削除依頼と分かる
内容で入力して送信する。コメントには削除したいAppleIDも添えた。
ここまではオペレーターが一緒になって誘導してくれたので問題なかった。

しかし送信した問い合わせに対して一向にメールの返信が来ない。来たのは
サポートセンターの電話対応評価に関するメールだけだった。
未確認なのか、無視しているのか定かでないが、少なくともこちらとしては
無視されたと受け取らざるを得ない。

・(事例2) 最初から応じないケース

返信が来ないのでおかしいと思いつつ、再度Appleのサポートセンターに電話で
問い合わせる事にした。今度は以前と別のオペレーター(女性)が対応した。
以下に簡単なやり取りを記載する。

私:「AppleIDを削除したいのですが…」
オペレーター:「基本的にはAppleIDの削除は出来ないんですよ。」
私:「あれ?削除出来なくなったんですか?」
オペレーター:「どこかでそのような情報を見たのでしょうか?」
私:「以前に別のAppleIDを削除した時は電話で対応してもらいました。」
オペレーター:「以前は何か理由があってそうなったと思われますが、残念ながら削除は出来なくて情報は残ってしまいます。」
私:「どうにかならないでしょうか?」
オペレーター:「iTunesのサポートセンターに問い合わせてみてはどうでしょうか?それでもおそらくAppleIDの削除は出来ないと思われますが…。」

というやり取りの後に下記URLに誘導された。

http://www.apple.com/jp/support/itunes/contact/

問い合わせページに移動した後、「アカウント管理」→「該当する確認内容がない」を
選んで、必要な項目を入力して送信した。48時間以内にメール返信すると書いてあった通り
返信は早く来たが、やはりAppleIDの削除は出来ないとの回答だった。

【結論】
結局AppleIDの削除は出来なくなってしまったようだ。もう少し食い下がれば
応じてくれるかもしれないが、はっきり言ってそこまでやってるのが面倒くさい。

よってAppleIDを削除したいと思った人は、下記手順で適当な情報を登録した後に
放置するのが一番かもしれない。

(1)iTunesを起動して削除対象となるAppleIDでサインインした後、アカウント情報を開いてクレジットカード情報を削除(「なし」を選択)する。
(2)WebでMy Apple IDを開いてサインインした後、名前、住所、電話番号、秘密の質問にあり得ない内容(全部数字1とか)で更新する。
(3)捨てアカウント用メールアドレスを入手して、AppleIDをそのメールアドレスに変更する。
(4)その後は放置する。


アカウント削除させない、情報が残るというのは個人情報保護の観点からどうなんだろう?
Web上でアカウント削除のフォームすら用意しない辺りに悪意を感じた。

2013年10月12日土曜日

Xperia Aのカメラシャッター音のON/OFF切り替えオプションを表示するXposedモジュールを作った

今更ながらXperia Aでカメラシャッター音のON/OFF切り替えオプションを
表示するXposedモジュールを作ったので以下に置いておく。
元々標準カメラアプリに存在する機能を呼び出せるようにしただけで、
動作が確認されているのはコメントでの報告済みも含めて以下の通り。

【動作確認済み端末】
NTT DoCoMo : Xperia GX、Xperia SX、Xperia AX、Xperia A、Xperia Z
KDDI au : Xperia VL、Xperia UL

https://dl.dropboxusercontent.com/s/o8ulexw7sl4ttc1/SemcCameraPatcher.apk


【2013/10/24 追記】
Xperia Z1ではカメラシャッター音の処理方式が変更されたらしく、本モジュールでは
シャッター音をON/OFFする事が出来ないようだ。(下記URLを参照)

■ XperiaにおけるAndroidアプリ考察 » 【Z1】シャッター音ON/OFF制御が変わったようです Xperia Z1(C6903)レビュー(2)
http://xperia-freaks.org/2013/09/28/c6903-camera/

2013年9月24日火曜日

Android Support Library v7でActionBarにメニューボタンが表示されない件

そろそろアプリをActionBarに対応しようかと思い立って、2か月前にリリースされた
ActionBarを含むSupport Library v7(appcompat)を使用する事にした。
SDKに含まれるappcompatの既存プロジェクトをEclipseでインポートして、ターゲットの
プロジェクトに依存関係を設定すれば簡単に組み込む事が出来る。(詳細は割愛)

ActivityをActionBarActivityに切り替えて、下記のメニューアイテムを
列挙したメニューのxmlにshowAsActionを追加すればActionBarにメニュー
ボタンが表示されるだろう、と思っていたら見事にハマってしまった。
Support Library v7のActionBarでは下記の方法では各メニューボタンは
表示されずに全てMore(3点アイコン)に含まれてしまう。


    
    
    
    
    


実際にActionBarに各メニューボタンを表示させるにはonCreateOptionMenu()で
inflateしていた箇所をコメントアウトして、各メニューアイテムおよびそのリスナーを
記述した後にMenuItemCompat.setShowAsAction()を記述する必要がある。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // menu.xmlを無視するためコメントアウト
    //inflater.inflate(R.menu.menu, menu);

    MenuItem item = menu.add(R.string.menu_add)
            .setIcon(android.R.drawable.ic_menu_add)
            .setOnMenuItemClickListener(new OnMenuItemClickListener() {
                
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    // 任意の処理

                    return true;
                }

            });

    MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);

    item = menu.add(R.string.menu_settings)
            .setIcon(android.R.drawable.ic_menu_preferences)
            .setOnMenuItemClickListener(new OnMenuItemClickListener() {
                
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    // 任意の処理

                    return true;
                }
                
            });

    MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
}
上記のようにinflateをコメントアウトするとonOptionsItemSelected()に記述していた
処理は実行されなくなる。メニューのxmlに定義せず、わざわざソースに全て記述しないと
いけないのはとても面倒なのだが、他に良い方法はあるのだろうか?


【2013/10/17 追記】
コメントで教えて頂いた内容を追記しておくと、メニューのxmlにnamespaceで
xmlns:appを宣言して、メニューアイテムにapp:showAsActionを記述する事で、
ソースに記述する事なくActionBarにメニューアイテムを表示する事が可能となる。
"app"の部分は任意の名称で構わない。


    
    
    
    
    


後は従来通りonOptionsItemSelected()に処理を記述すれば問題なく動作する。
また下記サイトにも詳しく載っているので要参照。

■ android.support.v7.app.ActionBar - チラシの裏
http://www.globefish.jp/mt/2013/07/androidsupportv7appactionbar.html

2013年9月9日月曜日

Nexus7 2013モデルでAndroid OSが暴走してバッテリーが異常に消費する件

先日購入してビルド番号JSS15Qにアップデートした当初から悩まされ
続けているのが、Android OSが暴走してバッテリーがすごい勢いで
消費していく現象だ。以下の画像はほぼ機内モードで放置した時の
バッテリーのグラフとWakelock Detectorというアプリを使って
Kernel Wake Lockの状態を示したものである。


画像を見れば分かる通り、Android OSがバッテリ使用率の8割以上を占めており、
またpil-gssというプロセスがずっとスリープを阻害しているのが分かる。
この件はGoogleのプロダクトフォーラムでも既に報告は挙がっている。

■ Nexus 7 2013 pil-gss wakelock - Google グループ
http://productforums.google.com/forum/#!category-topic/nexus/nexus-7/AiQIc2DX5SI

これを読むとハードウェアなのかOS、ファームウェア側に問題があるのか
よく分からない。そもそもpil-gssとは何をしているプロセスなのか不明で、
GPSやWiFiを無効にしても発生する問題なのでかなり厄介な問題だ。
詳細は不明だがとりあえず上記フォーラムのユーザーから報告された
暫定回避手順を以下に示しておく。

【Android OSの暴走を止める暫定回避手順】
(1)rootを取得する。(方法は各自調べる事)

(2)USBデバッグを有効にしてPCとUSBケーブルで接続する。

(3)PC側でコマンドプロンプトを起動して下記のコマンドを入力する。
> adb shell
$ su
# stop rmt_storage
# exit
$ exit
> exit

以上でAndroid OSの暴走は止める事は出来る。ただし再起動する度に
PCとUSBケーブルで接続してコマンド実行する必要があって少々面倒だ。
しかし問題点が判明するまでこの方法で回避する以外方法がなさそうだ。
root取得が絡むので自己責任でどうぞ。

この件で初期不良として交換したら発生しなくなったという人もいるようで、
もしかしたら個体差があるのかもしれない。rootをわざわざ取る気がなくて
早くどうにかしたいという人は交換してもらうのも1つの手だと思う。
ただし交換した物でも発生する可能性はあるので注意が必要。


【2013/9/9同日 追記】
上記コマンドを再起動時に毎回実行するスクリプトを下記リンクに置いておく。
導入する場合は自己責任でどうぞ。
https://dl.dropboxusercontent.com/u/42526561/nexus7_2013_stop_rmt_storage.zip

【前提条件】
・rootedである事
・busyboxをインストールしておく事(/system/xbin配下にインストール)

【スクリプトのインストール方法】
(1)ダウンロードしたzipファイルを解凍する。

(2)Nexus7の/system/etc/kickstart_checker.shファイルをPC等にバックアップしておく。

(3)コマンドプロンプトを起動してnexus7_2013_stop_rmt_storageフォルダに移動した後に下記コマンドを実行する。
> adb push 00stop_rmt_storage /data/local/tmp/
> adb push install_tool.sh /data/local/tmp/
> adb shell
$ su
# cd /data/local/tmp
# chmod 0777 install_tool.sh
# ./install_tool.sh
# rm 00stop_rmt_storage
# rm install_tool.sh
# reboot

【スクリプトのアンインストール方法】
将来この問題がアップデートで対策された時のためにアンインストール方法も記載しておく。

(1)インストール手順(2)でバックアップしたkickstart_checker.shファイルを用意する。または端末の/system/etc/kickstart_checker.shファイルをPCにコピーして、下記の行を削除して保存したファイルを用意する。

 削除対象:/system/xbin/busybox run-parts /system/etc/init.d と記載された行

(2)コマンドプロンプトを起動して下記コマンドを実行する。
> adb push kickstart_checker.sh /data/local/tmp/
> adb push uninstall_tool.sh /data/local/tmp
> adb shell
$ su
# cd /data/local/tmp
# chmod 0777 uninstall_tool.sh
# ./uninstall_tool.sh
# rm kickstart_checker.sh
# rm uninstall_tool.sh
# reboot 


【2013/9/12 追記】
本件についてASUSにメールで問い合わせた所、着払い送付して現象を確認した後、
初期不良として交換対応するとの事だった。私は輸入ではなくヨドバシで購入したので、
ヨドバシのサポートセンターに電話をして結局返品する事にした。
理由はいくつかあって、

・上述の通りバッテリーが異常消費する
・液晶パネルのタッチが誤動作する
・操作時に突然フリーズする事がある(時間を置くと復帰する)
・nasneの録画番組が視聴できない(これはTwonkyBeamの問題)
・電源ONして起動時にGoogleロゴでよく止まる

といった具合に色々と不満があった。Googleのプロダクトフォーラムを見れば
同じような現象で困っている人達が多くいるのも返品を決めた理由だ。
また、今急いで交換したとして同じ初期ロットの不具合のある製品に当たっては
正直堪ったものではない。残念だが一旦返品して今後の様子を見てから購入を
再検討したいと思う。ちなみに本体のシリアルナンバーは「D70KBCxxxxxx」だった。

最後に言いたいのは本エントリーのコメントでも頂いたように、

 本件の不具合に当たったらすぐに初期不良で交換手続きした方がいい

という事だ。いい勉強になった…。


【2013/9/18 追記】
9/17に公開されたビルド番号JSS15Rのアップデートでも発生する模様。


【2013/11/21 追記】
プロダクトフォーラムにて、Android 4.4にアップデートしたら本現象が直ったとの
報告があるようだ。

2013年9月5日木曜日

Xperia Aでrootを維持したままAndroid 4.2.2にアップデートする方法

※本エントリー下部に追記したが、ビルド番号10.3.1.B.0.256に対応したワンクリックrootkitが公開されたため、本エントリーのように初期バージョンのftfを焼いてrootを維持する手順は不要となった。


root取得済みのXperia Aをrootを維持したままAndroid 4.2.2にアップデート
する方法が分かったのでメモしておく。

【前提条件】
・ワンクリックrootkitで既にroot取得済みである事(詳細はここを参照)
・Androidのバージョンは4.1.2でビルド番号が「10.1.1.D.2.31」である事
・ファイラー(ここではESファイルエクスプローラー)でシステムファイルを編集できる事

【アップデート手順】
(1)まずはCWMで現状のバックアップを取っておく。(問題発生時に復旧するのに必要)

(2)Google PlayからSuperSUをインストールして実行した後、suファイルをアップデートする。

(3)CWM(ClockworkMod-Based Recovery with cray_Doze Mod for Xperia)を削除する。

・v2.4以降の場合
  /system/btmgrと/system/recoveryの2ディレクトリを削除
  /system/bin/chargemonを削除
  /system/bin/chargemon.bin.orgを/system/bin/chargemonにリネーム

・v2.3a以前
 /system/btmgrディレクトリを削除
 /system/bin/recovery.tarを削除
 /system/bin/chargemonを削除
 /system/bin/chargemon.bin.orgを/system/bin/chargemonにリネーム

(4)Xposed InstallerでUninstallとClean upを実行した後、Xposed Installer自体をアンインストールする。

(5)ファイラーを使って下記ファイルを開いて該当箇所を削除する。

・ファイル:/system/etc/hw_config.sh
・削除箇所:以前ワンクリックrootkitで挿入した行(下記の行を削除)
 /system/xbin/busybox run-parts /system/etc/init.d

(6)WiFi接続してAndroid 4.2.2のアップデートをダウンロードした後、端末を再起動してアップデートする。

(7)アップデートが終了した後に手順(5)のファイルを開いて、削除した行を再度追加して保存する。

(8)Xposed InstallerをインストールしてInstallを実行する。

(9)CWMをインストールする。

(10)端末を再起動する。

(11)CWMでバックアップを取っておく。

(12)端末を再起動する。


以上でrootを維持しつつAndroid 4.2.2へのアップデートは完了となる。
アップデート後のビルド番号は10.3.1.B.0.224となる。CWMとXposedを
インストールしてない人は上記手順の該当箇所を無視してOK。
上記手順を実行する際はもちろん自己責任でどうぞ。


【root維持に失敗してしまった場合の復旧手順】
Android 4.2.2にアップデートした後に何故かrootが維持されなくなってしまった場合、
下記の手順で最初の「10.1.1.D.2.31」の状態に戻す事は可能だ。

(1)「10.1.1.D.2.26」のftfファイルを焼いてroot取得可能な環境に戻す。(ftfファイルは各自で調べて作成する事)

(2)PCとUSBケーブルで接続して「10.1.1.D.2.26」用のrootkitを実行する。

(3)OTAのソフトウェアアップデートで「10.1.1.D.2.31」にアップデートする。

(4)CWMをインストールする。

(5)端末を再起動してCWMを起動した後、最初にアップデート手順(1)で取っておいたバックアップから復元する。


かなり面倒だがこれでAndroid 4.2.2アップデート実行直前まで戻す事は出来る。
今回はアップデート手順(2)でSuperuserからSuperSUに切り替えてsuファイルを
アップデートしていなかったためハマってしまった。作業はくれぐれも慎重に…。


【2013/10/15 追記】
本日公開されたビルド番号10.3.1.B.0.256はそのままOTAでアップデートしても
rootは維持されて問題なかった。


【2013/11/13 追記】
某所でビルド番号10.3.1.B.0.256に対応したワンクリックrootkitが公開されていた。
Xperia Z用となっているがXperia Aでも使用可能との事。

■ キューブ実験室: 【Xperia】各機種ワンクリックroot取得【Z SO-02E / A SO-04E 等】
http://cubeundcube.blogspot.jp/2013/11/xperiarootz-so-02e-so-04e.html