2011年12月24日土曜日

操作についての細かなTips[ひとりtwicca Advent Calendar]

この記事は、twicca廃人になるためのTipsを書き連ねていく「ひとりtwicca Advent Calendar」の8日目として書いています。
……が、12月24日分であるこの記事を実際には1月3日に書いたことはヒ・ミ・ツ。



twiccaの基本的な使い方については「Twicca の使い方」を見ていただくのが一番ですが、その記事に書かれていないor後にtwiccaに追加された機能については記述が漏れています。

今のところ、気付いているのは以下です。
  • タイトルバー押下でタイムラインのスクロールが一番上まで戻る
  • ユーザ情報画面
    ・左上のアイコン押下でアイコン画像拡大表示
    ・「Web」押下でそのURLを開く

↓アイコンを拡大表示した例

2011年12月23日金曜日

twiccaのカラーラベル設定をバックアップする(要root)[ひとりtwicca Advent Calendar]

この記事は、twicca廃人になるためのTipsを書き連ねていく「ひとりtwicca Advent Calendar」の7日目として書いています。



twiccaの便利機能のカラーラベル。
ですが、端末を買い換えたりしたときにカラーラベル設定を引き継げるようには今のところなっていません。
そこで、端末のroot化が必要ではありますが、設定をバックアップできる方法をご紹介。

sdb shellなりroot対応のファイルエクスプローラアプリで次のファイルをバックアップして、新しい端末に移し替えれば良いのです。

/data/data/jp.r246.twicca/shared_prefs/twicca.xml

2011年12月22日木曜日

ふぁぼチェックのススメ[ひとりtwicca Advent Calendar]

この記事は、twicca廃人になるためのTipsを書き連ねていく「ひとりtwicca Advent Calendar」の6日目として書いています。



Twitter廃人に片足突っ込んでる皆さんなら、自分のツイートがどれくらいふぁぼられているかどうか気になる筈です。
そこで便利なtwiccaプラグインを紹介。

favstar.fm プラグイン for twicca:https://market.android.com/details?id=jp.r246.twiccaplugins.favstarfm
ふぁぼったープラグイン for twicca:https://market.android.com/details?id=jp.r246.twiccaplugins.favotter
Twistar プラグイン for twicca:https://market.android.com/details?id=jp.mstssk.twiccaplugins.twistar

favster.fm、ふぁぼったー、TwistarのそれぞれのサービスのWebページに簡単に移動できます。
twiccaのメニューからは、自分の各サービスのページへ。
ユーザ情報画面からは、そのユーザーの各サービスのページへ。

それぞれのプラグインの設定画面はこんな感じ↓


Xperia rayのテザリング制限解除[要rooted]

※ 以下は保証外の操作について記述しています。真似や参考にしてrayちゃんが「綺麗な顔してるだろ…死んでるんだぜ…それ」な状態になるかもしれないのでオススメしません。



docomoのXperiaシリーズ(他の機種でも?)だと、特定のAPNでないとテザリングが出来ないようになっている。
普通のdocomo SIMでないSIM(Xiとかb-mobileとかイオンSIMとか?)だとつらい。

対象外のAPNでテザリングをONにしても以下のように「Network error occurred」とエラーメッセージが表示されてすぐにOFFになる。

/data/data/com.android.providers.settings/databases/settings.db を覗くと以下のようなテザリングの制限設定がされている。
(左端の数値は勝手に振られるただの連番なので意味はない)
sqlite> select * from secure where name like 'tether%';
29|tether_dun_apn|docomo tethering,dcmtrg.ne.jp,,,,,,,,,440,10,0,*
30|tether_dun_required|1

参考にした次のページによれば、これのtether_dun_requiredの値を0にしてやれば制限が外れる。
俺達のメガネ Xperia arc(SO-01C) 2.3.4アップデートでの Network error occurred 対策
http://chaosore.blog38.fc2.com/blog-entry-317.html

参考ページではSQLite Editerを使っているが余計なアプリをあまりインストールしたくないので、SQLを直接叩くことにした。
必要なsqlite3コマンドは、本来はAndroid SDKのエミュレータ上でしか使えない。ここでは、インストール済みだったTitanium Backupが自身の機能のために持っているsqlite3コマンドを使った。
以下、一通りの操作。
user@localhost:~$ adb shell
$ su
# /data/data/com.keramidas.TitaniumBackup/files/sqlite3 /data/data/com.android.providers.settings/databases/settings.db
SQLite version 3.7.6.3-Titanium
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from secure where name = 'tether_dun_required';
30|tether_dun_required|1
sqlite> update secure set value = 0 where name = 'tether_dun_required';
sqlite> select * from secure where name = 'tether_dun_required';
30|tether_dun_required|0
sqlite> .exit
# exit
$ exit
※ 2回のselectは値の確認のためで、別に必要な操作ではない。

設定を書き換えたらrayを再起動。
テザリングをONにしても「Network error occurred」が出なくなってる筈。

※ パケット通信料についてはどうなるか知らん。

2011年12月21日水曜日

下書きプラグインを使う[ひとりtwicca Advent Calendar]

この記事は、twicca廃人になるためのTipsを書き連ねていく「ひとりtwicca Advent Calendar」の5日目として書いています。


今回は豊富なtwiccaのプラグインの1つ「下書きプラグイン」を紹介します。
拙作を紹介するあたりネタ切れ感があるのはご愛嬌。

マーケット:https://market.android.com/details?id=jp.mstssk.twiccaplugins.draft

プラグインをインストールすると、twiccaのツイート画面のプラグイン一覧に「保存済みの下書きを一覧」「下書きを保存」の3つのメニューが追加されます。
「下書きをクイック保存」はオプション機能で、後述の設定画面で有効にしてから表示されるようになります。


「保存済みの下書きを一覧」を選択すると、保存済みの下書きを選択して読み込みます。
「下書きを保存」を選択すると、新規保存するか保存済みの下書きに上書き保存します。
「下書きをクイック保存」を選択すると、一覧画面を表示せずに新規保存します。

設定画面では次の項目が設定できます。
  • 「クイック保存」機能の有効/無効
  • 確認ダイアログの表示
    • 「上書き保存」時
    • 「削除」時
    • 「読み込み」時
    • 「編集中のみ」(読み込み時、既に入力中のツイートがある場合のみ確認ダイアログを表示する)

2011年12月20日火曜日

webでもカラーラベルを使う[ひとりtwicca Advent Calendar]

この記事は、twicca廃人になるためのTipsを書き連ねていく「ひとりtwicca Advent Calendar」の4日目として書いています。



twiccaといえばカラーラベル機能!
そのカラーラベル機能をwebのTwitterでも使える方法があります。

それが拙作のTwitterColorLabel2 http://userscripts.org/scripts/show/89319


FirefoxとGoogleChromeで動きます。他のuserscript対応ブラウザでもいけるかもしれませんが未検証。

蛇足:
名前に2が付いてる理由は、むかーしのTwitterのUI用のTwitterColorLabelがあるから。
そういやまたTwitterのUI変わるみたいだけど、うちのアカウントにはまだ反映されてない…

2011年12月19日月曜日

twiccaサポーターズになる[ひとりtwicca Advent Calendar]

この記事は、twicca廃人になるためのTipsを書き連ねていく「ひとりtwicca Advent Calendar」の3日目として書いています。



振り込めない詐欺」という言葉があります。
無償で公開されているが、それがとても素晴らしく是非対価を払いたいと思えるような場合を指す言葉です。
twiccaはまさにその言葉に相応しいと言えるでしょう。

でも大丈夫!
twiccaはなんと振り込めるんです!

twiccaのメニューで「twiccaサポーターズ」を見てみましょう。
サポーターになる期間を選択しサポーターチケットを購入して、サポーターになることができます。

ちなみに、サポーター期間中は実験中機能を有効にすることが出来ます。
実験中機能なので気付くと一般機能に昇格してたりしますが、今のところ(ver 0.9.20a)では以下の機能が特典で使えます。

  • ステータスバーのtwiccaのアイコンから起動する機能の選択
    • タイムラインを開く
    • ツイートする
    • 写真を撮影してツイートする
  • twitpicの動画プレビュー機能
  • ツイートの改行表示
  • マルチアカウント

2011年12月18日日曜日

別のアプリでtwiccaのプラグインを使う[ひとりtwicca Advent Calendar]

この記事は、twicca廃人になるためのTipsを書き連ねていく「ひとりtwicca Advent Calendar」の2日目として書いています。



twiccaを既にお使いの方なら、twiccaのプラグイン機能も使っていることでしょう。
Androidマーケットでtwiccaで検索すると、twicca本体だけでなく、多種多様なプラグインがサードパーティによって公開されているのがわかります。

実は、twiccaの他にもこのプラグイン達を使えるクライアントアプリがあるんです。

それは「メガネケエス」と「アカイトリ」です。
この2つのアプリは、どちらもTwitterクライアントとしては異色な部類に入りますが、TwitterのStreaming APIを使用しており、twiccaに出来ないリアルタイムのタイムライン受信が出来ます。

twiccaとStreaming APIに対応した上記アプリを組み合わせて使うことで、きっと廃人への道を進んでいけることになるでしょう。

2011年12月17日土曜日

twiccaをホーム画面にする[ひとりtwicca Advent Calendar]

twiccaエヴァンジェリストのmstssk aka あんどろいどりんごです。
この記事は、twicca廃人になるためのTipsを書き連ねていく「ひとりtwicca Advent Calendar」の1日目として書いています。
「もう12月17日なのに今更AdventCalendarかよ」というツッコミはさておき、なんとなく思いついたのでクリスマスまでつらつら続けてみたいと思います。

twiccaとは

言わずと知れたAndroid用のTwitterクライアントアプリです。
Androidマーケットのtwiccaページ
作者のあおやまさんは、高名なプログラマであるTim Bray氏のブログにドヤ顔を載せた数少ない人物として有名です。

twiccaの基本的な使い方は「Twicca の使い方」にとても詳しく書かれています。初心者の方はそちらに目を通されたほうがいいでしょう。
むしろここから先は読まなくてもいいでしょう。

twiccaをホーム画面にする

では、twicca廃人になるための第一歩、twiccaをホーム画面にしましょう。
Home Commanderをインストールし、スクリーンショットの様にホームキー1回押しでtwiccaが起動するように設定します。


通常のホーム画面は2回押しあたりに設定しておきましょう。

ちなみに、随分前ですがtwiccaをホーム画面にするだけのアプリ(ホーム画面のIntentを受け取ってtwiccaを起動する)を作って本当にtwicca以外なにも出来なくなったことがあります。

これでホームキーを押すとtwiccaが起動するようになりました。

これでも飽き足らない方は、ホームキー2回押しにtwiccaのツイート画面ショートカットを設定したりすると良いでしょう。

2011年12月9日金曜日

Androidアプリで使えるJSONライブラリ比較

これは、Android Advent Calendar 2011の12月9日エントリです。



「Androidはオワコン」なんて話が聞こえてくる昨今、いかがお過ごしでしょうか?
HT-03A以来のAndroidユーザーとしては寂しい悲しい限りです。発売後のこんな頃や、こんな頃が懐かしいですね。

ですけど、街中を歩くと、多くの人がAndoid機を持っているのがわかります。
REGZA Phoneとかよく目に付きますね。デカイし。

それに、Andoid機を買って初めてプログラムしてアプリを作ってみた学生さんとか、Andoid関係のお仕事の話とか結構聞こえてきます。
今後もそういうのは続いていくんじゃないでしょうか。

そして、趣味か仕事かを問わず、Webアクセスしたりするアプリの場合、APIを叩いてJSON形式のデータをパースしなきゃいけないことが多々あると思います。
そこで、JSONのライブラリをいくつか簡単に比較してみました。
下3つは使い方がよくわからんかったので、参考に並べただけです(汗
言い換えれば、いきなり持ってきても取っつきやすいものだけ紹介。



パース・エンコードの処理の計測には、自分のタイムラインのjsonを1M分繋げたファイルを使いました。/res/raw/からファイルをInputStreamで取得して使用。
計測に使った機種はXperia Ray

JSONIC

国内ではオーソドックスなんじゃないかと勝手に思っているライブラリです。
ただ、上表の通り速度は見劣りします。
比較的少ないコード量でかゆい所に手が届くようになってますけど、proguardでの難読化に失敗するので、それが解決出来ないとAndroidアプリで使うのはつらい。
使用例:

// パース。第2引数でクラスを指定しない場合、戻りはObjectになるが、中身はArrayListかLinkedHashMap。
InputStream is = ほげ;
Hoge[] hoges = JSON.decode(is, Hoge[].class);

// シリアライズ
String json = JSON.encode(hoges);


google-gson

この記事書こうと思って調べるまで存在を知りませんでした。正直すまんかった。
パース速度は爆速。シリアライズは最遅
なんなんだ。いったいなんなんだお前。
シリアライズ時に、型指定を省略すると更にアホほど遅くなります。
POJOでないクラスのフィールドに対応させるには、JsonSerializerとJsonDeserializerインターフェースを実装します。
proguardを使う場合、JSONをマッピングするPOJOクラスを難読化から除外する設定が必要です。
使用例:

// パース。第2引数で必ず型を指定する必要がある。Mapとか指定してもとりあえずは動く。JSONIC同様に、ArrayListかLinkedHashMapのインスタンスが返る。
InputStream is = ほげ;
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
Hoge[] hoges = new Gson().fromJson(reader, Hoge[].class);

// シリアライズ。第2引数の型指定は省略できるが、そうすると激遅。
String json = new Gson().toJson(hoges, Hoge[].class);


JsonPullParser

ファイルサイズが超軽量!
しかし、特色は軽量であることより、指定したPOJOクラスのパース/シリアライズ処理クラスをビルド時に自動生成する事だろう。それ故に、パースとシリアライズ共に安定して高速な処理を実現しています。
逐次処理も出来るし パースもシリアライズも早い。凄いぞ強いぞ僕らのJPP
ただ、パーサークラスを生成させるPOJOクラスとそのフィールドにアノテーションをいちいち付けなきゃいけないのはちと面倒。
POJOでないクラスのフィールドに対応させるには、TokenConverterを実装します。参考として以前に試しに書いてみたDateConverterをどうぞ。ええ、SimpleDateFormat使っちゃってるのでスレッドセーフじゃありません(最近知りました)。
使用例:

// パース。Hogeクラスの専用パーサーとしてビルド時に自動生成されたHogeGenクラスを使用
InputStream is = ほげ;
List<Hoge> hoges = HogeGen.getList(is);

// シリアライズ。直接文字列を返す手段はサポートされておらず、Writerクラスを経由する。
StringWriter sw = new StringWriter();
HogeGen.encodeListNullToNull(sw, hoges);
String json = sw.toString();


半分くらい深夜のテンションで書き殴りましたが、いかがでしょうか。
多分コレをまっさきに読むであろうAndroidersよりも、いつかググってたまたまやってくる人向けの内容になりました。

Androidを好きになってくれるエンジニアが増えてくれることを願って。


私信:読んだ人が失禁して泣いてパンツを洗いながらJPPの採用を決めるような魔導書レベルの記事は書けませんよ流石に