日本全国ハンバーガーショップ分布地図Tweet以前、Processingを使って日本全国のコンビニ店舗の分布地図を作成したが、今回はハンバーガーショップの分布地図を作成してみた。個人的にハンバーガーショップには小さい頃から思い入れがあって、小学生の頃、初めてマクドナルドのハンバーガーを食べたときに「なんて美味しいんだろう」と感動した覚えがある。今でこそ安価な食べ物という認識だが、当時は他の食べ物に比べて割高であまり頻繁に食べられなかった。その後はだんだんとハンバーガーから離れていったが、モスバーガーと出会ったときに二度目の感動を覚えた。冷たくてジューシーな野菜と熱々のハンバーグが絶妙にマッチしてそれまで食べたことのないハンバーガーだった。少々食べにくくはあったが、逆にそれが溢れる美味しさを表現していたようにも思う。Marketのアボガドバーガーだ。少々値は張るが、普通のチェーン店に比べて味は飛び抜けていると思う。チェーン店ではないハンバーガー専門店なら他にも美味しいハンバーガーがいろいろとありそう。以下に作成したプログラムを示す。分布の表示・非表示を切り替える。起動時はマクドナルドのみ表示。地図を拡大・縮小する。プログラムの作成方法は前回のコンビニ店舗分布地図を作成した方法とほとんど変わらない。住所をネットから取得する。APIで緯度経度変換し、さらにPythonスクリプトでUTM図法に合わせてXY座標変換する。そのデータをtar/gzipでアーカイブし、Processingを使って読み込み、日本地図に表示する。ブログへの貼り付けはProcessingでJavaアプレットにエクスポートできるのでそれを使う。今回の分布地図を見て、マクドナルドよりもかなり後に出てきたモスバーガーの店舗が思ったより多く、全国的に展開していて驚いた。子供の頃に食べた森永LOVEは既に存在せずロッテリアに買収されたことも今回作成する過程で知った。他には東京に最近出現してきたバーガーキングや沖縄のみに存在するA&Wがやや気になった。沖縄のA&Wへは簡単には行けないが、バーガーキングは今度行ってみよう。住所データさえあればコンビニ店舗やハンバーガーショップに限らずどんな分布地図でも作れることだし、何か面白い題材ないかな。(AS3)で作ってみた。プログラムでは初期ルールをライフゲームとしている。初めにC++で書こうと思ったのだけど、Web上でグラフィカルに操作できないとつまらないと思い、AS3でFlashとして作成しwonderflに登録することにした。ついでに時間的なエントロピー変化を視覚的に認識できたら面白そうだと思ったので、それについても実装した。2の問題として出されたからだ。2次元セルオートマトンのサイズと初期配置、それにルールが与えられ、指定した世代で生存セルが最大になるように初期配置を変更しろという問題だ。問題を解くために色々と調べているうちにセルオートマトンが面白く感じられたのでブログ記事にしてみた。言っても今回のコードはコンテストのような特別なチューンなどはしていない。ビット配列や剰余テーブルなどは使っているがどちらかというと読みやすさを優先させている。作成したプログラムを以下に示す。最初に実行されるルールはライフゲームだ。セルの回りに2つの生存セルがあった場合、そのセルは現状「維持」となり、3つの生存セルがあればそこに生存セルが「誕生」する。生存セルが1つ以下か4つ以上の場合は死亡セルとなる。上端と下端、右端と左端は繋がっていて周期境界条件となっている。現在のルール設定はFlash画面の左下に[..=+.....]と表示される。「変化」(死亡セルであれば生存セルとなり、生存セルであれば死亡セルとなる)となっている。ルールの右隣にある数値は初期状態の生存セルの割合で、その右隣の数値は現在の生存セルの割合を示している。初期状態の生存セルの割合はXキーで増加、Zキーで減少させることができる。上に書かれているFPSは1秒間に表示されるフレーム数を示し、Nは現在の生存セル数、Hはエントロピーを示す。ここでエントロピーについての説明をしておく。時間的なエントロピーHについては下記の情報エントロピーの式を用いた。1世代におけるセルの変化は0→0、0→1、1→0、1→1の4通りあり、それらの確率Pkからエントロピーを求めている。2次元セルオートマトンの相転移と結晶化)。表示されるセルの色は生存セル数が多いほど赤く、少ないほど青く表示される。背景色はエントロピーに比例しており、エントロピーが高いほど明るい緑となり、低いほど暗くなる。以下にいくつかのルールによる変化を例示する。0.3これはライフゲームのルールであり、初期生存セル数の割合は0.3としている。最初は生存セル数が多くエントロピーが高いので背景は比較的明るい緑となっているが、徐々に生存セル数およびエントロピーが減ってきて暗くなってきている。5万ほどいた生存セルも1万を切るぐらいに減ってしまい、活動しているセルも縮小していることが分かる。0.9これはライフゲームのルールに周りが4つのセルで「誕生」するルールを加えたものだ。初期生存セル数の割合を0.9と高くして最初にほとんどのセルを死滅させている(周りの生存セル数が高いと次の世代で「死亡」するため)。これにより非常に少ない生存セルから始めることができる。このルールではほんの僅かに残った生存セルからでも驚異的な再生力を示し、最終的にはすべてに生存セルが生息し、エントロピーは0.98以上と非常に高い値を示す。0.1これは現状維持の性質を非常に強く持ったルールで、初期生存セル数の割合を0.1から始めるとスピードは遅いが侵食するように生存セルが繁殖していき、最終的には全体の75%ほどを生存セルで占める。動きはほとんど見られないのでエントロピーは0.4ほどであるが、生存セル数が多いので画面は赤くなる。0.9なども面白いので試してみて欲しい。セルの繁殖する様は、実際の細胞増殖を顕微鏡で眺めているかのようであり、とても興味深い。Engineメッセージボード*当ブログに関する意見や要望などにお使いください。Googleアカウントでログインすることで書き込みができます。Twitterへの送信を同時に行うこともできます。ストリートビューで散歩*Googleマップのストリートビューを利用して散歩をするWebアプリです。ストリートビューとマップを分割してマーカーを視界タイプに変更することで使いやすくしてあります。APIを利用したグラフ・チャート作成ウェブアプリです。クリック一つで簡単にグラフを作成できます。ブログ記事への貼り付けなどにどうぞ。OpenIDテスト*OpenIDによるログインのテストを行います。mixiであればクリック一つで、他のOpenIDアカウントであればそのURLを入力することでテストできます。一言コメント表示機能付きです。HTML文字変換*テキストで使われているHTML特殊文字をウェブで表示できるようにするための文字変換ウェブアプリです。プログラムのソースコードなどをブログ記事に貼り付けるときなどに便利です。短縮URLチェッカー*フィッシングサイト判別機能付き短縮URLチェッカーです。テキストボックスに変換したいURLを入力すればbit.lyの短縮URLが表示され、bit.lyの短縮URLを入力すればもとのURLが表示されます。展開されたURLがリンク付きで表示されますが、もしフィッシングサイトの疑いがある場合は警告が表示されます。Trendsの急上昇ワードをランキング順に表示します。Googleでのキーワード・画像検索やWikipediaによる用語の説明もあります。※GoogleがAPIの提供を終了したため、現在停止中です。自己紹介noxゲームを楽しむだけの余裕と感性は失いたくないnoxです。