iOSショートカット制作の技術的課題と解決策
前回の記事「iPhoneだけで「位置情報・地図入り」写真作成」では、ショートカットの概要と導入方法について触れました。今回は、その裏側にあるロジックと、開発過程で解決を迫られた技術的な課題について詳述します。
メタデータを統合する自動合成システム
今回の開発目的は、選択した複数の写真に対し、一連のメタデータを正確に抽出し、印刷に適したフォーマットへと再構成して新規保存することです。図鑑を用いた事後調査においては、撮影地点の正確な特定が不可欠となるため、以下の機能を自動実行するロジックを組み込みました。
- 一括処理と画像の最適化: 複数写真の選択に対応し、1枚ごとに処理を繰り返すループ構造を採用しています。ポストカードの規格(ハガキサイズ等)に合わせ、縦長で撮影された画像を自動的に90度回転させて横長に変換します。
- 視覚的な地図情報の生成: 撮影座標を中心に地図を取得し、デザイン性を考慮して楕円形に切り抜いた上で写真上に配置します。
- 詳細な情報の掲載: 取得日、地域、郵便番号、住所、緯度、経度、高度という計7項目の変数をテキスト化し、地図と共にオーバーレイします。
実装過程で直面した4つの技術的課題
開発の過程で、iOSショートカットの仕様およびプライバシー制限に起因する、4つの主要な課題に直面しました。
- 位置情報の不確実性: iPhoneの「正確な位置情報」設定が有効であっても、撮影環境や通信状況によりEXIF情報に位置座標が含まれないケースが稀に発生します。この場合、後続の地図取得アクションがエラーとなり、ワークフロー全体が停止してしまいます。
- アクセス許可のポップアップ問題: 「場所を検索」などの位置情報アクセスを伴うアクションは、システムの許可が必要です。しかし、ホーム画面に作成したショートカットアイコンから実行すると、許可を求めるポップアップが正常に表示されず、処理が固まってしまう事象が確認されました。
- 地図上の地点表示不足: 標準アクションで取得した地図画像には、撮影地点を示すピンが表示されません。記録としての精度を高めるには、視覚的なマーカーが不可欠です。
- 大量処理への対応: 1枚ずつの手動処理では、複数箇所の観察記録をまとめる際に非効率であるという運用上の課題がありました。
高度なロジックによる解決策の構築
これらの課題に対し、条件分岐や描画ハックを用いた以下のロジックを実装することで解決を図りました。
- 繰り返し処理とEXIFチェック: 最初に「各項目を繰り返す」アクションを配置し、複数選択した画像1枚ごとに処理を行います。ループの冒頭で「写真に位置情報があるか」を条件分岐(If文)で判定し、情報が欠落している場合はポップアップ通知を出して当該画像をスキップする仕組みを構築しました。位置情報がない場合は、手動で座標を付与する以外に根本的な解決策がないため、エラーによる停止を回避するロジックを優先しています。
- 権限許可の初期化: ホーム画面でのフリーズを避けるため、初回実行や設定変更時は必ず「ショートカット」アプリ本体から実行します。一度アプリ内で位置情報へのアクセスを「常に許可」として認証させることで、次回以降の安定動作を確保しました。
- ピンの重畳と楕円切り抜き: 地図画像の中心は撮影座標と一致するため、「📍」の絵文字を「中央」にテキストオーバーレイすることでピンを再現しました。さらに、地図画像自体を「楕円」のマスクで切り抜くことで、ポストカード上でのデザイン性を高めています。
- 多項目のオーバーレイ: 取得日、地域、郵便番号、住所、緯度、経度、高度の各変数を1つのテキストボックスに整形し、地図画像と共に写真の適切な位置へ配置しました。
まとめ
本ツールは、iPhoneの標準機能で写真に位置情報の追加を実現しています。複数写真のEXIF情報の有無を判定する条件分岐を組み込むことで、不確実なデータ環境下でも動作するワークフローを実現しています。また、アクセス権限の問題に対してはアプリ本体からの初回実行という運用手順を、地図の視認性低下に対しては絵文字を重ねるというハックを導入することで解決しました。
このショートカットが、同じように記録を大切にされている方や、お子様との探求活動を楽しまれている方の一助となれば幸いです。
