Textforce Ver1.0をリリースしました

Dropbox, ATOK Padと連携するテキストエディタ、Textforceをリリースしました。


アプリの詳細な機能、使い方についてはマニュアルをどうぞ。
ダウンロードはこちらから:Textforce


Textforceの開発にあたって何人かの方にご協力いただきました。アイコンなどのグラフィックスデザインは domo Todo+に引き続き、Ho_lyさんに協力していただきました。Ho_lyさん、ありがとうございました。また、ベータ版を試してみていただいてご意見・フィードバックをいただいた皆さん、ありがとうございました。


アプリの特徴や開発裏話について、hiro45jpさんが記事を書いてくれています。hiro45jpさん作の Safariと Textforceを連携できるBookmarkletも公開していただいています。
http://iphone-diary.com/?p=7923


記事中にもありますが、hiro45jpさんには仕様面でさまざまなアドバイスを頂きました。ATOK連携にしても Bookmarklet連携にしても彼とのやり取りからできた機能です。ATOK Pad連携を 1タップで起動できるようにするなど、利用者の視点で使いやすくなる方向に誘導してくれました。
アプリの開発に集中しているとどうしても利用者の立場を忘れがちです。そこを hiro45jpさんが上手に補正してくれました。それも単に使いやすくするにはどうしたらいいかだけでなく、アプリ開発者の側に歩み寄ってアプリとしてのコンセプトや柔軟性まで考慮してくれながら。。アプリ利用者の立場とアプリ開発者の立場と両方を理解されている彼だからこそできたことですね。
それにしても、hiro45jpさんとのやり取りの過程はエキサイティングでした。オンラインで、しかも真夜中のやり取りにも関わらず、交わしたアイデアがコードとなって動いていく。。目の前にはいないのに、一緒にモノづくりしている感覚がある、本当に楽しい時間でした。hiro45jpさん、ラブ!


最後に次バージョンについてです。次はディレクトリ作成、リネームを優先して実装する計画です。少しずつですが、継続的に、改善・改良していければと思います。

domo Todo+ Ver.4.1 Retinaディスプレイ対応

domo Todo+ Ver.4.1をリリース

domo Todo+ のダウンロードはこちらから

Retinaディスプレイ に対応した Ver.4.1をリリースしました。この他にいくつかのバグフィックスをしています。


注意: 一部のアイコンデータの位置が中心からずれて表示される場合があります。次回のバージョンアップで調整する予定です。

iOS4 アプリケーションの状態遷移

※7/1: キーとなる状態と遷移の説明を追記しました。


iOS4 からアプリケーションのマルチタスク動作が可能になりました。これに伴い、iOS4 ではアプリケーションに新しい状態やイベントが追加されています。ここでは、iPhoneAppProgrammingGuide 4.0 2010-06-04 版 [1] を元にして、新しいアプリケーションの状態遷移をまとめてみます。(まだ、理解しきれていない部分もありますが、自分の理解のまとめという意味でひとまず)


注意:ここで言うアプリケーションの「状態」とは、UIApplicationStateが表す状態や、[1] の P29 Table 2-3にある Application statesとイコールではありません。Launchingや Terminating、Active, Inactive状態のスーパー状態としての Foreground状態など、iOS4で追加されたイベントや仕様を理解しやすくなるように拡張したものです。



図1 iOS4のアプリケーションの状態遷移


図1は iOS4のアプリケーションの状態遷移を表しています。図は UMLで記載しています。遷移アクションの willXXX, entryアクションおよび exitアクションの didXXXは UIApplicationDelegate で定義される delegateメソッドです。アプリケーションはこれらの delegateメソッドを定義することで状態の変化を検知できます。


以下は状態の一覧です。

State 概要
Launching アプリケーションの起動状態。初回の起動後は Foreground状態に遷移する。VoIPのようにバックグラウンド処理のために iOSから起動された場合は Background状態に遷移する。
Active 画面のタッチイベントなどユーザ操作を受信し処理可能な状態
Inactive 着信やSMS受信などシステムからの割り込みがあるとこの状態に遷移する。アプリケーションは動作可能だがタッチイベントなどの受信はできない。
Executing バックグランドタスクを実行している状態。タスクを完了すると Suspendedに遷移する。何もタスクがない場合は即座に Suspendedに遷移する。
Suspended 休止状態。この状態のアプリは何も処理を行っていないが、アプリが使用しているメモリは保存されており、アプリを再起動すればすぐに復帰できる。ただし、システム全体のメモリが不足すると、事前通知なく自動的に killされる
Terminating アプリケーションの終了状態。従来の iOS3のようにマルチタスク動作しない場合にのみこの状態に遷移する。


図のうち、Background状態と Background状態を出入りするイベントを取り除くと従来の iOS3におけるアプリケーションの状態遷移になります。つまり、Background状態とそれに関連する状態遷移がマルチタスク動作のキーということになります。次にこれらキーポイントについて見ていきます。

Foreground状態から Background状態へ

iOS3においては Foreground状態からの遷移とはアプリケーションの終了を意味します。この場合、アプリケーションは図1 の Terminating状態に遷移し、一般的なアプリケーションは willTerminateアクションにより終了を検知し、データ保存などの後処理を行ないます。

iOS4においてマルチタスクに対応したアプリケーションは、Foreground状態から Background状態に遷移します。この場合、willTerminateメッセージが通知されることはありません。willTerminateで行っていた後処理は、didEnterBackgroundアクションのようなSuspended状態に遷移するよりも前のタイミングで処理します。Suspended状態に遷移するとアプリケーションは一切の処理を実行できなくなり、メモリ不足になると通知されることなくアプリケーションが終了してしまうためです。

Background状態から Foreground状態へ

アプリケーションが利用するメモリや UIオブジェクトは Background状態である間も保持されます。このため、単純に元の Foreground状態に戻すだけであれば、アプリケーションは何もする必要がありません。画面やメモリは Background状態に移行する前のものにそのまま復元されます。

しかし、多くのアプリケーションにとってはこのような単純な復元では不十分です。アプリケーションがBackground状態である間に、iOSシステムやユーザの設定、クラウドサービスの状態は刻々と変化します。たとえば、多言語対応したアプリケーションであれば Foreground状態に復帰したタイミングで言語環境の設定が変更されていないかを監視し新しい言語で画面をアップデートすべきです。位置情報を利用するアプリケーションやクラウドサービスのクライアント・アプリケーションも同様に、最新の状態に追従することを求められるでしょう。

Background状態のサブ状態とバックグラウンド処理

Background状態では、まずバックグラウンド処理を実行する Executing状態となり、処理が完了すると Suspended状態に遷移します。バックグラウンド処理が何もなければすぐに Suspended状態に遷移します。
バックグラウンド処理を行うには、バックグラウンド処理の開始と終了をアプリケーションからシステムに明示的に宣言する必要があります。この宣言がないと、何か実行中の処理があったとしても強制的に Suspended状態に移行されてしまいます。beginBackgroundTaskWithExpirationHandler:メッセージがバックグラウンド処理の開始を、endBackgroundTask:メッセージが終了を表します(メソッドの詳細は Programming Guideを参照)。iOSではバッテリー消費や CPU負荷を軽減するため、バックグラウンド処理可能な時間には、10分という制約があります。endBackgroundTask:メッセージがなくても、この規定時間を超えたアプリケーションは例外ハンドラがコールされたあと Suspended状態に移行します。(強制終了される?)


以上、iOS4におけるアプリケーション状態遷移のまとめでした。

domo Todo+ Ver.4.0 iOS4対応

domo Todo+ Ver.4.0をリリース

domo Todo+ のダウンロードはこちらから

iOS4 に対応した Ver.4.0をリリースしました。マルチタスクの他にも iOS4で追加されたローカル通知機能に対応しています。


以下が新機能の一覧です。
1. 高速アプリ切替
2. バックグラウンド同期
3. アイコンバッジの自動更新
4. 残タスク数を毎日リマインド通知
5. タスクのリマインダー設定にローカル通知を追加


1. iOS4から追加された機能で、アプリ間の切り替えやアプリの再立ち上げが高速になります。iPhone 3GS以降でのみ利用できる機能です。


2. Google Calendarとの同期処理をバックグラウンドで実行する機能です。同期中に別アプリに切り替えても、同期処理は中断されず継続されます。こちらもiPhone 3GS以降でのみ利用できる機能です。


3. domo Todo+のアイコンバッジは、期日切れ/今日が期日/soon設定されたタスクの数を表しています。この値は毎日自動更新します。iOS3までのプッシュ通知と違い、iPhoneがオフラインでも更新できます。


4. 残タスクの数を毎日、指定した時刻に通知します。


リマインド機能はアプリ内の設定画面から設定できます。(設定項目は iOS4でのみ表示されます)


リマインド時間は 3種類設定できます。通知サウンドのオン/オフは、設定項目のSound Effectと連動します。


5. タスクごとのリマインダー設定にローカル通知を追加しました。従来は SMS/E-Mail/Alert(iPhone標準カレンダーのポップアップ通知)の三つのみでしたが、このバージョンから ローカル通知を選択できます。この機能は iOS4以降で有効です。


以上、Ver.4.0で追加した新機能の紹介でした。iOS4の仕様、制約などでいくつか制限事項などありますが、それらについては別途、紹介したいと思います。

domo Todo+ Ver.3.2 & 雑誌掲載情報

domo Todo+ Ver.3.2リリース

domo Todo+ Ver.3.2をリリースしました。


今回のバージョンではグラフィックスデザインの見直しとして、タグ一覧やカレンダーのグラデーション化などを行っています。デザイン変更はデザイナーのHo_lyさんにお願いしました。また、見直しに当たって @KAZUGIMI さんにいろいろとアドバイスを頂きました。ありがとうございました!この他に効果音を追加しています。
機能面では、タスク編集画面のメモ中のURLリンクを Safariで開くかアプリ内ブラウザで開くか選択できる設定を追加しました。また、メイン画面のナビゲーションバーアイコンの配置を逆転する設定を追加しました。この設定を有効にするとタスク追加ボタンが右端に来るので右手で操作しやすくなるかと思います。

雑誌掲載情報

domo Todo+をいくつかの雑誌で取り上げていただきました。ありがとうございます m(_ _)m

  • ・『ファミ通 』2010/4/1号で、@donpyさんのベスト iPhoneアプリ記事で取り上げていただきました。ありがとうございました!
  • ・『日経ビジネスアソシエ』 2010/04/20号の「iPhoneを"スーパー文具"に」の記事で取り上げていただきました。
  • ・発売中のムック、『ファミ通iPhone』の達人に聞くの記事で取り上げていただきました。

domo Todo+ 期間限定セール

早いもので domo Todoのリリースからもうすぐ一年経ちます。リリース一周年を記念して、domo Todo+初となるセールを実施します。
ただいまから 4/2までの間、230円にプライスダウンです。期間限定ですので購入を迷われていた方はご検討ください。