やっとひと月以上続いた映画の仕事が終わり、自分の時間が取れるようになった。(あまり喜ばしい事では無いけど)

ヒンジが壊れていたMacBookProもついに画面が映らなくなり、16インチが今日明日にも発売、発表されるかと期待しているがあまり高いとどうするかな?という状況の中でこの文を書いている。

さて、本題に入るとして。iOS8でマニュアル撮影ができるという2014年の夏から始めたiOSプログラミングは同時に登場したSwiftという新しい言語でやってきたので、Swiftの仕様変更の度にバージョンアップを繰り返してきた。

やっとSwiftという言語も成熟してきて落ち着いてきた感があるが、そこで見えてきたのがiOS12からiOS13への変更点。

例えばFeelShotはver6がiOS12ではさほど問題無く動いていたが、iOS13では起動しなくなった。これはオーディオプレイヤーの初期化の1文だけのせいで起動しなかった。現行のver6.2.1ではそこは直しているがまだ予期せぬ問題が色々あって現在対応中。

より多くの人に、より安定したアプリを提供するにはどうしたらよいか?

iOSという環境で開発している以上、アップルの方針には従わざるを得ない。その中でどうするのが一番良いか?

一つのバージョンで過去のOSでも動くのが理想なのだが、、、

今まで動いていたものが新しいOSでは動かない。それに備えてプログラムを改変すると今度は新しいOSでは動くが古いOSではどうなのか?それを検証するために古いOSの実機を残しておくのか?

「作法」という言葉が一番適しているように思うが、iOSのバージョンが上がると作法が変わり、仕様上問題ないはずなのに不具合が出るという状況に対応するベストな手段は?

やっと一つの結論に辿り着いた。これからiOSのメジャーバージョンアップの度にアプリもバージョンアップして、それをそのOS専用にしてしまえばいい。この方法ならiOS12でまだ使っている人がiOS13用の最新にして逆に不具合が出るという事も防げる。

上の画像のようにXcodeでアプリのターゲットのバージョンを設定する。この場合iOS13以降用。これでアプリをリリースするとiOS12の人は前のバージョンをダウンロードできる。

長くなったが今後はこの方針で進めたいと思う。