No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
行きたい場所をノート(リスト)ごとに集めて、Googleマップ上にピン留めできるメモアプリ。 1. config.example.js を config.js にコピーする 2. config.js の GOOGLE_MAPS_API_KEY を、自分のGoogle Cloud プロジェクトで発行したキーに書き換える • 有効化が必要なAPI: Maps JavaScript API / Geocoding API 3. ローカルサーバーで index.html を開く(file:// 直開きだとブロックされる場合があるため) データはブラウザの localStorage に保存される(アプリ内・端末内のみ)。 「☁️ Google Driveに保存 / から復元」ボタンを使うには、Google Cloud Consoleで別途OAuthクライアントIDの発行が必要です。Read the full README ↗
行きたい場所をノート(リスト)ごとに集めて、Googleマップ上にピン留めできるメモアプリ。
| ファイル | 役割 |
|---|---|
index.html | ページの骨組み。CSS/JSを読み込むだけ |
style.css | 見た目 |
app.js | アプリ本体のロジック(状態管理・画面描画・地図) |
config.js | Google Maps APIキー(git管理対象外。各自のローカルにのみ置く) |
config.example.js | config.js のひな形。コピーして使う |
build.js / package.json / vercel.json | Vercelデプロイ用のビルド設定。環境変数からconfig.jsを生成する(後述) |
config.example.js を config.js にコピーするconfig.js の GOOGLE_MAPS_API_KEY を、自分のGoogle Cloud プロジェクトで発行したキーに書き換える
index.html を開く(file:// 直開きだとブロックされる場合があるため)
python -m http.server 8791
その後 http://localhost:8791/ を開くデータはブラウザの localStorage に保存される(アプリ内・端末内のみ)。
「☁️ Google Driveに保存 / から復元」ボタンを使うには、Google Cloud Consoleで別途OAuthクライアントIDの発行が必要です。
drive.file を追加。テスト段階なら「テストユーザー」に自分のGoogleアカウントを追加)http://localhost:8791、Vercelの本番ドメイン)を登録するconfig.js の GOOGLE_OAUTH_CLIENT_ID に設定する保存されるファイルは、ボタンを押した本人のGoogleアカウント自身のDrive内に作られます(開発者側のDriveではありません)。
drive.file スコープにより、アプリはこのアプリ自身が作成したファイルにしかアクセスできません。
未設定のままでもアプリ自体は問題なく動作します(Driveボタンを押すと設定を促すメッセージが出るだけです)。
config.js はgit管理対象外なので、そのままpushしただけではデプロイ後にAPIキーが存在せず地図が表示されない。
Vercelの環境変数からビルド時に config.js を生成する仕組み(build.js)を用意している。
config.js は.gitignoreにより自動的に含まれない)vercel.json がビルドコマンドと出力先を指定済み)GOOGLE_MAPS_API_KEY(と、Google Driveバックアップを使う場合は GOOGLE_OAUTH_CLIENT_ID)を追加し、値を設定するbuild.js が実行され、環境変数から dist/config.js が生成されてサイトに含まれる*.vercel.app やカスタムドメイン)のみ許可する(制限をかけないと誰でもキーを使い回せてしまう。Maps JS APIのキーはブラウザに送られる性質上「隠す」ことはできないため、この制限が実質的なセキュリティ対策になる)config.js は絶対にリポジトリにコミットしない(.gitignore 済み)localStorageのみ)。複数人が使う・複数端末でデータを共有するWebサービスにするには、認証とデータベースを持つバックエンドが別途必要(app.js の「ストレージ」セクションにある load / persistLists / persistPlaces がAPI呼び出しに差し替える対象)