まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:manhole

2016 年の年初に「マンホライザー」というサービスを作って動かしていました:
http://dotnsf.blog.jp/archives/1048853473.html

マンホライザーはわかりやすく言うと「マンホール顔ハメ画像作成サービス」です(わかりやすいか??)。先日のマンホールサミット 2017 埼玉に参加した際にも、こんなアナログな顔ハメ写真サービスを提供させていただいたのですが、意外と人気があったのでした。それをウェブ上からもできるようにしよう、というわけで生まれたサービスでした。IBM Watson の画像認識機能を使って実装しており、「テクノロジーの無駄使い」な点も自己採点ポイントが高いものになっています(笑):
2017020701


上記リンク先の、2016 年に公開した当初は PHP で実装していました。その時のソースコードはこちらです:
https://github.com/dotnsf/Manholizer


このコードはこれはこれで現在も動く(注 Visual Recognition API の古いものを使っているので、顔ハメはうまく動きません)ものですが、いくつかの課題もありました。その1つが「スマホからの利用を想定していなかった」という致命的な点です。見た目でのスマホのウェブブラウザ最適化という意味では実現したつもりでしたが、想定外だったのは「スマホのカメラで撮影した画像の解像度が予想以上に高かった&今後は更に高くなることが想定される」ということです。

ある程度詳しい人には常識かもしれませんが、iPhone をはじめとする最近のスマートフォンのカメラはかなり高い解像度の写真を撮影することができます(特に設定を変更しない場合は、高解像度撮影が標準機能になっていることが多いです)。撮影した写真を低解像度にしてメールで送る、といったことは可能ですが、内部的には高解像度のまま保存されていることになります。これは1枚の写真画像のファイルサイズが非常に大きいということを意味しています。これは2つの点で問題になります。

1つはアプリケーションサーバー側の制約を受ける可能性があるという点です。例えば PHP を普通にインストールしたアプリケーションサーバーの場合、アップロードサイズは 2MB に設定されることが多いです。もちろんこの設定を変更できればいい話ですが、最近は PaaS などでミドルウェア設定を変更できないケースもあるので、そうなるとこの制約を受けてしまいます。

もう1つは API 側の仕様上の制約を受ける可能性です。このマンホライザーでは画像から顔の位置を認識・特定する必要があるのですが、その部分に IBM Watson の Visual Recognition API を使っています。この API の制約として現在は「画像は 2MB まで」という制約があるのでした。つまり上記のアプリケーションサーバー側の制約を取り除いただけでは解決にならないことも出てきてしまうのです。

上記で紹介した、以前作った PHP 版のマンホライザーにはこれら2つの課題があり、スマホからの利用を想定すると期待通りに動かないケースが出てきてしまいました。というわけで、ミドルウェアや設計段階から見直したマンホライザーを作り直すことにしたのでした。


上記2点を解決するため、まず PHP のアップロードファイルサイズ制約をうけないよう、アプリケーションサーバーは Node.js を使うことにしました。PHP から Node.js への移植を行いました。これによって 2MB を超える画像もアップロードできるようにしました。

また API 側のサイズ制約については、アップロードした画像を一旦内部的にリサイズし、API が実行できるレベルにまでサイズを減らしてから実行する、というロジックに変更することで対処しました。細かい点ですが、画像を小さくしてから実行するため、API からのレスポンスは「小さくなった画像に対する顔の位置」になります。アプリケーション側ではアップロードした画像のプレビューが表示されており、その画像にマンホールの位置とサイズを調整して「ハメる」わけですが、元の画像サイズに対するレスポンスにはなっていないので、その辺りも考慮する必要が生じます。

そんなこんなの変更を加えてできあがったのがこちらです:
https://manholizer.mybluemix.net/

2017020701

↑ちとズレてるが・・・


使い方は PC またはスマホのウェブブラウザでアプリケーションサーバー(https://manholizer.mybluemix.net/ とか)にアクセスしてください。で、「参照」ボタンをクリック:
2017020702

 

手元のローカルファイルシステムまたはフォトライブラリ等から画像ファイルを選択します。今回は「フリー素材アイドル」の Mika x Rika さんの画像を使わせていただきました:
顔4


この画像を指定して、しばらく待つと・・・
2017020703


こんな感じになりました:
2017020704


合成用マンホールのデザインとして使っているのは(マンホーラーであればおなじみの)東京都マンホールです:
2017020706


(2つの)顔の位置を識別し、うまく顔ハメになるようマンホールの位置と大きさが調整されて合成されています。またマンホールの色がピンクなのは「女性」であると認識されている様子です(男性の場合は青いマンホール画像を合成します)。また2人の上部に "-17" と表示されていますが、これは推定年齢でふたりとも「17才以下」であると推測されている、ということを意味しています(お二人の年齢は存じ上げませんが、全体的に日本人の顔は若く判定される傾向があるようです):
2017020705



なお、このサービスのソースコードはこちらで公開しています。興味ある方はご自身の環境でもどうぞ:
https://github.com/dotnsf/manholizerDemo


自分の環境に導入して使いたい場合の方法は README.md にも記述していますが、IBM Bluemix の Node.js ランタイムで使う場合であれば、まず Bluemix にログインして、SDK for Node.js ランタイムを1つ作成します(この時の名前を後で使います)。また Visual Recognition サービスインスタンスを生成し、その API KEY を取得しておきます(この値も後で使います)。

次に上記サイトからソースコードをダウンロード&展開するか git clone して、以下の2ファイルを編集します。

1つ目は settings.js です。この中の exports.vr_apikey の値に、上記で取得した自分の Watson Visual Recognition サービスの API Key の値を設定します(以下は API Key が abcdabcdabcdabcdabcdabcd であった場合の例です):
(settings.js)

: exports.vr_apykey = 'abcdabcdabcdabcdabcdabcd'; :

もう1つは manifest.yml です。この中を実際に運用するランタイムの情報に設定します。例えば eu-gb リージョンを使って、my_manholizer という名前のランタイムで運用する場合は以下のようになります(ng リージョンの場合、domain は変更せずにそのままで構いません):
(manifest.yml)

: domain: eu-gb.mybluemix.net name: my_manholizer host: my_manholizer :

この状態で cf コマンドを使ってアプリケーションを push すると、作成した Node.js ランタイム上にマンホライザーがデプロイされます:
$ cf push

IBM Bluemix を使わずに運用する場合は・・・ まあ普通に Node.js をインストールして npm install して使ってください(適当)。


ゆるキャラを画像で検索するサービスを作って公開してみました:
http://yuru.mybluemix.net/

まず最初に、自分はある程度ゆるキャラに詳しいと思っています。積極的な興味というよりは、マンホールに詳しくなっていると、最近はそのマンホールのデザインにゆるキャラが使われることが珍しくなくなってきたので、自然と(?)ゆるキャラにも詳しくなってしまうのでした。。
2017011500
 

さて、ゆるキャラに限らないのですが、イマドキ何かを調べようとした時にはまず『ググる』のが定番です。ただ、それは調べるためのキーワードが分かっている場合です。ゆるキャラの場合、名前が分かっていれば名前でググれば確実ですし、名前が分からなくても出身地とかが分かれば「ゆるキャラ 東京都」などで検索すればいくつか候補が見つかるのでそこから調べる方法もあります。

しかし問題は名前も出身地も分からず、検索するためのキーワードがない場合です。例えば目の前に着ぐるみそのゆるキャラ本体がいて、写真は撮れるんだけど、そのゆるキャラがなんという名前で、どこのゆるキャラで、どんな特徴を持っているのか、、、といった情報を調べる具体的な方法がなかったように感じていました。

といった背景もあり、「画像からゆるキャラを調べる」ことができるようなウェブサービスを作ってみた、という経緯です。いわゆる「類似画像検索」を行うため、コグニティブエンジンである IBM WatsonVisual Recognition API を使って実装してみました:
http://yuru.mybluemix.net/


使い方はシンプルで、ウェブサイトをPCかスマホのブラウザで開き、ファイル選択ボタンを押して、ローカルシステムやフォトライブラリ等から目的の画像を選択するだけです:
2017011501


PC の場合に限り、目的の画像ファイルを画面上部のこの辺りにドラッグ&ドロップしても構いません:
2017011502


例えばこの画像のゆるキャラを調べてみることにしました。まあ有名なヒトなので答はわかっているのですが、ちょっとトリッキーなアイテムも写っていて普段と違う画像になっているので、いいサンプルかな、と:
く


この画像を選択するか、画面内にドラッグ&ドロップすると画面が暗転して検索が始まります:
2017011503


暗転から戻ると、検索結果として候補キャラが画面下部に表示されているはずです。最大で100件表示されます:
2017011504


今回の画像の場合、下の方にそれっぽいのが見つかりました:
2017011505


該当する結果の画像をクリックすると、そのゆるキャラの情報がポップアップします。ご存知「くまモン」でした。なお PC であればマウスオーバーでも表示されます:
2017011506


まだまだ学習量が充分ではなく、第一候補となることはまだ珍しいとか、(着ぐるみの写真ではなく)絵の場合には精度が落ちるとか、横から写した画像に弱いとか、背景画像に左右されることが多いとか、まだまだ問題はありますが、一応動くものが作れたと思ってます。

実際の用途としてはある程度いけるかな、と思ってます。もちろん精度高く検索できることが理想ですが、上記で書いたように「名前が分かれば色々調べる方法はあるんだけど、肝心の名前が出てこない」のを解決するツールとして考えると、検索結果の候補の中に含まれていれば、それはそれでオッケーかな、と。


なお、今回のサービスは Visual Recognition の中では現時点でベータ版の /v3/collections/ で始まる API を使って開発しています。今後の仕様変更などがあった場合にサービスがどうなるか何とも言えませんが、なるべく対応させていく予定です。合わせてもう少し学習データの量を増やして検索精度を上げられないか、がんばってみます。


この記事の続きです:
2016 マンホーラー実態調査

2016年にマンホールマップでもっとも人気のあったマンホール蓋をベスト10形式で紹介します。また今年新たに投稿された蓋の中で最も人気があった「新人賞」と、今年最も多くの蓋画像を投稿いただいた方「最多投稿賞」を紹介します。

集計のルールとしては 2016/Jan/01 から 2016/Dec/20 までの間に、PC およびスマホのブラウザから単独ページとしてのアクセス数を集計しています。ページビューとしての集計なので、例えば同じページの画面をリロードした場合は1回とだけカウントされます。

過去2回の結果はこちらを参照ください:
2014 マンホールマップ年間アクセス数ランキング
2015 マンホールマップ年間アクセス数ランキング


2016 最多投稿賞

今年マンホールマップに最も多くの画像を投稿いただいたユーザーに与えられる賞です。実は今年のマンホールマップに投稿された全 836 画像のうちの半分以上はなんと2名のユーザーによって提供されたものでした。感謝の限りでございます。 m(__)m

さて、そのデッドヒートを制した最多投稿賞は・・・ 42ER03 様でした。歴史的な蓋から海外蓋まで幅広く投稿いただきました。ちなみにマンホールマップ全体で現在使っているハードディスク使用量の約 5% は 42ER03 様の投稿データだったりします(笑)。

そして例年であれば1位になるレベルの投稿をいただきながら2位となったしこれんminamu4545)様。マンホールナイト8でも発表いただいた展示蓋を中心に多くの投稿をいただきました。展示蓋という新ジャンルを確立されたといってもいいと感じました。


#どうでもいいことですが、私自身はお二人に大きく離されての4位でした。来年もがんばります。


2016 新人賞

今年マンホールマップに投稿された蓋の中で、最も多くのアクセス数を記録したのは、この蓋画像でした:
市区町村投稿者画像
朝鮮民主主義人民共和国42ER03


今年の新人賞はなんとピョンヤンの蓋!撮ってよかったのか!?という疑問は置いといて、最多投稿賞も受賞された 42ER03 さんの投稿でした。 42ER03 さんは昨年のモンゴル蓋に続いて「2年連続新人賞」(!?)という偉業を達成されました。最多投稿と合わせて2冠ですね、素晴らしい! 改めておめでとうございます。


2016 年総合ランキングベスト10

さて、今年のマンホールマップアクセスランキングには大きな特徴がありました。それは「今年投稿された蓋画像のアクセス数が多かった」ことです。 例年は「その年に投稿された蓋(以下「新人蓋」)画像のアクセス数」は「以前に投稿された人気画像のアクセス数」と比べて明確に劣るという特徴があり、そのため「新人賞」という別枠を作っていたという背景もありました。投稿されたのが年の後半になるほど総アクセス数を稼ぐのが不利になるのも事実であり、現実問題として過去に新人蓋がベスト10に入ったことはありませんでした。

ところが今年はベスト10の中に3つベスト11~20の中に5つも新人蓋が入るという異常事態が起こってしまいました。来年以降の「新人賞」という枠の存在意義がなくなってしまいかねない状況です。びっくり。

そしてこの総合ランキングトップとなる MVM(Most Variable Manhole) には、上記 42ER03 様の三冠、昨年&一昨年を制したやなぽん様の三連覇もかかっています。ドキドキなランキング、まずは10位から4位まで:


順位昨年順位市区町村投稿者画像
105石川県河北郡内灘町keymoyaking


↑10位はマンホールマップでの最多「ナイスマンホ!」記録を現在も持つ石川県河北郡内灘町のかもめマンホールでした。このマンホールは唯一三年連続ベスト10入りした蓋となりました。常に安定した人気を誇る、マンホールマップを代表する蓋でもあります。


順位昨年順位市区町村投稿者画像
9-山梨県甲斐市minamu4545


↑9位は山梨県甲斐市のマスコットキャラクター「やはたいぬ」がデザインされたマンホールでした。マンホールカードのデザインとしても採用されています。アクセス数にはカードの影響もあるでしょうね。ちなみにこの蓋は新人蓋です。


順位昨年順位市区町村投稿者画像
8-大阪府吹田市mnakam2003


↑8位は大阪府吹田市の吹田サッカースタジアム周辺にあるガンバ大阪マンホールでした。吹田市といえば「太陽の塔」マンホールが有名ですが、新しい名物マンホールになりえるマンホールです。


順位昨年順位市区町村投稿者画像
7-岐阜県美濃加茂市SatoMachiya


↑7位は岐阜県美濃加茂市稲辺地区の紫陽花&カエルマンホール。紫陽花は市の花だそうで、カエルは汚水をきれいな水に「変える」意味でデザインされているとのことです。


順位昨年順位市区町村投稿者画像
62群馬県高崎市TMW_papa


↑6位は昨年2位だった群馬県高崎市の「ぐんまちゃん」マンホールでした。2年連続のベスト10入りとなり、根強い人気を感じます。存じ上げなかったのですがサッカーに力入れてるんでしょうかね??


順位昨年順位市区町村投稿者画像
5-兵庫県明石市42ER03


↑5位は兵庫県明石市に子午線マンホール。実はマンホール画像ではなくスタンプの画像なのですが・・・ まあアクセス数が多かったのは事実なのでいいとしましょうw これも新人蓋でした。


順位昨年順位市区町村投稿者画像
4-朝鮮民主主義人民共和国42ER03


↑4位は新人賞をとったピョンヤンの風景と蓋の画像でした。当たり前といえば当たり前ですが、(日本でも下水が普及していないと見つかりにくい地域がある中で)ピョンヤンにもマンホールは存在してるんですね。。その証拠とも言える貴重な画像だと思います。マンホールマップなんかで公開してていいのだろうか・・・


ではランキングトップ3の発表です。

第3位

順位昨年順位市区町村投稿者画像
31北海道岩見沢市yanapong


↑昨年の MVM だった、北海道岩見沢市(旧栗沢町)、やなぽんさん提供の「リスのクリちゃん」マンホールでした。今年は3位でしたが、2年連続トップ3を記録したのは初めてだったりします。隠れた人気蓋ですが、栗沢町が岩見沢市との統合でなくなってしまったこともあり、現在では新設されることのない、貴重なマンホールとなっています。

第2位

順位昨年順位市区町村投稿者画像
26茨城県つくば市kenitirokikuti


↑昨年も6位と人気のあった茨城県つくば市のスペースシャトルマンホールでした。コンスタントに人気の高い蓋です。背景にはつくばのシンボルでもある筑波山がそびえ、土星のようなよくわからない星(?)が描かれたマンホールです。ブラジルっぽい色合いも特徴的で、これもマンホールカード化されています。


今年のベスト10蓋は例年以上にカラー蓋が多くランキング入りしています。マンホールカードの影響もあると思いますが、マンホール観賞がより一般的に広まってきた証拠かもしれません。嬉しいことです。

そんな今年の栄えある MVM は!? 42ER03 さんの三冠と、やなぽんさんの個人3連覇の行方は果たして!!??


第1位






































順位昨年順位市区町村投稿者画像
1-東京都港区dotnsf


・・・僕が投稿したやつだ。。 (O.O;

カラー蓋でもないし、マンホールカードにも採用されてないし、デザインもアレだし、、、ちなみに知り合いの家の近くで撮影した、エバタ株式会社のインバート蓋です。なんか見たことなかったので。。

いや、あの・・・ 僕が試験的に負荷をかけたとか、そんなことはないんですが・・・ とりあえず、ごめんなさい。。。


この蓋は特別アクセスが多かった日があったわけではないのですが、夏頃に連続して何度か参照されたことが積み重なってアクセスが記録されていました:
2016122101


加えて、参照されたページを調べてみると、この蓋はスマホ版のスライドパズルでのアクセスが 47%(図の青)もありました:
2016122102


たしかにスライドパズルでは比較的難易度の高い蓋だと思いますが、誰か愛好者がいたんですかね。。:
2016122103


実は昨年の MVM もスライドパズルでアクセス数をかせいでの1位でした。スライドパズル機能は作者である僕が考えている以上に使われている機能なのかもしれません。。。ただ、それにしてもなんでこの蓋を・・・ 奥深い何かが潜んでいるのかもしれません(マンホールだけに)。


最後になりましたが、今年はマンホールカードの配布など、マンホールの認知度を広めるという意味では大きな節目となった1年であったと思います。マンホールマップのアクセス数も大きく増え、内部の話をするとサーバーにかかる負荷も大きくなっております。嬉しい悲鳴です。

来年も皆様に安心してマンホールマップを使っていただけるよう、新機能だけでなく、安定運用にも注力していこうと思っています。引き続きマンホールマップをよろしくお願いします。

そして MVM 、中の人が取っちゃってごめんなさい!でも本当はすごく嬉しいですっ!!

今年もマンホーラー実態調査の結果発表の季節がやってまいりました! 2016/Jan/01 から 2016/Dec/19 までのマンホールマップと連携した Google Analytics とアクセスログ、そして実データを使って、2016 年のマンホーラー(注 マンホールが好きな人)の実態と傾向を浮き彫りにする、というビッグデータ解析企画です。ちなみに昨年と一昨年の結果はこちらから参照ください:
 2014 マンホーラー実態調査
 2015 マンホーラー実態調査


2016 マンホールマップ利用動向

2016122002

1回のセッションでの平均ページ数は 4.69、直帰率は 53.53% 、平均セッション時間は 4 分 43 秒でした。昨年は 4.65 と 56.77%、4分22秒だったので全ての数字が改善の方向で推移しています。昨年と比較して、マンホールマップを訪れたユーザーが、より多くのページに移動して長く楽しんでいただいている、ということになります。直帰率 50% 切りも視野に入ってきました。

なお、アクセス数は非公開ですが、昨年比で倍近いページビュー数があった、ということを報告しておきます。


利用者の国、言語

今年は 62 の国/地域からマンホールマップをご利用いただきました(昨年は 65):
2016122012


国別のアクセス数1位はダントツで日本ですが、2位以下は毎年変化しています。さて 2016 年はというと・・・
2016122003


2位は UK(イギリス)からのアクセスでした。なんでだろう?ポンド安でみんな旅行してた?3位アメリカ、4位ロシアあたりは上位の常連国です。 今年目立って高かったのは8位イラク、11位タイ、14位ミャンマーあたりでしょうか。水道関係者やインフラ整備で派遣されている皆様がこれらの国々で活躍されている姿が目に浮かんできます。。



日本国内の市区町村別アクセスランキング

では日本国内の市区町村別ではどのようなランキングだったかを調べてみました:
2016122004


見やすいように日本語で表にして、昨年からの順位推移を含めてみました:
1大阪市
2横浜市
3加古川市
4港区
5新宿区
6名古屋市
7(取得不可) -
8さいたま市
9札幌市
10市川市
11(東京都)中央区
12京都市
13新潟市
14千葉市
15福岡市
16世田谷区
17渋谷区
18神戸市
19船橋市
20江東区


アクセス記録一位は大阪市の2連覇。関西マンホールサミットの影響なのでしょうか?そしていわゆる「大都市」が軒並みランクを下げる中で加古川市や船橋市、市川市といった衛星都市が順位を挙げています。マンホール界では地方分権が進んでいるようです。


利用環境

利用しているブラウザ環境を同様の表にまとめてみるとこんな感じです:
1Chrome34.26%
2Internet Explorer23.34%
3Safari17.13%
4モバイル Safari11.47%
5Edge6.18%
6FireFox4.20%
7モバイル Chrome2.74%
8(クローラーボット)0.24% -
9Opera 0.17%
10Mozilla 互換0.09%


1位は推奨環境でもある PC の Chrome、非推奨環境と明確に言っているにも関わらず2位が IE、3位は Safari、ここまでは昨年と同順位です。変わったのはその下でモバイル Safari が伸びているのは iPhone 利用者が増えていることを意味しています(逆にモバイル Chrome が落ちているので Android 利用者は減っている)。このあたりはグローバルスタンダードを逆行しています(苦笑)。また昨年は 0.55% だった Edge が FireFox を抜いている点も見逃せません。。

なお、10位の "Mozilla 互換" というのは、ネットテレビだったり、ゲーム機だったりが考えられます。まだまだ少ないのですが、いずれこういう環境も増えていくのでしょうか?テレビだと画面が広くて便利そうではありますよね。



まとめ

以上の内容から 2016 年のマンホーラーの実態は以下のようなものであったと推測されます:
・イギリスが EU から分離して、ポンド安に笑いが止まらない人がいる
・マンホーラーは昨年以上に世界中に広まっている。そして日本では地方分権が進んでいる
・マンホーラーは iPhone 派
・大阪熱い!
・Internet Explorer は不滅



さて、次回のブログでは 2016 年マンホールマップ蓋別アクセスランキングを発表します。2016年の MVM(Most Variable Manhole) の行方は!? やなぽんさん、3連覇なるか!? お楽しみに。


昨年末、マンホールマップIBM Watson の画像認識機能を組み込んだ、という記事を紹介しました:
マンホールマップに画像認識機能を組み込む

この記事を作成した当時、Visual Recognition(画像認識)の API は V2 というバージョンでしたが、その後のバージョンアップで V3 になりました。ただその時点では V2 もしばらく使えるということだったのでマンホールマップ側は放っておいたのですが、いつの間にか V2 は使えなくなっており、マンホールマップの画像認識機能が動かなくなってしまっていました(要するに僕の手抜きでした、失礼しました)。

改めて V3 に対応させようとして、上記リンク先で紹介したような手順でマンホール画像の学習をさせて・・・と思っていたら信じられないことが!!!

上記リンク先ページ内でも説明しているのですが、もともと IBM Watson の画像認識サービスでは「マンホール」を識別する機能(正確には classifier)がありませんでした。そのため(自分でカスタマイズする classifier に)「マンホール画像を学習」させて、「その上で(自分でカスタマイズした classifier を使って)マンホール識別」を行う、という手順が必要になり、その内容を紹介したのが上記リンク先ページでした。

が、今回 V3 を試してみて気付いたのは「バージョン V3 では始めからマンホールが識別できるようになっている!」ということです。要するに学習などのカスタマイズを行うまでもなく、標準機能としてマンホールが識別対象として登録されていたのでした。ワトソンに何が起こったのか・・・


・・・唯一思い当たる節があるとすれば、私ですw σ(^^; 先程から紹介しているように、V2 の頃にマンホールを学習させ、識別機能をマンホールマップに組み込みました。マンホールマップはそこそこ(苦笑)のアクセス数を誇る位置情報付きマンホール情報サイトであり、マンホール情報ページへのアクセスがある度に画像認識の識別 API が実行され、そしてその多くは「マンホール」として認識されていたはずでした。要するに「マンホール」と認識されるアクセスがワトソン側にもそこそこあったはずなのです。元々の機能ではマンホールを対象としていなかったはずなのですが、カスタマイズされた結果のマンホールがそれだけの人気があったとすると・・・ と都合よく妄想しただけですが、可能性がないとは言い切れないではないですかっ!


というわけで、現在のマンホールマップでは V3 に対応した識別機能が復活しています。そしてこのマンホール識別はワトソンの標準識別対象になっているものをそのまま使っている、ということを付け加えておきます。
2016090601


マンホールマップ(PC版)
マンホールマップ(スマホ版)


このページのトップヘ