かみやんの技術者ブログ

主にプログラムの話です

ibisMail ver.2.2.0 2大新機能!

2010/8/6(金):ibisMail for iPhoneのver.2.2.0の承認依頼をAppleへ出しました〜。2大新機能を紹介します。
2010/8/13(金)Appleにリジェクトされました。くやしい。詳しく話すことができるときが来たら説明します。

1.iOS4のマルチタスキングを用いたプッシュとフェッチ対応

ついにiOS4のマルチタスキングを利用して、念願のプッシュとフェッチに対応しました!Appleよありがとう!!!AppleiOS4でマルチタスキング対応を発表したとき、心が躍りました。ついに来た! なんせibisMail ver.1.0を出した1年半前、iOSはver.2.2だったのですが、リリースしたときから、「プッシュやフェッチに対応してないからApple製メールから乗り換えられない」というユーザからの問い合わせがずっとあり、iOS3でAppleがプッシュ通知サービスに対応したため、「ibisMailはプッシュに対応しないのか?いつ対応するのか?」とユーザからの問い合わせがあり、非常に辛かった。前にも少し書いたが、iOS3のプッシュ通知サービスで、メールのプッシュに対応できなかった理由は、下記の理由からです。

  • iOS3のプッシュ通知サービスは、アイビス側でサーバを立てなければならず、売り切りでアプリを売っている以上、継続的にサーバを維持することがコスト的にできない。また、プッシュの利用料が追加で月額115円とかしても、利用者数が少なく開発コストに合わない
  • メールの新着をプッシュするには、メールサーバにあるメール一覧情報と、iPhone側に受信済みとなっているメール一覧をつき合わせ、差分があったときに新着とみなす必要があり、iPhone側のメール一覧情報を確実にサーバにつたえることが困難であること
  • アイビスでプッシュサーバを立てたとしても、そのプッシュサーバは、ユーザのメールサーバにログインする必要があり、メールアカウントのIDとパスワードを預かる必要があり、ユーザは不安になり使えない。また、アイビスの立てたプッシュサーバが相手メールサーバ(会社のメールサーバなど)からIP拒否等される可能性もある。
  • プッシュサーバの実現方法としては、メールサーバの設定でフォワード設定をして、プッシュサーバにメールを転送することで、プッシュさせることもできるが、メールサーバでフォワード設定できないメールサービス(会社のメールサーバなど)の人が多い。また、メールの中身がそのままプッシュサーバに届くので、やはりユーザはセキュリティ的に不安である

などの理由で、iOS3のプッシュ通知サービスはメールのプッシュには不向きであった。iOS3が出てから今までずっと、サポートに「プッシュはいつ対応するのか?」という問い合わせに、謝り続けていた。

だからiOS4の発表には心が躍った。AppleからiOS4のベータ版配布が始まってからAppleのドキュメントを読みまくって、実験プログラムを書きまくって、どの技術の組み合わせなら実現可能か落としこんでいった。iOS4のマルチタスキングはAndroidWindowsCEよりもずっと制限が厳しく、それはAppleがフォアグラウンドアプリ(画面上の表にあるアプリ)の動作が重くならないよう細心の注意がはらわれた設計であり、とにかくバックグラウンドプロセスのCPU時間の利用が厳しく、なかなかCPU時間をもらえなかった。プログラマには、何度も無理を言ってぎりぎり実装できた形だ。結果的にはVoIPモードを使って実装した。中にはOSへ返答する応答が100msではOSにプロセスを殺されてしまい、10ms以下になるように高速化したり、技術的にはかなり無茶をして実現させた。

プッシュ対応の仕様

という訳で、ibisMailのプッシュとフェッチの仕様としてちょっとだけ制限があります。まず、プッシュですが、これは新着メールがあることに気付くとiOS4の新機能のローカル通知でテキストメッセージやサウンド等でお知らせする機能ですが、IMAPサーバがIDLEコマンドに対応している必要があります。IDLEコマンドはIMAPの基本コマンドにはないのですが、拡張コマンドとして仕様があります。GmailMobileMe、 AOL等はIDLEコマンドに対応しています。残念ながらi.softbank.jpは対応していません。ソフトバンクさんが、i.softbank.jpもIDLEコマンドに対応してくれることを期待したいです。i.softbank.jpは、OS付属のプッシュ通知があるので、そちらを使ってください。また、IMAPではプッシュ通知は来るもののibisMailがバックグラウンドのまま受信しておく(フェッチ)ことはOSの制限が厳しく実現できませんでした。また、ibisMailをフォアグラウンドにしてから受信となるため、ibisMail側で振分をしている場合、一旦、受信箱に届いたあと、別のフォルダに振り分けている場合、その別のフォルダのときは、プッシュ通知して欲しくない場合でもプッシュ通知されてしまいます。逆に、Gmailのようにサーバ側(Web上から振分け設定)で振分をしている場合は、受信箱に新着がある場合にのみプッシュ通知されるため、別のフォルダに新着が届いたときにプッシュして欲しい場合でもプッシュ通知は来ません。これもOSの制限のため、なかなか実現が難しくあきらめました。また、POPではプロトコル上プッシュ用のコマンドがないためibisMailでのプッシュは非対応です(OS付属のメールもフェッチのみです)。

フェッチ対応の仕様

フェッチは、ibisMailがバックグラウンドでも定期受信をするものです。こちらはPOPのみの対応です。こちらもプッシュ同様に、新着があるとiOS4の新機能のローカル通知で、テキストメッセージやサウンド等でユーザにお知らせします。こちらは受信処理が行われるため、ibisMailをフォアグラウンドにしたときに受信済みとなっています。また、振分処理も行われた後となるため、振分け設定でゴミ箱とかに振り分けたスパムメールが届いただけでテキストメッセージやサウンドで通知されることはありません。具体的には、フォルダの設定で、未読の表示がONのフォルダに新着メールが来たときに、ユーザに通知します。なお設定で、フェッチのOFF(手動)と、10分間隔〜12時間間隔が選べます。フェッチは通信処理が定期的に入るためバッテリーの減りを気にする方は長めにしたりOFFにしてください。

2.添付を他のアプリで開く

iOS4の新機能で、「他のアプリで開く(Open In機能)」というのがあります。今までアプリ間でデータをやり取りできるデータは、フォトライブラリ経由で画像のやりとりとテキストや画像のコピー&ペーストぐらいでした。iOS4では、MIME-TYPEやファイルの拡張子を用いて、「このデータに興味がある人、手を挙げて〜」みたいな形でアプリ間連携ができるようになりました。上のスクリーンショットは、ibisMailの添付ファイル閲覧画面で「他のアプリで開く」ボタンを押したところです。
これにより、例えば、「よし!今からお客様のところへ移動しよう、移動中に書類を読んでおこう」という場合に、PCから自分宛に書類を添付してメールをしておいて、ibisMailで受信して、Good Readerなどのファイル閲覧アプリ系でゆっくり読む。という使い方ができます。現状、他のアプリのファイルを開くことができるアプリは、Good ReaderやiBooksなど少数ですが、いずれi文庫などの電子書籍ビューア系やDropboxやNドライブなどのクラウドストレージ系も対応してくれるでしょう。まもなく、出先でメールを受信して、添付ファイルをDropboxのフォルダに保存できるように、なると思うと楽しみです。
また、ibisMailの添付ファイルビューアは、Word, Excel, Power Point, PDF, TXT, HTML, JPG, GIF, PNG, TIFF, ZIPあたりですが、それ以外のファイルが添付されていた場合も、「他のアプリで開く」機能が使えるので、ibisMailで見れない添付が他のアプリでみれるようになるでしょう(現在は、この他のアプリのファイルを開くことができるアプリが少ない)。

という訳で、ver.2.2.0のAppleへの申請は2010/8/6に行ったので、問題がなければ1週間ほどでAppleから承認されるのではないかと思います。2010/08/13 追記Appleからリジェクトされました。残念。

URL:ibisMailのダウンロード、レビューはこちら

ver.2.2.0の更新履歴詳細

<新機能・改善>

  • POPのフェッチ受信機能追加(iPhone3G端末は除く)。
  • IDLEコマンド対応のIMAPサーバのプッシュ通知機能追加(iPhone3G端末は除く)。ただし、i.softbank.jpなどのIDLEコマンドに対応していないIMAPサーバは非対応。
  • 添付ファイルを他のアプリで開く機能を追加機能を追加。
  • 対応していない添付ファイルでも他のアプリで開く動作ができるように改善。
  • 本文編集画面から新規メッセージ作成画面へ戻った際にキーボードを消すように改善。
  • 各通知の種類を「テキストメッセージとサウンド」、「テキストメッセージ」、「サウンド」、「なし」の4種類に変更。
  • 起動時パスワードを設定している場合、パスワード入力画面が表示される直前に先回表示されていた内容が表示されないように改善。

<不具合修正>

  • 重複する振り分け条件が3つ以上存在した場合にアプリが終了してしまう不具合の修正。
  • メールの"返信"、"全員に返信"、"転送"、"新しく編集"の処理において、ToやCcにアドレスが正しく設定されない不具合の修正。
  • メールの送信や受信で扱うメールアドレスの名前に、 カンマや<>などの特殊文字が存在した場合に発生する不具合の修正。
  • 一部のIMAPサーバで送信されたメールが、送信済みフォルダに残らない不具合を修正。
  • 起動時にアプリが終了してしまう不具合の修正。
  • メールデータの末尾に「.」のデータが存在しないメールの本文が表示されない不具合の修正。
  • メッセージ最大数制限を超えているフォルダ内のメッセージ本文画面表示時に受信した際に、ナビゲーションバーの表示状態が更新されない不具合を修正。
  • ZIPファイル閲覧画面でファイル名のエンコード選択部品がずれて表示されていた不具合の修正。