2010年2月20日土曜日

みくった〜♪3 次までにやること

以前から開発を続けているみくった〜♪だが、テストしてくれている人が増えてきたので、既知のバグがなんなのか、最初のバージョンまでにどんな機能を実現したいのかを明確にしておきたい。

最初のバージョンの目標

目標としてどんな機能を付けるかを列挙しても良いのだが、ここでは「twitte.rbと同じ機能を実装する」とする。
理由は、具体的なクライアント名を上げた方が明確になることと、twitte.rbは基本的な機能をもっているクライアントの中では、機能が少ない方であること。このクライアントには、必要と思われる機能も一部含まれていないが、今回はあえてtwitte.rbに存在しない機能はこれ以上実装しない(削除機能、ふぁぼったつぶやき一覧など)。
なお、twitte.rbにある「アイコンアルバム」は今回実装しない。というのも、なくてもさしあたって困らないからだ(そのうち実装するつもり)。

人柱版までにやること

MMI作成時にフォーカスを移す
ボタンクリックで無数につぶやき入力欄を増やせるMMI(Multi Mumble Input)だが、これを作成した時に入力欄にフォーカスがいかないと、入力欄一つのインターフェイスよりクリック数が増えてしまう。
メモリバカ食いをやめさせる
つぶやきが溜まると、それを破棄しない仕様になっているため、タイムラインの流れが早い場合にメモリを数百MB消費してしまう場合がある。ページングすると操作性が落ちてしまうが、表示されていない部分についてはメモリを開放したりして、メモリ消費を抑える工夫をしなければならない。
ふぁぼる/アンふぁぼ
他人のつぶやきをお気に入れる/外す機能。
URL開く
URLをつぶやく人は多い。今はコピーできるようになっているが、クリックだけで開けるようにするべき。
ショートカットキーによる投稿(Ctrl+Enterとか)
現状、ボタン押下による投稿のみしか対応していない。
設定変更プラグイン
要するに、設定変更画面。内容は詳しく詰めていないが、以下のような物が最低限必要だと思う
  • 通知機能(サウンドを鳴らす、inotify、コマンド実行等)
  • 更新間隔(現在は一分固定、リプライは20分)
  • アカウント情報の変更
初回のアカウント入力/アカウント変更
現在、initialize.rbを実行することで初回の設定をするが、mikutter.rbを起動した時点でこれをするべき。
ポストする時にハッシュタグが2つつく
#mikutterなどとハッシュタグをつけると、#mikutter #mikutterと投稿される。
リプライ送るときに、宛先がデフォルトで入ってない
送信時に補完していたが、残り字数がわからなくなる。
<>問題
<>などがエンティティエンコードされた状態で表示される。
140文字に切り詰める
クライアントがこれをしないと、Twitterは140字以上の投稿をはじいてしまう。

是非ともやっておきたいこと

IMEのデフォルトONオプション
毎回つぶやき入力欄が消えるため、設定によっては毎回半角入力モードになってしまっている。
ダイレクトメッセージの実装
ただし、これはユーザのプロフィール画面と密接に関わる。そのため、今回はごく簡単なものになると思われる。

余裕があればやること
これは絶対に将来的にやりたい事だが、今回やろうとして却下したもの。理由は上記の通り、twitte.rbに実装されていないからだ。
  • 短縮URL
  • 画像表示
  • 自分のつぶやきを削除
  • スキン機能、というか見た目変更機能(フォントや文字色、背景など)
  • スクロールロック
もしかしたら、見落としているだけで実装されているかもしれないが、今回はこれらを見送る。なお、付けたい機能はこの他もいくらでもある。

まとめ

今回は、直近のやることをまとめた、いわばメモのようなものをかいたが、リリース前なので実装したい機能というよりは、バグ修正と最適化が主になっている。
次回くらいには、ここや私のWebページで「みくった〜♪」を配布したいと思っている。

2010年2月16日火曜日

みくった〜♪2 ちょっと作ってみた

みくった〜関連の記事しか書き込んでいないけど、それしかやっていないので。
ある程度インターフェイスがしっかりしてきたので、まだ殆どみっくみくにされていないけどスクリーンショットを公開する。なお、Ubuntu 9.10で撮影した。



これがフレンドタイムライン。いわゆるTL。モザイクの行は「toshi_a 伊吹萃香」のように表示されている。ツールバーの「つぶやく」ボタンや、各つぶやきにある「@」「RT」ボタンを押したらつぶやきを入力するスペースが現れる。普段表示しないことにより、つぶやきを少しでも多く表示出来るようになっているし、猫につぶやかれる心配も減るかもしれない。

目玉機能のマルチつぶやき機能。だけど名前を付けておかないとパクられたときに残念な気持ちになるので「Multi Mumble Input(MMI)」という名前を付けておく※1。つぶやきボタン等は、押せばいくらでも量産できるようになっているので、つぶやきを書いている途中で別のつぶやきにリプライを送りたくなったりしても、その内容をわざわざ覚えておいたり、書きかけのつぶやきを消す必要はない。それを覚えておくのはみくった〜♪の仕事なのだ。
※1 というか、パクられるまでになれたら嬉しいんだけど


リプライ画面。先ほどと基本的には変わらない。リプライ画面に限ったことではないが、カーソルを合わせたつぶやきが別のつぶやきへの返事だった場合、親つぶやきがツールチップで表示される。
表示方法はともかくとして、あるリプライが何に対してなのかが分からなくなることというのは、複数人と会話していたらよくある話だ。これが確認出来るクライアントが当然多く使われているはずだが、その数はそんなに多くないし、しかも大抵のクライアントでは相当確認が面倒だ。
・・・ということを考えると、現時点ではついったーでよく会話をする人に適したものになっていると考えられる。もちろん、通知機能、URLを開く機能など基本的な機能が揃っていないのでまだ使ってもらえる段階にも無いが、twitte.rbを超えるという最初の目標はすぐそこだ。

まとめ
今回は、現在の開発の進捗を報告した。今後の課題は、見た目がみっくみくにされていない点である。

2010年2月10日水曜日

みくった~1 バージョン1の全貌

ついったーでわいわい言っていたが、ちゃんとまとめてなかったのでまとめる。
前回は動機を語ったので、今回は短期目標を具体的に語る。

とりあえず短期目標として、最低限、他のクライアントにある機能はつけたい。もっとも機能が多いと思われる夜フクロウに勝てばいいだろうと思ってる。
しかし短期目標には目標が高すぎる感があるので、まず、みくった~にコードの一部をいただいたtwitte.rbにある機能を網羅し、それを以ってバージョン1としたい。
だけど、あのクライアントにある機能で実装しないものも多いので、ここに最初の搭載予定機能を書いておく。

まずタブには、フレンドタイムライン、リプライ、DM、設定が並ぶ。

DMのタイムラインは大体どのクライアントにもあるし、実装が容易なのでとりあえず実装するが、どちらかというとフォロワーのプロフィールからその人だけを絞ったりできるようにしたい。

つぶやき入力欄が特徴的で、デフォルトでは表示されていない。ボタンを押すことで次々と入力欄を作れる。

各つぶやきにはリプライボタンが付いていて、クリックするとその下につぶやきが入力できる。これも、複数の同時入力に対応している。

またあるつぶやきをダブルクリックすると、それがなにかに対する返信だった場合に、それを再帰的に辿ってタイムラインを作るので、何に対する返事なのかが一目瞭然になる。

設定がタブに埋め込まれているのは、ボタンを置くスペースが無かったから。右クリックメニューからしか開けない、ということにしてもいいかもしれないが、いちいちポップアップにする必要もなさそうだ。
設定項目は次のものを予定する。タイムライン、リプライ、DMの通知方法(inotify、サウンド、任意のコマンド)。アカウント情報。更新頻度。そしてフッダ。各プラグインに関して設定が増えると思うがいまはこんなものだろう。

とりあえず、機能としては何もないに等しいがこれくらいでリリースする(すごいのに期待してた人ごめんなさい。でもこれからだ)。近いうちに、将来つけたい機能もまとめる。

次回は、プラグインによる機能拡張について書く。と思う。


その他
今回はiPhoneから書いてみた。やっぱりキーボードがいい!

2010年2月4日木曜日

ついったーブラウザ「みくった〜」0

タイトルのとおり。今回は半分メモ書きみたいなもの。
今回は、Twitter(以下ついったー)のクライアントサイドソフトを作るために、いろいろ考察したことを、なかなか寝付けないのでまとめてみた。

何が問題なのか

既存のクライアントの問題、特徴の雑感。

1、必要な機能が削られている場合が多い
例えば、大体のついったークライアントはフォロー/フォロワー数一覧すら取得することが出来ない。これらはWebページ上で済む話だから実装されていないらしい。場合によってはふぁぼりも実装されていない。Linuxにはお世辞にも使えるとは言い難い代物が多く、DMすら実装されていないものもある。普段使わない機能は実装しないというコンセプトかもしれないけれど、それが行き過ぎて必要な機能まで実装されていないことがある。

2、安定していない
Linuxで顕著。文字通り。例えば、HTTPリクエストをメインスレッドで送ってしまっているのか、更新中に動作しなくなるクライアントが以外と多かったり、そもそも突然落ちたり。ここに関してはとくに言うことはない。安定したものを作らなければならないと思う。

3、情報を表示しない
これは普通にしていては気づかないことかもしれない。Computer Humanoid Interfaceを作ったことによって気がついた。例えばついったーではゆるいチャットになることがしばしばあるが、いくつもの話題が平行して進行するので非常に分かりづらい。こればっかりはどうしようもないと思っていたら、なんとAPIの戻り値には、どのツイートへの返事なのかがちゃんと書いてあるのだ。このように、開発者しか知らないことが結構あったりする(※当然、返信を再帰的にたどれるクライアントも存在する)。

4、Webのほうが総じて使いやすい
このブログが人気だったらすごく炎上しそうな見出し。上述のとおり、機能が少ないためだ。ただ、頻繁に行うことがやりやすい、通知機能が使えるなどの理由で、クライアントを使う価値はある。

今使っているクライアントの特徴

というわけで、見聞したクライアントをいくつか試した。とりあえず今使っているついったークライアントとその感想(括弧内は使っているOS。必ずしもそのOSでしか動かないわけではない)。

twitte.rb (Ubuntu)
CHIの参考にしたクライアント。Rubyで書かれてる。つぶやき、RT、メンション、DM、ふぁぼができる。新規タブを作って、簡単なフィルタでつぶやきを分類できる。
HTTPリクエスト中に(ry)というのはこれのこと。最近Ubuntuを使う時はあまりついったーをしていないのでそんなに使ってない。Linux用ももっと良い物があると思う。

YoruFukurou (Mac)
Mac専用であまり知名度は高くないみたいだけどMacでは一番使われている(気がする)。
twitte.rbの機能に加えて、ふぁぼったものの確認、公式RT、twitter検索タブの作成、TLからつぶやきのインクリメンタルサーチ、特定アカウントのプロフィールの確認、画像のクイックプレビュー、特定のツイートの親ツイートの探索、などができる。高機能な割には直感的に使える。PC用クライアントはつめが甘いものが多いが、このクライアントは極めてマシ。レビューしてるわけじゃないけどおすすめ。

twitbird Premium (iPhone)
有料ソフト(無料の時に落としたけど)。お金取っている分なかなか出来は良い。
YoruFukurouにある「インクリメンタルサーチ」「公式RT」は無いが、フォロー・リムーブ、公式リスト、ユーザ検索など、ブラウザとの切り替えが煩わしいせいか、多くのPCクライアントにない機能が実装されている※。アカウントを2つまで登録可能。Proは6つくらいいけるらしい。
※iPhone用クライアントでは別に珍しいことではないんだけれど

これだけ機能があればそれほど問題が無いようにも思えるが、実際に使うと様々不満は出る。まず、機能が豊富そうな夜フクロウだが、アカウント管理のあたりが非常に弱い。フォローするだけでブラウザのお世話になるハメになる(そのため、twitter.comをブラウザで開くボタンが画面の一番左上にある)。はっきり言って煩わしい。一方twitter birdはいちいちブラウザを立ち上げる必要もなく、相手の情報をほぼ全て見ることが出来る。

どのクライアントも込み入ったことは全てWebに任せているし、何より「ついったーをチャットとして使うため」の機能がいまひとつ整っていない。そんな用途で使わないという人も多いだろうけど、単純なサービスなのでいろんな使い方があるから、それに耐えうる物を作りたい。今の状態は「ついったー中毒になったと思っていたら、このクライアント中毒になっていた」ように見受けられる。

具体的にどうしたいの?

1、初心者でも使える
はっきりいって、操作が煩わしいものが多い。いつもデザインする時には心がけているが、見ただけで不安になるようなUIは、初心者はおろかあるクライアントに慣れた上級者もアレルギー反応を起こす。

2、情報がすべてユーザに見える
せっかくついったーが提供してくれている情報を使わない手はない。全て表示するのはやりすぎだが、ユーザが望むならアクセスできたほうがいいし、できないものがあれば後発のクライアントに機能面で容易に追い越される。

3、情報を活用できる
この間、ある特定のことをつぶやいたのが何時だったか思い出せなかったのだが、それを検索する手段が無かった。このように、せっかく膨大なデータを持っているにも関わらず、そのデータを活用できないことが多い。今、多くのついったーの2次Webサービスができてきているが、クライアントソフトならではの機能というものもあるはずだ。

4、クライアントにならない
本来の意味ではないが、ついったーに於けるクライアントは「頻繁に行うことを楽にする」ものになっている感がある(それを想定しているのかもしれない)。一方で私は全機能をカバーしたいと思っているので、クライアントではなくブラウザを作ることにしたい(例えば2chブラウザは全ての2chの機能を利用できるようだが、そういう感じ)。

今回はこのあたりで止めておく。まだ見せられる段階に来ていないのでスクリーンショットなどは見せられない。UIなども今考え中なので、できてきたら随時ブログに書いていく。
とはいっても、また書くのをサボるかもしれない。コードを書けばブログを書いてくれるBOTがあればいいのに(笑)

まとめ
・ついったークライアントだらしないね。
・歪みない“ブラウザ”をつくろう。
・不便を感じたら口より先に手が動くのは仕方ないね。