【アプリ】Todayee Rec 1.0 をリリースしました

2016年10月11日火曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

Todayee シリーズ第7弾「Todayee Rec」をリリースしました。音声を録音してエバーノートへ投稿できるアプリです。





11〜44kHz、モノラル/ステレオ、最大15分まで録音して送付が可能です。



再生もできます。


録音した音声はテキストを付けてエバーノートへ投稿できます。
エバーノートでの見え方はこんな感じ(PC版エバーノート)。
上から入力したテキスト、音声データ、下の薄い文字は録音時刻・時間とサンプリング周波数にチャンネル数。

設定画面はこう。



Todayeeの特徴である複数アプリ・デバイスからの投稿を1つのノートへまとめる機能も、もちろん健在です。
Todayee は複数のアプリ、複数のデバイスからの投稿をすべて1つのノートにまとめることができます。例えば下の図は 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 をリリースしました

開発メモ


グラフ


録音と再生は AVRecorderと AVPlayerという便利クラスがあるのであっという間にできた。問題はグラフ。ボタンと文字だけだと寂しいので音圧グラフは入れたかった。良いライブラリがあれば使おうと思ったが見つからなかったので結局作った。

まず音圧を格納する Floatの配列を作っておく(配列は先頭位置を変数で管理するいわゆるリングバッファとして実装しておく)。AVRecorder(もしくは AVPlayer)の peakPowerから NSTimerを使って定期的に値を取得してこの配列へ入れておく。次に専用のビューを作り、配列の中身を取り出して順番に取り出してプロットする。最後にその点の間を線で結べばできあがり。グラフはこんな感じ。
なんとなくそれっぽくなった (´・ω・`) 点と点はそのまま結ぶと山に角が立ってギザギザになる。滑らかにつながるように UIBezerPathの addQuadCurveを使って曲線を描てある。




(地獄の)Swift3対応


それよりも一番手間がかかったのは Swift3対応。とにかくこれには難儀した。前作の Picsのリリースができた直後の9月終わりから Todayee全体の Swift3対応に取り掛かった。その時には Recもほぼできていたが、Swift3対応してからリリースすると決めてひたすら Swfit3対応に励んでいた。

Swift3はそれまでの Swift2とはライブラリ体系が変わったことに伴い、文法はそれほど変わっていないにもかかわらず、移行作業がかなり面倒だった。現在のSwiftは仕組み上同じバージョンの Swiftで書かれたプログラムで統一する必要がある。例えば Swift2系で書かれたライブラリを使っている場合、自分のプログラムだけ Swift3で書く、ということができない。この場合、ライブラリを 3へ上げるか自分のプログラムを 2で書く必要がある。Todayeeの場合は半分以上が自作のライブラリで、その多くが Objective-Cで書かれていた。Objective-C製のライブラリは Swiftのバージョンの制約を受けないためそのまま変更無しで利用することができた。問題なのは比較的最近 Swift2で書いた自作ライブラリ群。今後を考えて Swift3での開発を(固く)決めていたので、ここから自作ライブラリを一つ一つ Swift3へバージョンアップする作業に入った。なお幸いなことに自作以外の外部のライブラリで Swiftを使っているものは、作者が比較的早期に Swift3対応してくれていたので自分でそれらに手をいれるという事態は免れた。これはラッキー。

自作ライブラリの書き換えができたら、次はそれらを CocoaPodsで Todayeeへ組み込む作業。これがまたよくわからないエラーが色々出て悩まされた。一歩進んではエラーが出て止まるという、まるで地雷原を進む気分。この地雷原を辛抱強く一歩一歩進み、問題を潰して行くとようやくライブラリの組み込みに成功するところまできた。でも、まだこれでは終わらない。

ここまで来てからようやく Todayee本体の Swift3対応。最初に 100近くのエラーが出ると目眩がしてクラクラしてきた。。コンバートをフル活用して一つ一つ確認しつつ手で潰していく。そんなこんなでようやく全部エラーが消えた。最後には Todayee Text が実機で動き出した。やった =3が、しかしそこで作業はまだ終わらない。

ビルドができて動くようになっても今度は動作上の互換性のチェックが残っている。いろいろ触って適当にボタンをタップするとクラッシュ。いろんなところでクラッシュ。もうやってられん。しかし仕方ない。今度は実機を握って一つ一つ問題を潰していく。

そんなこんなでようやく Todayee Text が問題なく動き始める。ここまで来ると山を超えた感じ。こうなると嬉しさよりも徒労感が強いんだが。。。

その後 Photo, Silent, .... とシリーズの一つ一つのアプリについて、ソースの書き換えと動作確認を繰り返した。そして先週末にようやく全部終わった。終わったー!
区切りがついて Recも動くようになったのでリリースにこぎつけることができた。

移行中は別のアプリ(EverGear)の対応もやっていたので、それを除くと正味1週間くらいか。あとから見るとこんなものだが、先が見えない作業は結構ストレスだった。それでもこのタイミングでやってしまえてよかった。今後は新しいアプリに専念できる。





あとがき


Recは比較的短期間でできた。実装自体は正味1週間くらいで、その後のデザインや効果音付けやパラメータの調整に少々時間がかかった印象がある。だから Rec自体は苦労した感じはしない。それよりも途中に入った Swift3対応がとにかく疲れた。Todayeeはそれでもまだ小さな規模なアプリだからこの程度で済んだけど、いっぱしのアプリだとこんなものでは済まなくて死ぬだろうな。。
ところで並行して手を入れていた EverGearは Objective-Cで書かれていて、こちらは Xcode8でまったく修正無しでビルド&動作した。TodayeeのSwift3移行はいったいなんだったのか。。。

_人人人人人人人人人人人人人人人人人_
>     Objective-C 最強!     <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄




さて次のアプリは Todayee Voice (シリーズ8作目)を予定しています。
10月下旬から11月上旬のリリースを目指して鋭意開発中です。
このアプリから iOS10以上対応になります。
(その点と名前から内容を想像してみてください。アレです。)


他も順次開発予定中です。年内目標を立てていてシリーズ10作を考えています。行けるかな。

お楽しみに =3



アプリの入手は下記からどうぞ。






人気の投稿(過去 30日間)