Craft CMSで旅客機撮影記録をはじめた

公開

自宅で楽しむことができる何かがないか、とずっと思っていましたが、先日退役する旅客機を久しぶりに撮影したところ写真をきちんと整理したくなり、CMSを利用して旅客機の登録記号(例:JA825A)ベースでデータを整理することにしました。目下作成中ですが旅客機撮影記録で見えるようになっています。

FlyTeam」というサイトでもやりたいことは実現できるのですが、外部サイトに頼ると万一サービス終了になった際に折角蓄積してきたデータがなくなってしまう不安があるので、やはりCMSで自作しようと考えました。どのCMSにするかは色々迷ったのですが、行列フィールド(Matrix Field)がありこのブログでも既に利用しているCraft CMSを採用することに決めました。
写真・日付・カテゴリがセットになったフィールドの様子

登録記号から参照するだけでなく、機種別・エアライン別のようなカテゴリ別、さらには特別塗装機だけをピックアップ表示することもできるようになり、テンプレート作成とデータの整理が楽しくなってきました。

Exifデータを表示させたい

写真を公開する際にExifデータを表示させたいと考えたのですが(FlyTeamやFlickrはExifデータが表示されます)、Craft CMSだと写真をアップロードした際にExifデータが削除されるようでした。なにか手立てがないものかと探してみると、環境変数「preserveExifData」の存在を知る事になりました。40機ほど登録したところで気付いたので、もう少し早く環境変数に気付きたかったです。config/general.phpに環境変数を追加すると写真をアップロードした際にExifデータが残るようになりました。

次に表示するテンプレートを探ったところ「getExifData」があったので、craft.app.images.getExifData()のように記述したところカメラ機種やレンズデータが取得できました。表示はJA825A等で確認いただけます。Exifデータが削除されている時は画像の幅・高さ等しか取れないので、Exifデータの配列の長さが15以上の時としています。(ちょっと適当…。もっと良い方法があるかもしれません。)

{% set exifData = craft.app.images.getExifData(image.getUrl()) %}
<table>
<tbody>
<!-- 他のデータ -->
{% if exifData|length > 15 %}
<tr>
<th>カメラ機種</th>
<td>{{ exifData['ifd0.Model'] }}</td>
</tr>
<tr>
<th>レンズ</th>
<td>{{ exifData['makernote.UndefinedTag:0x0095'] }}</td>
</tr>
<tr>
<th>絞り</th>
<td>{{ exifData['computed.ApertureFNumber'] }}</td>
</tr>
<tr>
<th>シャッタースピード</th>
<td>{{ exifData['exif.ExposureTime'] }}</td>
</tr>
{% endif %}
</tbody>
</table>

カメラの機種毎にExifデータのキー名が違うかもしれませんね。私はキヤノン製カメラしか使用しないので当面は大丈夫かなと思います。