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の採用を決めるような魔導書レベルの記事は書けませんよ流石に

2011年6月21日火曜日

Commit to github with Egit(Eclipse plugin) on Ubuntu10.10

備忘録

環境
・Ubuntu 10.10
・Eclipse 3.5
・Egit 0.4.9

gitはインストール済み。
Eclipseは日本語化してません。

■ gitの設定(必須ではない)
$ git config --global user.name "yourname"
$ git config --global user.email "your.email@address.com"
この設定は、Eclipseの起動時に(Egitがインストール済みなら)読み込まれて、Egit上でコミットする場合も使用される。
Eclipse起動前に変更しないと、反映されない気がする(多分)。

■ ssh-keygenコマンドで公開鍵作成
パスフレーズとか聞かれる
id_rsaとid_rsa.pubの2つのファイルが生成されるので、~/.ssh/に移動しておく。
id_rsa.pubの中身をコピペして、githubのAccount Settings > SSH Public Keysで追加しておく。
titleは何でもいいらしいので、適当に。

■ Egit(Eclipseのgitクライアントプラグイン)のインストール
update-site → http://www.jgit.org/update-site/

■ Eclipse上でgitのリポジトリ生成
パッケージエクスプローラで、対象のプロジェクトのコンテキストメニュー > Team > Share Project
ダイアログでGitを選択(多分EclipseにデフォルトでCVSが入ってるので、CVSかgitかどちらを使うか必ず聞かれる気がする)
次のダイアログでリストから対象のプロジェクトを選択 > リスト下に選択したものが表示されるので「Create」ボタン押下 > finishボタン押下

■ プロジェクトのファイルをstage
リポジトリを生成したプロジェクト下の、コミットしたいファイルのコンテキストメニュー > Team > Add to Version Control

■ ファイルのローカルコミット
コンテキストメニュー > Team > Commit...

■ リモートリポジトリの生成
githubでリポジトリを生成しておく、リポジトリのURIが表示された事を確認する。
そのURIはリモートリポジトリへのコミット時に使用する。↓

■ リモートリポジトリ(github)へのコミット
プロジェクトのコンテキストメニュー > Team > Push to...
URIにリモートリポジトリのURIを入力。
ただし、Protocolはgit+sshに変える。
Userは「git」
Passwordは空のままで良い。
以下のスクリーンショットを参考に。
Nextボタン押下
公開鍵のfingerprintとか、~/.ssh/known_hostsファイルを作っていか、とか確認される
パスフレーズを求められるので入力。
次のダイアログでコミット(Push)先の設定をして、Next/Finish

次回以降も、同じ手順で。

□ 問題
リポジトリのURIが保持されてくれないので、仕方なくコミットの度にgithubのリポジトリ情報ページからコピペしてるけど、他の人はどうなの?

□ パッケージエクスプローラのフィルタ設定
パッケージエクスプローラは初期設定で、いくつかのファイルを表示しない設定になっている。(ドットファイルとか)
それらを表示しstageしたいなら、パッケージエクスプローラペインの右上の▽からFiltersを選択し、ダイアログでフィルタ設定を変更する。


□ 参考
http://womo.nconc.net/2010/03/04/github
http://blog.katsuma.tv/2009/02/first_github.html
http://d.hatena.ne.jp/keita_yamaguchi/20080409/1207752188

2011年3月26日土曜日

Run VMware disk image on VirtualBox 4.0.4(wasbook's appendix)

先日こんな本を買いました。

「体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践 徳丸浩(著)」
http://www.amazon.co.jp/gp/product/4797361190

付録として、脆弱性のサンプル環境のvmwareの仮想マシンイメージが付いてきます。
Linux版のVMwareがあるので、ちょっくらインストールすれば済むんですけど、VirtualBoxを3から4に上げてなかった事を思い出し、しかもVirtualBoxでVMware用のディスクイメージが使えると聞いて、いざ実践しました。

以下、簡単な覚書。

wasbook付属のvmイメージをVirtualBox4.0.4で起動する

環境
  • Ubuntu 10.04
  • Thinkpad X201s
  • VirtualBox 4.0.4

仮想マシン作成 ざっくり手順

  1. 新規仮想マシンの作成
  2. ターゲットを[Linux]/[Ubuntu]に
  3. 次へ次へ…
  4. [仮想ハードディスクファイルの選択] > [既存のハードディスクを使用]
    wasbook.vmdkを選択(事前にwasbook.zipを解凍しておいて適当な所に置いておく)
  5. 次へ → 完了


仮想マシンの起動 前準備

  • 仮想マシンの設定の システム > プロセッサ > PAE/NXを有効化 にチェックする。
    (これをしないと起動時にエラーで止まる)
  • [ネットワーク]タブ アダプタ1 で [割り当て]を「ブリッジアダプタ」に変更


仮想マシン起動後 eth0がいない場合

  1. rootでログイン
  2. ifconfig → eth0がいない
  3. ifconfig -a → なぜかeth1がいたりする。(eth3だったりすることもある)
  4. vi /etc/network/interfaces → eth0 をeth1 に書き換える
  5. /etc/init.d/networking restart → ネットワークデーモン再起動
  6. ifconfig → eth1にIPアドレスが割り振られてる
  7. ホストマシンのwebブラウザでそのIPアドレスを見れば、付録のサンプルが出てくる

<追記>
eth0問題について、こんな対応策も
https://twitter.com/#!/andropenguin/status/79804762895286272

2011年2月7日月曜日

FindBugs with Android app developing

EclipseのFindBugsというプラグイン。
その便利さは言わずもがな。
Androidアプリ開発でも必要だろ、というわけで導入手順メモ。

環境:
・Thinkpad X201s
・Ubuntu 10.04 LTS Lucid Lynx
・Eclipse 3.5 Galileo
・Android SDK revision 8

インストール

update siteでFindBugsをeclipseにインストール
http://findbugs.cs.umd.edu/eclipse
参考(http://findbugs.sourceforge.net/downloads.html)

文字化け

これだけで、あとはeclipseを再起動して使用可能になるが、FindBugsのメッセージが文字化けしてしまっている。
eclipseのインストールディレクトリ/plugins/edu.umd.cs.findbugs.plugin.eclipse_****/findbugs-plugin.jar の中にあるmessages_js.xmlがsjisになってしまっているから。

Ubuntuであれば、findbugs-plugin.jarを直接書庫マネージャで開き、中のmessages_js.xmlをUTF-8指定して改めて上書いて保存すれば、ちゃんと元のjarファイルにも反映してくれる。

Rクラスを除外

Android SDKによって自動生成されるリソースクラスにはキャメルケースじゃないものがあるので、FindBugsに引っかかってしまう。
以下の内容で設定xmlファイルを作成し、eclipseの設定からFindBugsのExclude filter filesにそのファイルを指定してやると、以降のビルド時にはR以下のクラスを除外してくれる。

<FindBugsFilter>
    <Match classregex="\w+(\.\w+)+\.R\.\w+" />
</FindBugsFilter>

ただし、どうも手元の環境だとビルド時にちゃんと除外してくれない場合があった。全体の設定で指定するか、プロジェクト個別の設定で除外するかによっても、ちょっと挙動が変わっている気がするがちゃんと原因を切り分けられていない… orz

2011年1月20日木曜日

Reset crashed Bluetooth configures in Ubuntu 10.04 lucid

<追記>
20111103
・ボタンの入力キーの取得値について改めて見てみたらやっぱり間違ってたのを修正。
・このエントリの前に http://civic.xrea.jp/2011/11/02/zeemote-bluetooth-mouse/ を見るのがオススメ。
 以下の記述でZeemoteについての入力値などはキーパッドモード時のもの。記事を書いた当時はモードがあることに気づいてませんでした。

とりあえずメモ:
一度、bluemenをインストールし使用した後、bluemenをアンインストールしても、標準のbluetoothツールが使用できなくなった問題。
動作しているが、ウィンドウ内の各ボタン/接続機器履歴がグレイアウトして何も操作できない。
/var/lib/bluetooth// ディレクトリ以下に設定が保存されているので、
/var/lib/bluetooth/ を /var/lib/bluetooth_backup/ として再起動したら、/var/lib/bluetooth/ 以下が再作成されて、初期状態でBluetoothツールが使用できるようになった。

-- 以下本文

最近、おもちゃを手に入れたので、Ubuntuでいろいろ使えないものかと弄ってたんですが、その時の覚書。
推敲してないので語尾とか滅茶苦茶。

環境:
・PC : Thinkpad X201s
・OS : Ubuntu 10.04 lucid

zeemoteをマウス替わりに出来ないものかと思い、さっそくbluetooth接続を試みたのですが、標準のbluetoothツールだとどうにもペアリング出来ませんでした。
zeemoteは種類不明なデバイスと扱われるものの、PCからちゃんと見えるのですが、ペアリング時にパスキーの確認が必須らしく、最後の最後でペアリングに失敗します。

そこで、別のbluetoothクライアントを使ってみようと思い、bluemenを標準リポジトリからインストール。

bluemenではパスキーの入力は無しでzeemoteとペアリング出来たので、単にクライアントの仕様の問題だとわかりました。
bluemenではそのままzeemoteを入力デバイスとして設定できる様で、zeemoteをキーボードとして接続してくれました。
その際には、以下のような入力が得られました。

(記憶だけを頼りに書いているので下記の内容は覚え違いがあるかもしれない)
スティック:カーソルキー上下左右
Aボタン:return
Bボタン:入力なし
Cボタン:escape
Dボタン:backspace

そこまで来たところで、もう一度標準のbluetoothツールで試そうとbluemenをアンインストール。
そしたら標準ツールのウィンドウ内の各ボタンなどがグレイアウトしていて使用できない。
(ウィンドウは一応立ち上がる)

bluetooth関連のパッケージをいろいろ再インストールしてみたりしたが、改善せず。
破損した設定ファイルが残留し続けているのではないかと思い、設定ファイルの場所を探す。

設定ファイルの場所 /var/lib/bluetooth//

上記ディレクトリを一旦移動して、再起動したら標準ツールが初期状態で動作した。

次は、改めてbluemenでzeemoteとペアリングして、以下を試そうと思う。

[ubuntu] Zeemote as a mouse ? - Ubuntu Forums
http://ubuntuforums.org/showthread.php?t=1201572

2010年12月4日土曜日

Android App: Kanji Viewer

拙作のAndroidアプリ「漢字ビューワ」の紹介
字をでっかく表示します。それだけです。

横表示とかも。

白黒反転したり、フォントを変更したりできます。
スクリーンショットは筆順フォント(http://sites.google.com/site/nihilistorguk/)を使いました。

ダウンロード:
http://market.android.com/details?id=jp.mstssk.kanji_viewer
(published for japanese Android market only.)

TODO:
・Galaxy Tabなど画面サイズがアレな端末への対応

<追記 2010-12-12>
何故かiPhone版が出来ました。
http://mkkptechnote.blog12.fc2.com/blog-entry-9.html

Android app's selector.xml

Androidアプリで自前でボタン用の画像なんかを用意した場合に、
・フォーカスがあった状態
・押された状態
・通常の状態
を定義するのには、以下の様なXMLファイルを作ってやったりします。
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- bad order -->
    <item android:state_focused="true" android:drawable="@drawable/item_focused" />
    <item android:state_pressed="true" android:drawable="@drawable/item_pressed" />
    <item android:drawable="@drawable/item_normal" />
</selector>

そして、ここで落とし穴。

ファイル中のitem要素はボタンの状態が変化した際に上から順に評価されていき、状態に合致するものを見つけたら、それ以降のitemは見に行きません。

http://developer.android.com/intl/ja/resources/tutorials/views/hello-formstuff.html
Note: The order of the elements is important. When this drawable is referenced, the s are traversed in-order to determine which one is appropriate for the current button state. Because the "normal" image is last, it is only applied when the conditions android:state_pressed and android:state_focused have both evaluated false.

具体的には、上のitemの順序の場合には、「フォーカスがあった状態で押す」という事をした時には、state_focusedが選択されてしまい、「押してんのに押した場合用のエフェクトにならない」という不具合が起きてしまいます。
対応策としては、state_pressedの優先順位を上げたいので、まぁ順序を変えてやればいいだけの話。
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- correct order -->
    <item android:state_pressed="true" android:drawable="@drawable/item_pressed" />
    <item android:state_focused="true" android:drawable="@drawable/item_focused" />
    <item android:drawable="@drawable/item_normal" />
</selector>

2010年8月12日木曜日

Ubuntu 10.04 LTS Lucid Lynx on Thinkpad X201s

遂に先月Thinkpad X201sを買っちゃっいました。
そして、即座にUbuntu10.04を入れて使用中。

ビックリするぐらい何もしなくても普通に動いてくれました。
ウルトラベースのDVDドライブもちゃんと認識して動作する(ただ、少し挙動がおかしい気もする)し、そのウルトラベースのホットプラグも大丈夫でした。
Trackpointも初めっからマウスとしてちゃんと動いてくれます。
ただし、中ボタン押しながらのスクロールをするにはgpointing-device-settingsをインストールして設定してやる必要がありました。
http://live.gnome.org/GPointingDeviceSettings

特定のボタンだけ認識してくれないなんて問題もありません。
電源ボタンは長押ししないといけない仕様だって気付くのに半月かかりましたが… orz

あとは、DVDが再生できないって問題がありました。
忘れがちですが、DVDドライブってリージョンコードを設定してやらないとDVDを再生できないんですよね。
市販のメーカー製PCを買って使う分にはリージョンコード設定された状態で出してたりして問題無いし、もしくはWindowsだとDVDプレイヤーが勝手に設定しちゃったりしてるのかな。
まぁ、Thinkpadを直販で買って速攻でUbuntu入れた馬鹿にだけ降りかかる問題です。
リージョンコードの設定にはregionsetってのを使うとOK。
http://linvdr.org/projects/regionset/

ともかく、X201sを買おうか迷っているUbuntuユーザさんはポチっても損はしませんよ

2010年7月28日水曜日

How to grow grass of laugh in Lucid with Ibus.

やっとのことさ、Ubuntu 10.04 Lucid Lynxを導入したんですが、IMEがIbusになってて困ったことがひとつ。

草が生やせない。

wキーを押しつづけると、「っっっっっっw」になっちゃうんですよね。
ちょっとメニューを見たところでは、SCIMでは出来たローマ字変換テーブルへの追加・編集がIbusでは出来ない模様。

どうしたもんかと思っていたら、ローマ字テーブルの変更について解決策を見出していた方がいらっしゃいました。

iBus-Anthyを使って "xn" で "ん" と打てるようにする
http://d.hatena.ne.jp/tettou77-2/20091108/1257689047

Ibusはローマ字の変換テーブルをPythonのスクリプトコードの中にそのまま持っちゃってるので、いっそそのコードを書き換えてしまえばOKというわけ。

wキー入力による「っ」の出力については、私の今の環境だと /usr/share/ibus-anthy/engine/tables.py の309行目に
u"ww" : (u"っ", u"w"),
というところがあったので、行頭に#を追記してコメントアウト。
あとはIbusを再起動してやると、
「wwwwwwwwwwwwwwwwwwwwwww」
この通り。

P.S.
半角なのはご愛嬌。

2010年6月16日水曜日

Tohoku Android group 6th session.

5月30日に行われた日本Androidの会東北支部第6回発信会に行ってきたんですが、すっかりブログに書くのを忘れてそのまま半月経過。

とりあえず、何故かiPad尽くしの会だったことは書き残しておきます…

<追記>
第6回じゃなく第7回になってたのを修正

2010年5月27日木曜日

twicca's functions

Androidで動作するTwitterクライアントソフトで、一番気に入っているtwicca(実はまだBETA版)というアプリの機能まとめ
(あんまり当たり前な機能は、独断と偏見により一覧から省いてます)

※この記事の内容はもう古くなっています。
 この記事執筆後のアップデートにより、さらに機能が追加されたり、または削除されたりしています。
 参考程度に読んでください。

・カラーラベル機能
 ユーザを色分けして表示
・会話を表示する
 ツイートの返信履歴を辿り一覧表示
・ツイートの共有
 他のアプリに発言内容のテキストを渡す。
 発言者名、発言日時、使用クライアント名、URLも渡る。
・一つのツイートに含まれる全ユーザ宛にツイート
・ツイートを複数選択して全ユーザ宛にツイート
 TL画面でそれぞれのツイートを長押しで複数選択可能
・TLに公式RTを表示しない設定
・非公式RTに返信先情報を付与するかどうかの設定
 ツイート設定画面で

・非公式RT時に返信先情報を付与するかどうかを選択可能(v0.7.20から)
 「引用して返信する」
  … 返信先情報付き。返信と同様に、返信先ユーザーとの共通のフォロワに見える。
 「引用してリツイート」
  … 返信先情報無し。通常のツイートと同様に、フォロワ全員に見える。
・非公式RTの形式の選択
 RT,QT,viaをツイート設定画面で
・画像/動画の投稿
 標準はyfrog。twitpic,はてなフォトライフにもプラグインで対応
 作者自身の手によるプラグイン … yfrog(twicca本体に組込み), twitpic, はてなフォトライフ
 有志の手によるプラグイン   … facebook, flickr, picasa
・yfrog,twitpic,twitgoo,携帯百景などの画像プレビュー
 画像リンクを踏むとブラウザに遷移せずに画像を表示可能
 http://〜.jpg のようなただの画像ファイルへのリンクにも対応
・ツイート中の短縮URLの展開
 ツイート選択メニューでURLを長押しでサブメニュー表示
・URLを短縮URLに変換
 ツイート入力画面で、矢印が向き合ったアイコンを押下
・オートコンプリート機能
 「@〜」と入力した時にユーザ名を前方一致で入力補完するダイアログ表示
・140字を越えるツイートをTwitLongerで投稿、または文字数自動調整。
・使用したハッシュタグを保存し、ツイート画面/検索画面で呼び出し
 ハッシュタグを含むツイートをすると保存。非公式RT時には保存しない設定も可。
 ツイートのサブメニューでハッシュタグ長押しでも保存。
 保存済みハッシュタグ一覧で長押しすると削除可能。
・音量ボタン/検索ボタン/カメラボタンなどのハードウェアキーに操作を指定可
 デフォルトは音量ボタン上下でスクロール、検索ボタンで検索画面に遷移。カメラボタンは忘れた。
・非同期post
 ツイート送信処理中でも他の操作が可能
・ツイートにフッターを自動挿入
・返信時に@の前にドット記号を自動挿入する設定
・現在地情報を付与してのツイート
 地図表示して現在地を選択可能
・他のアプリからのURLの共有時に、Webページタイトルを取得
・TL/自分宛のツイート/DM それぞれの更新チェック
 定期チェックとTL更新時に同時チェック。
 更新があった場合の通知方法は、通知音・LED・バイブをそれぞれ選択可能。LED色も選択可能。
・ブロック中のユーザ一覧表示
・友達を検索
・ユーザを直接表示
 ユーザ名を直接入力して詳細表示。オートコンプリートする
・検索画面にて検索キーワードをプラグインから取得
 現在、buzzterプラグイン/音声入力プラグインがある
・詳細なプロフィール設定
 アイコンのアップロード/現在地ジオタグの挿入
・各画面へのショートカットをホームに設置可能
 ツイート画面、選択したユーザの画面、選択したリストの画面、選択した検索ワードの検索結果画面
 (検索ワードは保存した検索ワードとtwiccaの保存済みハッシュタグから選択)
・ショートカットウィジェットをホーム画面に設置可能
 ツイート画面、ホームTL、自分宛TL、DM画面、検索画面
・選択したユーザ宛の発言(返信)を検索
 返信のみを表示(ツイートが@〜で始まるもののみ)。こんな感じ。
・Verified Accountなユーザに✹マークが付く
・リスト機能全般
 リストの新規作成・編集、リストへのユーザの登録/削除
アイコン解像度選択
 TLに表示するアイコン画像を高解像度または低解像度に変更できます。
 表示するサイズが変更されるわけではありません。
ユーザープラグイン機能
 ユーザー情報からゴニョゴニョする機能。
 現在、twiccaの作者様自身の手によるfavotterとFavstarのプラグインがある。twiccaのユーザー情報画面からそれらのサービスのWebページにサクッと移動できる。
 ちなみに拙作のTwistarプラグインもあったりします。機能は同じ。
FroYoでのSDカードへのインストールに対応
 現在は、SDカードへのインストール機能は仕様上の都合により削除されています。

このエントリを最初に書いたとき:ver 0.7.19
最後に確認したばーじょん:ver 0.7.31
(ただし、SDカードインストールの削除については更にその後の追記です。)

公式ページ http://twicca.r246.jp/
スマフォ向けページ http://lab.r246.jp/twicca/

<追記 2010-05-28>
読みやすいように少し書式を変更。いくつか追記。
今後も気づいたことがあったら追記する。面倒なのでchangelogはいちいち残さない。(2010-09-19 面倒臭がらない限りにおいて残します)
<追記 2010-09-05>
非公式RT時の返信先情報について更新
画像アップロードプラグインについて追記
<追記 2010-09-19>
v0.7.31のユーザープラグインとSDカードへのインストールについて追記
<追記 2010-12-19>
SDカードへのインストール許可の無効化について修正。

2010年5月1日土曜日

Tohoku Android group 5th session.

第5回 日本Androidの会 東北支部 発信会に行ってきました。
第4回は仕事の都合がつかず出席できませんでしたが、今回は休日開催という事もあり遅刻せず出席出来て、懇親会の3次会までいました。今考えると、テンションがおかしかったと思います。

今回の発信は2本。以下、感想

・「Android vs iPhoneOS~アプリ開発者から見たプラットフォームの違い~」
旦那さんがiPhone、奥さんがAndroid担当というご夫婦での発表。どうにも話の内容がiPhoneの方が濃かった気がするのはご愛嬌。
現在の各々の販売台数、マーケットへの登録アプリ数、さらにアプリのうち有料/無料の割合などの数値を出しての比較は、改めて現状を知ることが出来てよかったです。

印象に残ったのは、有料アプリの割合の比較。
台数とマーケットのアプリの登録数の比率はiPhoneもAndroidも大差ないにも関わらず、iPhoneでは有料アプリがおよそ25%なのに対してAndroidは50%程、という大きな違いがあったこと。「AndroidはFREEの文化が色濃いのでは」という話も出ていましたが、私は「単純に日曜プログラマの比率が多く、ビジネスとしてアプリを公開している割合が少ないだけなのでは」という気がしました。

発表で使われた資料には、AndroidマーケットとApp Storeだけでなく、Ovi Store(Symbian向け)などについても載っていました。アプリのマーケットのローンチはどのプラットフォームも最近と言えますが、Android以外は何年も前から普及しているプラットフォームです。そういったプラットフォーム向けのマーケットの有料アプリの比率が20〜25%程度だったので、Androidへのビジネス参入が増えればAndroidマーケットの有料アプリの比率も同じ程度に落ち着くのではないでしょうか。

ただし、有料アプリ販売モデルとは違う、AdMobの様な広告モデルの話題も耳にするので、後追いのAndroidは他と違う発展を遂げるのかもしれず興味深いです。

・ライトニングトーク「アプリ開発からMarket登録まで」
「磯野ー! アプリ作ってマーケットに公開しようぜー!」ってお話。

アプリ公開までの手順は、ファイルに電子署名をしたりする必要があったりなど見落としがちな事があるから、未経験者はぶっつけでやるよりは何か習作的なアプリ作って一度公開するまでの手順をやってみるべきだそう。

それに、実際アプリを公開してみると「市場は正直」というのがよく分かる、と。
1ツ星付けられる事もあれば、スペイン語で「素晴らしいよ!」みたいな興奮したメールが飛んできたりもするそうな。

あと、意外と手こずるのがアイコン作成。(そういえば別の某ライトニングトークで、1日で作ったアプリのアイコンを作るのに3日かかったなんて話も聞きました)
AndroidアプリのアイコンについてはAndroid Developersサイトにガイドラインが載っているので、一応はそれに沿って作るべき何でしょうけども、正直言って面倒くさいよね、と。
今回のライトニングトークの中では「とりあえずGimpでそれっぽく作っとこうぜ」という感じ。

AdobeのPhotoshopやIllustratorを持ってる人はそれを使えばいいんでしょうけども、無くともGimpとInkscapeを使えばまぁまともなアイコンは作れると思います。

ちなみにVer 1.x系と2.x系ではアイコンのガイドラインが大きく変貌していて驚愕しました。

以上、感想。

発信会の後は懇親会。
1次会:飲み屋 2次会:ダイエー地下 3次会:焼肉屋 という、不思議な流れでした。
あ、あと、Androideaという東北支部のサブグループに正式に参加することになったりしました。

参考:
某ライトニングトークってのはたしか、Android Developers Forum in Tokyoでのタオソフトウェアの谷口社長のだったと思います。
http://itpro.nikkeibp.co.jp/article/COLUMN/20100420/347292/?ST=android-dev&P=3

2010年4月14日水曜日

TwitterFollowingChecker

Twitterで、相手がフォローしてくれているかどうかを表示するグリモンを作りました。
http://userscripts.org/scripts/show/74291
GoogleChromeでも動きます。

フォローしてくれているユーザには ☑ を、そうでなければ □ を表示します。

フォロー関係を調べるには、TwitterのAPIのこれ(http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-friendships-exists)とかを使うとtrue/false帰ってくるんですが、別に技術的な事を知らなくても手軽に相手がフォローしてくれているかどうかを確認する方法があります。
Twitterのダイレクトメッセージはフォローしてくれている相手にしか送信できないので、ユーザごとのメニューにダイレクトメッセージの項目があるかどうかを見れば簡単に確認できます。
ですが、いちいちボタンをクリックしてプルダウンメニューを表示させるのも面倒なので、このグリモンを作りました。

実装としても、ユーザごとにダイレクトメッセージの項目があるかどうかを確認しているだけなので、APIを使っていません。APIの制限が気になる人にも優しい作りです。
(実際には、ユーザの情報があるHTML要素にdirect-messageableというクラスが付いているかどうかを見ています。)

既知の問題:
・自分にも☑が出る。
→ 害は無いし別にいいや、と思って放置。
・そもそも☑ってマークが分かり辛い。
→ そのうちそれっぽいシンボルを描く。または誰か描いて。
・Twitter Follower Checker(http://www.sukechan.net/labs/follower_checker/)と名前が紛らわしい。
→ 最初その名前にしようとして、ググってみたらだだ被りだったので今の名前に。英語として意味が通じているかどうかは怪しい。

<追記>
Actionsにmessage usernameがあるかどうかでも分かるのね……
まぁ、他人やリストのフォロー一覧とかユーザ検索の結果一覧なんかでも使えるのでどうぞ。

2010年4月1日木曜日

Shuzo Matsuoka!

TL上をshuzo matsuokaだらけにするgreasemonkeyスクリプトを作成しました。
http://userscripts.org/scripts/show/73030

これで、熱くなれよォォォォッ!

<追記>
Twitterのデザインが変わって、今は動きません。

2010年2月3日水曜日

TwitterColorLabel

twiccaのカラーラベル機能をweb版ツイッターで再現するuserscriptを作りました。
http://userscripts.org/scripts/show/67855

How to use:
色を設定したいユーザのプロフィールページに行きます。
リストの管理ボタンの脇にカラーラベル設定のボタンがあるので、クリックして色を設定してください。
(本当はもっと手軽に設定出来るようにしたい。twiccaではユーザの発言のコンテキストメニューから設定できる)
そのユーザの発言に設定した色のラベルが付きます。

お願い:
バグを見つけたら、コメントかTwitterで@mstsskに教えてくれると助かります。

注意:
ユーザの表示名をキーに色の設定を管理するので、表示名が変わってしまうと色の設定が無効になってしまいます。

謝辞:
公開を快諾していただいたtwiccaの作者R246さん、ありがとうございます。

<追記 2010-02-04>
フォロー/フォロワーの一覧画面でもカラーラベルが設定出来るように改善。
(ただし、設定が反映されたかどうか分かり辛いのが今後の課題)
<追記 2010-02-06>
Listページでスタイルが崩れる不具合を修正。機能の変更はありません。
<追記 2010-02-11>
GoogleChrome対応。
それに伴いいろいろリファクタリング。jQuery→素のjavascriptというダウングレードみたいな感じなので、むしろ見辛くなっている気もする。
既知の不具合:
GoogleChromeで、httpとhttpsでアクセスした場合に別々の設定になってしまう。
GoogleChromeでは、設定を保存するためにHTML5のlocalStorageを使っているのだが、httpとhttpsで別のstorageとして扱う仕様?になっているため。
<追記 2010-02-12>
ツールチップの表示位置がずれる不具合修正。
<追記 2010-02-13>
Windows版のGoogleChromeで動作しない、という不具合を修正。style要素のinnerHTML属性にアクセスしようとすると駄目らしい。
<追記 2010-02-14>
フォロー/フォロワーの一覧画面でもカラーラベルが分かるように改善。
<追記 2010-02-16>
リストのフォロー/フォロワーの一覧画面でもカラーラベルが分かるように改善。
実際は前回更新で対応できていて、フラグ切り替え書き換えるだけだったのに、気付いてませんでした
<追記 2010-04-25>
フォロー/フォロワーの一覧画面で連続してカラーラベルを設定すると別のユーザに色が設定されてしまう不具合修正。こんなクリティカルなバグが残っていたとは…。(細かい修正もこれ以前にしたけど割愛)

2010年2月1日月曜日

Reset display settings

ライトニングトークをやった時に、プロジェクタに愛機を繋いだら「現在の画面解像度じゃ駄目よ。◯◯に変更してね」みたいなことをウィザードで促された。
で、適当にはいはい押して設定してやったら、画面解像度がプロジェクタ向きのサイズになったが、設定画面で元の解像度に戻せなくなってしまった。
使っているHPのnx6125は、1440x1050というあまり聞いたことがない解像度。
それでも、Ubuntuたんはちゃんと解像度を判別してくれていたのだが、設定を変更した時に自動判別がされなくなってしまった様。

/etc/X11/xorg.conf を見てみると
SubSection "Display"
  Virtual 1280 2048
 EndSubSection
というサブセクションがあったが、nx6125にインストールしているUbuntu9.04ではハードウェアのこういった設定はHALにやらせるので、xorg.confに設定を書き込んではいけない筈なのだ。それをウィザードで勝手にやっちゃうのかよ……
とはいえ、完全移行しきっていない過渡期のバージョンだというのは聞いていたのであまり気にせずに解決策を模索する。
まぁ、同じディレクトリ(/etc/X11/)に、自動でバックアップファイルが xorg.conf.20100129213825 という名前で残されていたので、こいつをxorg.confに書き戻してやればOK。
ログインしなおせばちゃんと解像度を判断してくれた。

Tohoku Android group 3rd session & Lightning Talks

第3回 日本Androidの会 東北支部 発信会に行ってきました。

初めてライトニングトークなるものをやってみたり^^
内容はほぼネタでしたが、まぁ好評で良かったです。

今度はちゃんと技術的な事で発表できればと思います。

2010年1月17日日曜日

Configure GNOME's browser command.

先日、Ubuntu9.04のブラウザをFirefox3.5にしたのだが、公式のリポジトリからapt-get installすると「firefox」というコマンドではなく「firefox-3.5」というコマンドで起動するようになっている。
9.04では「firefox」はあくまでFirefox3.0系という扱いになっているようだ。

まぁ「firefox-3.5」のエリイアスに「firefox」を設定すればいいのだけれど、端末での操作ではない解決策はないものかと思い、GNOMEの側の設定を弄ることにした。これならば設定エディタ(gconf-editor)でイケる。

設定エディタで
/desktop/gnome/applications/browser/exec
/desktop/gnome/url-handlers/http/command
/desktop/gnome/url-handlers/https/command
の3つの値の「firefox」となっている部分を「firefox-3.5」と書き換えてやればOK。

メッセンジャーソフトでURLをクリックしたり、GNOME-DoでURL文字列を入力するなどして、GNOMEの設定を見てブラウザを起動させる様なアプリから問題なく3.5が使えるようになる筈。

<追記>
↑こんなことしなくても、パネルメニューの
システム > 設定 > お気に入りのアプリ
で設定できますね。。。 orz

Color reply tweets in your tilmeline in Twitter

自分宛のリプライを色分けして表示するグリモンを作った。
ユーザスクリプトコマンドで、色指定を変更も出来る。

http://userscripts.org/scripts/show/66569