DBからpyramidのモデルを生成する

すでに稼働中のアプリケーションでフルスクラッチする場合にモデルが流用できないところからの移行をしようとすると、モデルをDBのスキーマーにあわせて作るという作業が発生するが、これが地味に無駄なので避けたいなーと思って調べたらそれっぽいものがあったのでメモ

まだ、実際にちゃんと動くかどうかはまだ試してないのでモデルがちゃんと動かないとかって可能性はある。

SQLAlcemyにSQLAlcemy Migrateというツールがあってこれを使う。

まずはインストール、ドライバーは自分の環境に合わせたものを私の場合はmysql-connectorをチョイス

pip install --allow-external mysql-connector-python mysql-connector-python
pip install sqlalchemy-migrate

マイグレート用のテンプレートからレポジトリをまず作る。

migrate create migrate_example "Example project"
cd migrate_example/

マイグレートするDBの設定をデフォルトで利用するように設定する。

migrate manage manage.py --repository=./ --url=mysql+mysqlconnector://user:password@host/db_name

モデルを生成する。

以上でモデルが生成される。がモデルを実際には試してないので試したらまた書く。

ansible ハンスオンを開催しました

4月と5月2回にわけてトータル45人の方に参加していただきました。

http://ansible-users.connpass.com/event/13158/

1回目はそもそも一人で30人の対応と準備不足もあり、かなり辛かったです。

時間的にも終わったのが9時半過ぎだったのでかなり押してました。

../../../_images/ansible_15_04_02.jpg

http://ansible-users.connpass.com/event/14385/

2回目は人数を15人にして行ったので割とスムーズに行きましたが、まさかのアカウントの設定依存があり、プロビジョニングが動かないという事態に…

../../../_images/ansible_15_05_02.jpg

いろいろと事前準備側に回したおかげでかなり時間的には余裕が出来ました。

../../../_images/ansible_15_05.jpg

おんなじものを複数回するのは準備などの点でだいぶ楽にはなるのだけど、技術的な面白さはだいぶ減ってしまうので参加できなかった人的には辛いのかもしれないけど仕事の時間に含まれないのであればやるメリットは多くないようにも思う。 今回はIDCFクラウドさんにサーバー側の協賛をもらったのでプロビジョニングをまるっと書き換えていた。

さくらとかニフティのクラウドもモジュールがあれば協賛に入ってもらうと良いのだけど今のところは無いのですよね。 さくら、ニフティそれそれ独自なAPIだから致し方ないが。

さくらのクラウドは良いのだけど個人的には割高感があってできればさくらのVPNくらいの単価感にならないかなという所。 さくらのVPNはAPIとか用意されたりしないのかなぁ…。

以下は反省点

  • もっとansibleの概要部分を増やす
  • よく出るエラーを資料のに書いてわかりやすくする
  • 配布物の構成も資料の中に書いておく
  • 席は一般的な向かい合うような形のほうが他の人の質問内容が他の人に伝わるので良い

どったばただった一回目のアンケートが二回目のアンケートより満足度が高いのは一体何なんだろう…。

以上、参加してくださった方ありがとうございました。

TwilioのサンプルAndroidアプリをAndroid Studioでビルドする方法

twilioは電話アプリケーションのためのSaaSなのですが、通話するための接続方法が以下の3種類用意されています。

  • 通常の発呼しての通話
  • SIPプロトコルを受け入れる
  • SDKのクライアントライブラリを使う

この内一番お値段がお安いのがクライアント(一分0.25円)なのです。 ただこのクライアントアプリ、サンプルコードがあるのですがEclipseベースの古いディレクトリ構成のサンプルコードになっているのでそのままインポートしても動かないです。

動かすためにはインポートではなく以下のような手順でAndroid Studioのプロジェクトを作りなおすほうがおそらく簡単だと思います。

  1. 空のプロジェクトを作成
  2. app/src/main/jniLibsにjniのライブラリを配置する
  3. app/build.gradleのライブラリの指定をを以下のように修正する
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile fileTree(dir: 'src/main/jniLibs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

この内以下の部分が追加分

compile fileTree(dir: 'src/main/jniLibs', include: ['*.jar'])

4.ソースコードとリソースファイルをプロジェクトファイルに追加

こんな感じでビルドができるようになるはずです。 だいぶん前にやったので半分うろ覚えですが。 全て終わってビルド可能なプロジェクトをgithubで公開しています。

https://github.com/bols-blue/TwilioPhoneExsample

以上です。 みんなtwilio使うといいです。

Smart Communication Award 2015に参加してきました

TwilioをやっているKDDI Web communicationsさんは同じビルで隣なのもあり、全日「見学にきてください」と言われたのでホイホイ行ってみたら「どこかのチームに参加しませんか」の流れに。

ニーズのあるチームの中からこれは良いのかもと思ったコメ電話チームに参加することになりました。

各チームの解説は`公式ブログ <http://twilio.kddi-web.com/blog/entry000228.html>`_ にあります。

他のチームのどれもアイデアは素晴らしく、悩んだのですがやろうとしていることに対するサイズが大きめだったり、事前にある程度作って参加されていたりと難しいですね。

結果的に優秀賞とアイマーキュリーキャピタル賞のダブル受賞させていただきました。

../../../_images/twilio_kometel.jpg

個人的にはtwimlを実践的に使う良い予行演習になったのでとても勉強になりました。 やっぱり、イベントに行ってある程度簡単でもいいのでお題がある状態で技術サポートしてもらえる状況のほうが学習コストはとても低くなるというのも新たな発見でした。 今までは、ハッカソンのイベントでは自分がすでにある程度は習得済みの状態で参加することが多く(そういうもんだと思っていたし)、他のメンバーのサポートに時間がもってかれたりして微妙かなと思っていたんですよね。 あとはちゃんとチューターがいるのも大きかったのかも。

興味のある技術のハッカソンはもっと積極的に参加したほうが良いですね。

windows で手軽に ansible が実行できるようにポータブル cygwin 環境を作った

ansibleの実行環境を手軽に使える環境がなかったので作ってみた。

qiitaにcygwinで環境作っても徒労に終わるとか書いてあるのでついカッとなってやった。 いろんな人がVM入れるとか書いてるけど、VM入れたうえで諸々入れるとかハードル高くないかな。

cygwin以外だと依存関係を解決しても動かないので注意が必要。 理由はまた別途書くとする。 ダウンロードは http://www.lnc.jp/cygwin.zip

解凍すると800Mになるので容量は確保してください。

zipを解凍してcygwin-ansible.batを実行すればansibleのコマンドが実行できる。 pipなども入っているので必要があれば追加でライブラリも入れられます。

いくつか制限があります。

  • windowsユーザー名にスペースが入っているとlocalactionが失敗します
  • 日本語のいくつかの文字をnameに入れるとシンタックスエラーになります
  • -c paramiko オプションでsshクライアントを指定する必要があります

初めて使う状態で公開鍵認証を使うのであれば以下のコマンドで鍵が作れます。

ssh-keygen

鍵を作成済みなら以下で公開鍵を取り込めます。

鍵はパスフレーズを入力すると利用可能な状態でagentに保管されます。 agentが終了するまでパスフレーズ無しで利用できます。

ssh-agent.exe bash
ssh-add ~/.ssh/id_rsa

以下はありがちなエラー

ssh-agent.exe bash
ssh-add ~/.ssh/id_rsa

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0775 for '/home/bols/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

.sshのディレクトリは700のパーミションでないと他のユーザーから読み取れてしまうのでエラーになります。 以下のようにパーミッションを変更することでエラーにならなくなります。

chmod 700 -R .ssh

ansibleはなぜか hosts ファイルに実行権限がないとエラーになります。 エラーは以下

ERROR: The file hosts is marked as executable, but failed to execute correctly. If this is not supposed to be an executable script, correct this with `chmod -x hosts`.

この場合、以下のコマンドで実行権限を外すことによって実行できます

chmod -x hosts
宣伝:ansibleハンズオンやります。

IDCFクラウド使うのは大人の事情です。

CloudStack APIをAnsibleから使ってサーバーを構築する

Ansible便利ですよね。 最初はfablicとかででいいかなと思っていたのですが使ってみると冪とう性を担保してくれるだけでこんなに違うのかと思うほど便利です。

何回実行してもおかしなことにならないし、そこのために作りこみをするなんてことも不要なのは助かります。 あと設定のように記述できるので誰に渡しても怖くないし。 難があるとすればwindowsでコントローラーができないくらいでしょうかね。 もっとansibleを広めるためにハンズオンをするつもりなので、そのあたりはなにか解決できないか模索中です。

さて今回はIDCFクラウドのCloudStack APIをansibleから利用してサーバーを構築するのをやってみよう。 VPSに比べてクラウドって高いし、ラズバイ2もあるから家の中にサーバー構築しようかなと思っていたんですが一番安いのが500円だったりして俄然やる気がわきます。

playbookだけ欲しい人はここからどうぞ。 ただ、現状、ansibleのCloudStackモジュールにポートフォワーディングの設定をするモジュールがないです。 そのためファイヤーウォールの中に作ったサーバーへのポートフォワーディング設定はGUIという少し残念な結果になっています。 ファイヤーウォール自体の設定はできるのでパスする設定はできるので、すごくおしい感が高いです。 https://github.com/bols-blue/idcfcloud_provisioning_playbook

あと、モジュールにバグなのか、IDCFクラウドとの仕様の不一致なのかうまく動かないところがあったので自分のところに修正したモジュールをおいています。 playbookを落とすとサブモジュールとして入っています。

インストールしたことのない人のために手順を書いておきます。

まず、pythonの2.7系を入れます。3.4でも動くようになっているのですがローカルで動かすモジュールを使う場合にはまりやすいので2.7系をおすすめします。 pipというパッケージ管理ツールを使ってインストールします。 pipが一緒に入る環境と入らない環境があると思うので入らない人は別途、pipを入れます。

curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

curlがない人はwget、ブラウザから名前をつけて保存でもいいです。

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
python get-pip.py

次にpipでansible,csを入れます。 csはクラウドスタックのWeb APIをpythonから呼べるようブリッジするもののようです。

pip install ansible cs

以上でセットアップ完了です。

次にplaybookを落としてAPI keyを設定します。

git clone https://github.com/bols-blue/idcfcloud_provisioning_playbook

設定ファイルは中に入れてあるcloudstack.iniに書き込めばいいです。 API keyの場所は本家のブログのStep2-3を見てください。 http://www.idcf.jp/blog/cloud/api_autoscale2/

あとは実行します。 公式モジュールではないのでモジュールが使われるようモジュールの検索パス-Mオプションをつけます。

ansible-playbook provisioning.yml -M ./ansible-cloudstack/ -i hosts

これでVMが作られてファイヤウォールを通過するようになっていますのであとはwebインターフェースからポートフォワーディングするよう変更しましょう。

ポートフォワーディングモジュールるか、それとも元を作っている人が作ってくれるのを待つか悩み中です…

以上!!

sphinx 1.3 がリリースされたので tinkerer で使う sphinx のバージョンを上げる

sphinx 1.3 がリリースされました。

変更履歴の日本語はきっと清水川さんがブログを上げてくださると思うので待ちましょう。

新バージョンリリースということでさそっくアップデートしてみます。

pip install –upgrade sphinx

これであとはいつも通りブログをビルド。 今までのバージョンだと動くんだけどエラーが表示されていて気持ち悪いなと思っていたのだけど表示されなくなりました。

ラズベリーパイをタイムマシンに使えるNASに仕立てあげる

RaspberryPi2(以下ラズパイ)買いました。なんだかめちゃくちゃスペック高くなっているのでこれは買ってもいいかなと思ったのと、丁度、確認してみたい情報があったので。 でもせっかく買うわけだから、そのまま死蔵するなら買わないほうがいい(というか雑誌の付録がいっぱいある)のでNASにすることにしました。

だいぶ前に黒箱がお亡くなりになり、メインマシンにデータを集めていたけど、電気代的に常時つけておけない。 常時起動できる何か代わりの物が欲しかったし、嫁がMacユーザーなのでバックアップに使えるAFPのNASにしてあげるとちょうどいいですね。

linuxでAFPのサーバーにはnetatalkを使うのが一般的らしい。(他にあるかどうかは探していないけど) 構成は

ラズパイ - USBHDD(RAID1)

まずはラズパイにOSを入れないと…と思ったら手元には2GBのマイクロSDしかありません。 ubuntuとdebian(rasbian)は 4GB 以上を要求している、データサイズのインフレしすぎでしょ、正直つらい。 調べたらarchlinuxならなんとかなりそうだったので、OSの選択肢がなくなりました。

初archlinuxです、なんでこうなった。とりあえず入れましょう。

英語の手順はこちら http://elinux.org/ArchLinux_Install_Guide

SDカードをマシンに放り込みフォーマット

fdisk /dev/sdb

“n”押して”p”でパーテーションを切ります。”1” にしてサイズは “+100M” です。 ここはfatでないといけないので”t”押して”c”でfatに変えます “n”押して”p”でパーテーションを切ります。”2” にしてサイズは そのままエンターで全部使います。 あとは”w”で書き込み

次にフォーマットとOSの書き込み

mkfs.vfat /dev/sdb1
mkfs.ext4 /dev/sdb2
mkdir root
mkdir root/boot
#ここからOSの書き込み作業
mount /dev/sdb2 root
mount /dev/sdb1 root/boot
wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gz
bsdtar -xpf ArchLinuxARM-rpi-latest.tar.gz -C root
sync

あとはラズパイに挿してそのまま起動します、初期はrootユーザーのみでパスワードもrootになっています。 archlinuxだとHDMI+USBキーボードかシリアル、sshdも起動しているので有線ネットワークのある環境であれば有線でsshで接続できます。 sshで接続してnetatalkを入れます。バイナリパッケージは pacman を使えばいいらしい。

pacman -Sy netatalk

あとはUSB接続のHDDをマウントしてそこを netatalk で共有できるようにコンフィグを設定します。 マウントの設定は以下のようにしました。何故か起動時にマウントできないことがあったのでオプションは nofail,auto,rw に設定。 これで起動時にマウントできなくてもリカバリーモードに入らなくなる。

/dev/sdb2 /opt/afp ext3 nofail,auto,rw 0 0

netatalk は /etc/afp.conf がコンフィグファイルで以下の設定を追記した。

[TimeMachine]
path = /opt/afp
time machine = yes
vol size limit = 1024000

タイムマシンで使えるかどうかと使える領域を書いておくと良いらしい。 あとはrebootすれば動くようになる。

和歌山県がオープンデータをGithubで公開したのでもう少しいじってみる

前回(http://www.lnc.jp/2015/02/24/2334.html)の続き

はてなブックマークとかアダム的な人に地味に期待しているコメントがついていたので、少し続けてみた。 交通の規制はほとんどが雨で規制が入る様子だったし県が出している降水量情報 (http://kasensabo01.pref.wakayama.lg.jp/new/pr/pr-z-000.html) は特にクロールが規制されている様子もなかったのでクロールした結果とCSVの情報を合わせてリアルタイムに規制情報を出せるようにしてみようと考えたのだけど…。

公開されているCSVデータの中にはGPSのポイント情報が入っていなかった。

真面目にGPSのポイント情報は入れておいてほしい…。

更に、雨量情報は地名以外のデータがなくてGPS的に近い位置を出すことが機械的には無理な状態だった。

それではと思ってCSVの中の地名っぽい情報でマッチングしてみようと考えたのだけどマッチングした結果は以下のようになってしまった。

地元の人とかにマッピングしてもらわないとわからないだろうこれ…。

3 田辺 新宮市南磐盾〜新宮市熊野川町・田辺市境界
3 新宮 新宮市南磐盾〜新宮市熊野川町・田辺市境界
3 熊野 新宮市南磐盾〜新宮市熊野川町・田辺市境界
4 田辺 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
4 新宮 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
4 本宮 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
4 熊野 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
5 新宮 新宮市熊野川町宮井〜新宮市熊野川町九重(県境)
5 熊野 新宮市熊野川町宮井〜新宮市熊野川町九重(県境)
6 新宮 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
6 玉置口 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
6 熊野 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
7 北山 東牟婁郡北山村下尾井〜東牟婁郡北山村小松
8 田辺 田辺市鮎川〜田辺市中辺路町栗栖川
8 栗栖川 田辺市鮎川〜田辺市中辺路町栗栖川
8 鮎川 田辺市鮎川〜田辺市中辺路町栗栖川
9 田辺 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
9 栗栖川 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
9 本宮 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
10 田辺 田辺市中辺路町・本宮町境界〜田辺市本宮町皆地
10 本宮 田辺市中辺路町・本宮町境界〜田辺市本宮町皆地
11 田辺 田辺市本宮町皆地〜田辺市本宮町本宮
11 本宮 田辺市本宮町皆地〜田辺市本宮町本宮
12 九度山 伊都郡九度山町下古沢〜伊都郡高野町矢立
12 高野 伊都郡九度山町下古沢〜伊都郡高野町矢立
12 高野 伊都郡九度山町下古沢〜伊都郡高野町矢立
15 高野 海草郡伊都郡界〜伊都郡高野町矢立
15 高野 海草郡伊都郡界〜伊都郡高野町矢立
16 橋本 橋本市向副〜伊都郡高野町高野山
16 高野 橋本市向副〜伊都郡高野町高野山
16 高野 橋本市向副〜伊都郡高野町高野山
17 かつらぎ 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
17 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
17 花園 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
17 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
18 かつらぎ 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
18 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
18 花園 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
18 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
19 かつらぎ 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
19 花園 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
19 龍神 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
19 田辺 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
20 小松原 田辺市中辺路町小松原〜田辺市中辺路町高原
20 田辺 田辺市中辺路町小松原〜田辺市中辺路町高原
21 田辺 田辺市平瀬〜田辺市合川
22 古座 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
22 古座川 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
22 平井 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
23 三尾 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
23 古座 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
23 古座川 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
24 串本 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
24 古座 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
24 古座川 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
25 海南 海南市ひや水〜海南市上谷
26 海南 海南市有田郡界〜有田郡有田川町有原
26 有田 海南市有田郡界〜有田郡有田川町有原
27 龍神 田辺市龍神村小家〜田辺市龍神村福井
27 田辺 田辺市龍神村小家〜田辺市龍神村福井
28 日高 田辺市龍神村福井〜日高郡みなべ町清川
28 龍神 田辺市龍神村福井〜日高郡みなべ町清川
28 清川 田辺市龍神村福井〜日高郡みなべ町清川
28 田辺 田辺市龍神村福井〜日高郡みなべ町清川
29 日高 日高郡みなべ町清川〜日高郡みなべ町西本庄
29 清川 日高郡みなべ町清川〜日高郡みなべ町西本庄
30 龍神 田辺市龍神村福井〜田辺市龍神村柳瀬
30 田辺 田辺市龍神村福井〜田辺市龍神村柳瀬
31 和歌山 田辺市龍神村湯本〜和歌山県・奈良県界
31 龍神 田辺市龍神村湯本〜和歌山県・奈良県界
31 田辺 田辺市龍神村湯本〜和歌山県・奈良県界
32 かつらぎ 和歌山県・大阪府界〜伊都郡かつらぎ町平
32 和歌山 和歌山県・大阪府界〜伊都郡かつらぎ町平
33 高野 伊都郡高野町矢立〜伊都郡高野町高野山
33 高野 伊都郡高野町矢立〜伊都郡高野町高野山
34 有田 有田郡有田川町川口〜有田郡有田川町二川
35 有田 有田郡有田川町二川〜有田郡有田川町清水
35 清水 有田郡有田川町二川〜有田郡有田川町清水
36 有田 有田郡有田川町清水〜有田郡伊都郡界
36 清水 有田郡有田川町清水〜有田郡伊都郡界
37 かつらぎ 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
37 花園 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
37 有田 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
38 桃山 紀の川市下鞆渕〜紀の川市桃山町神田
39 那賀 海草郡紀美野町松瀬〜海草郡那賀郡界
40 海南 海南市別所〜海南市海草郡界
42 有田 有田市高田〜有田郡湯浅町田
42 湯浅 有田市高田〜有田郡湯浅町田
42 高田 有田市高田〜有田郡湯浅町田
43 由良 日高郡由良町大引〜日高郡由良町小引
43 日高 日高郡由良町大引〜日高郡由良町小引
44 日高 日高郡日高町川原河〜日高郡日高川町高津尾
45 日高 田辺市上秋津〜西牟婁・日高郡界
45 田辺 田辺市上秋津〜西牟婁・日高郡界
46 白浜 西牟婁郡白浜町瀬戸〜西牟婁郡白浜町江津良
47 すさみ 西牟婁郡すさみ町防己〜西牟婁郡すさみ町江住
48 田辺 西牟婁郡白浜町田野井〜田辺市合川
48 白浜 西牟婁郡白浜町田野井〜田辺市合川
49 すさみ 西牟婁郡すさみ町曲利〜西牟婁郡すさみ町防己
50 串本 東牟婁郡古座川町下地〜東牟婁郡串本町和深
50 古座 東牟婁郡古座川町下地〜東牟婁郡串本町和深
50 古座川 東牟婁郡古座川町下地〜東牟婁郡串本町和深
50 和深 東牟婁郡古座川町下地〜東牟婁郡串本町和深
51 串本 東牟婁郡串本町大島〜東牟婁郡串本町出雲
52 串本 東牟婁郡串本町串本〜東牟婁郡串本町出雲
53 古座 東牟婁郡古座川町小森川〜東牟婁郡古座川町直見
53 古座川 東牟婁郡古座川町小森川〜東牟婁郡古座川町直見
54 古座 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
54 古座川 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
54 勝浦 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
55 新宮 新宮市熊野川町小口〜新宮市熊野川町滝本
55 滝本 新宮市熊野川町小口〜新宮市熊野川町滝本
55 熊野 新宮市熊野川町小口〜新宮市熊野川町滝本
56 勝浦 東牟婁郡那智勝浦町南大居〜東牟婁郡那智勝浦町口色川
57 勝浦 東牟婁郡那智勝浦町那智山〜東牟婁郡那智勝浦町市野々
57 市野々 東牟婁郡那智勝浦町那智山〜東牟婁郡那智勝浦町市野々
58 高野 伊都郡高野町高野山〜和歌山・奈良県界
58 和歌山 伊都郡高野町高野山〜和歌山・奈良県界
58 高野 伊都郡高野町高野山〜和歌山・奈良県界
60 岩出 和歌山県・大阪府界〜岩出市根来
60 和歌山 和歌山県・大阪府界〜岩出市根来
61 和歌山 和歌山市滝畑
61 畑 和歌山市滝畑
62 和歌山 和歌山県・大阪府界〜和歌山市深山
63 貴志川 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
63 桃山 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
63 畑 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
64 海南 海南市且来〜海南市神田
65 海南 海南市下津町加茂郷〜海南市下津町曾根田
65 下津 海南市下津町加茂郷〜海南市下津町曾根田
66 海南 海南市下津町大崎
66 下津 海南市下津町大崎
67 有田 海草郡・有田郡界〜海草郡紀美野町宮ノ前
68 日高 日高郡美浜町三尾〜日高郡美浜町日ノ岬
68 美浜 日高郡美浜町三尾〜日高郡美浜町日ノ岬
68 三尾 日高郡美浜町三尾〜日高郡美浜町日ノ岬
69 田辺 田辺市中辺路町近露〜田辺市平瀬
69 近露 田辺市中辺路町近露〜田辺市平瀬
70 田辺 田辺市中辺路町西谷
71 田辺 田辺市鮎川〜田辺市上野
71 鮎川 田辺市鮎川〜田辺市上野
73 古座 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
73 古座川 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
73 松根 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
74 新宮 新宮市相賀〜新宮市俵石
75 勝浦 東牟婁郡那智勝浦町南平野〜東牟婁郡那智勝浦町井鹿
76 勝浦 東牟婁郡那智勝浦町南大居〜東牟婁郡那智勝浦町市屋
77 田辺 田辺市本宮町平〜田辺市本宮町耳打
77 本宮 田辺市本宮町平〜田辺市本宮町耳打
78 白浜 西牟婁郡白浜町塩野〜西牟婁郡白浜町伊古木
79 和歌山 大阪府泉南郡岬町孝子〜和歌山県貴志中
80 串本 東牟婁郡串本町田原〜東牟婁郡串本町津荷
81 有田 東牟婁郡串本町有田〜東牟婁郡串本町田並
81 串本 東牟婁郡串本町有田〜東牟婁郡串本町田並
82 すさみ 東牟婁郡すさみ町見老津〜同町周参見
83 白浜 西東牟婁郡白浜町志原〜西牟婁郡白浜町富田字高瀬
84 日高 日高郡みなべ町山内〜日高郡みなべ町東岩代
85 由良 日高郡日高町池田〜由良町里
85 日高 日高郡日高町池田〜由良町里
86 有田 日高郡由良町畑〜有田郡広川町河瀬
86 広川 日高郡由良町畑〜有田郡広川町河瀬
86 由良 日高郡由良町畑〜有田郡広川町河瀬
86 日高 日高郡由良町畑〜有田郡広川町河瀬
86 畑 日高郡由良町畑〜有田郡広川町河瀬
87 田辺 新宮市南磐盾〜新宮市熊野川町・田辺市境界
87 新宮 新宮市南磐盾〜新宮市熊野川町・田辺市境界
87 熊野 新宮市南磐盾〜新宮市熊野川町・田辺市境界
88 田辺 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
88 新宮 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
88 本宮 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
88 熊野 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
89 新宮 新宮市熊野川町宮井〜新宮市熊野川町九重(県境)
89 熊野 新宮市熊野川町宮井〜新宮市熊野川町九重(県境)
90 新宮 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
90 玉置口 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
90 熊野 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
91 北山 東牟婁郡北山村下尾井〜東牟婁郡北山村小松
92 田辺 田辺市鮎川〜田辺市中辺路町栗栖川
92 栗栖川 田辺市鮎川〜田辺市中辺路町栗栖川
92 鮎川 田辺市鮎川〜田辺市中辺路町栗栖川
93 田辺 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
93 栗栖川 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
93 本宮 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
94 田辺 田辺市中辺路町・本宮町境界〜田辺市本宮町皆地
94 本宮 田辺市中辺路町・本宮町境界〜田辺市本宮町皆地
95 田辺 田辺市本宮町皆地〜田辺市本宮町本宮
95 本宮 田辺市本宮町皆地〜田辺市本宮町本宮
96 九度山 伊都郡九度山町下古沢〜伊都郡高野町矢立
96 高野 伊都郡九度山町下古沢〜伊都郡高野町矢立
96 高野 伊都郡九度山町下古沢〜伊都郡高野町矢立
99 高野 海草郡伊都郡界〜伊都郡高野町矢立
99 高野 海草郡伊都郡界〜伊都郡高野町矢立
100 橋本 橋本市向副〜伊都郡高野町高野山
100 高野 橋本市向副〜伊都郡高野町高野山
100 高野 橋本市向副〜伊都郡高野町高野山
101 かつらぎ 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
101 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
101 花園 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
101 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
102 かつらぎ 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
102 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
102 花園 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
102 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
103 かつらぎ 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
103 花園 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
103 龍神 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
103 田辺 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
104 小松原 田辺市中辺路町小松原〜田辺市中辺路町高原
104 田辺 田辺市中辺路町小松原〜田辺市中辺路町高原
105 田辺 田辺市平瀬〜田辺市合川
106 古座 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
106 古座川 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
106 平井 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
107 三尾 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
107 古座 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
107 古座川 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
108 串本 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
108 古座 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
108 古座川 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
109 海南 海南市ひや水〜海南市上谷
110 海南 海南市有田郡界〜有田郡有田川町有原
110 有田 海南市有田郡界〜有田郡有田川町有原
111 龍神 田辺市龍神村小家〜田辺市龍神村福井
111 田辺 田辺市龍神村小家〜田辺市龍神村福井
112 日高 田辺市龍神村福井〜日高郡みなべ町清川
112 龍神 田辺市龍神村福井〜日高郡みなべ町清川
112 清川 田辺市龍神村福井〜日高郡みなべ町清川
112 田辺 田辺市龍神村福井〜日高郡みなべ町清川
113 日高 日高郡みなべ町清川〜日高郡みなべ町西本庄
113 清川 日高郡みなべ町清川〜日高郡みなべ町西本庄
114 龍神 田辺市龍神村福井〜田辺市龍神村柳瀬
114 田辺 田辺市龍神村福井〜田辺市龍神村柳瀬
115 和歌山 田辺市龍神村湯本〜和歌山県・奈良県界
115 龍神 田辺市龍神村湯本〜和歌山県・奈良県界
115 田辺 田辺市龍神村湯本〜和歌山県・奈良県界
116 かつらぎ 和歌山県・大阪府界〜伊都郡かつらぎ町平
116 和歌山 和歌山県・大阪府界〜伊都郡かつらぎ町平
117 高野 伊都郡高野町矢立〜伊都郡高野町高野山
117 高野 伊都郡高野町矢立〜伊都郡高野町高野山
118 有田 有田郡有田川町川口〜有田郡有田川町二川
119 有田 有田郡有田川町二川〜有田郡有田川町清水
119 清水 有田郡有田川町二川〜有田郡有田川町清水
120 有田 有田郡有田川町清水〜有田郡伊都郡界
120 清水 有田郡有田川町清水〜有田郡伊都郡界
121 かつらぎ 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
121 花園 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
121 有田 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
122 桃山 紀の川市下鞆渕〜紀の川市桃山町神田
123 那賀 海草郡紀美野町松瀬〜海草郡那賀郡界
124 海南 海南市別所〜海南市海草郡界
126 有田 有田市高田〜有田郡湯浅町田
126 湯浅 有田市高田〜有田郡湯浅町田
126 高田 有田市高田〜有田郡湯浅町田
127 由良 日高郡由良町大引〜日高郡由良町小引
127 日高 日高郡由良町大引〜日高郡由良町小引
128 日高 日高郡日高町川原河〜日高郡日高川町高津尾
129 日高 田辺市上秋津〜西牟婁・日高郡界
129 田辺 田辺市上秋津〜西牟婁・日高郡界
130 白浜 西牟婁郡白浜町瀬戸〜西牟婁郡白浜町江津良
131 すさみ 西牟婁郡すさみ町防己〜西牟婁郡すさみ町江住
132 田辺 西牟婁郡白浜町田野井〜田辺市合川
132 白浜 西牟婁郡白浜町田野井〜田辺市合川
133 すさみ 西牟婁郡すさみ町曲利〜西牟婁郡すさみ町防己
134 串本 東牟婁郡古座川町下地〜東牟婁郡串本町和深
134 古座 東牟婁郡古座川町下地〜東牟婁郡串本町和深
134 古座川 東牟婁郡古座川町下地〜東牟婁郡串本町和深
134 和深 東牟婁郡古座川町下地〜東牟婁郡串本町和深
135 串本 東牟婁郡串本町大島〜東牟婁郡串本町出雲
136 串本 東牟婁郡串本町串本〜東牟婁郡串本町出雲
137 古座 東牟婁郡古座川町小森川〜東牟婁郡古座川町直見
137 古座川 東牟婁郡古座川町小森川〜東牟婁郡古座川町直見
138 古座 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
138 古座川 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
138 勝浦 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
139 新宮 新宮市熊野川町小口〜新宮市熊野川町滝本
139 滝本 新宮市熊野川町小口〜新宮市熊野川町滝本
139 熊野 新宮市熊野川町小口〜新宮市熊野川町滝本
140 勝浦 東牟婁郡那智勝浦町南大居〜東牟婁郡那智勝浦町口色川
141 勝浦 東牟婁郡那智勝浦町那智山〜東牟婁郡那智勝浦町市野々
141 市野々 東牟婁郡那智勝浦町那智山〜東牟婁郡那智勝浦町市野々
142 高野 伊都郡高野町高野山〜和歌山・奈良県界
142 和歌山 伊都郡高野町高野山〜和歌山・奈良県界
142 高野 伊都郡高野町高野山〜和歌山・奈良県界
144 岩出 和歌山県・大阪府界〜岩出市根来
144 和歌山 和歌山県・大阪府界〜岩出市根来
145 和歌山 和歌山市滝畑
145 畑 和歌山市滝畑
146 和歌山 和歌山県・大阪府界〜和歌山市深山
147 貴志川 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
147 桃山 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
147 畑 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
148 海南 海南市且来〜海南市神田
149 海南 海南市下津町加茂郷〜海南市下津町曾根田
149 下津 海南市下津町加茂郷〜海南市下津町曾根田
150 海南 海南市下津町大崎
150 下津 海南市下津町大崎
151 有田 海草郡・有田郡界〜海草郡紀美野町宮ノ前
152 日高 日高郡美浜町三尾〜日高郡美浜町日ノ岬
152 美浜 日高郡美浜町三尾〜日高郡美浜町日ノ岬
152 三尾 日高郡美浜町三尾〜日高郡美浜町日ノ岬
153 田辺 田辺市中辺路町近露〜田辺市平瀬
153 近露 田辺市中辺路町近露〜田辺市平瀬
154 田辺 田辺市中辺路町西谷
155 田辺 田辺市鮎川〜田辺市上野
155 鮎川 田辺市鮎川〜田辺市上野
157 古座 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
157 古座川 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
157 松根 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
158 新宮 新宮市相賀〜新宮市俵石
159 勝浦 東牟婁郡那智勝浦町南平野〜東牟婁郡那智勝浦町井鹿
160 勝浦 東牟婁郡那智勝浦町南大居〜東牟婁郡那智勝浦町市屋
161 田辺 田辺市本宮町平〜田辺市本宮町耳打
161 本宮 田辺市本宮町平〜田辺市本宮町耳打
162 白浜 西牟婁郡白浜町塩野〜西牟婁郡白浜町伊古木
163 和歌山 大阪府泉南郡岬町孝子〜和歌山県貴志中
164 串本 東牟婁郡串本町田原〜東牟婁郡串本町津荷
165 有田 東牟婁郡串本町有田〜東牟婁郡串本町田並
165 串本 東牟婁郡串本町有田〜東牟婁郡串本町田並
166 すさみ 東牟婁郡すさみ町見老津〜同町周参見
167 白浜 西東牟婁郡白浜町志原〜西牟婁郡白浜町富田字高瀬
168 日高 日高郡みなべ町山内〜日高郡みなべ町東岩代
169 由良 日高郡日高町池田〜由良町里
169 日高 日高郡日高町池田〜由良町里
170 有田 日高郡由良町畑〜有田郡広川町河瀬
170 広川 日高郡由良町畑〜有田郡広川町河瀬
170 由良 日高郡由良町畑〜有田郡広川町河瀬
170 日高 日高郡由良町畑〜有田郡広川町河瀬
170 畑 日高郡由良町畑〜有田郡広川町河瀬

和歌山県がオープンデータをGithubで公開しているらしいので少しいじってみた

和歌山県がオープンデータをGithubで公開している https://github.com/wakayama-pref-org もっとこういう公開方法にしてほしい。

現状でもオープンデータと言わずエクセルやなんかで落とせるデーターは結構あるのだが基本的にはホームページ上での公開だったりする。 そうなると結局クローリングしてデータを集めてこなくてはいけなかったりして手間が大きい。 元のデータの更新があるだけでも結局人出がかかってしまうのでコストがかかってしまう。

こうやってデータの更新が行われたことを自動的に検知できるような仕組みをきちんと使ってくれるようになるだけで運用コストが下がっていくのにと思っていた。 さくっと動かせそうなものを徘徊して探していたらちょうどKMLになっているデータがあったので30分位でgooglemapに乗せてでっち上げた。 別にKMLがデータ形式として良いとかではなくそのままgooglemapに表示できるから選んだだけです。

和歌山県内の道路で気象条件によって規制がかかるポイントのリスト

../../../_images/wakayama.png

http://www.lnc.jp/wakayama_information_of_road_traffic_regulation/

現在の降雨情報 http://kasensabo01.pref.wakayama.lg.jp/new/ とかをAPIで提供していてくれれば現在の交通規制とかも出せるのだけどなぁ。 あと降水予報と組み合わせれば交通規制が掛かりそうな予報のマップも作り出せそう。 まぁ降水予報の方はJWAのものだから有料でないと取れない可能性も大きいけど。

若干いただけないのは、情報自体をGITHUBに置くのではなくリンクになっているところがある所だけど、そのあたりは継続されていけば改善されるよね。