Power Automate :iPhone の HEIC 形式の写真を OneDrive にアップロードしたら JPG 形式に変換する!

去年このような嘆きの記事を書きました。

OneDrive :iPhone のモバイルアプリから写真をアップロードした時の挙動が変わった

今の iPhone では、撮った写真は .heic という拡張子のファイルで保存されます。で、それまでの OneDrive モバイルアプリの挙動は、このHEIC形式の写真ファイルを、JPG形式に変換してアップロードしてくれたので、そのままPCで画像を利用できていました。
ところが、この OneDrive モバイルプリの仕様変更により、HEIC形式の写真ファイルはそのままの状態でアップロードされるようになったんです。高画質のままでファイルサイズが小さくなるのがHEIC形式の特徴という事で、この仕様変更は正しいっちゃ正しいんだろうけど、PCでそのまま写真ファイルを扱いづらくなってきたのは残念です。
これを解決するには Microsoft Store で HEIF 画像拡張機能なるものをインストールすれば良いとの事だけど、なんか僕のPCではイマイチ微妙なんですよね。画像が荒いまま表示されたり、別にJPGに変換できるようなUIがなかったり(もしかしたらあるかも…)。他にフリーソフトやWebサービスで変換できるけど、それもなんだか嫌だ…。
という事でちょっと困っていた時に Twitter で軽く呟いたら救世主が現れました。某株式会社ソントレーゾの名物CTOで僕と同じ姓の中村亮太さんです。

パパっと作ってパパっと記事にしてくれるんですよね。

#PowerAutomate を使って iOS の 画像独自方式 HEIC を ノーコードで jpeg形式に変換する!

ありがたやぁ!という事で早速僕の方でも作ってみました。
更に僕の方でアレンジを加えていたり、気が付いた点をこの記事で追記します。(以下は、上記の某CTOの記事を目を通した前提で書きます)

■気を付けたい点:同じフォルダを利用すると?

「ファイルが作成されたとき」トリガーアクションと「ファイルの作成」アクションで同じフォルダーを指定した場合。この時は、1回ファイルをアップロードすると2回フローが走ります。
「ファイルが作成されたとき」がトリガーなので、まずHEICファイルがアップロードされた時がトリガーとなり1回目のフローが走りますが、そのフロー中に「ファイルの作成」で作成されたJPGファイルがアップロードされると、それをトリガーとして2回目のフローが走るので。
幸い「条件」でHEICの時だけ動くフローになっているので無限ループにはなりませんが、 Power Automate って無限ループに陥るフローが作れてしまって、知らないうちに大量にフローが動いている…という場合もあり、テナント全体に影響が出てしまいかねないので注意が必要な部分ですね。

■アレンジ:アップロードしたHEICファイルを削除

用途はJPG画像が欲しいだけなので、 iPhone から OneDrive にアップロードした HEICファイルは不要になります。ずっと保存されていると容量の無駄なので、変換されたJPGファイルがアップロードされた後は、元のHEICファイルは削除されるアクションを追加しました。

その他のフローの作り方は某CTOの上述の記事を参考にしてください。

僕が最後に足したアクションはこれだけ。

▼「ファイルの削除」アクション

ただ、この「ファイル」というところに何を追加するのか?で何度かエラーを出しながら正常動作を確認したのがこの「ファイル識別子」です。これはトリガーアクションである「ファイルが作成されたとき」の中のものです。

▼これを選択します

ここらへんの試行錯誤は慣れるまではありますよね。

では、動作を確認します。

▼ iPhone から画像をアップロードすると OneDrive の該当フォルダーにアップロードされます

▼少し経つと指定したJPGファイル用のフォルダーにJPGに変換されたファイルがアップロードされました

▼そしてHEICファイルは消えました


こうやって人のフローを参考に自分でパパっとアレンジできるところも Power Automate の良いところですね!正直な話、CTOのブログ記事を見ないと、非エンジニアの人が Base64ToString 関数を使って解決!なんてなかなかできないと思うんです。そこはやはり先人達のアウトプットがありがたく感じる部分だと思うし、特に Base64 の意味を知らなくても検索すれば解決できてしまうという点では、良いか悪いかはわかりませんが、非エンジニアの方でも作れてしまうんですよね。

そういう意味でも、このようにコミュニティの輪によって互助できるって素晴らしいです。特にこのような非エンジニアでもできるノーコード・ローコードソリューションでは。このようにしてどんどん「 Citizen Developer 」が生まれて欲しいですね。ただ、そのためにもクレクレばかり言ってると良くないので、自分でも定期的にアウトプットしていく事が大事ですね。「互助」ですから。そういう意味では、今回は僕から問題提起をしてそれに関してアウトプットしてくれる人がいて、それを僕がインプットをして、更にアウトプットを加えるという輪ができていると思います。是非、インプットだけの方がいらしたら、アウトプットもしてみましょう!世界がまた変わります。