2010年9月30日木曜日

GDDインパクトは大きいようで

GDDのちゃんとした考察やらは後で書くんですが。。。


X メールの今後について悩んでいたところに大して、やっぱり影響するところが大きく、

ちょっと次の変更では内部的な部分の仕様変更を行うかもしれません。


そうなると次のアップデートの後遺症として、

「ローカルのメールデータが消える」

可能性が出てくるので、必要なメールはフォルダを表示して「リロード」しなければ
ならなくなる事も考えられます。


詳しくは仕様が決定してから報告しますが、あらかじめ言っておこうかと。

いつもお騒がせで申し訳ありません…

Google Developer Day 2010 レポート

こんばんわ!

今日は9月28日に開催された「Google Developer Day 2010」をレポートします!

2回に分けて、今日はとりあえずどんな感じだったのか報告しまして、

次回、内容についてと考察をば書こうかと思うちょりやす。


自分は朝9時半に着くように出発したんですが、家にいる間も #gdd2010jp を
チェックしつつ書き込みしつつしてました。

目が覚めたときから、ツイッター盛り上がってまして、すでに現地入りした人も
いるという熱狂ぶり。

もう、この時点でテンションあがりっぱなしでしたね。

で、予定通り会場について受付



自分が行った時はまだ空いてましたね。

ただ、ちょっと行くと少し行列が。
どうも、会場に入るのに制限をしてるみたいです。

しかし、さすがGDD。周りほとんどスマートフォンですよ。
でも iPhone は半分くらい。

国内で手に入る Android はほとんど見ましたねー。
自分以外で Desire 使ってる人を初めてみました。それも何人か。

海外の SIM フリーもポツポツ見かけましたね。


まぁそれだけでこの場所が相当偏っていることが窺えます。
空間歪むかと思った。



で、会場に着席。

公演中は無線LANを使うなとのこと



今にして思えば、この無法者たちはちゃんと守っていたのか不安。。。

同時通訳の機械も全席に配られてました。
自分は最初に使って違和感バリバリだったから、すぐやめちゃいましたので
どんなクオリティだったのかはわかりません。



ちょっとトイレで退出したんですが、PCいじれる場所も設置されてました。


近くにドロイド君発見


で、基調講演開始。
こんな雰囲気




まぁ、内容は次回。
とりあえず笑いが欲しい時はアキバ系のネタというのはGDD一貫してましたが。

あと、上位20名に何かある!?という噂でしたが、特製ジャケットをもらったようです。

で終了したんですが、このGDD中ホントに悩まされたのが会場の出入り。

とにかく並ぶ並ぶ。
次回はこの辺の改善に期待。ちなみにこんな感じ。



この後ちょっとトイレ行ったすきに全てのセッションが満員御礼。
ミスった~。しょうがないのでお弁当。

せっかくなんで Chrome 弁当(笑)


味は見た目通りっす。否定派が多いみたいですが、味も食材も量も自分は満足でした☆


ひまひまなんでちょっとお散歩。
Google さんがおおっぴらにリクルート活動してました。


Tシャツが展示。
テンション低い時は街中では着れないかも。




デベロッパーサンドボックスの方をウロウロしていたら、ドロイド君ロボが!!!

目が光ってるぅ~

動いたぁ~

食われるがな!


デベロッパーサンドボックスでうちのお客様でもある、「株式会社鳥人間」さんが
出店しておりました。「ToriSat」とてもロマンチックなアプリケーションです。
ARで人工衛星とか男の子ならときめくはず!



暇や~。外は雨だなぁ



そんなこんなで午後は Android を中心に、ちゃんとセッションまわってきましたよ!
ウロウロしてただけじゃないよ!

会場はこんな感じですねー



ただ、最後のライトニングトークの時にはちょっと疲れてしまって、ちょっと見ただけで
退出してしまいました。だって、この後交流会あるし。

その時にお世話になったのがこちらの方です

Googleクッションや!

目が覚めたらよだれ垂れそうで焦った!
気付いたら日が落ちてるし



そして本日最後のイベント。
安生氏に平日の昼間から集まる闇のプログラマーと称された面々が
飲食をともにし一堂に集う「スーパーハッカー交流会」

会場に入ると餌が並べてある。。。

見にくいけど飲み物とサンド

各所にあるテーブルには飲み物が

餌に群がるハッカーたち

初めは外側に並べてある椅子に行儀よく座っていたハッカーたちですが、
「立食で適当にやってくれ」というアナウンスとともにカオス状態


まだ遠慮がち

次第に打ち解け会う

周囲の比較的冷めた人たちも打ち解ける

真ん中に集う人が増え始める

飲む食う喋る。そろそろ遠慮がなくなってきた

完全に打ち解けるハッカーたち


この間にクイズ(マニアック)&プレゼントなどが入ったおかげで皆さまだいぶ打ち解けた
ようですね。遠くから耳に入ってくる単語は高校までに教わらないものばかり。

そんな中始まったんですよ、「Google 中の人に質問タイム」

多分、後々伝説になる気がする、この企画。

#gdd2010sh (shはスーパーハッカー)に現役 Google 社員に質問したい事をつぶやこう!
という事で始まったんですが、タガの外れたスーパーハッカーたちは遠慮を知らなかった…!

もう、とにかくフリーダム。
みんな言いたい事つぶやいてるだけです。

過半数笑いを取りにいっている。。。


まぁ、詳しくは


自分が語るより


#gdd2010sh


を見てみるといいと思います。

この人たちが日本のトップクラスのIT技術者。それが現実。

速過ぎるカオスなTL



※ 写真、完全に顔が出てますね。そうです、この人たちがスーパーハッカーです…
じゃなくて、こんなブログ読んでる人大していないので問題ないと思いますが、
万が一、どうしても掲載して欲しくないという方がいらっしゃいましたら、報告してください。
早急に対応させていただきます。

2010年9月27日月曜日

X メール 1.3.3 リリース + Android 自論

不具合改修版として X メール 1.3.3 をリリースしました。

改修内容は以下の通りです

  • 見にくかった背景色の文字を黒系に変更
  • 多種 MIME TYPE に対応した Intent Filter を追加
  • メールアドレスを手入力した場合に送信できないバグを改修
  • 無駄な Parcerable の Intent.Extra 渡しにより出ていた警告に対応


…前回、次は Twitter を考えると言っていたんですが、方針を変更しました。


そもそも、Twitter に対応しようと考えたのは、全部一気に見れたら便利じゃない?
と思ったからなんですが、考えていてなんとなく違和感を感じたものですから…。


メーラーを作っている理由は、「携帯のメイン機能はメーラー」という観点で、
一番使うこのアプリケーションが色々な機能の起点になっていると便利なんじゃないかと
考えたからなんです。

でも、それって Android 自体が考えている事であって、メーラーがそれをやるのは
越権行為にあたり、Android の目指す形から外れてしまうんじゃないかと思うように
なりました。

つまり、メーラーはメーラーで自分のやる事をやった上で、他のアプリケーションと
どう共存するか、連携していくのかを考えていった先にシングルサインオンとクラウド
というシンプルな形が見えてくるのかなぁと。何でもかんでも一つのアプリケーションが
実装してぶくぶく太ってしまう事は Android の世界観的にも面白くないわけですし。


というわけで、ここはいったんそういう方向性はストップして、もう少し落ち着いて
考えてみたいなと思い、今回はバグのリリースに留めておこうと思った次第なのです。


まぁ、GDD記念って事で!

明日何かまた新しい考えになるかも知れませんし☆


と、いうわけで明日のGDDに期待を寄せつつ、またもや短期間でリビジョンアップという
暴挙を申し訳なく思いながら本日のお別れの挨拶に変えさせていただきます。


アリーヴェデルチ!

明日はGDD!

ダメです。

浮かれてます。


今日寝れるか心配(笑)


Google のイベントは初めて行きます。

どんな雰囲気なんだろう??


仮にもアンドロイドを掲げてますので、当然 Android 関連を中心にまわるつもりです。

でもデベロッパーサンドボックスも行きたいから全部は見れなさそう。


イベントのレポートは、ブロガーとしては初経験なので、ちゃんと出来るか不安ですが、

頑張って報告するつもりです☆


でわ、行ってきます!!!

2010年9月26日日曜日

EditText の入力イベントを拾いたい

最近少々苦労したのでまとめておきます。


何がしたかったかというと、候補の表示。

入力しながら候補を絞ってリストを表示し、クリックできるようにするあれ。


初めは OnKeyListener を使ってやってみようと考えたんですが、
なんだか動作が不安定?

というか、IME の決定がされないとイベント拾わないくさい…


で、調べてみると AutoCompleteTextView なるものを発見。


これ、ListView みたいに Adapter をセットしておくと、この候補の一覧を
その中から作ってくれるという代物。超便利!


どうやるかというと、AutoCompleteTextView の方は特に気にせず普通の
EditText のように使えばOK。

ただ、Adapter の方に一工夫が要ります。

とはいっても、Filterable を implements するだけ。

getFilter というメソッドを実装します。

これは Adapter オブジェクトがセットされたときに呼び出されるようです。

【例】
こんなクラスを用意する(Adapterの実装はしてね)
public class XAdapter extends BaseAdapter implements Filterable {
public int getCount() {
}
public Object getItem(int position) {
}
public long getItemId(int position) {
}
public View getView(int posi, View convertView, ViewGroup parent) {
}
public Filter getFilter() {
Filter f = new Filter() {
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results != null && results.count > 0) {
//再描画させる
notifyDataSetChanged();
}
}

@Override
protected FilterResults performFiltering(CharSequence constraint) {
if(constraint==null)return null;
String ck = constraint.toString().toLowerCase();
FilterResults filterResults = new FilterResults();
ArrayList<String> it = new ArrayList<String>();
for(String v : StringListAdapter.this.baseitems){
if(v.toLowerCase().contains(ck))it.add(v);
}
StringListAdapter.this.items = it;
filterResults.values = it;//フィルタリング結果オブジェクト
filterResults.count = it.size();//フィルタリング結果件数
return filterResults;
}
};
return f;
}

}
で、こうする
AutoCompleteTextView txt = new AutoCompleteTextView(context);
XAdapter xa = new XAdapter();
txt.setAdapter(xa);


getFilter の戻り値として android.widget.Filter オブジェクトを返す必要が
あります。

Filter オブジェクトは performFiltering と publishResults を実装する必要があります。


performFiltering は入力値を引数に持ち、FilterResults を戻り値として返す必要が
あります。

これはテキストが編集されるたびに呼び出され、FilterResults の value 値と count 値
に基づいてリストを作成します。ただし、引数の CharSequence は最初の1文字目の
入力の際にnull で渡される(HTC Desire で確認)ので null 参照に注意してください。


publishResults は performFiltering の後に呼び出されます。

performFiltering で作成された FilterResults が引数として追加で渡されますので、
入力値と合わせてリストの再描画が必要な場合はここで notifyDataSetChanged
を呼び出してください。


ここまで実装した Adapter を AutoCompleteTextView に setAdapter してやれば
おそらくお望みのUIが完成するはずです。



ただ、ここで問題が発生しました。

検索結果を表示して別機能を呼び出すUIが欲しくなったんです。

そうなるとやっぱり EditText で AutoCompleteTextView みたいなイベントの
拾い方が出来ないとダメなんですよね。

と思ったらすぐ見つかりました。

addTextChangedListener で TextWatcher の実装をセットするという方法。


【例】
TextWatcherの実装を作成
private TextWatcher xTextListener = new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
rewriteList(s);//入力文字を使用してリストを再描画
}
};
これをセットするだけ
EditText txt = (EditText)findViewById(R.id.text);
txt.addTextChangedListener(xTextListener);


メソッドリストですぐ「set」って打っちゃってたんで気付かなかった。。。

これ使えば AutoCompleteTextView のようなタイミングでさらに複雑なUIを
作成することができました。


無駄を省くためのいつもの癖が仇となりました…。
ちょっと反省。。。

2010年9月25日土曜日

X メール 設計思想+前提としてのコンセプトの一部

X メールは、標準 Gmail が複数アカウントを管理できない事や、通知の方法に不満がある事から作成を決意しました。


【前提】
アンドロイド端末はソフトキーのタッチ操作が基本であるため、携帯電話の様な移動媒体の操作を考え、安定感のあるUI設計を心掛けるようにしています。安定感のある横持ちを絶対にするというアイディアもありますが、満員電車の車内で両手が使えない可能性を考慮し、そのアイディアは排除しました。

そのため、当アプリケーションの目指したコンセプトの一つは

「より少ないタッチで機能を発動できる」

という事になっています。


また、スマートフォン黎明期という時代を前提に、フィーチャーフォンからの移植性を考慮し、現在の主力アプリケーションとの差別化を考えました。

具体的には、ターゲットを日本のITリテラシーの高いフロンティアに触発された一般の新しい物好きに設定し、レベルの高い人向けのシンプルなUIに多少の誘導を乗せて、スマートフォンユーザーの拡大を視野に入れています。

そのため、ここで明らかになる商品コンセプトは「上級者でも使える中級者向けアプリ」「フィーチャーフォンでよくつかわれている機能をスマートフォンの世界に混ぜてみる」という事になりました。特に、フィーチャーフォンで出来ていてスマートフォンで出来ない事の実現を考えるようにしています。


【設計思想】
android が標準で持つ Gmail のための機能から切り離して、Gmail の管理を超えて全てのメールアカウントを管理する事を目的として設計されています。


基本機能設計として考えたのがメールサーバーとの通信の部分です。標準 Gmail の持つ同期機能は大変強力ですが、端末メーカーがメールソフトを独自にカスタマイズすることが多く、それぞれの実装に対応する事が困難(全ての端末を手に入れる事の困難)であるため、連携するというアイディアを設計思想の段階で排除しました。

また、同期機能の独自実装も、ユーザーの認知度の低さや、管理の難しさ(メーラーは複数アカウントを管理するという前提に立ち、重みづけなどの管理項目が解りやすい必要がある)から設計思想の段階で却下しています。

【緊急リリース】X メール 1.3.2 マルチアカウントの問題点を修正

さきほど、X メール 1.3.1 をリリースしたばかりですが、1.3.2 を緊急リリースします

今回の修正では、マルチアカウント環境で2番目以降のアカウントが上手く動作しない事に対応しています。


今回のバージョンで入っている修正は以下の通りです

  • マルチアカウント環境で2番目以降のメールデータが1番目のデータに入ってしまう事がある問題を修正
  • メールアドレスの手入力で出ていたバグを修正
  • メールの手動取得を行った際に、警告が出ないようにした




今回の不具合対応は 1.3.1 の修正による問題ではありません。
今までのバージョンでも同様の現象が発生するため緊急リリースを行いました。

先ほど1.3.1 を入れた方々には度重なる修正となってしまい、大変申し訳ありませんでした。

全ての皆さまに対し、早急のアップグレードを推奨いたします。

2010年9月24日金曜日

X メール 1.3.1 をリリース

今回のリリースは以下の修正を含んでいます

  • アカウント設定画面のテキストボックスにヒントをつけました
  • アカウント設定画面のメールアドレスが自動的にログインアカウントに入力されるようにしました
  • アカウントとフォルダ候補のリスト幅を修正しました
  • 連絡先の検索をボタンクリックすることなく、自動で出力されるように変更しました
  • 送信・受信メール画面を開いた時に、IMEが開かないように変更しました


使い勝手を考えた微調整がメインです。

大きい機能修正を前に整えておこうかと。


次は Twitter 連携考えてます。
考えた結果やらないかもしれませんが、色々な道を探ってみようと思っています

テニス合宿楽しかったっす

と、いうわけで帰ってきました!

たまには若い(10代もいた!)人たちと交流を深めるのも良いもんです。

彼らは世界の将来であり、その空気が社会を形作るわけです。

5年、10年先を考えるなら、彼らの事も知らないといけないと思うわけですよ。


まぁ、でも純粋に楽しんできた面が大部分である事は否定しません☆


帰ってみたら、なんと X メールにコメント付いてました!初コメント、超嬉しい☆


ま、評価は1で内容は「Droid X で動かんよ」というものですけどねー。
でも反応してくれる事がありがたいのです。

実機がないので確認が難しっすね。

アプリに対応機種入れた方がよさげですな。

発行するインテントが、機種依存あるところまでいっちゃってますからねー。
俺が悪いわ、これわ。


後、親愛なる友人から色々アドバイス頂いたので合わせてやっちゃいます。


しかし、疲れたわ…

2010年9月19日日曜日

堀内バリに「ありがとぅ!」と言いたい

こないだリリースした「X メール 1.2.0」で、いずこかの御仁から戴いたバグを改修したんすよ。

ホントに嬉しくて、お礼が言いたいのに言えないのがもどかしいす。。。


なんとかならんもんかな、と思う日々でございます…

そういえば忘れてた

ちとから、と言いつつブログ開設以来一度もちとからの話してない事に気付きました。

いやね、忙しくて遊んでらんないんですよ、最近。

しかもお金もなくなりました。マジびっくり、この歳にして貯金ゼロ(うそ、すうまんくらい)。
武士の血を引いてるので宵越しの銭は持たないらしい。。。
(↑いや、ただのバカです)

収入が人並み外れて悪いわけでも、熱をあげてる女がいるわけでもないのに
この歳で貯金なくなったのは、ある意味凄いよね!?
うん、誇りに思って生きていきます!!!


…じゃなくて、ちとからの話ですよね、はい。


そのうち頑張る

X メール 1.3.0 公開。スパン早すぎてごめんなさい

機能は変わってないっす。

変えた事は

  • ウィジェット貼り付けの際に選んだ色に合わせて受信ボックスアイコンが変わるようにした。
  • 受信ボックスアイコンに受信名を表示するようにした
  • チェックボックスのアイコンを変更した(まだちょっと不満)。


だけっす。
でも、複数の gmail アカウント使うなら必要なんすよね、これ。


とはいえ、アップグレード前にウィジェットを削除しといた方が良いという前提になってしまい、
結構めんどくさいリリースになってしまった事をお詫びします。。。

でも、受信ボックスのアイコンは満足な感じなんで、もう今後は
そういうめんどくさい事は無いんじゃないかと思ってます。


明日から暫く合宿行ってきマッシュ!!
何もないとは思いますが、何かあったら何らかの手段で報告してくれるとありがたいです☆

でわでわ、おやすみっす!!

2010年9月18日土曜日

X メール 1.2.0 公開!!

以前に告知していた通り、以下の機能を実装してリリースしています

機能追加

  • メールボックスで、全チェックのオンオフ機能
  • 表示しているメールのフィルタ機能
  • メールの昇順降順を変更可能


バグフィックス

  • Utils.getTypeのぬるぽ対応
  • 画像編集画面で、画像サイズを画面サイズに合わせるように変更
  • 横画面でメール送信を行うと最後にエラーメッセージが表示される問題
  • フォルダ関連の操作をすると、スピナの表示が先頭のデータになってしまう

最後の spinner 対応は、正直無理やりやってしまいました。

何故か spinner の setSelection を実行すると2回の getView が走り、最初の
呼び出しでは正しい position が引数として渡されるのですが、2回目に「0」
が渡されていました。初回の spinner 表示では問題が出ないのですが、何故か
再表示の時には OnItemSelectedListener で position と view が食い違うという
ちょっとバグっぽい動きがありました。

まぁ、なんで、PGで選択をコントロールする際はいつもセットされたポジションで
getView を動作するという風に adapter を修正したのです。まぁ無理やりですね。


そのうち暇になったら、もうちょっとスマートなやり方に変更します。

…どうしてもね、合宿前にリリースしたかったんすよ。。。

なんとなくGDD前に出しときたかった…。

話のネタにならないかな~と思ってさ。。。


苦戦…!

ぶっちゃけ、苦戦してます。X メール

フォルダに関する捜査が終わった後、フォルダを選択するための
Spinner をリロードしたいんですが、どうしても先頭の行が「表示」
されてしまう…。

内部的にはちゃんと表示させたいアイテムが選択されているん
ですが、「表示」のみがどうしても先頭のデータになってしまうんです。

もうこれで3日悩んでたりします。。。


なんで、最近更新がなかったんすよね。


実は明後日から3泊くらいでテニス合宿に行きますんで、更新ができません。

なんで、行く前にちょっと更新しとこうかなと思って書いてます。

次バージョンのリリースは、明日中に出来なかったら再来週になりそうです。


でも、大丈夫!とんかつ教室は更新してるから☆

2010年9月14日火曜日

今日は何本メール打ったか…

ホント今日は忙しかったっす。

いや、仕事以外が。


今日やんなきゃいけなかった事

  • 結婚式の2次会のお店と値段交渉&他幹事への報告
  • 結婚式の2次会のビデオ制作打ち合わせの調整
  • 木曜の飲み会の幹事としてのあれこれ
  • 日曜の英語レッスンのための宿題(継続中)
  • メーラーの新機能最終案
  • お金振込
  • 夏合宿に行くために新幹線予約
  • 変なガイジンにお断りメール(笑)


で、飛び込みで入った用事

  • サークルの記念式典の幹事の仕事


なんか最近マジで忙しいんですけど…

なんすかね、これ。


でもこんな激務にも X メールは耐えれるようになりました☆

手前味噌ですみません。。。


さてー、風呂入るかー。

X メール 予定変更

今日バグフィックス出すような事を言いましたが、

やっぱりちゃんと機能をつけたくなったのでもう少し遅くします。


なので、次のリリース予定はリビジョンアップではなく、

マイナーバージョンアップという事になる予定です。


機能的には

  • メールボックスで、全チェックのオンオフ機能
  • 表示しているメールのフィルタ機能
  • メールの昇順降順を変更可能



バグフィックスは

  • Utils.getTypeのぬるぽ対応
  • 画像編集画面で、画像サイズを画面サイズに合わせるように変更
  • 横画面でメール送信を行うと最後にエラーメッセージが表示される問題


に対応する予定です。

待っている方にはご迷惑をおかけします。。。

2010年9月12日日曜日

すごい一日でござんした

今日は朝から友人の結婚式の2次会の打ち合わせ。

9時東京駅は普段の仕事より早いっす。。。

…まぁ俺の事情なので文句は言えませんが。


でも仲間たちがとても優秀なので、話を聞いてOKを出す
みたいな流れでとても楽ちん☆

いや、持つべきものは優秀な友ですな、マジで。


で、その後はエイゴのれっすんってやつです。

なんか、英会話教室に入ったんですよね、色々あって。

11時から18時まで。

疲れた、ホントに。。。

解りやすく言うと、麻酔銃を持ったスネークと戦ってる
リボルバーオセロットと同じ状態ですね、はい。


まぁ、でも結構楽しかったんで続けます、多分。
(しかし、高いんだよ月謝が。酒止めないとなぁ)


で、帰ってきて次の「X メール」のバグフィックス固めましたよ!!!

上がってたエラーと、画像編集画面で大きすぎる画像は小さくするようにしたり、
メールボックスの画面で、チェックボックスを全部オンオフする機能入れたりとか。


明日一日テストして大丈夫そうならリリースします☆

回数多くてモウシワケネス。

今日という日

今日は生まれて初めて舞台ってやつを見に行きました。

あ、プロのやつをお金払ってってのが初めてだったんです。


最近こういう文化活動で「初めて」体験が多いっす。


良い歳なんですが、やっぱり初めて体験では感動が強いもんで、

今日は心の底から圧倒されましたー。

役者さんの演技に凍りつきましたよ、身も心も。


一緒に行った人たちはそういうのベテランな人ばっかりだったんで

終わった後にテクニカルな感想をバシバシ言ってましたけど、

そういうの解らないなりにとても楽しむ事が出来ました☆

ちとから近辺仲間も見つかりましたし!


で、帰ってパソコンあげてみると、なんと X メールのエラー報告が!!

バグは良くないんですが、これってわざわざ見つけた人があげてくれた

って事っすよね!?

いじめられっ子根性なのか、構ってもらえて嬉しいです(ドM?


次は機能追加でマイナーバージョンアップって思ってたんですが、

そんな報告にお応えするためにもバグフィックス一回だそうかなー。

うん、そんな気がする。


でわ、明日早いのでおやすみです☆★☆

2010年9月10日金曜日

とんかつ教室おもろいわ

ちょっと一休み。

と思って、グーペのとんかつ教室を開いたら


あっという間に1時間経った。


業務中はダメっすね、これ。

懲りずに頑張りますよ!

いやー、バグまた出しちゃいましたー。

半日反省しました。

次はがちでやります。

テスト仕様書作るわ、マジで。


って事は、そうです!
次のバージョンをもう考えてます☆★☆



取りあえずは、Google さんがああ言ってますからね。

「フィルタ機能」ですな、まずわ!

で、「ソート」も欲しいよね。
でもこれはあんまり凄くしないつもり。


データ量が増えるだろうから、リストの機能の省エネ・高速化も
考えないとですね。


メール取得の同期化しようかと思いましたけど、やめます。

アカウント複数だったり、重みづけしたかった時に不便になりそうだから。


そんなとこすかね。
後はほかのアプリも検討中っす☆

ヅラアプリとか(笑)

でわ、このへんで、お休みなさいませ~~

2010年9月9日木曜日

X メール バグフィックス版リリース

お騒がせして大変申し訳ありません。

今回のバグフィックス版では、以下の対応を行っています。


  1. 送信メールの削除後にエラーメッセージが表示される問題を回避
  2. アップグレードで停止したポーリングを再開する機能を追加
  3. vcard の受信と連絡先への登録に対応



今回の緊急修正は1番に対応するためのものです。

2番目についてはかねてよりの「アップグレード前に一度ウィジェットを
削除しなければいけなかった」面倒に対応しました。アップグレード
完了後にメールボックスを開き、時計ボタンをクリックしてポーリング
を再開させてください。

3番目は機能追加ではなく、バグによって出来なくなっていたものを
改修によって復活させたものです。


今後の修正は、このような事のないように対策を打ったうえで対処
したいと思いますので、今後ともよろしくお願いいたします。

ももも、申し訳ないっす!

X メールですが、またバグ出してしまいました・・・

今日の夜修正版を出す予定です。

今度はちゃんとテスト計画やろう。。。
もう出荷後バグは出したくないっす。

情けねー。
仕事と同じレベルまで上げないとな・・・。

X メールβ 機能一覧

今回は事務的に

★メール送信

 【アカウント管理】
  送信機能から起動する流れはランチャーを送信機能に割り当てているためです。
  特にそこに意味はありません。

  アカウントは複数作る事が出来ます。名前さえ異なれば同じメールアドレスに対しても
  作る事が出来ますが、意味がないので推奨しません。今後の仕様変更でそこは潰れる
  可能性があります。

  「Gmail IMAP」を中心に作られていますが、他のプロトコルにも対応しています。

 【メール作成】
  ・連絡先からTO/CC/BCCそれぞれのリストを作成出来る。
  ・写メ(画像編集機能あり。大きさ変更・簡単なデコ)
  ・アドレス交換補助機能(VCARDの添付)
  ・ギャラリーからの添付
  ・送信メールの保存・一覧(menu ハードキー)


★受信メール

 【ウィジェット】
  ・作成したアカウント毎にウィジェットの貼り付けが可能
  ・ポーリング間隔の設定
  ・バックグラウンドポーリング
  ・受信のステータスバー・バイブレーション通知
  ・マニュアル同期
  ・メールの複数選択一括削除
  ・フォルダの作成・削除
  ・メールの移動・コピー

 【受信メール詳細】
  ・カレンダー表示
  ・カレンダー追加機能連携
  ・連絡先追加機能連携(テキスト/VCARD)
  ・URLリンク
  ・受信メールのテキストコピー
  ・返信、転送

android の UI 設計って奥が深い

メーラー作っててアホなりにまぁ色々考えるわけです。


忘れんようにメモしとこと思いまして。


(ステップ数=ユーザーが携帯を操作する回数)

  • 使用頻度の高い機能への到達ステップ数を極限まで減らす。
  • ソフトキーの大きさを小さくしすぎない
  • ソフトキーの配置を中央にしない
  • 異なる機能を発動するソフトキーは近くに置かない
  • 移動中に使用する頻度の高い機能は確実かつ少ないステップ数で実現する
  • 機能遷移は連想ゲーム
  • ハードキーの使用頻度は極力減らす
  • リスト画面に EditText を置かない(IMEが開かないように)
  • 情報表示画面に EditText を置くときはなるべく下に


うーん、今思い出せるのはこんなもんす。

自分の場合、普段使いながら作ってたんですが、上記の中で重要だなと思ったのが2点


まず、リスト画面に EditText を置かない事。

携帯の画面に対して半分取るでしょ?IMEが。

あれ出てると、なんも見えないんすよ。
せっかくの ListView の爽快感が台無しになっちゃう。

その下の情報表示画面うんぬんも同じで、EditText を上に設置しちゃうと
いきなりIMEが開いちゃって情報が見難くなっちゃうんですよねー。

どうしてもって時は属性でなんとかなったと思うけど、結局使う人は情報を
見た後で機能を使うはずなので、やっぱり下にあるべきなんじゃないかと思います。

あ、リスト画面は下もやめたほうが良いっす。
画面操作中に EditText の編集を始めたらIME出ちゃうんで、もう絶対 ListView の
お世話にならないっていう以外なら避けたほうが良いと思います。


もうひとつがもっと重要で、
「とにかく徹底的にその機能を使うシーンを考える事」

今までのどんなアプリケーションでも考慮する必要のなかった部分を
android 端末では気にしなければならなくなりました。

「ソフトキーは、押し間違える・見てないと押せない・間違って押しても気づきにくい」

ソフトキーメインの端末を使っていると気づくと思いますが、
とにかく揺れとかプチ緊急時に非常に弱いのがタッチ操作。

揺れない環境で使うPCとかは別としても、通常のハードキーの携帯電話でも同じ
ような気がするかもしれませんが、ソフトキー使うと痛感する事があります。


ハードキーの場合、人間かなり触覚に頼って操作してるんですよね。
つまり

「目で目標のキーを定める」
 ↓
「指でキーに触れターゲットを確認」
 ↓
「思ったタイミングでキーを押しこむ」
 ↓
「機能が発動」


とやっていたんですが、ソフトキーになると


「目で目標のキーを定める」
 ↓
「指でその近辺を触る」
 ↓
「機能が発動(その旨をバイブで伝えたりもする)」


になってしまったので、着実に目標を捕らえられる状況でないと
操作が難しくなってしまったんです。

車のハンドルの遊びが無くなったのと一緒。


今までのハードキーの携帯では、揺れる環境や緊急時など目を離したときも、

「機能を発動=押し込む」

だったために問題なく使えてたんだなぁと痛感します。


ナガナガと書きましたが、早い話

「落ち着いて使えない時に使いそうな機能は、誤動作させないように設計しろよ」

つーわけです。


まぁ、でもこんな話もごく一部でして、誤動作・UIに関する部分以外でも
アプリケーション設計はシーンを重要視しなければいけないです。

そんなのは昔からではありますが、特にスマートフォンになってくると、
今までのソフトウェアアプリケーションの世界感から考えれば想像を
絶するほどシーンの数が増えているわけで、ここに難しさや無限の可能性、
ひいては面白さがあるのかと思います。


以上、覚書まで。

2010年9月8日水曜日

プチ裏話

X メールβ のリリースお疲れ様でしたー★(to 俺)

つーわけでかんぱーい!!


ってところなんですが、追加機能見てあれー?って思った人いるんじゃないでしょか?

・英語対応(カタコト)(笑


これにはまー、ちょっとした裏話がありまして。。。


そもそもこのアプリケーションは of me, by me, for me なアプリで、
さらに勉強を兼ねて好き勝手機能をつけるというのがコンセプトなんす。

まーだから、これで人様のお役に立とうなんて、毛頭思ってないんですね。


それが今朝ですね。


エーゴでめーるが来たんですよ。Developer に登録してあったメアドに。


なんだ、コワ!って思って内容を読んでみると、こんな感じでした。


「ヘイユー、フリーのアプリ出してるみたいだね!オー、クール!!

 どうだい?そいつをうちのマーケットで紹介させてもらえないかな??

 うちはXXXな感じでさ、ここで紹介されればユーのアプリも間違いなしだ!

 なーに、心配いらない、ユーはただ”オーケー”と返事をすればいいだけだ。

 どうだい?良い話だろ?

 ヘイユー、やっちゃいなよ★ハッハー!!」

 (※キャラはねつ造です。)


という、「ジャニーさんクラッシュマリガン和え」な感じ(ねつ造です)。

でまぁ自分じゃよく解らんので、最近流行りの「外部の有識者」ってやつに
相談したところ、話に乗ったほうがよさそうだったので、急きょ英語版もやってみたわけっす。

大したアプリじゃないので翻訳数も少なかったし。。。


という訳でございました。

でわ、みんなグッナイ★(もうかぶれてる

X メールβ 1.1.0 公開!

予定通りリリースしました!

X メールβ 1.1.0
です!なんとか互換性保ったはず。。。

とはいえ、一度端末内のメール情報が削除されてしまう事と
以前からあったアップデート前にウィジェット削除してないといけない
問題は残ったままです。

前者はメールボックス画面で同期ボタンをクリックすればオーケー。

後者は…すみません、時間なくて後回しにしました。。。


【修正内容】

機能追加:
  • フォルダの作成・削除機能
  • メールのコピー・移動
  • ロングクリックで受信メールテキスト文のクリップボードへのコピー
  • 英語対応(カタコト)

バグフィックス
  • 送信先追加画面で強制終了する事がある
  • 名前に「,」があったときに送信エラーが起きる
  • プログレス中に画面の向きを変えた時に強制終了になる
  • 受信ボックスの未読メール数のロジックを改善

こんな感じです!
よろしくお願いします☆★☆★

PS
今度機能の説明を何らかの形で公開します

メールアプリ明日公開出来そうです☆

なんとか実装終わったっす~~。

すべての問題に対処は出来ませんでしたが、結構バグも潰しました。


リリースは当初の予定通りくらいの実装になりそうです。
バージョンは、何とか条件付きで互換性を保ったつもり(汗

条件として、以前のバージョンで落としてきたメールのローカルデータは
新バージョンで起動した時に削除されるので手動で同期(ワンクリック)してくださいって
感じになる予定です

インストール前の条件「ウィジェットが剥がれている事」は解決できませんでした。
めんどくさくてごめんなさい。コードで画面から無理やり剥がすとか出来ればいいんですが…

詳細はアップデートリリース後に公開します。
明日1日仮想本番テスト(まぁつまり自分の携帯で)やって上手くいけば。


ちなみに、今回はラベル対応までですが、Google が「メールは仕分けるな。検索しろ」
って方針なようなので、そっちの方向に行くように準備してます。
検索は簡単なんだけど、優先トレイ対応はちょっと考えないとなー。

ロードマップ的にはそんな感じでも考えてたりします。

後はマッシュアップだな。
それがトレンドだし、技術も知識もつく!と信じて…

2010年9月5日日曜日

ListView に昔はまった

ListView と Adapter って、アプリ作る上で大体どんな人も通る道だと思うんですが、
調べても簡単な使い方しか出てこなくて昔苦戦した事がありました。

なんで、ちょっと書き留めておきます。


まず、ListView ってなんぞやってところなんですが、早い話
「画面分の大きさをもったカーソル」
ってイメージが近いんじゃないかと思います。

たぶん(自分がそうだったんですが)普通の技術者が何も考えずに
ListView 使おうとするとエクセルとかそういうUIを思い浮かべて
取りあえずデータブチ込めば見せてくれるんじゃない?
とかって思っちゃうと思うんですが、ListView は少ないリソースしか
使えないモバイルだってことを前提に作られており、全部 ListView のメモリに
データをロードさせるって事をしないんですね。

早い話、やる事は一緒なんですが、データ提供と表示を分ける事で
そこに開発者が手を入れる余地を作ってくれたわけです。

これが解るまで Adapter の存在意義が全く理解できなかったんですよね、俺。


で、どうなっているかというと、大きく分けてAdapter の実装のほうでは
  • データのロードに関する事
  • View の提供に関する事

を実装で工夫することができるんです。

こう書くと「当たり前じゃん!」とか言われそうなんですが、
まぁ当たり前ですね。

ただ、データのロードに関してはまぁそのままなんですけど、「View の提供」に
関する部分は ListView と直接やり取りをする部分で、これは ListView の仕様を
ちゃんと理解していないとドツボにはまる危険があるわけです。

実際自分ははまりました。

最初に書いたように、ListView はカーソルなんです。
リソースの少ないモバイルのメモリを有効に活用するために、View オブジェクトの
再利用の仕方が半端ない。というか結構シビアに実装されているんです。

自分の調べた感じ(あくまで感じ)だと、
  • 始めに表示分 View を新たにロードさせる(つまり null で getView してくる)。
  • 表示部分が動いたら画面表示分+2まで新たにロードさせる。
  • 後は新しくロードはさせず使いまわし!

最初はこれ解らんで実装していたんで、View オブジェクトのプロパティ設定の
タイミングが ListView の期待とそぐわなくて良くわけのわからん問題を引き起こしてました。

わかっちゃえば話は簡単で、view が null で来た時には view のロードを書いて、
プロパティの設定は毎回必ずやる!というルールを守ればいい訳です。


はまったの自分だけかなぁ?普通すぐ気がつく?
下手な小細工をしようとしていた自分が悪かったのかもねー。

近況やら進捗やら

昨日は友人のバレエ発表会に行ってきました。

いやー、ガチでバレエなんて見たことなかったけど、
ああいう音楽好きな自分としてはかなり楽しかった!
ちょっと意外でした。

人魚姫の最後でちょっと泣いてしまったし。。。


まぁ、それはさておき、メーラーですが、大体実装のほうも
終わりまして、あとはいくつかの問題点を残すのみっす。

やってるうちに既存の不具合が結構見つかって、ちゃんと全部載せれるか不安・・・

今、一番大きな問題は
「フォルダが削除できない!」
という事です。

なぜだろう?出来ない訳はないと思うので、何か書き方が違うんでしょうが。。。

まぁとにかくもう少しという事で!

メーラーとして大分一人前な感じになってきました☆
待ってる人がいるか解りませんが、乞うご期待!!

2010年9月3日金曜日

X メールヴァージョンアップ予定

ちまちまバグも見つかり、機能追加も目処が立ってきたのでお知らせします。

リリース日:9月9日(木)予定 あー、友達の誕生日だ

ヴァージョン:1.1.0 ・・・だと思います。互換性がなくなるようなら2にしちゃいます。多分平気。。。

【機能追加】

フォルダ(gmail のラベル)に対応
  1. フォルダに分けたメールを取得
  2. 各フォルダに振り分け
  3. 各フォルダからの削除
  4. 新しいフォルダの削除 

【バグフィックス】
  • 異常終了下でウィジェットを削除するとポーリング設定が残ってしまう問題に対して、新しくポーリングを作成できなくなっていたのを、設定を削除してもう一度作成可能に出来るようにする。
  • 未開封のメールを削除した場合に、受信ボックスに表示されている数字がカウントダウンされていなかった問題を修正
  • チェックされたメールを削除する際に、確認ダイアログを出すように修正

って感じです。
多分このままですが、リリース時にもう一度アナウンスします。

互換性無くなって2にした時は1用のバグフィックスを合わせて出すと思います。

2にしたらβ取ろうかなぁ?
あ、無料のままですよ!
X メールでお金は取りません!!

2010年9月2日木曜日

今日は xperia spモード祭りでしたね☆

Xperia Love な皆さんのつぶやきを楽しく拝見させてもらってました。
会社の Xperia いじれるからちょっと参加してみたりして☆


・・・なんだか・・・


サービス良くてウラヤマシス(泣


今の Desire に選択権なし。
ドメイン拒否されてはお願いに参る日々でございます…

そういう風に盛り上がれる話題ほしいな


孫さん、ボスケテ