@kyanny's blog

My thoughts, my life. Views/opinions are my own.

写真の EXIF 情報をはてなブログにコピペするための iOS ショートカット

https://www.icloud.com/shortcuts/b27732c4954e402097fa93f3b0fbc62f

iOS 15 から、「写真」アプリで一部の EXIF 情報が表示されるようになった。

本日公開のiOS 15、「写真」アプリでExifを見られるように - デジカメ Watch

しかし、表示されている EXIF 情報をテキストとしてコピーすることはできない。

「Google フォト」アプリでは以前から一部の EXIF 情報が表示できたが、これもテキストとしてコピーする方法はない。

そのため、はてなブログに写真を投稿するとき EXIF 情報を書き添えるには、手作業で書き写す必要があるため、iPhone からだと手間だった。

サードパーティのアプリの中にはテキストでコピーできるものもありそうだが、せっかくなので iOS のショートカットで解決する方法を模索した。

ショートカットの作り方、というかアクションの使い方は結構難しいので、先例を検索したところ、RoutineHub というサイトに掲載されていたものが最初に見つかった。

後者は写真と EXIF データを書き出した HTML を WebView で表示するという凝った作りで、コピーはできるものの、項目ごとに何度もコピーしたり、丸ごとコピーして整形するのはエレガントではない。処理のステップ数も非常に多く、自作する際の手本とするには難解だった。

もっといい方法がないか探して、Reddit の投稿を見つけた。

これは極めて有益だった。ショートカットアクションの使い方や EXIF 情報がどのようなデータ構造で保存されているかの完全な解説、さらに気をつけるべきポイントも余すところなく触れられていて、実際に動作するショートカットも公開されており、ステップ数が少なくて手本にするにも改造するにも最適だった。

これをベースに、せっかくだから iOS の「写真」アプリの表示に似せた形で投稿するように HTML の table タグとして整形・クリップボードにコピーするように改造したのが、冒頭にもリンクを貼った自作ショートカット、その名も「はてなブログ用のEXIF」。

https://www.icloud.com/shortcuts/b27732c4954e402097fa93f3b0fbc62f

これを実行すると、選択した写真の EXIF 情報を、こういう table タグとしてクリップボードにコピーする。

<table style="text-align:center">
  <tbody>
    <tr>
      <td colspan="5">Apple iPhone 13 Pro</td>
    </tr>
    <tr>
      <td colspan="5">Apple iPhone 13 Pro back triple camera 5.7mm f/1.5 </td>
    </tr>
    <tr>
      <td>ISO 125</td>
      <td>26 mm</td>
      <td>0 ev</td>
      <td>f1.5</td>
      <td>1/100 s</td>
    </tr>
  </tbody>
</table>

実際の表示はこうなる。

Apple iPhone 13 Pro
Apple iPhone 13 Pro back triple camera 5.7mm f/1.5
ISO 125 26 mm 0 ev f1.5 1/100 s

表示形式は photohito や 500px なども参考にして、どういうのがかっこいいか迷ったが、iOS の「写真」アプリに似せることに落ち着いた。

テキストの整形ステップでのわかりやすさのために変数を多用していたり、焦点距離の取得方法を少し工夫したりはしているが、基本的な部分はすべて Reddit 投稿のものを踏襲している。ちまちまと夜なべしてどうにか完成した。

Reddit 投稿には EXIF 情報のデータ構造と辞書のキーは一覧されているが、それぞれの情報が何を表すのかまでは解説されていない。キー名でだいたいわかるが、よくわからないものもある(露出補正はどれ?とか。正解は ExposureBiasValue)。そこで以下のサイトが役立った。

iPhone のカメラの焦点距離については以下のサイトも参考になった。手元の写真で調べたところ、iPhone のカメラで撮った写真は FocalLengthIn35mmFilm に 35mm 換算の焦点距離が入っているが、OM-D E-M1 Mark II + M.ZUIKO DIGITAL ED 12-40mm F2.8 PRO や X100V で撮った写真は FocalLengthIn35mmFilm はなくて FocalLength に実際の焦点距離が入っているとか、X100V でデジタルテレコンを使った場合は FocalLength は変わらない(23mm のまま)とか、理解が深まった。

他にも撮影日時とか、表示してもよい情報はあるが、一旦これでしばらく使ってみる予定。これで写真を投稿するのが楽しくなって、もっと投稿するようになるといいな。

一つ未決着なのが、写真加工アプリを使った際の情報を載せるべきか、どう見せるか。VSCO でどのフィルターを使ったか、などはあとで自分が見たくなりそうな情報なので書いておきたい気もしつつ、そこまで記載し始めたら too much な気もしつつ。