2023 年 11 月 21 日以降、以下に記載されている地図修正は機能しなくなりました。
現在のステータスについては、問題 #41 を参照してください。
2018 年 12 月 1 日の時点で、Lightroom の非サブスクリプション バージョンのマップ機能は動作を停止しました。 Adobe は、Lightroom CC のサブスクリプション (年間 120 米ドル) を購入するか、GPS 座標をコピーしてお気に入りの検索エンジンに貼り付けることをお勧めします (笑)。
このプロジェクトは、Lightroom CC に登録せずに、失われた機能を復活させます。
これを実現するには、Adobe の代わりに独自の Google Maps API キーを使用するように Lightroom を変更します。 Google のサブスクリプションが必要ですが、そのサブスクリプションには毎月 200 米ドルの無料使用クレジットが含まれており、Lightroom マップ モジュールのカジュアル ユーザーには十分な量です。
この手順には、中級から高度な IT スキルが必要です。間違いを犯すと、Lightroom のインストールが破損する可能性があります。何をしているのかわからない場合は、指定された IT サポート担当者に問い合わせてください。私たちはあなたの IT サポート担当者ではありません。
Google Maps API キーを秘密にしておきます
Google Maps API キーを保護しないと、Google Cloud アカウントに予期しない料金が発生する可能性があります。
保証は無効です! Lightroom のインストールを破壊することについては責任を負いません。 Google Cloud アカウントの料金については当社は責任を負いません。
この手順は、Windows 10 上の Lightroom 6.14 を使用して開発およびテストされました。
ユーザーは、これは以下でも機能すると報告しました。
現在、このパッチは Lightroom 5.x (問題 #8) または Lightroom 7.x (問題 #10) では機能しません。これらのバージョンで何か進展があった場合は、未解決の問題にコメントしてお知らせください。
本当にありがとうございました!研究とフィードバックにご協力いただいた皆様に感謝します。
Adobe のキーを置き換えるには、個人用の Google Maps API キーを作成する必要があります。
このガイドの最初のセクションでは、そのプロセスについて説明します。 Google Cloud のアカウントをまだお持ちでない場合は、アカウントの作成と請求の詳細の入力も含まれます。
[API とサービス] > [ライブラリ] に移動し、[カテゴリ] > [マップ] でフィルターします。
次の API を選択し、「有効にする」をクリックします。
Lightroom は 2 つの API のみを呼び出すため、悪用のリスクを制限するために、Google Maps API キーを必要なサービスに制限します。
Lightroom Map モジュールをカジュアルに使用するには、Google Cloud の毎月の無料使用クレジットで十分です。予期せぬ事態を避けるために、予算または割り当てを設定する必要があります。予算では、設定された金額を超えると電子メール アラートが送信されますが、クォータでは API がオフになります。
予算を 1 USD、最初のアラートを 10% に設定することをお勧めします。この設定では、自分のお金を 10 セント以上使った場合に、Google からメールが送信されます。
Lightroom がまだ実行中の場合は、ここで閉じます。
Lightroom のアプリケーション ファイルを見つけて、 Location.lrmodule
というファイルを探します。これはLightroomマップモジュールです。このファイルのバックアップ コピーを作成し、安全な場所に保管してください。
場所とファイル名は、オペレーティング システムと Lightroom のバージョンによって異なる場合があります。
C:Program FilesAdobeLightroomLocation.lrmodule
です。/Applications/Adobe Lightroom/Adobe Lightroom.app
を見つけて右クリックし、 [パッケージ コンテンツの表示]を選択します。 Map モジュールは/Contents/PlugIns/Location.agmodule
です。重要な注意: バックアップ コピーを元のフォルダーに残す場合は、ファイル拡張子を変更する必要があります (例: Location.lrmodule から Location.lrmodule_bak)。そうしないと、パッチ適用されたファイルではなく、Lightroom によって引き続き取得される可能性があります。
Windows では、Resource Hacker を使用して、パッチを適用する必要がある Lua リソースを抽出します。
Location.lrmodule
を開くLUA
セクションを展開しますLOCATIONMAPVIEW.LUA
で右クリックし、ビン リソースの保存を選択しますAGREVERSEGEOCODESERVICE.LUA
で右クリックし、ビン リソースの保存を選択しますLOCATIONDEBUGPANEL.LUA
で右クリックし、ビン リソースの保存を選択します Mac では、Lua ファイルはLocation.agmodule
内で直接アクセスできます。
Location.agmodel
右クリックし、 「パッケージ コンテンツの表示」を選択します。/Contents/Resources/
に移動します。LocationMapView.lua
、 AgReverseGeocodeService.lua
、およびLocationDebugPanel.lua
パッチを適用する目的の場所にコピーします。まだインストールしていない場合は、Python 3 をインストールします。
このプロジェクトで提供される Python スクリプト patchluastr.py を使用すると、Lua ファイル内の特定の文字列を置換できます。
LocationMapView と AgReverseGeocodeService の場合は、Python スクリプト patchluastr.py を使用して、Adobe のキーを個人の Google Maps API キーに置き換えます。
.bin
で終わる必要があります。そうしないと、Resource Hacker は次のステップでそのファイルを見つけることができません。次のようにpatchluastr.py
を実行し、 {your-api-key}
を Google API キー (中括弧なし) に置き換えます。 patchluastr.py LOCATIONMAPVIEW.LUA "client=gme-adobesystems" "key={your-api-key}" -o LOCATIONMAPVIEW.tmp
patchluastr.py LOCATIONMAPVIEW.tmp "3.12" "3.51" -o LOCATIONMAPVIEW.bin
patchluastr.py AGREVERSEGEOCODESERVICE.LUA "client=gme-adobesystems" "key={your-api-key}" -o AGREVERSEGEOCODESERVICE.bin
orignal-name.lua.bak
などに変更することです。次に、次のようにpatchluastr.py
実行し、 {your-api-key}
を Google API キー (中括弧なし) に置き換えます。 patchluastr.py LocationMapView.lua.bak "client=gme-adobesystems" "key={your-api-key}" -o LocationMapView.lua.tmp
patchluastr.py LocationMapView.lua.tmp "3.12" "3.51" -o LocationMapView.lua
patchluastr.py AgReverseGeocodeService.lua.bak "client=gme-adobesystems" "key={your-api-key}" -o AgReverseGeocodeService.lua
ファイル LocationDebugPanel で、Python スクリプト patchluastr.py を使用して署名チェックを無効にします。
patchluastr.py LOCATIONDEBUGPANEL.LUA "nature" "street" -o LOCATIONDEBUGPANEL.bin
patchluastr.py LocationDebugPanel.lua.bak "nature" "street" -o LocationDebugPanel.lua
patchluastr.py の実行がTypeError: unsupported operand type(s)
などのエラーで失敗した場合は、Python 3 がインストールされていることを確認してください。複数のバージョンの Python がインストールされている場合は、コマンドの前にpython3
を付けることで、Python 3 でスクリプトを明示的に実行できます。
python3 patchluastr.py {original-file} "client=gme-adobesystems" "key={your-api-key}" -o {patched-file}.lua
実験版: Python をインストールしたくない Windows ユーザーのために、Python をインストールする必要のない実行可能バージョンのpatchluastr
ここから入手できるようにしました。コマンドラインは次のとおりです。
patchluastr.exe {original-file} "client=gme-adobesystems" "key={your-api-key}" -o {patched-file}.bin
注: 一部のユーザーは追加のパッチが必要だと報告しています。マップを機能させられない場合、またはマップが機能しなくなった場合は、問題 #12 と問題 #19 を確認してください。この問題は米国では発生しなかったため、お住まいの国によって異なる可能性があります。
Windows では、Resource Hacker を使用して、Lua リソースをパッチ適用済みのバージョンに置き換えます。
Location.lrmodule
を開くLUA
セクションを展開しますLOCATIONMAPVIEW.LUA
で、右クリックして[リソースの置換]を選択し、次に[ファイルの選択]をクリックして、このリソースのパッチ適用済みバージョンに移動します。次に「置換」をクリックしますAGREVERSEGEOCODESERVICE.LUA
を右クリックして[リソースの置換]を選択し、次に[ファイルの選択]をクリックして、このリソースのパッチ適用済みバージョンに移動します。次に、 「置換」をクリックします。LOCATIONDEBUGPANEL.LUA
を右クリックして[リソースの置換]を選択し、次に[ファイルの選択]をクリックして、このリソースのパッチ適用済みバージョンに移動します。次に「置換」をクリックしますLocation.lrmodule
を保存します。権限によっては、 「名前を付けて保存」を使用して、変更したファイルをC:Program FilesAdobeLightroom
にコピーし直す必要がある場合があります。 Mac では、パッチを当てた Lua ファイルを/Applications/Adobe Lightroom/Adobe Lightroom.app/Contents/PlugIns/Location.agmodule/Contents/Resources/
にコピーして戻し、元のファイルを上書きします。
Lightroom のインストール内のマップ モジュールが再び動作するようになりました。
Geocoding API を有効にしなかった場合は、エラー メッセージが一時的に表示されます。ただし、基本的なマップおよび地理的タグ付け機能は引き続き機能します。(注: 一部のユーザーは、地理コーディング API がアクティブ化されていないとマップ モジュールが機能しなかったと報告しています)。
これらを使用する前に、Locations.lrmodule のバックアップがあることを再確認してください。
以下の例では、フォルダーhacks
にあるパッチ ファイルを使用しています。まだ行っていない場合は、このページの右上にある緑色のボタンをクリックするなどして、Github から完全なプロジェクトを複製またはダウンロードすることをお勧めします。
注: これらのハッキングのほとんどは Google Maps API に基づいて構築されているため、最初に Google Maps API キーを修正する必要があります。
このパッチは、「Light」マップ スタイルを OpenStreeMap に置き換えます。
API キーにパッチを適用した後、次を実行します。
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/osm.patch -o LOCATIONMAPVIEW-osm.bin
Resource Hacker でLOCATIONMAPVIEW.bin
の代わりにLOCATIONMAPVIEW-osm.bin
使用するようになりました。その後、OpenStreetMap が「ライト」マップ スタイルとして利用可能になります。
ハッキングのクレジット: @pbb72
これはかなり過激です。ストリートビューを有効にすると、地図のピンが 3D で表示されます。あまり正確ではありませんが、とてもクールです。
Lightroom ファイルにはストリートビューを有効にするためのコードがすでに組み込まれているため、Adobe が開発に取り組んでいるようですが、十分ではなかったためにオフにしたのかもしれません。
この隠し機能を有効にするには、次を実行します。
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/streetview.patch -o LOCATIONMAPVIEW-sv.bin
ハッキングとスクリーンショットのクレジット: @pbb72
地球上の一部の場所では、(上から見下ろしたビューではなく) 斜めから見た航空写真を提供しています。注: これらの写真はあまり正確ではありません。
このコントロールを有効にするには、次を実行します。
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/tiltmap.patch -o LOCATIONMAPVIEW-tilt.bin
このパッチを適用すると、現在の場所でデータが利用可能な場合、新しいコントロールが右下に表示されます。コントロールを表示するには、ズームインする必要がある場合があります。
ハッキングのクレジット: @pbb72
Lightroom のマップ スタイル セレクターにこれ以上マップを追加することはできません (私たちはそう考えています)。しかし幸いなことに、Google マップには独自のマップ スタイル セレクターが用意されているので、これを有効にするだけです。
有効にすると、ドロップダウン メニューに独自のエントリを追加できます。詳細については、パッチ ファイル内のコメントを参照してください。
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/mapselector.patch -o LOCATIONMAPVIEW-sel.bin
ハッキングのクレジット: @pbb72
このパッチは、マップの下のウィンドウに JavaScript エラーとデバッグ メッセージを表示します。これは、さらなるハッキングを開発するときに非常に役立ちます。おそらくこれを永続的に有効にすることは望ましくないので、このハックを適用する前に Locations モジュールのバックアップを作成してください。
hacks/jsconsole.patch スクリプトを実行します。
patchluastr.py LOCATIONMAPVIEW.bin -p hacks/jsconsole.patch -o LOCATIONMAPVIEW-con.bin
スクリプトは次のことを行います。
では、実際に読めるエラー メッセージをお楽しみください。
ハッキングとスクリーンショットのクレジット: @pbb72
2018 年初め、Google は Google マップをサードパーティ アプリケーションに組み込むための価格モデルを刷新し、無料アクセスまたは定額料金からトランザクションベースの価格設定に変更しました。 Google Maps API へのリクエストの数がカウントされ、しきい値を超えると、リクエストごとに少額の料金が請求されます。
Google の新しい価格設定は、永久ライセンスの製品とは互換性がありません。従来の Lightroom では、Adobe がお金を受け取ったのは 1 回だけでしたが、Map モジュールを使用するたびに Google に支払う必要がありました。 Adobe にとって、これは持続可能なビジネス モデルではありません。
Adobe Lightroom の古いバージョンに埋め込まれている Google Maps API キーは、2018 年 11 月 30 日に期限切れになりました。
Google Maps JavaScript API を使用すると、Google マップを Web サイトやアプリケーションに埋め込むことができます。
2018 年 12 月の時点で、Google Maps JavaScript API の料金は地図読み込みごとに 0.007 USD (USD 7 / 1000) です。マップが読み込まれると、画面移動、ズーム、マップ レイヤーの切り替えなどのユーザーによるマップの操作によって、追加のマップの読み込みが生成されることはありません。
さらに、2023 年 3 月の時点で、Lightroom によって要求された API のバージョンは非推奨になったため、Lightroom は互換性のないバージョンをロードし、マップ機能が壊れていました。
Lightroom Map モジュールは Maps JavaScript API を呼び出して、Lightroom 内に地図を表示します。 Map モジュールが動作するには、この API へのアクセスが必要です。
この API へのアクセスは、Lua リソース LOCATIONMAPVIEW.LUA に実装されています。
Google Geocoding API を使用すると、アプリケーションは GPS 座標に基づいて場所を検索したり、地名を検索したりできます。
2018 年 12 月の時点で、Google Geocoding API の料金はリクエストあたり 0.005 USD (5 USD / 1000) です。
Lightroom Map モジュールは、場所を検索するときに、Geocoding API を呼び出して、現在選択されている画像の場所名を表示します。 Map モジュールはこの API にアクセスしなくても機能しますが、Map モジュールに入るときや画像を切り替えるときにエラー メッセージが短時間点滅します。
Map モジュールに入るときに、Geocoding API への複数の呼び出しが観察されました。また、他のどのような操作によってこの API への呼び出しが作成されるのかもわかりません。 Google Cloud Platform で利用可能な使用状況レポートを注意深く監視することをお勧めします。疑わしい場合、またはコストが高すぎる場合は、[API とサービス] > [資格情報] で API 制限からサービスを削除して、Geocoding API へのアクセスを無効にします。
この API へのアクセスは、Lua リソース AGREVERSEGEOCODESERVICE.LUA に実装されています。
逆ジオコーディング (既知の座標に基づいて画像メタデータに場所名を追加する) の場合、Lightroom は、Adobe の (期限切れの) API キーと Lightroom ライセンス キーに基づいて計算されたと思われるクエリパラメータsignature
を使用して Google API にアクセスします。問題のある API 呼び出しは次のようになります。
http://maps.google.com/maps/api/geocode/json?key=[api-key]&language=EN&channel=lightroom-6.14&latlng=[coordinates-of-my-photo]&signature=[string-of-characters]
幸いなことに、Google API は期限切れの署名によるアクセスを拒否しますが、 signature=[string-of-characters]
が URL から削除された場合、またはsignature
が不明なパラメーター名に置き換えられた場合、API は機能します。残念ながら、文字列signature
どの Lua ファイルにも存在しません。
文字列を分割することで機能が隠蔽されていることがわかりました。署名はLocationDebugPanel.lua
で計算され、そのファイル内の文字列のnature
はパラメーター名のsignature
の一部です。 nature
street
に置き換えると、API 呼び出しが次のように変更されます。
http://maps.google.com/maps/api/geocode/json?key=[api-key]&language=EN&channel=lightroom-6.14&latlng=[coordinates-of-my-photo]&sigstreet=[string-of-characters]
Google は喜んでこれを受け入れます。
2018 年以降、Google では、課金が有効になっている Google Cloud Platform のアカウントが必要になります。すべての Google Map API トランザクションは、そのアカウントに対して請求されます。幸いなことに、Google は各アカウントに毎月 200 米ドルのクレジットを与えます。その制限を超えた取引のみがクレジット カードに請求されます。
料金とサービス条件は国によって異なる場合があります。 Google の Web サイトで詳細をよく確認してください。
200 USD は、28,000 回を超えるマップのロードまたは Geocoding API への 40,000 回の呼び出しに十分であり、Lightroom マップ モジュールのカジュアルな使用には十分です。予期せぬ事態を避けるために、予算または割り当てを設定できます。予算では、設定された金額を超えると電子メール アラートが送信されますが、クォータでは API がオフになります。
予算を 1 USD、最初のアラートを 10% に設定することをお勧めします。この設定では、自分のお金を 10 セント以上使った場合に、Google からメールが送信されます。