昨年末に Todayee シリーズ第9弾「Todayee Voice」をリリースしました。ビデオを撮影してエバーノートへテキストを投稿できるアプリです。
起動後すぐに撮影を開始できます。
撮影後はプレビューが見られます。ワンタップで即送信。
あとはバックグラウンドでエバーノートへ送信されます。
撮影したビデオにコメント(1行テキスト)を付けることができます。
さらにエバーノートへ投稿した動画には自動的にサムネイル画像が付きます。
送信前にプレビュー画面でスワイプすると
サムネイルにしたい場面を選ぶこともできます。
ビデオ画質
ビデオ画質は iPhone / iPad の機種ごとの主なものに対応しています。以下は iPhone6sの例です。
640 x 480 (30fps)
960 x 540 (30fps)
1280 x 720 (30fps)
1280 x 720 (60fps)
1280 x 720 (120fps)
1280 x 720 (240fps)
1920 x 1080 (30fps)
1920 x 1080 (60fps)
制約など
撮影時間は最大で 30秒。最大ファイルサイズは 25MB。どちらか一方を超えた時点で撮影は自動停止します。ファイルサイズについてはエバーノートの契約がプレミアムの場合は 100MBになります。これはエバーノートの仕様で1ノートあたりのサイズ上限が決まっている為です。
Todayee 共通機能
Todayee Voice は、Todayee(トゥデー) という名前の付く複数のアプリシリーズの1つです。一番の特徴は Todayeeシリーズからの投稿がすべて 毎日1つのノートへまとまる点です。Voiceから投稿したノートに、写真や音声を追記していくといったことができます。さらに複数のデバイスからの投稿も同様にまとめることができます(同一のエバーノートアカウントを使用した場合)。
下の図は Place と Pics からの投稿が1つのノートにまとまっている例です。
投稿は時刻で自動的にソートされます。
他の Todayeeアプリの記事
【アプリ】Todayee Text / Photo 1.0 をリリースしました
【アプリ】Todayee Silent 1.0 をリリースしました
【アプリ】Todayee Extension 1.0 をリリースしました(無料)
【アプリ】Todayee Place 1.0 をリリースしました(無料)
【アプリ】Todayee Pisc 1.0 をリリースしました
【アプリ】Todayee Rec 1.0 をリリースしました
【アプリ】Todayee Voice 1.0 をリリースしました
開発メモ
AVFoundation
Todayeeシリーズにビデオ撮影を加えることは最初から考えていてその時は UIImagePickerControllerを使用した簡易な実装を考えていた。その後 Todayeeアプリを利用者が少しづつ増えていく過程でユーザから「60fps対応」「スクエア対応」の強い要望があった。開発時間が余分にかかることもあり迷ったところでもあったが、他との差別化(というほどではなく最低限レベルになるかどうかだが..)にもなるかと思い AVFoundation を使用する実装で開発を始めることにした。AVFoundationを使ったビデオ撮影の情報はたくさんあるが、一番参考になったのは Apple が提供するサンプルコード。
AVCam-iOS
サンプルには Objective-Cだけでなく Swiftも含まれる。API の使い方が参考になったのはもちろん、特に面白かったは Dispatch(GCD) の使い方。AVFoundation のビデオ撮影を管理するクラス AVCaptureSession および関連クラスは物理的なデバイスを扱うこともあり、APIへのアクセスはシリアル化(順番に1つづつ)されている必要がある。このサンプルコードではそれを実現するのに Dispatchのキューを1つ専用に作り、APIアクセスを行う箇所では必ずこのキューへメソッド呼び出しのコード(クロージャやメソッド)を入れるようにしている。Dispatchの利用は、カメラや音声のプライバシー確認の箇所でも順序の調整に使われている。
AVCam-iOS
サンプルには Objective-Cだけでなく Swiftも含まれる。API の使い方が参考になったのはもちろん、特に面白かったは Dispatch(GCD) の使い方。AVFoundation のビデオ撮影を管理するクラス AVCaptureSession および関連クラスは物理的なデバイスを扱うこともあり、APIへのアクセスはシリアル化(順番に1つづつ)されている必要がある。このサンプルコードではそれを実現するのに Dispatchのキューを1つ専用に作り、APIアクセスを行う箇所では必ずこのキューへメソッド呼び出しのコード(クロージャやメソッド)を入れるようにしている。Dispatchの利用は、カメラや音声のプライバシー確認の箇所でも順序の調整に使われている。
あとがき
Todayeeシリーズはこの Videoで 9本目。2016年内10本という目標には届かなかったものの 12/31というギリギリのタイミングでリリースできてともかく良かった。諸事情からシリーズ内の他のアプリ開発よりも時間がかかった。純粋な開発で時間がかかったのは、ビデオ撮影部分の実装のせいもあるが 一番は Xcode8 + Swift3のビルド時間かもしれない。Todayeeアプリ は CocoaPodsを使うこともありビルドに非常に時間がかかる(毎回 4、5分くらい)。アーカイブにいたっては 30分(涙。今はビルド速度を改善する Tips情報が増えてきているが Video開発時には中心となるビデオキャプチャのコード部分だけ切り出して CocoaPodsを使わないシンプルな別のXcodeプロジェクトで開発を進めた。この方法は前半では、まあまあうまく行って特に開発当初のキャプチャ周りの試行錯誤では時間短縮できたと思う。後半はアプリとしての完成度を高めるために本体でのビルドになったためにこの恩恵は受けられずスローダウン。カメラ系のアプリの場合、シミュレータが使えないのがネックになる。このあたり今年中に劇的な改善があることを期待したい。
- - - -
さて今年はTodayeeシリーズの量産は一旦一休みして、当面は既存アプリの完成度を高めることに専念していきます。それが一段落したら Todayeeシリーズの新作をまた開発していきたいと考えています。今年は専用ビューアの開発も検討していますが何か要望・希望があればお気軽にご連絡下さい。
遅くなりましたが本年もまたよろしくお願いいたします。
アプリの入手は下記からどうぞ。
※2017/1/8 まで無料セール中です(その後有料になります)。