2019年アプリ開発状況

2019年のアプリ開発状況をまとめました。
語学学習支援アプリ「Repete Plus」のアップデートが主な活動となりました。

1月

2019年1月。
戦国・江戸元号並べ – nackpan Blog」のversion 2.0へのアップデートを行いました。
「戦国・江戸元号並べ」 は戦国時代と江戸時代の年号を正しい順番に並べ替えるアプリです。
各々の年号期間に起きた出来事を記したテキストを追加しました。

2月

2019年2月。
Repete Plusのアップデートを行いました。(version 5.3, 5.4)
主要な変更点。
ペア区間のA区間、B区間の再生回数を0に設定できるようになりました。
(日本語文・英語文をペアにして学習しているケースを想定した時、日本語文のみ、英語文のみを再生することができるようになりました)

2018年11月はじめから中国語学習を再開しました。
Repete Plusをリリース後は、語学学習というより動作確認を行っている期間が長らく続いていました。
適切にリピートされているか、操作に反応しているか、など。
あらためて語学学習しようという心持ちになったので、そろりそろりと中国語学習を再開。
『初級を超えるための中国語単語BOOK』を使用して、日本語->中国語の翻訳練習。
やっていくうちに、ペアであっても中国語だけを流したい、と思うことがありました。
そこで、ペアの片割れの再生回数を0に設定できるアップデートの開発に取り掛かり、この2月に完成できました。

3月

Repeteのアップデートを行いました。(version 3.8)
Repete Plusのアップデートを行いました。(version 5.5)
Siriから起動して再生できるようになりました。

4月~6月

Android開発の学習をしました。
はじめてのANDROIDプログラミング 第3版
基本からしっかり身につくAndroidアプリ開発入門
Androidアプリ設計パターン入門
を読んで、サンプルプログラムを作って実行しました。

Googleのアーキテクチャーサンプルで、AndroidのMVVMのつくり、LiveDataやData Bindingについて学びました。
考え方やつくりがすごく勉強になりました。
しかし、AndroidアプリをKotlinでつくる、たとえばRepeteをAndroid移植することを考えていたものの、もしできても管理があまりに煩雑になってしまうとも感じました。

一旦、Android学習は止めて、iOSアプリのアップデートに戻りました。
その後、Androidに触れずに年末に至ってしまい、今(12/31)となってはほとんど忘れてしまいました…

7月

開発あまり進みませんでした。Macの調子悪し。
後半は、Macを修理に出して、手元にMacがない状況。

8月~10月

8月後半から10月後半にかけて。
学習時間・学習進展度を表示する機能を作成していました。
語学学習を再開して学習日誌をつけてみると、毎日やってるつもりでも日が空いていることがありました。学習時間を記録して実態をかえりみることができるよう開発をはじめました。

これが9月初旬までで終わる予定でした。
しかし、9月半ばまでかかってしまい、iOS 13がやってきました。
そこで、大トラブル発生。iOS 13に合わせて、Xcodeも更新して、Xcode 11となったのですが、それに対応したRealmで致命的バグ発生。
Realm 3.18.0および3.19.0において、古くから使っているデータベースで新規objectを追加しようとすると強制終了してしまう、というもの。
これには参りました。
Realm 3.18.0リリース後に、この不具合がユーザーから報告されていたので、すぐに修正されるだろうと見込んで、そのあいだにダークモード対応を進めました。
ダークモード対応が終わっても修正されなかったので、対応処理を施しました。
この対応にうまくいってないところがあり、その修正をながながと行っていました。
その後、Realm 3.19.1で、古くから使っているデータベースで新規objectを追加しようとすると強制終了してしまう不具合は修正されました。
独自に行っていた余計な処理は不要になりました。
余計な処理を取り除いて、Repete Plus version 7.0をリリースしました。
このバージョン、大バグを仕込んでしまいました。
独自対応しようと試行錯誤している際に、ユーザーデータが見えなくなる不具合を仕込んでしまいました。
ユーザーさんからコメントもらったときには、ユーザーデータを吹き飛ばしてしまったのではないかと思って、ほんとうにおののきました。
調査すると、ユーザーデータが見えなくなっているだけでデータ自体は端末にあったので、ほっとしました。
修正版バージョン7.1を急いで提出しました。

11月

10日ごろ、右腕の肘あたりに痛みがあり、右腕を動かしづらくなった。月末には治りました。アプリ開発はいまいち進まず。

「Siriに追加」ボタンを追加しました。Siriを使って起動再生する機能をアプリ内部から設定できるようになりました。

12月

シャッフル機能に新たな種類を加えるべく開発を進めました。

  • ファイルの先頭を固定し、残りをシャッフルする
  • 周回毎に再シャッフルする

修正箇所は少なくて済むと考えて開発を開始したものの、実際に行うと思っていた以上に手を入れる必要がありました。

2019年12月開発状況

2019年12月。

Repete Plusをアップデートしました(version 7.3, 7.4, 7.5.1)

バージョン 7.3。
「Siriに追加」ボタンを追加しました。Siriを使って起動再生する機能をアプリ内部から設定できるようになりました。
タップジェスチャーに「テキストを表示する/隠す」が加えました。

バージョン 7.4。
テキスト編集時にできないはずのタップジェスシャーが効いていることがありました。
App Storeのコメントでも、その指摘がありました。
調べてみると、キーボードの出し入れの検知の処理に問題がありました。その点を修正。

バージョン 7.5.1。
シャッフル機能に新たな種類を加えるべく開発を進めました。
* ファイルの先頭を固定し、残りをシャッフルする
* 周回毎に再シャッフルする
手を入れる箇所は少なくて済むと考えて開発を開始したものの、実際に行うと思っていた以上に手を入れる必要がありました。
Appleのクリスマス休暇前には一通りできあがったものの、動作確認を行いたかったので、この部分は休暇明けに回しました。

2018年からVtuber動画を見るようになった

2017年の12月に、にゃるらさんのキミは「バーチャルのじゃロリ狐娘Youtuberおじさん」を知っているか!?を読んで、バーチャルのじゃロリ狐娘Youtuberおじさんこと、ねこますさんを知った。
「やらなければ、はじまらない・・・」に衝撃を受けた。VRChatにも興味を持った。しかし、Etow開発が佳境であったので、当時は手を出さず。その後も結局、手を出していない。動画で言及されているUnityには「戦国江戸元号並べ」ですこし触れた。Unityの3D機能には触れていない。

2018年になった。
バーチャルのじゃロリ狐娘Youtuberおじさんことねこますさんの動画や、その直後登場したバーチャルYoutuberを興奮とともに見た。
YouTubeを見る習慣ができた。
YouTubeのおすすめ機能で、それまで知らなかったYouTuber動画も見るようになった。水溜りボンドガーリィレコード
VTuberを見る中で、実写(甲賀式3D)で剥製を見に行ったり、猟について行ったりする甲賀流忍者!ぽんぽこに心惹かれた。

イラストを描いた。
アプリ開発を始める前は、余暇にはイラストを描いていた。
あまりに手が遅くて描かなくなっていた。
VTuber見る中で、久しぶりにイラストを描くようになった。

ほらげー回より。

そのほかにも詩子お姉さんおめシスを見るようになった。

おめシス

詩子お姉さん

現在(2019年年末)もVTuber動画は見ている。時折イラストを描いている。

「Repete Plus」をアップデートしました。(version 7.4)

「Repete Plus」をアップデートしました。(version 7.3 -> version 7.4)

Repete Plusは、語学学習を支援するオーディオプレイヤーです。
無音部分を自動認識し、語学教材をフレーズごとに間隔をあけて再生できます。

App Storeはこちら

使い方を紹介しているサポートサイトはこちら
Repete Plus – nackpan Blog

変更点

* テキスト編集時にはテキストエリアに設定したジェスチャー(再生/再生不要切替、テキスト表示・非表示など)は無効化されるはずなのですが、文字を選択状態でテキスト編集を開始すると、ジェスチャーが効いたままという不具合がありました。今回のアップデートで修正しました。

*「テキストを隠す」を適用しているテキストを編集するさい、従来は文字を薄く表示していましたが、今回のアップデートではっきり表示させるようにしました。

開発者後記

今回のアップデートでは、
* シャッフルに新たなタイプを加えること
* ジェスチャーがテキスト編集時にも認識されてしまうことがある不具合の修正
を達成すべく開発を開始しました。新たなシャッフル方法の追加は、少数の箇所の修正でできるのではないかと考えていました。しかし、実際に取り掛かると思ったよりも大改造になり、Appleのクリスマス休暇前に間に合うかあやしくなったので、この部分は次回に回すこととしました。

ジェスチャーがテキスト編集時にも認識されてしまうことがある問題。
なぜこの問題が発生するのか?
テキスト編集開始時にジェスチャー機能を解除、テキスト編集終了時にジェスチャー機能追加しています。想定では、テキスト編集時にはジェスチャーは認識しないはず。
テキスト編集時のジェスチャー機能の追加と解除の状況を順々に追ってみました。テキスト編集開始ボタンを押すと、キーボードが表示されます。このとき、keyboardWillShowという通知が行われます。これは想定通りの状況です。
しかし、テキストを選択している状態でテキスト編集開始ボタンを押してキーボードの表示を行うと、keyboardWillHideが呼ばれてから、keyboardWillShowが呼ばれるという思いがけない状態になっていました。
ここでkeyboardWillHideが呼ばれているというのを考慮した処理になっていなかったので、テキスト編集時にもジェスチャーが効いてしまうことがあったのでした。
この部分の調整を行うことで、不具合を解消することができました。

それでは、ジェスチャーがテキスト編集時にも認識されてしまうことがある不具合が修正されたRepete Plusをよろしくおねがいします。

「Repete」をアップデートしました(version 6.1.1)

iPhone/iPadアプリ「Repete」(レペテ)(旧「語学学習支援プレイヤー」)をアップデートしました。(version 6.1 -> version 6.1.1)

「Repete」は、語学学習の手助けをするオーディオプレイヤーです。ファイルの無音部分を自動的に検出し、フレーズごとにあいだをおいて再生します
リピーティングに便利なオーディオプレイヤーです。

変更点

  • App Storeに表示されるタイトルが、「Repete(語学学習支援プレイヤー)」から、「Repete」に変わりました。
    Appleの審査で、(語学学習支援プレイヤー)の部分は、余分なキーワードと判断されメタデータリジェクトを受けたので、取り除きました。
  • 「よく使う設定を登録する」「設定変更」で表示される文言にローカライズ忘れがあったので修正を行いました。([リピート]Section -> [リピート]区間)
  • 内部構造の改善を行いました。

語学学習を助けるRepeteをよろしくおねがいします。

iOS 13で日本語入力時のスペースを半角にする

iOS 13では、日本語入力をした際、スペースを入力するとデフォルトでは、全角スペースが入力されるようになりました。
日本語文章中のスペースは全角スペースが入って欲しかった場合には良いのですが、そうではないときには困ります。

日本語入力時のスペースを半角スペースにする方法

設定 > 一般
一般 > キーボード
キーボード > スマート全角スペースをOFF

これにて、日本語入力時のスペースが半角スペースとなりました

iOS 12からiOS 13での、Siri ショートカット追加方法の変化

iOS 12から、Siri ショートカット機能が追加されました。登録した作業をSiriから実行できる機能です。Siriを声で呼び出して、登録した音声指示から実行することができます。あるいは、Siriは登録した指示をロック画面に提案してくるので、それをタップすることでも実行できます。

iOS 13になって、Siriに登録する方法に変化がありました。
iOS 12およびiOS 13での手順のちがいを紹介します。

iOS 12とiOS 13でのSiri ショートカット追加方法のちが

Siri ショートカットを使う – Apple サポート
こちらのサポートページの説明は2019年12月13日現在、iOS 12での説明になっています。
ここで紹介されているSiri ショートカット追加方法は

  • 「設定」画面からショートカットを追加する
  • App からショートカットを追加する

です。ここでは示されていませんが、ショートカット AppをApp Storeからダウンロード、インストールして、そこから登録することもできます。

iOS 12で、「設定」画面からショートカットを追加する場合、「設定」>「Siri と検索」> 「ショートカット候補」から追加する手順になっていました。
しかし、iOS 13では、「Siriと検索」には、ショートカット候補は表示されなくなりました。
iOS 13では、

App からショートカットを追加する

あるいは、

ショートカット Appからショートカットを登録する

ことになりました。iOS 13では、ショートカット Appが、あらかじめインストールされるようになったので、「Siriと検索」項目からは、ショートカット候補が外されたのかもしれません。

App からショートカットを追加するさいの手順

使用しているAppから、Siri ショートカットを追加するには、

「Siriに追加」ボタンをタップします。

すると、iOS 12では、このような画面が表示されます。

ここで、赤丸の録音ボタンをタップし、自分用のフレーズを録音します。このフレーズをSiriに呼びかけることによって、ショートカットを実行することができます。

iOS 13では、「Siriに追加」画面が変わりました。

録音方式ではなくなりました。「音声コマンド:」の箇所に、フレーズのテキストが表示されています。このテキストを発声してSiriに呼び掛ければ、「実行:」に記された処理が実行されます。
「音声コマンド:」のフレーズは編集できます。タップすると、キーボードが出てきてテキスト編集できます。
WWDC 2019のこちらのビデオで、その辺りについて触れています。

Building Great Shortcuts – WWDC 2019 – Videos – Apple Developer


ところで、iOS 13.2.3までは、「Siriに追加」画面は、「言語と地域」の言語を日本語にしていても英語で表示されていましたが、iOS 13.3で日本語表記されるようになりました。自作アプリでも使用していて、この点に困っていたので問題が解消されてほっとしました。

iOS 13.3でINUIAddVoiceShortcutViewControllerが日本語表示された

iOS 13.3がリリースされました。

iOS 13.3 | iOS 13 のアップデートについて – Apple サポート

iOS & iPadOS 13.3 Release Notes | Apple Developer Documentation

iOS 13.2.3までは、「Siriに追加」ボタンを押したときに表示される画面が英語のままで困っていました。

iOS 13.2.3でのINUIAddVoiceShortcutViewController

この画面でフレーズを入力修正して「Add to Siri」をタップすることで、Siriに登録できます。しかし、日本語を使用言語にしていても、英語で説明が表示されていました。

それが、iOS 13.3を入れたiPhoneで見てみたところ、

iOS 13.3でのINUIAddVoiceShortcutViewController

となって、日本語表示されていました!
設定の「言語と地域」のiPhoneの使用言語で設定した言語でローカライズされるようになりました。