本記事はソラコムが提供する「SORACOM公式ブログ」に掲載された「SORACOM Harvest Filesにアップロードされた大量のファイルをまとめてダウンロードする方法」を再編集したものです。
はじめまして、こんにちは。ソリューションアーキテクトの桶谷(ニックネーム: takuya)です。
今回はSORACOM Harvest FilesにSORACOM APIを用いてアクセスして大量のファイルをダウンロードする方法をご紹介します。
SORACOM Harvest Files とは
SORACOM Harvest FilesはIoTデバイスからのデータを収集、可視化およびファイルを保存するSORACOM Harvestの機能のひとつです。Harvest Filesは主に画像やログなどのファイルを扱います。例えばIoTデバイスに接続されたカメラの画像やログファイルなどIoTデバイスで収集した「ファイル」をSORACOMに保存できます。またアップロードするファイルパスにIMSIやタイムスタンプといったメタ情報を自動的に付与することができます。
概要や用途、SORACOM Lagoonとの連携
SORACOM Harvest Files(以下、Harvest Files)は2019年7月2日よりサービスを開始しており、多くのお客さまにご利用いただいています。
用途としては先に挙げたIoTデバイスからファイルをアップロードする先として利用する他にも、IoTデバイスのファームウェアをHarvest Filesに配置しておき、IoTデバイス側からダウンロードして適用するという使い方があります。
また Harvest Filesにアップロードされたカメラ画像のファイルをSORACOM Lagoonのダッシュボードに表示し、時系列に収集したセンサーデータの値と合わせて最新のカメラ画像を表示することで、視覚的に理解しやすいダッシュボードを作成されているお客さまもいらっしゃいます。
さらなる活用を考えた時に困ること
SORACOM Harvest Filesに蓄積されたデータは、貴重な現場のデータです。例えば長期間のデータを分析することで予知保全に活かしたり、カメラの画像を機械学習で分析して物体抽出や製造業の合否判定に活用できる可能性があります。大規模なデータの分析や機械学習を行ないたい場合、Harvest Files内に格納された大量のデータを利用したくなります。また、SORACOM Harvest Filesにアップロードしたファイルの保存期間は作成日から2年間となっており、期限が来る前のファイルを一括でダウンロードしたいケースもあります(ファイル毎の有効期限の確認方法はこちらのブログをご覧ください)。
ここで少し困りごとが出てきます。Harvest Filesはファイルをひとつずつダウンロードする事は簡単なのですが、ダウンロード対象数が増えてくると、ウェブブラウザーでは手間がかかるという事です。
SORACOM APIによる解決策
今回のような大量のファイルを対象とするといった、ウェブブラウザーでは手間のかかる作業でもSORACOM APIを用いることで簡単に確実に処理を行なうことができます。今回はSORACOM Harvest Filesから大量のファイルをまとめて取り出すサンプルスクリプトを作成してみたので、それをもとに説明していきたいと思います。
利用しているAPI
・FileEntry:listFiles
・FileEntry:getFile
上記の2つのAPIを利用しています。FileEntry:listFilesは保存されているファイルの一覧を取得する API、FileEntry:getFileはファイルを取得するAPIです。
サンプルスクリプトの中身
引数で渡された認証キーIDと認証キーシークレットを用いてファイルを取得するフォルダからファイルの一覧を取得し、1ファイルずつダウンロードを繰り返す、という形になっています。
def main(args):
--- 中略 ---
token = auth(auth_key_id, auth_key)
file_names = list_file(
base_path, search, limit_num_to_list, limit_num_to_list_per_req, last_evaluated_key, token
)
get_and_save_images(file_names, base_path, save_path, limit_size_to_files, delete, token)
シンプルに複数ファイルをダウンロードするだけであれば簡単なのですが、今回はよくありそうな要件をオプションで指定できるようにしてみましたので、いくつかご紹介します。
--limit_size_to_files
SORACOM Harvest Filesからファイルをダウンロードする際、ダウンロードしたファイルのサイズに応じてファイルエクスポート料金が発生します。全てのファイルを一括でダウンロードしてしまうと当月の料金が大きく増加してしまいます。料金を抑えるために複数回/月に分けてダウンロードする際に、合計ダウンロードサイズで処理を制限できるオプションです。
--last_evaluated_key
FileEntry:listFilesで取得するファイルの一覧はファイル名順で取得されます(Harvest Filesにファイル名順に格納されています)。ファイル名を指定することで、その次のファイル以降がダウンロード対象となります。複数回に分けてダウンロードを行なう際、前回の最後にダウンロードしたファイル名を指定することで、続きからダウンロードを再開することができるオプションです。
その他のオプション、使い方や詳細についてはREADME.mdをご一読ください。
まとめ
いかがでしたでしょうか。
SORACOM APIを利用することで、人の手では時間やコストがかかる作業を簡単に実現できました。またスクリプトから実行することで、人が操作する場合と比較してミスが混入する可能性を下げることもできます。
今回は SORACOM Harvest Filesにアップロードされた大量のファイルをまとめて取り出すというお題でしたが、SORACOMの各サービスはAPIで操作することができますので、色々なケースにおいて SORACOM APIを利用することで作業を改善できるかと思います。
APIの詳細は、APIリファレンスに掲載されており、仕様を確認できるだけではなく、実際にAPIをインタラクティブに呼び出してみることができます。また特別なお申し込みも不要で、すぐに始めることが可能となっています。
「こんな事できないかな」「これはどの API を使えばいいのだろう」といった疑問がありましたらTwitterのハッシュタグ#soracomでツイートしたり、SORACOMサポートまでお問い合わせください。
今後もSORACOM APIを使った便利な使い方をご紹介していきますので、ご期待ください!
この連載の記事
-
第587回
デジタル
LTE Wi-Fi ルーター UD-LTA、LTE Cat.1 bis対応IoTゲートウェイ(2機種)の販売を開始、他 ほぼ週刊ソラコム 11/15-11/28 -
第586回
デジタル
2025/12/10(水)~ JAPAN BUILD TOKYO -建築・土木・不動産の先端技術展- に出展:現場の課題をIoT×AIで解決! -
第585回
デジタル
SORACOM Flux 新料金プランのご案内!! -
第584回
デジタル
「防犯」だけじゃもったいない。あなたが知らない”儲かる”カメラの使い方 -
第583回
デジタル
Intelisysの2025 Top New Supplierを受賞、生成AIによる画像分析機能 「ソラカメAI」を発表、他 ほぼ週刊ソラコム 11/01-11/14 -
第582回
デジタル
ソラカメの動画をAIで解析する – SORACOM Flux での動画取得と分析方法 -
第581回
デジタル
IoTプロジェクトの進み方 -
第580回
デジタル
お手頃な価格で位置情報も温湿度も加速度もとれる GPSマルチユニットは楽しいぞ -
第579回
デジタル
I wanna IoT 罠! 狩猟罠を遠隔操作する!「IoTプロトタイピングコーナー」作品ご紹介【SORACOM Discovery 2025】 -
第578回
デジタル
カメラ x AIの民主化!「ソラカメAI」がリリース!!

