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をダウンロードしてきて、ちょっとさわったりしました。

2020年4月開発状況

2020年4月。

Goの学習

Go言語を少しだけ触りました。
サーバーサイドで用いることを考えました。
A Tour of GoでGoのどんな言語なのか、実行しながら学習。
C風の記述。goroutineを使うと並列処理が書きやすく、強力そう。
今回は、結局使用しなかったので、活用の機会がくればあらためて学習したいと思います。

Webサイトの改修

Webサイトで使用しているWordPressのヘルスチェックで、改善の余地ありと言われていた部分の対応を行いました。
PHPのバージョンを7.1から7.3に上げました。そのほか、使用しているライブラリのバージョンを更新、使用していないプラグインの削除などを行いました。
WordPressのダッシュボードを開くたび、ヘルスチェックに直すところがあります、とあったのが、Goodに変わって心が落ち着きました。
サーバー側をいじるのは久しぶりなので、よくよく準備をしてから実行。
バックアップを取ったのを確認。
できるPRO CentOS 7サーバー できるPROシリーズ』を読む。Linuxとそのシェルについて学ぶ。ためになりました。
サイト全般をアップデート完了。
すこしはやく開けるようになりました。

Repete Plusの開発

持続可能なアプリ開発のために、収支を改善したいと思い、Repete Plusに課金機能の実装を開始しました。
「アプリ開発者にエネルギーを与える」と題した項目を追加しました。
開発者がアプリ開発で悩んだり奮闘したりするさまを描く短い動画が示されます。そこで「エネルギーを与える」ボタンを押すと、開発者は問題に対処してアプリ開発を進展させるというものです。
当初は、「エネルギーを与える」ボタンを押した際に、消耗型アイテムで都度課金してもらう形式で進めていました。しかし、これでは別のiPhoneで使用したときに復元できないことから、非消耗型に変更して、エピソードアンロック形式に変更。
エピソードを描く際には、以前『Rendow』でも使用したCAEmitterLayerを使ってパーティクルで感情表現しようと考えていましたが、やってみると、これで表現するのは難しい。そこで、イラストを描いて感情表現するよう変更。


語学学習には影響ない機能ですが、使ってもらえると、開発者がとても助かり、喜びます。

そのほか、コメントで指摘があった、iOS 13でiPadのSplit Viewでの表示が乱れボタンが隠れて押せなくなる!という状態になっていたのを修正しました。

2020年3月開発状況

2020年3月。

2、3月は寒さと乾燥で肌荒れがひどく、体調が終始すぐれませんでした。
申し込んでいた3月予定の中国語検定が中止になりました。

Repete Plusをアップデートしました(version 7.9, version 8.0)

バージョン 7.9

待ち時間の下限を0に変更しました。

バージョン 8.0

バージョン8.0では、

  • 再生回数表示機能
  • 区間の再生必要/再生不要に日付情報を加える機能
    を盛り込む予定でした。
    区間の再生必要/再生不要に日付情報を加える実験用プロジェクトを作成。

日付が進むと、区間を再生不要にしたあと1日後、1週間後、1ヶ月後に再生必要になる、という実験。

実験用プロジェクトはうまく動作しました。
ただ、Repete Plusに組み込むにはもう少し調整が必要と判断、8.0に盛り込むのは取りやめ、今後のアップデートで組み込むことにしました。

その他、8.0での修正点。

  • コメントで指摘があったVBR(可変ビットレート)でエンコードしたファイルで、区切り位置で再生されない問題に対処。
  • 以前から気になっていた、再生途中での区間移動を繰り返しや再生・再生不要切り替えを繰り返しで、まれに再生がとまってしまい、そのあと、再生ボタンが効かなくなる不具合を修正。

今回のアップデートは、調査や実験にずいぶん時間がかかってしまい、くたびれました。

再生回数表示機能は、以前から何人もの方から要望がありました。ようやく実装できましたので、活用いただければさいわいです。

2020年2月開発状況

2020年2月。

2、3月は寒さと乾燥で肌荒れがひどく、体調が終始すぐれませんでした。
2018年の11月から語学学習を再開しようという心持ちになり、ぼちぼちと進めていたのですが、なんとなくやっているだけになってきたので、目標を作ろうと中国語検定2級を申し込みました。

Repete Plusの開発を行いました。(version 7.8)
version 7.8は別の曲へ移動した際のテキスト表示位置の不具合修正。
提出できたのは月初の7.8のみ。

2月の早い時期に7.9のアップデート(待ち時間の下限を0とする)はできたものの、提出は遅れました。その次のアップデートをあまり日をおかずに出したいと思っているうちにすっかり遅れて3月提出になりました。

語学学習として、『初級を超えるための中国語単語BOOK』をぼちぼちやっていました。出てくる単語・文章のの日中翻訳をRepete Plusを使って続けていました。1日10個のペースです。習得できたものは再生不要にする方式で進めていました。
Repete Plusをそのように使用している中で、不満・修正したい点が出て、2月の大半は調査に費やしました。

多数のファイルを選択した時の処理について調査

もともと、一度に選択するのは3~4個ほどのファイルを想定していたため、多数のファイル、たとえばアルバムのファイル丸ごと選択すると、ものすごく重くなります。
この問題に対処すべく、ソースコードを見直していました。が、この問題の修正には、ひじょうに大掛かりな手入れが必要と判断し、いったん中断。

忘れた頃に再度提示機能について調査

初級を超えるための中国語単語BOOK』を用いての学習。出てくる単語・文章の日中翻訳をRepete Plusを使って続けていました。1日10個のペースです。習得できたものは再生不要にする方式で進めていました。
02/12に 2170/2170に達しました。しかし、習得できたとはとてもいえません。
一度済みにしたものは、ずっと済みになっていますが、実際にはどんどん忘れています。
一度習得済みにしたものをそのままにするのではなく、忘れた頃に再度提示される形をつくりたいと考えました。
そのため、再生必要/再生不要情報に日付をもたせたデータモデルの試作を行いました。

再生回数に日付情報を持たせる実験

区間に再生回数情報を持たせました。そのさいに、再生必要/再生不要情報に日付をもたせたのと同様に、再生回数にも日付情報を持たせる実験を行いました。学習記録で、各区間について、日毎の進展をみれれば面白いとの考えからです。
しかし、現在のRealm(データベース)への保存処理では、ファイルサイズが膨らみすぎることが判明したので、とりやめました。


2月は、あれこれと試行錯誤したわりに進展がなくて残念でした。

2020年1月開発状況

2020年1月。

Repete Plusをアップデートしました(version 7.7)

クラウドストレージ(Dropbox、Google ドライブ、OneDrive)からのファイル読み込み方法を変更しました。

従来は、各クラウドストレージが提供するAPIを経由してアクセスしていました。UIは自分で設計できるので、自分にとってわかりやすいものとなるまで調整できていました。しかし、クラウドストレージ側でAPIが変更になると読み込み部分を変更する必要があり、負担になっていました。

iOS 11から別のアプリからアプリのDocumentフォルダにアクセスできるFile Providerという仕組みが提供され、各クラウドストレージAppがFile Providerを組み込みました。
これによって、他のアプリからDocument Pickerを使って、クラウドストレージAppのフォルダにアクセスできるようになりました。
Repete、Repete Plusでも、Document Pickerを使って各クラウドストレージのフォルダにアクセスする仕様に変更しました。これによって、従来のDropbox, Google ドライブ、OneDriveだけでなくiCloud Driveや端末上のファイル、接続したUSBメモリなどからもファイル読み込みが可能になりました。
Document Pickerが当初登場した時は単独ファイル選択用だったためか、その後複数選択できるモードが追加されたものの、複数選択時のUIがわかりにくいものとなっています。
ここは、?ボタンを追加して、説明を加えることとしました。