2013年1月22日火曜日

Android 4.0(ISC) × docomo にすべきではないし買うべきでない理由

あまりにも酷すぎるのでエントリー…。
一応、個人的な見解なのであくまで意見として受け止めていただきたい。

単刀直入にその理由から言っておくと、”電話帳アプリ”がダメ過ぎ。正確に言えば、”docomoの電話帳アプリ”がダメ過ぎなのである。
電話なんかほとんど使わないから関係ないし、電話帳アプリがダメならサードパーティの電話帳アプリでも使えばいいじゃんと思うかもしれないがそうではない。

実際に経験したトラブルを元に解説を行なっていこう。

Galaxy SⅡ の OS を Android 4.0(ISC) へアップデート

何度も再起動を要求され、煩わしかったにはあるがアップデートの作業自体には特に問題はなかった。さて、問題はここからである。

バッテリーの消費速度が早くなる

出勤前にフル充電を行なっていたのだが、帰宅する頃にはほぼバッテリーの残量がなくなってしまうようになった。iPhone をメインとして使用しているため、Galaxy SⅡ はほぼ使用していないに等しい。使用しても電話を掛けるかブラウザを使うかで数分程度しか使用していないのにである。

着信時にフリーズするようになる

家族間の通話で使用しているのでたまに着信があるのだが、何度かの割合で着信と取ろうをすると OS がフリーズするようになった。なお、OS のアップデートを行う前にこのような現象に遭遇した記憶はない。

151 へ問い合わせ・ドコモショップへ持ち込み

この状態ではサブ端末というか、予備端末にさえもならないので症状を 151 で伝えたところドコモショップへお越しくださいということだったので足を運ぶことにする。
しかし、状況を説明したところ、「OS をアップデートすると機能が増えるのでそれが原因となっているのかもしれない」また、「フリーズするような現象での問い合わせはない」ということで大した収穫も得られず無駄足を運んだだけとなった。

ちなみに、一度 OS をアップデートすると元の Android 2.3 へは戻せないとのこと。

プロセス監視アプリで電話帳アプリを疑い始める

さてどうしたものかと定期的にプロセス監視アプリでリソース消費やバッテリーの消費具合を記録閲覧することのできるアプリでしばらく状態を追ってみることにしてみた。
Android 2.3 では圧倒的にディスプレイがバッテリーの大半を消費していたのだが、何故か見慣れない”電話帳サービス”が断トツトップでバッテリーを消費していることに気がつく。

疑いから確信へ

検索してみると出てくる出てくる。この”docomo の電話帳アプリ”は相当悪名高いことが分かった。※他のアプリについてもダメだしされていたが今回は電話帳アプリにフォーカスすることにする。

”docomo の電話帳アプリ”にどのような機能があるかというと、大まかに次のような機能がある。
  • 連絡先の同期
    登録されているアカウントの連絡先に近いデータを連絡先として同期する。例えば、Facebook アカウントならフレンド情報となり、Twitter アカウントであればフォロー・フォロワーなど。
  • 電話や SMS の発着信の同期
    発着信時にこのアプリにも履歴が追加されるようになっているようだ。手動で同期を行うとその時点の標準の電話・SMS アプリにある内容が同期されているようだ。
  • タイムラインの同期
    使用していないのだが、おそらく Facebook アカウントならフィードであり、Twitter アカウントであればタイムラインであろう。
検証のため、試しに連絡先が同期されていた Facebook アカウントと Twitter アカウントを削除し、しばらく様子をみることにした。

検証の結果

何日か様子をみてみたが、10時間程でほぼバッテリーがなくなっていたのだがこれが改善され、10時間経っても60%ぐらいは残るようになった。消費量で言えば約半分の使用量となった訳だ。また、着信時にフリーズすることもなくなり電話としての役目を果たせるようになった。

問題を考察してみる

以上の点から考察するに、”docomo の電話帳アプリ”が登録されているアカウントの連絡先を非効率に同期を行い、連絡先の同期を行なっている際に着信があるとフリーズするのではないか?という結論に至った。

ちなみに、現状では”docomo の電話帳アプリ”にはアカウントの連絡先を同期するかしないかなどの選択する設定がないため使用者に選択肢はない。そのため、バッテリー消費を減らしたいけど Facebook や Twitter を利用したい場合はブラウザから利用するしかないのである。

なんとも困った仕様だ…。

2012年12月15日土曜日

Blogger でソースコードをハイライトする

SyntaxHighlighter を使ったソースコードをハイライトする方法の紹介です。

css / js の読み込みと SyntaxHighlighter の設定

XRegExp.js / shCore.js / shLegacy.js に加え、shBrushXml.js は他のライブラリにも依存しているようなのでこの4つは読み込ませた方が良いかも。

    

script タグを使った記述方法


pre タグを使った記述方法


NSManagedObject の modifiedAt を auto update する

Core Data で各オブジェクトを保存する際に更新時間を自動で更新させる方法の紹介です。

NSManagedObject を継承した基本クラスの作成

ベースとなる基本クラスを作成しこのクラスに日付のプロパティを追加する。


保存前に createdAt と modifiedAt への代入

保存を行うと保存を行う前に willSave が呼び出されるので、ここで createdAt / modifiedAt に現在時刻の代入を行う。



ただし、これだと保存時に毎回 createdAt / modifiedAt が保存されてしまうので、createdAt は初回のみとし modifiedAt はプロパティに変更があった時のみ行うようにする。



ちなみに、setPrimitiveValue を使っている理由は今のところ把握していない。詳しくは調べていないのだけれども setPrimitiveValue メソッドを使って値を代入する必要があるようだった。

2012年12月1日土曜日

debug log をターゲットによって切り替える

個人的には PRODUCTION をマクロ定義に追加してアーカイブの時のみログが出力されないようにしてます。


2012年11月30日金曜日

iPhone / iPad をミラーリングしてプレゼンに使う

Reflection というアプリケーションの紹介です。

これを使うとシミュレータだと操作し辛いデモストレーションや、ゲームのプレイなどの動画キャプチャーを行うことが非常に楽になります。

使い方も非常に簡単で、
  • Reflection を起動する
  • iOS で Air Play 先を指定する
これでミラーリングが開始され、Mac OSX / Windows 上でシミュレータの様なウィンドウの中にミラーリングされた内容が表示されます。


なお、iOS 端末ならどれでもという訳ではなく、また PC 端末もバージョンよっては機能制限があるため購入する前に必ず動作環境を確認することをお勧めします。





2012年11月29日木曜日

Finder でファイルを移動する時にマージする

Mac OSX を使い始めた頃、検索してもコマンドラインでのオプションしか見当たらず、マージできないんだとそう思い込んでいたのだがそうでもなかった…。

Option キーを押しながらドロップするといつもとは違うメニューが表示されるようになる。


カスタムドメインの割り当てで嵌る

さくらインターネットでドメインを管理しているのだけれども、どうやらさくらレンタルサーバを契約していた際にこのドメインを一度割り当てしていたのが原因だったようだ。

さくらレンタルサーバで設定したサブドメインは、契約者が編集できるゾーンとは別に存在しこれが優先されていたためいつまで経っても転送されなかったようだ…。

ちなみに、ゾーンの一覧は以下から確認できる。
会員メニュー > ドメイン > ネームサーバメニュー