渓流釣りアプリの開発、今回はてんこ盛りの一日でした。地図の機能強化、ログイン方法の追加、そしてデータの大掃除。盛りだくさんですがお付き合いください。
地図にピンが立つようになった
アプリのメイン画面であるマップ、今までただの地図が表示されるだけでした。データはちゃんと保存されているのに、地図上には何も見えない。これはもったいない。
というわけで、地図上にピンを表示する機能を実装しました。登録された情報がピンとして地図に表示され、タップすると詳細が見られます。
ピンが増えてくるとゴチャゴチャするので、ズームアウトすると近くのピンが自動的にまとまる機能も追加。「3件」のようにまとめて表示され、タップすると拡大されて個別に見られます。

地図がズームできない…!?
ピン表示を実装して「よし完成!」と思って実機で動かしたら、地図を拡大できない。ピンチで拡大しても一瞬で元の広域表示に戻されてしまう。
原因を調べてみると、地図の表示位置を更新する処理が意図しないタイミングで繰り返し実行されていたことが分かりました。拡大する → 位置が変わったので更新処理が走る → 元の縮尺に戻される → また更新処理が走る…という無限ループ。
対策として、地図の表示位置を変更する処理を必要最小限に絞りました。「初回表示時」と「現在地ボタンを押したとき」だけ。それ以外はユーザーの操作に任せる方針に変更したところ、無事に解決。
こういう「一見動いているように見えて、実は裏で暴走している」タイプのバグは見つけるのが本当に大変です…。
Appleでもログインできるように
これまでGoogleアカウントでのログインだけでしたが、Appleアカウントでのログインにも対応しました。
実はこれ、App Storeにアプリを出すための必須条件なんです。Googleログインを提供するなら、Appleログインも提供しなければならないというルールがあります。そして、Appleログインを実装するにはApple Developer Programへの加入が必要。年間12,800円の出費です。
とはいえ、App Storeにアプリを出すならいずれ必要になるもの。覚悟を決めて加入しました。
幸い、ログイン周りの設計を最初からしっかり作っておいたおかげで、変更したファイルは実質2つだけで済みました。こういうとき「最初にちゃんと設計しておいてよかった…」と実感します。
ただ、一つ落とし穴が。Appleログインでは名前が初回しか取得できないという仕様があって、2回目以降のログインでは名前が返ってこない。知らないとハマるポイントです。
データの大掃除
アプリ内部のデータの持ち方も見直しました。
開発を進めていくうちに「UIからは入力できないのにデータだけ保存されている項目」や「将来使うかも…と思って配列にしてたけど実際は単一の値でいい項目」がいくつか見つかりました。
リリース前の今のうちに整理しておかないと、後で困ることになります。家の引っ越し前に不要なものを処分するのと同じですね。
次のステップ
地図にデータが表示されるようになって、だいぶ「アプリらしく」なってきました。次は画面の細かい調整と、実機でのテストを重ねていく予定です。


コメント