2021年1月開発状況

2020年9月10月、11月12月と取り掛かっているRepete Plusのアップデートをひきつづき進めました。


今回のアップデートで取り組んでいる事柄。
波形図が再生に従って動く。波形図を動かすと再生位置が動く。拡大テキストエリア時に波形図を表示できるようにする。
いままでは、画面をあまり注視しないで使う状況を想定していました。今回のアップデートは、しっかりテキストを見つつ、細かく再生位置を戻したりするような使い方に対応しようとするものです。

前月に、再生状況(現在時刻、再生回数やリピート回数など)をテキストエリアのサイズ・波形図ありなしに応じて、表示するか非表示にするかを設定できるように変更。その設定画面の作成を行いました。前月の終わりまでに、今回のアップデートで取り入れる機能をほぼ実装できていました。


1月に入ってから行った事柄。
再生処理の安定化。まれに再生が止まってしまう症状が出たため、流れを見直して安定化させました。
1月半ばに、サポートページにコメントいただいた。
iPadでペンを用いて書いているが、下部にオーディオ操作部分があって手が当たってやりづらい。テキスト部分を下に回すことはできないか?といった内容。
このコメントで、iPad OS 14+Apple Pencilでは、スクリブルという手書きを文字認識して変換する機能があることを知りました。

スクリブルは、英語と中国語を用いる際に使えます。テキストフィールドでApple Pencilを使って書けば働く機能。起動するのに特別な処置は必要はなし。Repete Plusでは、テキストエリアをタップジェスチャーのためにも用いており、テキスト編集には切り替えが必要。これは、アプリの特徴としてよしとします。テキスト編集切り替え後に、スクリブル機能が適切に使えるようにしたい。


スクリブルを使っていると気になる点。手をつくとキーボードが出てしまう。改行がジェスチャーではできない、変換精度は高いとはいえ間違いもある、という状況。サブのキーボードを表示しつつ使うかたちがよいのでは、と考えました。
そこで、次のようなレイアウトを取り入れました。

新たなレイアウトを取り入れるに当たって、レイアウト関連を改めて考え直し整理しなおしました。前月導入した「表示/拡大テキストエリア+波形図あり/なし各画面での再生状況設定画面」は不要となりました。
オーディオブロックとテキストブロックの配置を選択する設定画面の実装が必要となりました。


サポートページに、別の不具合についてのコメント
AirPods Proを使用していると、区間2回目再生のさい冒頭部分が欠けてしまうというもの。
確認すると、症状再現。ほかのBluetoothイヤホンでは発生せず、AirPods Proで発生。
再生部分の基本的なところのみを切り出したプロジェクトを作成し、どうすれば改善するか検討。切り出したプロジェクトでは、AirPods Proでこの症状を発生しないように処置できました。

1月末になっても、Repete Plusのアップデートを完了できず、忸怩たる思いです。
残る作業は、
* レイアウト選択画面
* AirPods Pro対応処理の実装
* ダークモードへの対応
となります。できるだけ早くアップデートをお届けしたいと思います。

2020年12月開発状況

2020年12月のアプリ開発状況

9月、10月、11月と取り掛かっているRepete Plusのアップデートをひきつづき進めました。
再生状況(現在時刻、再生回数やリピート回数など)をテキストエリアのサイズ・波形図ありなしに応じて、表示するか非表示にするかを設定できるように変更。その設定画面の作成を行いました。

波形図の変更を行うに当たって、関係する既存のコードを読み直しました。
起動時のレイアウト処理の流れを整理。
グラフィック描画のような重たい処理が不用意に幾度も呼ばれていないかを確認、流れを整理。
初期に書いたコードを丁寧に読み解く必要があり、ここに大変時間がかかりました。

12月末、2020年末には、できあがると踏んでいましたが、いまだに(12/31 23:11)積み残しがあります。できるだけはやくアップデートを届けたいと思います。

2020年10-11月開発状況

2020年10月から11月のアプリ開発状況

Repete Plusの開発を進めました。

9月の開発状況でも書きましたが、波形図の動きに関するアップデートを進めています。思った以上に時間がかかり、いまだ完成していません。
語学学習を再開したので、アプリ開発の時間が減りペースが遅くなったというのはあるのですが、それにしても時間がかかっています。

波形図を指でスクロールできるようにする

9月末段階のスクリーンショットが以下のようになります。

おおよそできたと考えていました。
このときには現在位置を常に真ん中に表示していたため、0:00のさいに波形図の0の位置も真ん中になります。

左端が空いてしまいます。一画面に収まるようなファイルだと、不便さが際立ちます。
やはり端の部分の処理を変更することとしました。
端が空かないように修正しました。

この修正にかなり時間がかかってしまいました。

テキストエリア拡大時に波形図を表示する

従来Repete Plusでは、再生中にあまり画面を注視せずとも使えるようにと作成していました。
今回のアップデートでは、再生中に画面をしっかり見て、細かく再生箇所を動かす使い方に対応しようとしています。
テキストを読みつつ聴く、わからない箇所があればちょっと波形図をスクロールして戻して聞き直す、といったことをやりやすいようにしたいとしています。
そこで、テキストエリアを広く表示した際にも波形図を表示できるようにします。
この工程で、初期のコードの改造が必要になりました。アプリ開発初期の頃のコードを慎重に読み解いての大改造。思った以上に時間がかかってしまいました。
作りながら使い勝手を検討した結果、以下のような配置となりました。

Fat ViewControllerの修正

開発環境Xcodeのバージョンが12になりました。
自分の環境では、バージョン12にして以降、行数が長いファイルで何か書き加える処理が極端に重くなってしまいました。レインボーカーソルが頻繁にまわり数秒かかって一文字が打ち込める状況です。
行数がくそ長いファイルつかってんじゃねえよという、圧を感じます。
iOS開発では、ViewControllerを担うファイルの肥大化がしばしば起こります。
FatViewControllerと言われています。
問題だということで、それを避けるための設計なども考えられています。
Repeteでもアプリ開発学び始めからの継ぎ足し継ぎ足しでViewControllerがものすごく巨大化していました。1000行をはるかに超過していました。しかし、いままでは自分が把握できるのでまあよいかと、そのままにしていました。
今回のXcode檄重状態に直面して、分割作業。
この作業にも時間がかかりました。

長文リスニング用の試作アプリ

語学学習を継続しています。中国語学習。
いままでは、アプリ開発が佳境に入ると中断してそのままなにもしなくなっていたのですが、この数ヶ月は継続しています。
語学検定では、長文(長文といっても2分程度)のリスニング問題があります。
その学習の際に、復習がどうにもぞんざいになってしまっていました。
解答のテキストを見ると理解できる。とくに中国語学習ですと、漢字なのでテキストを見ると相当わかってしまう。聴いてみると、わかっていない。
どこがわかっていないのかを、しっかり把握して復習すべきなのに、おざなりになってしまう。
この状態、以前から気になっていたので、長文リスニング復習用の試作アプリを作りました。
Repete Plusに組み込む予定でしたが、試作アプリを作ってみたところ、組み込みづらくこれ単体でもよいかなという感触。クロスプラットフォーム開発でやってみたい、という思いがあります。


思っていた以上に開発に時間がかかっております。
ようやく完成が見えてきました。
できるだけ早くアップデートを提出したいと思っております。



2020年9月開発状況

2020年9月

Repete Plusの開発を進めました。

はなさんのコメントをきっかけに、波形図の動きに関するアップデートを進めました。再生進行にあわせて波形図を描画する機能です。

プログレスバー(再生進行状況を示すバー)と波形図の連動機能の作成

バージョン1.0リリース前にプログレスバーが進むと波形図も動く機能を実装していました。しかしながら、波形図がガクガクと動くのを注視していると気持ち悪くなってしまったので、採用を見送っていました。当時は、1/10秒ごとに描画。今回、1/30秒の間にもろもろの処理が十分できることを確認して、1/30秒ごとに描画に変更。これなら動くのを見ていても大丈夫。

波形図をユーザーが指で動かした時に現在位置(再生位置)も動くよう変更。
こちらが、今回実装を進めた機能。
実装にあたって、波形図の様相をあらためて検証。
元々波形図は、区切り点編集のさいにガイドとして必要と考えて追加しました。現在(バージョン 8.7.1)、ファイル全体分の波形図が一画面に表示されています。そのため、区切り点編集や、再生/非再生切り替えには、ピンチ操作で拡大しなければなりません。不便。
今回の実装にあたって、デフォルトで拡大表示するように変更。
そして、指でスクロールするのに合わせて、波形図ならびに、再生箇所を変更するように変更。かなりの大改造になりました。


9月後半は、iOS 14とXcode 12の登場。
ライブラリを更新して、Xcode 12に対応しました。
また、iOSの対象バージョンを13.6以上に変更。
iOS 13からSwiftUIなど新機能が数多く追加されていますが、フォローできていないので学習を始めなければなりません。


9月15日に、中国語検定の申込案内メールが到着。
コロナの影響で春の検定が中止になった後、学習しなくなってしまい、すっかり意欲が立ち消えていましたが、勉強を再開。空き時間では、まず中国語の学習時間をとるようにして、そのあとアプリ開発を行うと定めました。
そのため、アプリ開発の進みが遅れ気味です。

2020年8月開発状況

2020年8月

Repete Plus、Repeteのアップデートの頻度を高めようと試みました。

Repete Plus

8.5

  • 再生不要区間が末尾にある時に、曲再生回数に2回以上指定していても、次の曲を再生してしまう問題を修正しました。
  • 「区間データ・テキストの共有と削除」の?マークを押したさいに表示される説明が、ダークモードで見えなくなっている問題を修正。
  • バージョン7.6以前で使用しておりバージョン7.7からはデフォルトで非表示となっている「クラウドストレージから読み込み」機能で用いていたOneDrive用SDKが古くなったのを機に、旧方式の読み込みメニューから、OneDriveを取り除きました。

8.6

  • タップジェスチャーに「再生速度を +0.1する」「再生速度を -0.1する」を加えました。
    すばやく再生速度を変更できます。

この機能、スムーズに実装できました。再生速度を +0.1する処理、再生速度を -0.1する処理、ジェスチャーの選択肢に項目を追加、ジェスチャーの画像を追加。
必要な箇所に最小限、追加するだけでするっと実装できました。
(このあとの8.7で今までのコードの修正やオブジェクトの削除・統合がおおいに発生したので、8.6のスムーズさが際立ちました)

8.7

  • リピート回数(区間:再生回数)によって、再生速度を変更できる機能を追加しました。区間を再生する際に、1回目はゆっくり、2回目は速く再生する、といったことができます。(ペアになっている場合は、A区間・B区間の再生回数によって再生速度が変わります)
    ※ 「リピート回数によって再生速度を変更する」機能は、「バックグラウンド再生」かつ「待ち時間を秒数指定」にしている場合は、待ち時間が指定秒数と合わなくなります。

この機能、まっ黄な太陽さんから、以前App Storeのレビューでリクエストをいただいた。そのときは、アプリのつくりから「バックグラウンド再生」かつ「待ち時間を秒数指定」のさいに待ち時間を合わせるのが難しいことと、設定操作が煩雑になりそうなことから、「現在のところは実装はみあわせてください」と返答しました。
そのあと、Repete Plusのデフォルトで待ち時間は「比率指定」であることでもあるし、
「バックグラウンド再生」かつ「待ち時間を秒数指定」で待ち時間は合わないのは、これは仕様として通すということでどうだろう、と考え直しました。
また、設定操作に関しても、下図のようなテーブル表示にしてそれぞれの回について再生速度を入力するかたちなら、いままでの再生速度変更画面となじみつつ追加できると考えました。


今回、実装を開始してまいったのが、設定項目を追加しようとすると、「よく使う設定」と「全体書き出し・読み込み」にも、同じようなコードを何度も書かなければならいつくりになっていたこと。これはよくない、ということで、オブジェクトの削除・統合を進めました。今後、設定項目の追加があっても、必要最小限のコード追加ですむようにと改修しました。
それを終えて、「リピート回数によって再生速度を変更する」実装。再生速度入力画面を作成するのに大半の時間を費やしました。「リピート回数によって再生速度を変更する」機能自体はスムーズに組み込めました。(というか、「バックグラウンド再生・待ち時間秒数指定で待ち時間合わない」や「ペアではA・B区間の再生回数に連動」というかたちで通したので、プレイヤー部分の大改造はおこなわずに、組み込めました)

  • ファイルの途中で原曲再生ボタンを押した時に、ファイルの最初から再生されてしまうケースがあり、その問題を修正しました。
    こちらは、れなぴょんさんのコメントで指摘をもらっていた問題。
1) [原曲再生ボタン]を押して原曲再生を開始
2) 原曲再生ボタン]を押して一時停止
3) [再生ボタン]を押して再生を開始
4) [原曲再生ボタン]を押して原曲再生を開始

4)で再生位置が曲の先頭に戻ってしまいます

version 5.3での「まれに再生が意図せず止まってしまう」問題の修正用コードがこのケースではよくない働きをしていました。よく流れを見直して、どちらの問題も解消できるコードに変更しました。

Repete

6.5.1

「よく使う設定を登録する」で「全体リピート」 を登録した後、「設定変更」ボタンから選択してもON,OFFが反映されない不具合を修正しました

6.6

設定画面のダークモードでの色合い変更しました。

6.7

初期状態では、「バックグラウンド再生」機能をOFFとしていたのを、ONに変更しました。

6.7.1

バージョン6.7で、設定 > 再生速度 を開こうとするとアプリが強制終了する不具合を混入してしまったのを修正。
たいへん申し訳ありません。不注意で、再生速度変更画面を消去していまい、気づかずに提出していました。


今回、Repete Plusのほうはがっつり機能追加、Repeteのほうは細かな修正というかたちでアップデートを行いました。Repeteで、ささやかな修正だと考えしっかりと動作確認をしていなかったために大バグをだしてしまい、申し訳ないです。

2020年7月開発状況

2020年7月

前半

イラストを描いていました。アプリ開発は進展せず

後半

Repete Plus 8.4.1のアップデートの作成を行いました。
区間データ・テキストを別のiPhone/iPadにAirDropで送信できるようになりました。
以前からテキストの書き出し機能を検討していたところ、
曲と区切位置のデータを1曲単位でAirDropできたらというぐぬんさんのコメントをきっかけに実装しました。
グループで学習している場合や、複数のiPhone/iPadを利用している場合に役に立ちます。

2020年6月開発状況

2020年6月

Flutter学習

iPhoneとAndroidをいちどきに開発できるクロスプラットフォーム開発を学ぼうと考えました。
今回は、Flutterの学習開始。
Udemyの講座「The Complete 2020 Flutter Development Bootcamp with Dart」を始めました。
Udemyの講座は初めて。動画講座で学ぶのも初めて。懇切丁寧に進行して、続けやすい。
一回10数分の動画。
始まりは前回のまとめ、最後に今回のまとめ。
進めやすい。感動。コースの1/3ほど進みました。
途中、Dartを学ぶために、Dart | Exercismに案内され、そこの課題を解いている途中。
ここでいったんとめて、Repete Plusのアップデートに移りました。

Repete Plusのアップデート

Repete Plus 8.3のアップデートの作成。

  • 再生対象を区間時間で絞り込む機能を追加しました。
    初級を超えるための中国語単語BOOKを使って学習をしています。
    単語と例文が入り混じっている教材なので、単語のみあるいは例文のみを絞り込んで再生することができるように、この機能を作成しました。
  • 「よく使う設定」を並べ替える機能を追加しました。
  • 設定画面のダークモードでの色合い変更しました。
    iPhone設定画面での色合いに準拠しました。
    背景を項目部分より暗くしました。

2020年5月開発状況

2020年5月。

Repete Plus開発

月半ばまで、Repete Plus 8.1の開発をつづけました。
「Repete Plus」をアップデートしました。(version 8.1) – nackpan Blog
アプリ収支を改善したいと考え、課金機能を追加しました。
開発者がアプリ開発で悩んだり奮闘したりするさまを描く短い動画を5つ作成。それぞれのエピソードは、課金することでアンロックできます。
語学学習には影響ない機能ですが、課金していただけると作者がよろこびます。
イラスト描き、動画のタイミング調整に、時間がかかってしまいました。
語学学習支援プレイヤー(現Repete)のリリースまでの話を描きました。

月半ばにリリースした後。
反応はどうかしらと見守ります。
そのまま日が経ち、ぼんやりと過ごしてしまいました。
アプリ開発については、進展がありませんでした。
Blenderをダウンロードしてきて、ちょっとさわったりしました。