ajaxなウェブメールを作る #2
前回触れて以来 放置していたajaxなウェブメールですが、約束どおり サンプルを公開します 。guest/guestでログインして下さい。
といっても、まだ全然完成ではないです。現状どんな感じかを箇条書きにしてみます。
- IMAPでメールサーバと通信します。
- 画面左はフォルダ表示。フォルダをクリックすることで開いたり閉じたりできます。
- 画面右上サマリのページ切り替えは← →キーで行います。→で次へ、←で前へ。2ページ分先読みしていますので、先読みが完了していれば、瞬時に切り替わりますが、先読みが追いついていないと、ちょっと待たされます。
- subjectクリックでメッセージ表示。単にIMAPで取得したものをそのまま表示してるだけですので、Base64エンコードされているものは、エンコードされたまま表示されます。日本語以外のマルチバイト文字はたぶん表示されないでしょう。
- ajaxなのでメッセージも先読みすべきなんでしょうが、まだ未実装です。これから。
- フォルダペインとサマリペインの適当なところをクリックすると、各ペインがフォーカスされます。(枠がグレーでハイライトされます。)といっても、現状は何も意味がありません。今後すべてキーボードで操作できる様にしたいと思っているのですが、そのためには操作対象がフォルダなのかサマリなのかを明確にする必要があるため、そのための布石です。
- emacsと同様にCtrl + x, oでフォーカスの移動ができます。Wanderlustライクな操作性目指してます。
- spaceキーでメッセージをスクロール、backspaceで逆スクロールします。
- まともなエラーハンドリングをしてませんので、Server Errorが出ることがよくあります。
基本的にウェブメールに感じるストレスは、「レスポンス」と「操作性」に大別できるかと思うのですが、俺が目指すのは「操作性」に関するストレスの軽減です。レスポンスはウェブメールである以上、ある程度はしかたないかな、と。といっても、レスポンスを全く考慮していないわけじゃなく、サマリやメッセージの先読みでレスポンス向上も目指してますが、「どこまで先読みすべきか」という判断が難しいと思います。IMAPサーバ上にあるメールを全部先読みしてしまえば、レスポンスは最速になりますが、現実的ではないですしね。ですので、レスポンスについてはあまり追求せずに、ある程度のところで妥協する様な感じになるかと。
Javascriptがローカルファイルのread/writeに対応していれば、サマリ情報をすべてローカルにキャッシュすることで、かなりのレスポンス向上が見込めるんですけどねぇ。
あと、IMAPなので、CGIベースだとアクセスするたびにIMAPコネクションを張りなおすので、このあたりも何とかしたいですね。