たこたこ研究所R

文章力鍛える

Google Photo一括ダウンロードとJSONから日時情報の復活(Google Photos Takeout Helper利用)

Google Photoから一括ダウンロードした画像は、メタデータ(日時)がDL時点にリセットされてしまう。
Google Photos Takeout Helperを利用して元に戻す事ができたので、その際に調べた情報をまとめる。
Windows環境前提で記載するが、他の場合も特に手順は変わらないと思う。

Contents

背景

現在私はスマホで撮影した写真をGoogle Photoにアップして一元管理している。 Pixelがシームレスに同期してくれて、検索もいい感じなので満足してるのだが、以下の理由から一旦まとめて写真ファイルを落としておこうかと思った

  • GooglePhoto無料版は容量が15GBしかなく、不安になってきた
  • プラットフォームに依存しすぎると、課金ルールが変わったりした際に移行が辛くなるので、できればローカルのNASとかで管理したい気持ちになってきた
  • 写真はデジタルより物理的にプリントしておいたほうが長く残るよなぁと思ったので、まずは棚卸ししたい

1. Google Photoから一括ダウンロード(TakeOut)

Google TakeOutGoogle Photoを対象に指定してExportする。

  1. Google TakeOutを開く
    Google Photoの設定画面からたどるといい
  2. ガイドの通り、対象を選択していけばOK。 ファイルサイズは分割されるZipのサイズになるので、ダウンロードし易い単位で選択。
  3. ダウンロードリンクが準備されると、メールが届く。
    • サイズにもよると思うが、自分の場合は合計30GBのファイルが半日くらいで準備された
  4. リンクを開いて一つずつポチポチDLする

2. ダウンロードしたZipファイルの中身

Google Takeoutでダウンロードした画像をそのまま保管できればHappyなのだが、以下の状態で出てくるので少し困る

  • 画像ファイルの更新日時がDLした当時になっており、撮影日時になっていない
    • 日時などのメタデータは、画像ファイルごとに作られた同名のjsonファイルに記載。このファイルも膨大にあって邪魔
  • 分割された各Zipファイル内に、年単位のフォルダ、画像がバラバラに出力される

そのため、jsonから情報を読み込んで、画像ファイルのメタデータにマージするような処理が必要になる。
Zipファイルの中身はこんな感じ

takeout-20230102T210059Z-001.zip   //1個めのZip
└─Takeout
    └─Google フォト
        ├─Photos from 2009
        │      IMG_1111.JPG
        │      IMG_1111.JPG.json
        │      …
        ├─Photos from 2015
        │      IMG_2222.JPG
        │      IMG_2222.JPG.json
        │      …

takeout-20230102T210059Z-002.zip    //2個めのZip
└─Takeout
    └─Google フォト
        ├─Photos from 2009    //別のZipの同じ年次フォルダが分かれて入ってたりする
        │      IMG_1112.JPG
        │      IMG_1112.JPG.json
        │      …
        ├─Photos from 2016
        │      IMG_3333.JPG
        │      IMG_3333.JPG.json
        │      …

jsonの中身。Google Photoでラベル付けしてる人名の項目とかもあったりする。

{
  "title": "PXL_20211031_040230080.jpg",
  "description": "",
  "imageViews": "16",
  "creationTime": {
    "timestamp": "1635693578",
    "formatted": "2021/10/31 15:19:38 UTC"
  },
  "photoTakenTime": {
    "timestamp": "1635652950",
    "formatted": "2021/10/31 4:02:30 UTC"
  },
  "geoData": {
    "latitude": 35.6824222,
    "longitude": 139.80656109999998,
    "altitude": 36.78,
    "latitudeSpan": 0.0,
    "longitudeSpan": 0.0
  },
  "geoDataExif": {
    "latitude": 35.6824222,
    "longitude": 139.80656109999998,
    "altitude": 36.78,
    "latitudeSpan": 0.0,
    "longitudeSpan": 0.0
  },
  "people": [{
    "name": "田中 太郎"
  }],
  "url": "https://lh3.googleusercontent.com/xxxxxxx",
  "googlePhotosOrigin": {
    "mobileUpload": {
      "deviceFolder": {
        "localFolderName": ""
      },
      "deviceType": "ANDROID_PHONE"
    }
  },
  "photoLastModifiedTime": {
    "timestamp": "1670526499",
    "formatted": "2022/12/08 19:08:19 UTC"
  }
}

3. 画像ファイルにJSONから日時情報を転記

そんな感じのことができそうなツールが落ちてないかしら、とググってみたら、JSONを読み込むマクロを組んでExifToolというツールで画像のメタデータに書き込む感じのTipsがほとんどだった。

ちなみに画像ファイルのメタデータ的なやつは、EXIF(Exchangeable Image File Format)ファイルというものに格納されている。1995年に日本電子工業振興協会が開発したらしい。へえ~。 EXIFファイルについて | Adobe

ちょっと面倒くさいのでもう少し探してみると、2021年からGooglePhotos Takeout HelperというGooglePhotoから落としたファイルに特化したメタデータ更新のツールを作ってる人がいたので、ありがたく使わせてもらうことにした。

手順はReadme参照だが、ここでは自分のやった手順を書く。

Google Photos Takeout Helper のダウンロード

Releases · TheLastGimbus/GooglePhotosTakeoutHelper · GitHubからexeをダウンロードして適当な場所に置く

Zipを解凍し、1つのフォルダにまとめる

変換前のファイルを準備する
複数Zipを解凍して、バラけてる中身の年次別フォルダのファイルをひとまとめにする必要がある
PowerShellで以下コマンドで実施した。

cd C:\Zipを置いたパス
Expand-Archive -Force .\takeout-20230102T210059Z-001.zip input
# takeout-20230102T210059Z-001.zipはGoogle PhotoからExportしたZip
# inputは出力先フォルダ
# -Forceオプション付与で、出力先フォルダ内に既存ファイルがあったとしても残して出力。
#  →Zipごとにバラけてたファイルが1つのフォルダにまとまる

参考 Expand-Archive (Microsoft.PowerShell.Archive) - PowerShell | Microsoft Learn

Google Photos Takeout Helper の実行

以下のような感じで実行する。詳しい設定は--helpでオプションを確認しよう。

cd C:\Folder\Where\You\Downloaded\takeout-helper
gpth-v3.1.1-Windows.exe -i "C:\INPUT\TAKEOUT\FOLDER" -o "C:\OUTPUT\FOLDER" --divide-to-dates
# 自分の場合は--divide-to-datesを指定し、年/月フォルダで出力するようにした
# inputファイルが消えてしまうと困る人は--copyを指定する。速度は落ちるが入力ファイルは消えない

完了すると、元気な雄叫びがprintされ、

DONE! FREEEEEDOOOOM!!!

作成日と更新日がjsonから読み込んだ日時で更新された状態でファイルが出力される。嬉しいですね。

参考

candy house sesame api keyが取得できない件(2021/10/18現在)

※追記 2021/10/28 15時頃 復旧したとのサポートから返信がありました!!

以前とURL変わってたので注意

https://partners.candyhouse.co/

ーーーーーーーーーーー

 

Sesame4を買ったので、M5StickCでWeb API使って操作をトライしてるのですが、現時点で新規のAPI KEY取得ができないようです

 

以下の最新版のAPI Referenceで記載の

https://doc.candyhouse.co/ja/SesameAPI

DashboardでのAPI KEY取得で

https://dash.candyhouse.co/

以下のようにログイン後もAPI KEYの取得ができない事象です。
f:id:takoshiut:20211019015211j:image

 

サポートに問い合せてみたら、以下の回答をもらえました。

この度お問い合わせ頂き、誠にありがとうございます。
API KEYの取得がうまくいかないとのことで大変ご不便をお掛けして おります。こちら弊社エンジニアにて現状復旧作業をさせていただいておりま すが、システムの再構築が必要なため、 具体的な修復時期はお答えできかねる状況ですが、 修復した折にはこちらからご連絡させて頂きますので、
ご不便をお掛けし大変申し訳ございませんが、 ご了承のほど何卒宜しくお願い致します。

 

ということなので、結構時間がかかるみたい。

待ちましょう。。

(これは完全に推測ですが、6月くらいにtwitterで話題になってた鍵シェアでUUIDが分かるとApiキー取得しちゃえば誰でも解錠できる可能性がある件の対策で一旦塞いでいるのかも?)

BIGLOBE の電話認証が酷すぎてハマった

BIGLOBE のマイページ等の一部個人情報を開く際に「電話認証」が必要なのだが、これが不親切すぎてハマったので、同じ状況になった人向けに記録を残す。

そしてできればBIGLOBEの人に改善してもらえることを願う。。

 

※正確な情報でない可能性がありますのでその点ご了承ください。

 

状況

  • 5年前位から妹の使うスマホのために自分名義でBiglobe simを契約している。¥1800/月で安いし、特に今まで不満はなかった。
  • 自身はBiglobeではなく、ワイモバイルのSimを利用している ←伏線
  • 支払いに使っているクレカの更新があったので支払方法を設定変更しようとした
  • 去年位から個人情報設定など一部のBiglobeのマイページに電話認証が必要になったようだ。ほったらかしだったので気づかなかった。
  • 「電話認証」が通らず、一生設定変更ページにたどり着けない状態にはまった。

ハマった流れは以下。

 

①電話認証でNG

電話認証は、Biglobeに登録済の電話番号から画面に映ったワンタイムの番号に電話をかけると認証される仕組み。これが合ってるはずなのだが20回位試してもNG。発信元/先ともに正しい電話番号にもかかわらず、必ずエラーになる
f:id:takoshiut:20210506235943p:plain

(初めて見た謎の仕組みだけどオリンピックのチケット購入も同じの使ってるぽい。ググると阿鼻叫喚が見れる)

news.mixi.jp

 

②ヘルプを辿ってやっと原因に行きつく

 ”Biglobeに登録済の電話番号からかける”というのがミソで、ヘルプを頑張って辿るとやっと「スマホ電話認証の場合はBiglobe Simに紐づく電話番号しか不可。」ということが分かる。
 → エラーページから直接開くヘルプにこれが載ってないのもつらみポイント

faq.support.biglobe.ne.jp

 電話認証用の電話番号は契約時に設定した契約者の連絡先(電話番号、日中の連絡先の2つ)が設定されているようだ。ゆえに設定されているのは自身のスマホの電話番号(別のSim)であり、妹のBiglobe Simの番号でないと電話認証ができない

→ BiglobeSimの電話番号は契約後に吐き出されるもので、電話認証用に自動設定されるわけではないのがつらみポイント

 

③電話認証用の電話番号変更が面倒くさい

 じゃあ電話認証用の電話番号を変更してやるよ、と思ったのだが、変更は「電話サポート」「郵送」のみ対応との事。

faq.support.biglobe.ne.jp

 まずは当然電話サポートに連絡するのだが、10分くらい待ったがつながらなかった。しかも電話サポートは電話代自己負担。。20回試したけどつながらんと言っている人もいたので諦めた。電話サポートはコロナで体制不足らしいよ。

というわけで今、郵送用の用紙を郵送してもらっている。。。

 

感想

半日くらいかけて色々調べてやっとたどり着いた結論なのだが、ちょっとひどすぎる気がしている。。

こんな人が出るのも無理はない。

固定電話を持たない人も多い昨今、今回のケースのように別のSimの電話番号でBiglobe Simを契約している人も少なくないだろうと思う。

今ある認証サービスを変えるのが大変っちゅうのもよくわかるのだが、せめてエラー画面からの導線にわかりやすく「固定電話か、スマホBiglobe Simの番号からでないと認証できません」と書いてくれるだけでもイライラが減るのにと思う。

あと変更に際しての手続きも、電話サポートが通話料有料で、普通の人なら確実に複数回チャレンジ、何分も待たされるのはまじで悪質なのでひどくがっかりしてしまう。電話サポートの体制が取れないのでできるだけ郵送でお願いします、って注意書きが書いてあるのも気持ちはよくわかるのだがやっぱり電話サポートをまず試すのが心情だよね。。

限られたリソースの中で運用保守のサポートメニュー作るときも、一応ちゃんとできるよね?注意書き書いてあるよね?でユーザーに負担を強いるのはやりがちなパターンではあるので、できるだけイライラを減らせるように設計した方がいいね、という反面教師にはなった。。

 

わかりやすく再利用しやすい共有フォルダ構築ガイドライン

 

あなたの会社の共有フォルダも、やっぱりぐちゃぐちゃカオス状態ですか?
そしてある日上司に「とりあえずちゃちゃっと整理して」と、担当者として任命(丸投げ)された?

そんなあなたに送ります。

 

------------------------

以前書いた記事では、「フォルダを整理する」ためのテクニックを紹介しました。しかし混沌とした共有フォルダの整理は、何から手を付けていいかわからず、意外と手間取るものです。

takotakoagare.hatenablog.com


そこで今回は要件の整理~フォルダの設計~移行~運用まで含めた一連の作業を、ガイドラインとしてまとめました。
なお色々書いてますが、必要なさそうなら全部のタスクをやらなくてもいいです。また要所で、なるべく上位者に相談したり、レビューしてもらうのがいいと思います。(一番最初に「こういうタスクで進めようと思います。適宜アドバイスいただきたいのでよろしくお願いします」って宣言しておくと上司の心証がいいかも。)



 

 

共有フォルダ構築ガイドライン

1. 要件の整理

[目的]

 共有フォルダを利用するユーザーにとって、必要な要件を整理する。

[Input]

  • 現行のフォルダ構成 
  • 現行のフォルダに格納されているファイル 
  • 現行の運用手順

[実施すること]

  1. 現行のフォルダ構成や中身をリストアップする。また、カテゴリ分類をしてみる
    - フォルダのリストをGrepするツールややり方はググる
  2. 現状起きている問題点をリストアップしてみる
  3. 共有フォルダの要件(業務上必要な機能・用途など)をリストアップしてみる
  4. 実際にフォルダを利用している人にヒアリングして、問題点・要件を精査する
    - その際、上記で作った現行フォルダのリストをもとに具体的にヒアリングする 
    - 上記で作った問題点・要件が正しそうか、ほかにないか、などを確かめる
    - 用途ごとにもれなく話が聞けるように、色々な人に話を聞いてみてもいいかも(特に自分が知らない範囲の業務については、詳しい人に話が聞けるといい)
    - 要件・問題点の重要度なども調べられるといい 
  5. 問題点の原因、対応策を考えてみる
    - 共有フォルダの階層構造や、運用ルールでどのように解決できそうか考えてみる
    - 共有フォルダで解決できない問題点も出てくるかもしれない。それはそれで別途改善したらいい

[Output]

  • 問題点・原因・対策リスト 
  • 要件リスト 
  • 現行フォルダのカテゴリ・ファイルリスト

 

2. フォルダ階層の設計

[目的]
 対策リスト、要件リスト、現行フォルダリストを元に、新しいフォルダ階層案を作成する

[Input]

  • 問題点・原因・対策リスト
  • 要件リスト
  • 現行フォルダのカテゴリ・ファイルリスト

[実施すること]

 テクニックの詳細は前回の記事を参照

  1. モレ・ダブりがないように上位階層から順に定義する
    - 現行フォルダのカテゴリを元に、不要なものを削ったり、ダブってるものを統合する
    - 現行フォルダにはないが必要なカテゴリを新規に作る
    - 2階層目以降での年月日分類なども検討する
  2. 使いやすいフォルダ階層にする
    - 要件や問題の対策リストを元に、用途に沿った分類にする
    - ユーザーが迷わないようなわかりやすいフォルダ名にする
    - フォルダ名先頭に連番を付与する
    - 図書館のように、番号で大カテゴリを示す
    - 階層が深くなりすぎないようにする
    - 個人用フォルダや、とりあえずフォルダを作っておく
  3. フォルダ階層定義のリストを作る
    - どのようなファイルをいれるのかわかるように、説明や具体例を適宜書いておく
    - 実際に使う人にレビューしてもらう

[Output]

  •  フォルダ階層定義

フォルダ階層定義のフォーマット例

f:id:takoshiut:20191022011751p:plain

 

3. 運用ルールの設計

[目的]
 共有フォルダを継続的に使うための運用ルールを設計する

[Input]

  • 問題点・原因・対策リスト
  • 要件リスト
  • 現行フォルダのカテゴリ・ファイルリスト
  • フォルダ階層定義

[実施すること]

  1. 誰が、どの階層までを自由に触っていいかを検討する
    - アクセス権の設定を検討する。(Windowsドメインユーザーやグループに対し、フォルダごとの読込・書込権限の設定もできます)
  2. フォルダ・ファイル名の命名ルールを検討する
  3. 時間軸を伸ばしたときに、必要そうなルールを検討する
    - ここに置いてあるファイルは定期的に棚卸します、とか
    - 管理者を変更するときには~とか
  4. なるべく最小限のルールにする。
    - 問題があったら後から追加変更するスタンスで
  5. 運用ルールを明文化する。またユーザーにレビューしてもらう

[Output]

  • 運用ルール

 

4. フォルダの移行

[目的]
 フォルダの引っ越しをする

[Input]

  • 現行フォルダのカテゴリ・ファイルリスト
  • フォルダ階層定義

[実施すること]

  1. 現行フォルダ・ファイルのディレクトリリストはGrepしてとっておく
    - ショートカットや、ドキュメント内にリンクがあったりすると、あとで困るので
  2. 現行フォルダを使っている人たちに引っ越しの合意をとっておく
    - スケジュールや変更内容はなるべく早い段階で説明して合意をとっておいた方がいい。
    - 新しいフォルダ階層と運用ルールが作れたら、再度説明してOKかどうか確認しておいたほうがいい
  3. お引越しする
    - フォルダを作ったりファイル移動したりするのは、ググるとうまいやり方やツールがあるのかもしれない。

 

5. フォルダの運用

[目的]
 運用ルールにのっとり、継続的にフォルダを再利用可能な状態にする

[実施すること]

  1. フォルダ階層定義と運用ルールは誰でも見れるようにしておく
  2. 運用ルールが定着するまでは、定期的に見張っておく
  3. 問題があれば、適宜フォルダ階層や運用ルールを見直す
  4. 適宜管理者を立てて、役割分担したり作業を引き継ぐ
    - あなたの手から手放そう 

 

以上。頑張ってください。

将来は面白お漏らしおじいちゃんになろう

帰り道、自宅のマンションが視界に入ると即、尿意が98%くらいになることがある。それまでは全然おしっこしたくなかったのに急に来るので、内股で早歩き、エレベーターで悩ましいポーズ、玄関前でカギを探してピョンピョン跳ねるという一連のおしっこ我慢ムーブをかますことになる。

調べるとこれは「過活動膀胱」というやつで、何らかの刺激をトリガーにすぐ尿意を感じてしまう超敏感膀胱のことらしい。膀胱のおしっこをためる機能の障害であり、老若男女問わず起きうるそう。

https://takanawa.jcho.go.jp/wp-content/uploads/2017/03/9-3_yamanaka.pdf(東京高輪病院のサイトより)

こうなると老後が心配だ。若い括約筋が元気なうちはおしっこ我慢ムーブでやり過ごすことができるけど、おしっこ我慢力が低下した時には、自分のおうちを目にするだけでお漏らしするおじいちゃんになってしまうだろう。お風呂場でおしっこするクセがあった人だと、老人ホームとかで体を洗ってもらうときにおしっこ出ちゃうなんてこともあるらしい。この対策として、今から尿意のトリガーを何か別の行為に置き換えるよう習慣を変えることが必要じゃないか。

といった話を会社の先輩としていて、良い対策案が出たのでここで紹介します。

ルービックキューブを解いたらおしっこ出す

お風呂場で水に触る、噴水を見るとかが尿意のトリガーだと、所かまわずお漏らししてしまうので良くない。そのため「ルービックキューブを解く」というある程度ハードルの高いトリガーを用意することで、不適切な場所で不意に尿意を催すのを防ぐことができる。それにルービックキューブをガチャガチャガチャっと解いて即おしっこブシャーというのは、エンタメ性もあるので孫に大ウケ間違いなしだ。この方法は、ルービックキューブを解くことができないと膀胱が破裂してしまうリスクを伴うが、やって損はないだろう。

将来はおしっこで一笑い取れる素敵なおじいちゃんになりたいものだなあと思った。