SpreadSheetでバトオペカスシミュ更新 [設計]

Wikiさんへのスクレイピングでデータを更新する計画ですが、テーブルに特定のidが無い事や表記揺れ等でエラーがでる度に調整が必要になりむしろ手間が増えてしまいそうだったのでボツになりました。

・・・というのが半年前。

以降更新が止まってしまっていたのですが、使われている方もまだまだいるのに放置は無いなーということでこんな更新方法を考えてみました。

ごにょごにょ書いてありますが要は、

 1. googleのスプレッドシートにデータを入力して
 2. 参照用シートを1枚かませて
 3. 参照用シートをPHPから呼び出してJSON化
 4. それをテスト本番に反映

という感じです。

何故こんな更新方法を考えたのかと言うとスプレッドシートは共有できるからです。

もっと噛み砕くと、

バトオペが好きな人に更新してもらえるかも?

という思惑からです!

もちろん自分サボらなければ良いだけの話なのですが、今までも、そしてこれからも更新が遅れ遅れになってしまいそうですし、更新情報を報告頂ける方もいらっしゃるのでそれなら自分の手を放して有志の方にお任せしたほうがむしろ更新が滞らないんじゃないか?という思いがあります(半分は自分の怠惰ですが…)

とはいえ、無差別に書き込みを許してしまうとイタズラの対応などが大変なので、しばらくは信頼できそうな方(のgoogleアカウント)にスプレッドシートへの書き込みを許可して更新いただこうかなと思っています。

この方法であれば、

 ・誰がどこを更新したか履歴が残る
 ・万一いたずらや間違いがあっても履歴から戻せる
 ・履歴からも戻せない場合は(私のローカル)ファイルから戻す

といった事が可能です。

更新されたシートのデータは直ぐに本番に反映されるわけではなく、テスト、本番へ更新用ページを通してシートのデータを反映できるようにしようと思っています。
(このページはBasic認証かgoogleアカウントの認証で制御かな)

先ずは今日明日でシートの作成と、できればJSONの出力まで終わらせて明日中にはテストページに反映できると年内には完成するかも。

トカゲの王 鴨涼 1/7(オルカトイズ)

tokagenoou0

Amazonで安売り(2,828円)してたので購入。造りはそれほど悪くなく顔もかわいいです。
レビューで「肌が黄色い」と騒がれている通り黄味が強いですが、個人的には他の娘と見比べなければそこまで違和感を感じるレベルでは無いと思います。
あと、スケールが1/7とありますが1/8なんじゃないでしょうか?(オリジナルを知らないので等身が低いのかもですが・・・)

※これは自分がハズレを引いただけなのですが、新品にも関わらず左太もも(6枚目の写真)に大きなキズが入っていました(=_=;)

[FREEing]レーシングミク セパンVer 1/8



2013セパンは16番手スタート→6位入賞。予選がもう少しよかったらとも思うけど大健闘だった(みたいです)

で、そのセパンVerのミクが1年越しでフィギュア化。
相変わらずすさまじいクオリティのグッスマ・・・とおもったらFREEingからだった(制作はHEAVY GAUGE)
完成品でどこまで再現されるかすごい楽しみ(-ω-*)

そういえばHEAVY GAUGEのフィギュアってあんまり注目してなかったかも。と思って調べてみたら1つだけ買ってるのがあった。




閃乱カグラ -少女達の真影- 葛城 1/7

1/7で価格もそこそこ。脚フェチ魂に火がついて即ポチしたやつ。
こっちも早く届かないかなぁ(-ω-*)

amazonの商品IDを取得するブックマークレット(というかPHP)

amazonの商品が持つ固有のID拾うのが面倒なので超簡単なブックマークレットを作ってみました。
と言ってもURLから特定のセグメントを抜いているだけ。

最初はJavaScriptだけで完結するつもりだったのですが、

javascript:(function(){
	var url = document.location.href;
	var spliturl = url.split("/");
	window.alert(spliturl[5]);
})()

上の様にwindow.alert()で開いたアラートメッセージはChromeだとコピペが出来なかったので、window.openで別ページで表示するようにしました。

ブックマークレット

javascript:(function(){
window.open('http://sunadokei.chu.jp/test/getAmazonId/getAmazonid.php?mode=json&url='+escape(document.location.href));
})()

※上のスクリプトをブックマークに登録してAmazonの商品ページで実行。

PHP側

<?php
	$url = (isSet($_GET["url"]))?$_GET["url"]:"";
	$mode = (isSet($_GET["mode"]))?$_GET["mode"]:"id";

	$view = "";
	switch($mode){
		case "id" :
			$az = extractionAmazon($url);
			$az["amazon"]["id"];
			$view = ($az["amazon"]["param"]) ? $az["amazon"]["id"] : "IDを取得できませんでした";
			echo '<meta charset="UTF-8">';
			echo $view;
			break;
		case "json" :
			$view = json_encode(extractionAmazon($url),true);
			header("Content-Type: application/json; charset=utf-8");
			echo $view;
			break;
		default:
			break;
	}

	function extractionAmazon($url){

		//extract
		$TARGET_SEGMENT = 3;
		$parseurl = parse_url($url);
		$path = preg_split("/\//",$parseurl["path"]);

		//set variable
		$return["amazon"] = array();
		if (isSet($path[$TARGET_SEGMENT])){
			$return["amazon"]["id"] = $path[$TARGET_SEGMENT];
			$return["amazon"]["param"] = (preg_match("/^[A-Z0-9]/",$path[$TARGET_SEGMENT]))?true:false;
		}else{
			$return["amazon"]["id"] = "";
			$return["amazon"]["param"] = false;
		}
		return $return;
	}

※json_encodeのoptionを利用するのでPHP5.3以上必要。

やってることはURLばらしてJSONかただのIDだけにしてるだけ。
ロリポ設置で沢山アクセスがあると怒られそうなので自前で設置してもらえると良いかもです(・ω・`)
自前でPHPを設置する場合、ブックマークレットのパスを変更してください。

一応フォームからPHP呼び出し
http://keycreate.jp/test/getAmazonId/

GoogleのWeb Starter Kit

web starter kit

Web Starter Kit

「デザインの出来ないフロントエンジニア」な自分は、webデザイナーさんが作ってくれた画面をシステムと繋いだり、JavaScript(jQurey)でゴリゴリ動かしたりするのが今の仕事。
なので「Bootstrap」より「AnglurJS」に興味があったりする立ち位置でのエントリーです。

http://readwrite.jp/archives/8935

こちらの記事を読んでみると

 ・マルチプラットフォームのベストプラクティス
 ・UIのコンポーネントは持たず、Bootstrapとは競合しない

というものらしく、今の自分の仕事にすごく役立つものなんじゃないかと思ってみたり。

とりあえずサンプル設置
※web-starter-kit-0.2.0-beta/app/index.html

グリッドデザインの制御やらボタンの表示やらBootstrapと思いっきり被ってるような気がするけど「Bootstrapとは競合しない」はそういう意味じゃないのかな?

一つのサービスでPC、スマホ、タブレット、TV(←!)のI/Fを作る案件があるので、そこで使ったら手間が減るのか基礎から調べてみよう。