【iPhoneアプリ】 「録音アラーム_国際版」がテレビで紹介されました!
なんと「録音アラーム_国際版」がTBS「王様のブランチ」で紹介されました。
放送を見ていなかったので今日知ったのですが、確かに放送終了後ダウンロード数が増加してました。
興味を持っていただき、感謝いたします。
■10月29日放送 11:59 - 14:00 TBS
王様のブランチ アプリサーチ
目覚ましに最適なiPhoneアプリ、録音アラーム_国際版を紹介。
アラームにしたい声を、最長29秒まで録音可能で、お母さんや恋人の声で起きることができる。
放送を見ていなかったので今日知ったのですが、確かに放送終了後ダウンロード数が増加してました。
興味を持っていただき、感謝いたします。
■10月29日放送 11:59 - 14:00 TBS
王様のブランチ アプリサーチ
目覚ましに最適なiPhoneアプリ、録音アラーム_国際版を紹介。
アラームにしたい声を、最長29秒まで録音可能で、お母さんや恋人の声で起きることができる。
tag : 携帯アプリ開発
【iPhoneアプリ】 録音deスケジュール リリースのお知らせ
2011年6月29日AppStoreにて、
日本向け:「録音deスケジュール(録スケ)」
海外向け:「暦(koyomi)」
の提供を、開始しました。
■「録音deスケジュール(録スケ)」概要
「録音アラーム」のビジネス機能強化版として、従来の機能に加え、オリジナルのカレンダーにアラームを設定できます。
◇主な機能
○録音メモ機能:
・日単位で、独立した録音メモ機能を提供します。カレンダーでその日をクリックすれば、確認もラクラクです。スケジュール作成して、編集画面で録音メモを追加できます。録音時間は29秒まで可能で、個数無制限で作成できます。
○スケジュール機能:
・標準のスケジュール機能を揃え、すべての機能を一画面にまとめることで、より使いやすくなっています。
・カレンダーに立体感のある動きを与え、利用する感動をプラスしました。また、当日ボタンを用意し、カレンダーへのアクセスを簡単にしました。
・暦法は西暦、和暦、仏教歴に対応しており、環境設定を変更してもズレが生じません。
○録音とスケジュールの管理機能:
・確認画面で設定情報の確認と削除、タイトル編集、録音内容の確認が簡単に行えます。
・設定画面で自動削除の設定、もしくは一括削除を行なうことで、録音メモ、スケジュールを一件ずつ削除する手間を省きます。
○アラーム機能:
・アラームを有効すれば、スケジュールに設定した時間にアラームで知らせます。
・アラームに「毎日、毎週、毎月、毎年」で繰り返し設定ができます。
・メイン画面で、繰り返し有効のスケジュールをワンボタンで一覧を確認できます。
・通知時刻(〜分前)を設定すれば、スケジュールを事前に知らせることもできます。
・録音をアラーム音声として設定できます。マルチタスク機能に完全対応しているので、アプリを閉じても利用できます。
日本語版:


英語版: 中国語版:

今後は壁紙や音声をプリインストールしたファン向けアプリとしての活用も進めていく予定です。
日本向け:「録音deスケジュール(録スケ)」
海外向け:「暦(koyomi)」
の提供を、開始しました。
■「録音deスケジュール(録スケ)」概要
「録音アラーム」のビジネス機能強化版として、従来の機能に加え、オリジナルのカレンダーにアラームを設定できます。
◇主な機能
○録音メモ機能:
・日単位で、独立した録音メモ機能を提供します。カレンダーでその日をクリックすれば、確認もラクラクです。スケジュール作成して、編集画面で録音メモを追加できます。録音時間は29秒まで可能で、個数無制限で作成できます。
○スケジュール機能:
・標準のスケジュール機能を揃え、すべての機能を一画面にまとめることで、より使いやすくなっています。
・カレンダーに立体感のある動きを与え、利用する感動をプラスしました。また、当日ボタンを用意し、カレンダーへのアクセスを簡単にしました。
・暦法は西暦、和暦、仏教歴に対応しており、環境設定を変更してもズレが生じません。
○録音とスケジュールの管理機能:
・確認画面で設定情報の確認と削除、タイトル編集、録音内容の確認が簡単に行えます。
・設定画面で自動削除の設定、もしくは一括削除を行なうことで、録音メモ、スケジュールを一件ずつ削除する手間を省きます。
○アラーム機能:
・アラームを有効すれば、スケジュールに設定した時間にアラームで知らせます。
・アラームに「毎日、毎週、毎月、毎年」で繰り返し設定ができます。
・メイン画面で、繰り返し有効のスケジュールをワンボタンで一覧を確認できます。
・通知時刻(〜分前)を設定すれば、スケジュールを事前に知らせることもできます。
・録音をアラーム音声として設定できます。マルチタスク機能に完全対応しているので、アプリを閉じても利用できます。
日本語版:


英語版: 中国語版:

今後は壁紙や音声をプリインストールしたファン向けアプリとしての活用も進めていく予定です。
iOSマルチタスクのローカル通知機能を利用して、アラームアプリのスヌーズ機能実現

iOSマルチタスク機能を利用すれば、アプリを閉じても裏で動いてくれて、アラームを簡単に作れるじゃないかと思う方が多いかもしれません。「録音アラーム」を製作前の私もそう思いました。実は、iOSのマルチタスク機能では、アプリが本当に裏で動いているわけではありません。動いているように見せかけるため、iOSから提供されている八つのサービスを利用しているだけの話です。今回の「録音アラーム」はそのサービス中のひとつ「ローカル通知」を利用しました。Apple社から提供されたマニアル「Local および Push Notification プログラミングガイド」を読めば、だいだいのやり方がわかると思います。でも、そのまま利用しても貧弱な機能しか作れません。ここでは、ローカル通知の「貧弱」な機能を利用して、どうやってスヌーズ機能を実現したのかを説明してみます。
1、ローカル通知の設定
A、設定の基本
ローカル通知の設定は大抵一回のみが多いです。アラームにとってはまだまだ物足りないです。「録音アラーム」では、多くのスケジュールを合わせるため、曜日ごとで設定時間を算出し、週単位で繰り返して設定を行いました。
localNotif.fireDate = 曜日ごとで算出した設定時間;
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.repeatCalendar = [NSCalendar currentCalendar];
localNotif.repeatInterval = NSWeekCalendarUnit;
「fireDate」には、指定した時刻を曜日ごとに日付付きの時間を一週間分を算出したものを設定します。
B、スヌーズの実装
スヌーズといえば、アラームを一時止めても鳴り続けるという機能です。規定された止める方法でやらないと永遠につづく… いや、それはちょっと過言ですね。基本的に、スヌーズのオン・オフ、間隔時間の設定、停止アクションの設定ができればいいと思って、今回の「録音アラーム」のスヌーズ仕様を決めました。まずは、スヌーズ解除で停止させるまで鳴り続けるようにするため、一日一回実行するアラームを一日数回に変更しました。ここで最初の問題にぶつかりました。ローカル通知で連続実行して設定できる回数は六十数回の制限があり、制限回数を超えた場合、最初に設定した分から無効になる仕様になっています。それに合わせて、今回のスヌーズの仕様はスヌーズ最大時間範囲を40分、間隔は5〜30分に規定しました。そうすると、一回の連続設定の最大回数は56回(一日8回で一週間分)になりました。次は、停止アクションには、ローカル通知の通知メッセージよりアプリを起動する仕組みを利用しました。
localNotif.hasAction = YES;
localNotif.alertAction = @"Stop";
上記のように設定すれば、表示されたローカル通知のメッセージボックスの右ボタンから、アプリを起動できます。(起動後の仕様は次の「ローカル通知の受け取る」に説明します)アプリを起動すれば、事前に用意したスヌーズ止める処理を呼び出せば完成です。
C、設定処理の重み
ここまで意外に簡単にできちゃいましたが、ここから本当の試練が待っていました。最初にぶつかった問題はローカル通知設定処理の“重さ”です。数回ぐらいのローカル通知設定処理ならほとんど“重さ”が感じなく、すぐ終わるイメージがありましたが。実は、スヌーズ設定での連続設定の最大回数は56回(一日8回で、一週間分)になり、プラスローカル通知の解除処理を同時に行なうと最大112回の設定処理を繰り返すことになります。今回iPhone3GSでの実機テストでは、一回設定更新するだけで十数秒をかかってしまいました。アプリとして使うには“イライラ”してしまいますね。
C-1 対策1
まず、ローカル通知の設定は、アラーム単位(週単位)から曜日単位へ設定変更しました。これは、起動時のアラーム解除・設定に非常に有効です。もともとアラームを一週間分まとめて設定している箇所を曜日単位にすると、毎日に繰り返すアラームの場合は、七分の一の処理時間で済むわけですね。具体的な実装方法は、ローカル通知の「userInfo」に識別情報プラス曜日情報を設定します。スヌーズ解除処理に入る際、該当曜日の分だけを解除、設定すればいいですね。
C-2 対策2
ローカル通知の設定処理にスレッド分散処理を利用しました。Objective-Cでスレッドを利用できるんだっけ(?)と疑問を持つ人がいるかもしれませんが、言語仕様上問題ないようです。iPhone4まではCPUがツーコアに対応していないので、複数スレッドを実行すると、全体的に固まったように見える可能性があります。スレッドを使用すれば、確実に軽くなりますので、おすすめです。実装は簡単で、以下のようになります。
[NSThread detachNewThreadSelector:《SEL》 toTarget:ターゲット withObject:引数];
《SEL》 → スレッドで実行するメソッドを示すメッセージセレクタ
ターゲット → 対象となるオブジェクト
引数 → メッセージセレクタに受け渡す引数の値

ここで利用したスレッドの方式は「デタッチ」となりますので、スレッド処理が終了後に親スレッドと合流せず、自動的に消滅します。そのため、戻り値がないので、その終了タイミングを測って、画面処理(切替など)する場合は注意してください。理由は、ターゲットとなるオブジェクトが新規スレッドが終了する前に解放されると、メモリアクセスエラーで落ちてしまうためです。ここの実装が一番大変かもしれません。また、実行先のメソッドに「自動解放プール」の用意をしなければなりません。実装は以下のように
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//do something
[pool release];
D、設定のタイミング
前述のように、ローカル通知の複数同時設定処理は、頻繁に実行しないほうが良いですね。「録音アラーム」では、起動中でもアラームを鳴らす仕様であり、アラームの更新処理が重くなっても、リアルタイムでアラーム設定処理は必須条件です。そのため、使用者に“重さ”を感じさせないため、上記の対策以外に実行するタイミングにも工夫しました。
D-1 アラーム編集後の設定
まず、アラームのローカル通知反映処理は「アラームリスト画面」のアラーム設定スイッチのオン・オフ処理と「アラーム編集画面」の保存処理の二箇所に絞りました。ここで、アラーム単位(週単位)で設定を行なうため、画面操作とDB更新と別のスレッドでアラーム設定処理を行いました。さらに、更新中固まった画面を表示するのは良くないので、処理が終わるまで別のアラームの更新、画面の切替をできないように制御しました。スレッド処理のおかげで、以前十数秒も要る更新処理は数秒で完了できるようになりました。この結果ついて、自分はある程度満足していますが、ユーザーは満足するでしょうか…
D-2 アラームのスヌーズ機能より起動する場合のローカル通知の設定
ここではちょっと複雑になりました。その更新場所は全部で四箇所です。
まず、アプリ起動後に停止アクション処理が入り、メッセージが二度出てくるのは親切ではないですし、停止アクション後のアラーム設定処理を軽くする(アラームの解除設定処理の省略)理由で、スヌーズ処理に入る前に一旦ローカル通知の解除処理を行います。曜日単位でローカル通知を解除し、同時にスレッド処理を適用することで、まったくストレスを感じることなく、画面をスムーズに切り替えれらるようになりました。
停止アクションでスヌーズを解除した後、上記で解除したローカル通知を設定しなおします。スヌーズ停止アクションを二つ用意したので、二箇所になります。
ここで問題が発生です。もし停止アクションを解除中に諦めた場合にどうするか、アラームが鳴ったことを気づかずに放っておいた場合はどうするかという問題です。
今回の「録音アラーム」では、停止アクションを解除中にホームボタンを押した場合、そのタイミングに合わせて、終了処理にその日のスヌーズを設定しなおす仕様にしました。さらに、アプリの終了処理にスレッド処理と併用して、ローカル通知設定処理が終了するまで実行するように設定したので(マルチタスク)、ストレスを感じません。これで本当にスヌーズアクションを解けないと永遠に終わらないだろう(笑)。それは嘘です。なぜかというと、次の話を聞けばわかります。放っておいたスヌーズに関しては、アラーム起動してから一定の時間を超え、例えば、次の日になっても、スヌーズの停止アクションをやらなきゃいけないのはおかしいですよね。なので、スヌーズの最長時間(40分)を越えると、そこから起動したアプリを自動判定し、メッセージを出して終了するという仕組みにしました。だから、仮に先のようにスヌーズの解除を諦めても、一定時間を超えると自動解除となりますので、安心して利用できると思います。ただし、スヌーズが鳴るときには、iPhoneをどうかに投げないでください。(笑)
2、ローカル通知を受け取る
以前のバージョンではスヌーズ機能が無かったので、アラームからアプリを起動する必要はないし、アプリ内でタイマを設置したので、アラーム制御は全部自分でロジックを組みました。今回のスヌーズ機能追加で、アラームからアプリを起動する動きを解明し、以前の制御ロジックを廃止しました。従って、アラームの制御は全部アプリのデリゲート処理に制御するように一本化にしました。アプリの起動状況によって、起動ルーとが変わりますので、以下のように三パタンとまとめました。
A、マルチタスク状態からアプリを起動し、ローカル通知の制御
以下のアプリデリゲートメソッドから起動します。
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
ここで、UILocalNotificationから取得したuseInfoから、ローカル通知を識別し、以下の解除処理を行えばいいわけです。自分の場合、そこにローカル通知の識別情報と曜日情報をセットしました。
[[UIApplication sharedApplication] cancelLocalNotification: notification];
B、アプリ起動中のアラームの制御
これは、ローカル通知が親切じゃないところですね。アプリ起動中は、ローカル通知のアクションを受け取れだけの仕様になっているようです。なので、メッセージの表示、アラーム音声の再生、バイブレーションなどは全部自前で実装しなきゃいけません。やや面倒ですね。ちなみに、ここでローカル通知のアクションを受け取るアプリデリゲートメソッドは上記Aと同じです。ただし、注意しなきゃいけのは、どうやってAのパタンと区別することです。アプリ起動中にローカル通知が来た場合、Aパタンと違って、アプリデリゲートメソッド「- (void)applicationDidBecomeActive:(UIApplication *)application」を呼ばれないため、そこと「- (void)applicationDidEnterBackground:(UIApplication *)application」二箇所で「起動中フラグ」の有効と無効を設定し、フラグで分岐制御をしています。
C、アプリを完全に止められた場合
アプリを完全に止めても、ローカル通知の起動はiOSから制御されるため、アラームが鳴らないという心配はありません。ただし、起動ルーとは先のAとBと違って、「- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions」から起動するので、注意しましょう。ローカル通知のオブジェクトは「[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]」で拾えますので、それを利用してアラームを制御しましょう。

ここまでで、「録音アラーム」スヌーズ機能の仕組みを紹介しました。
簡単の流れとしては、
・ローカル通知を設定して、アプリを閉じて、
・時間になったら、アラームがなって、
・ストップボタンで停止アクションに入って、
・クリアして、
あれ… これで終わり??
ホームボタン以外何も触れなく、ちょっと寂しいですね。
そういうこともあり、停止アクション終了後、通常のアプリ画面に戻れるように工夫しました。
3、残る課題
スヌーズ機能は完璧にできたと思いきや、大きな課題(?)がクリアできていません。
それは、複数のローカル通知メッセージ画面を一気に消せないということです。
アプリ起動中のアラーム制御は全部自前で実装したので、アプリのメッセージ個数を工夫してなんとかうまくいきましたが。
OSからのメッセージを消すには手しかないのか……。
最後に。
「近日公開予定です。乞うご期待!」
東日本大震災復興支援ポータル開設のお知らせ
3月11日に起こった東日本大震災で東北地方、関東地方をはじめ、各地で様々な被害が出ています。
多くの人が助け必要としている中、自分たちにも何か出来ることがあるのではないかと考え、震災復興支援ポータルを開設することにしました。
『東日本大震災復興支援portal』 http://twitask.web.fc2.com/

現在利用できるコンテンツは以下の3つです。
・各被災地とそれに関する支援のつぶやき
・専門家の意見
・他の震災復興支援サイトの紹介
今後、震災復興支援に役立てそうな情報やコンテンツなど、順次追加していく予定です。
より多くの人に御利用いただき、震災復興支援に役立てていただければ幸いです。
利用してみた感想・要望等ございましたら、この記事のコメント欄にコメントして頂くか、support_newb@task.co.jpまで御連絡下さい。随時対応していきたいと思います。
テーマ : ホームページ・ブログ制作
ジャンル : コンピュータ
【iPadアプリ】 メモの達人 リリースのお知らせ
先日ご紹介した「録音アラーム ver.1.0」に続き、今回は「メモの達人」をご紹介したいと思います。

■簡単にメモを作成、管理、共有できるアプリです!
「メモの達人」はキーボード入力、手書き入力をサポートし、「メモカード」の形で簡単にメモの作成ができます。さらに、作成した「メモカード」を画像イメージで保存し、メール送信も可能です。
授業ノートや会議記録など多くの場面で気軽にメモを取ることができ、学習や仕事の効率アップにつながります。

■メモの管理
作成したメモはカテゴリー単位で分類できます。分類したカテゴリーに簡単な説明をつけることもできます。カテゴリーの追加、編集、削除とそれぞれに所属するメモの追加、編集、削除が自由にできます。
さらに、作成したメモを簡単に見つけるため、検索機能も装備しています。カテゴリー、メモ名称、メモのテキストに検索キーワードと一致する言葉があれば、一発で見つかることができます。
*メモ名称とカテゴリーの所属変更はメモ作成画面で行います。
■メモの共有
作成したメモは画像イメージで出力します。
メール送信機能を利用すれば、いろんな人とメモを共有できます。

詳しくはコチラ(AppStore)をご覧ください。
■簡単にメモを作成、管理、共有できるアプリです!
「メモの達人」はキーボード入力、手書き入力をサポートし、「メモカード」の形で簡単にメモの作成ができます。さらに、作成した「メモカード」を画像イメージで保存し、メール送信も可能です。
授業ノートや会議記録など多くの場面で気軽にメモを取ることができ、学習や仕事の効率アップにつながります。

■メモの管理
作成したメモはカテゴリー単位で分類できます。分類したカテゴリーに簡単な説明をつけることもできます。カテゴリーの追加、編集、削除とそれぞれに所属するメモの追加、編集、削除が自由にできます。
さらに、作成したメモを簡単に見つけるため、検索機能も装備しています。カテゴリー、メモ名称、メモのテキストに検索キーワードと一致する言葉があれば、一発で見つかることができます。
*メモ名称とカテゴリーの所属変更はメモ作成画面で行います。
■メモの共有
作成したメモは画像イメージで出力します。
メール送信機能を利用すれば、いろんな人とメモを共有できます。

詳しくはコチラ(AppStore)をご覧ください。





