2020年06月09日
道路族マップ4周年 [付録にGoogleMyMapのバックアップ取得サンプル付き]
6月11日に、道路族マップが初めて公開されてから4年が経過します。
始めた当初は今とは全く違う姿で、GoogleMyMapを使用した、誰でも追加編集削除が行えるというものでした。
そりゃもうカオスカオス。
朝起きたらこんな狂気すら感じる地点が増えてたり、あるいは全地点が削除されていたり…。
当然書かれてある内容にも酷いものも多くて、日々チェックして削除して、ということを繰り返してましたね。
ちなみに全削除された場合に備え、自動でGoogleMyMapのバックアップを取得するスクリプトを作って対応しておりました。
スクリプトは下の方で紹介します。
日々目視でのチェックにもやがて限界が訪れます。
登録件数が600を超えた辺りだったと記憶しています。
またその頃、GoogleDrive上にマップをいつ誰が編集したかがわかる履歴の存在が発覚し、本名らしきアカウントも幾つか確認されました。
「こらアカンわ」となり、急遽新しい仕組みを考え、ドメインも取得して2017年7月20日にDQN TODAYが誕生します。
新サイトにしてからも、マップの心臓はGoogleMyMapのままでした。
ただし、登録は現在と同じ、フォームによる申請を経て登録変更削除は私の方で行う形になりました。
心理的負担がものすごく減って何かから開放された気分だったのを今でもよく覚えています。
しかしながら、スマホの普及率がどんどん上がる中、このマップにも問題が生じてきます。
埋め込んだGoogleMyMapはスマホでは致命的に見づらく、内容の更新や削除を申請するにも別のマップを開いて「この辺にあるポイント」という感じで地点を指定して送信するという、実に不便なモノでした。
また将来的に、長く放置されたままの地点は自動で消去するといった対応も必要だと思いましたが、GoogleMyMapではいつその地点が追加更新されたのかがわかりません。
そうした問題点をクリアするためには、地点情報を独自で持つ必要があると考え、昨年2019年11月21日に大改造を行いました。
地点データは独自のデータベースに持って、マップは無料で回数などの制限なく使える国土地理院の物を使用してのリニューアルでした。
ところがこれが大不評。
見難くなった、使いづらい、前のほうが良かった…
やむを得ず、今年2020年2月10日、マップのベースに月28,000回の表示までは無料で使えるGoogleMapsAPIを使用することにします。
この当時はまだ、月28,000回の表示に到達することはなく、いずれはその時が来るのだろうなーぐらいに思っていました。が。
3月。コロナウィルスによる緊急事態宣言などの影響で在宅者が増え道路族問題が一気に拡がりだします。
道路族マップへのアクセスも日増しに増え、マップの表示に掛けていた、1日900回の制限を軽く超える日々が続くようになります。
マップ自体が全く表示されなくなるわけでは無いのですが、この状態が更に酷くなると流石にGoogle先生もAPIを止める事が十分に考えられます。
かと言ってもう国土地理院の地図には戻れない…
そんなこんなありまして、4月から試験的にnoteを使った募金のお願いを始めて今日に至ります。
幸い多くの方のご支援をいただき、現在は1日の制限数を2,200回としております。それでも使い切る日が多いですが…。
回想が長くなりましたがざっくりと、道路族マップの4年間をご紹介しました。
お知らせなどで日々お伝えしております通り、マップの運用ルールやガイドラインの日々進歩改善に取り組んでおります。
見えない部分ではありますが、最近では利用者が増えた事によって、送られてくる登録申請に対しての厳しいチェックや部分的な編集・或いは登録見送りの判断などの部分で大きく時間と神経をすり減らすという課題に直面しております。
これまで一貫して最重要視してきたのは、継続性の確保です。
個人を特定しない事、誹謗中傷や報復目的での使用を認めないことなど全ては継続性の確保が原則にあります。
上記のようなマンパワー的な問題も、技術的に解決して今後の継続性を確保して参りたいと思っております…が、これに関してはいずれ人の手を借りなければならない局面に移るかも知れません。
公平性や中立性といった要素も、継続性の確保には必要不可欠であると考えています。
必ずしも一方的に道路族被害者の主張を無条件に支持するのではなく、公平性中立性を持って今後もこの問題を解決するための一助となれるよう、運営に努めてまいります。
今後とも、何卒よろしくお願い申し上げます。
■付録■ GoogleMyMapバックアップスクリプト
以下、フリーダムだった頃の道路族マップで使用していた、GoogleMyMapの登録データをKMZデータで取得して、メールに添付して指定のメールアドレスに送信するPHPスクリプトをご紹介します。
全部削除された場合など、直前のKMZをMyMapにインポートすればその時点までの状態に戻すことができます。
{}で囲まれた部分などは適宜ご利用中の物に置き換えてお使いください。
外部からのリクエストも受け付ける状態で置いてあると、数千通のメールが送られるといった事も考えられるので、ドキュメントルート外に置くとか、.htaccessでwebリクエストを遮断するとか工夫してください。
繰り返しになりますが、GoogleMyMapは共有して誰でも編集が可能になっている場合、いつ誰が編集したかがGoogleドライブに残り、誰でも見れる状態になりますのでネガティブな情報を取り扱う場合など十分にご注意ください。
■backup.php
<?php $file_name ="http://www.google.com/maps/d/kml?mid={GoogleMyMapID}"; $time = date("Ymd-His"); // 宛て先アドレス $mailTo = '{to@mail.address}'; // メールのタイトル $mailSubject = 'あなたのマイマップバックアップデータ'; // メール本文 $mailMessage = "\r\n"; // 差出人のメールアドレス $mailFrom = '{from@mail.address}'; // Return-Pathに指定するメールアドレス $returnMail = '{return@mail.address}'; mb_language("Ja") ; mb_internal_encoding("UTF-8"); $header = "From: $mailFrom\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; boundary=\"__PHPRECIPE__\"\r\n"; $header .= "\r\n"; $body = "--__PHPRECIPE__\r\n"; $body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\r\n"; $body .= "\r\n"; $body .= $mailMessage . "\r\n"; $body .= "--__PHPRECIPE__\r\n"; // 添付ファイル $attachFile = file_get_contents($file_name); $attachEncode = base64_encode($attachFile); $body .= "Content-Type: application/octet-stream; name=backup$time.kmz\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n"; $body .= "Content-Disposition: attachment; filename=backup$time.kmz\r\n"; $body .= "\r\n"; $body .= chunk_split($attachEncode) . "\r\n"; $body .= "--__PHPRECIPE__--\r\n"; // メールの送信と結果 if (ini_get('safe_mode')) { $result = mb_send_mail($mailTo, $mailSubject, $body, $header); } else { $result = mb_send_mail($mailTo, $mailSubject, $body, trim($header),'-f' . $returnMail); } if($result){ echo '<p>送信成功</p>'; }else{ echo '<p>送信失敗</p>'; } // 一時ファイルを削除 unlink($file_name); ?>
あとはcronを使って
0 */1 * * * cd /path/to/directory; /usr/local/bin/php /path/to/directory/backup.php 1> /dev/null
などとすれば毎時0分にバックアップデータがメールに添付されて指定のメールアドレスに送信されます。
※使い方がわからないなどのご質問はご遠慮ください