PubSubHubBubによる高速indexライブラリ導入

*サンプル
git clone https://github.com/joshfraser/pubsubhubbub-php
require_once __DIR__ . ‘/pubsubhubbub-php/library/publisher.php';
$p = new Publisher(“http://pubsubhubbub.appspot.com/”);
$url = “http://wp.nonip.net/”;
if ($p->publish_update($url)) {
echo ‘成功';
} else {
echo ‘失敗';
print_r($p->last_response());
}

PubSubHubBubで通知したところ0秒でgooglebotがウェブサイトを見に来ていました。UserAgentは”FeedFetcher-Google”できてるみたい。
66.249.79.121 – – [20/Feb/2016:14:14:11 +0900] “GET /article/1340 HTTP/1.1″ 200 10557 “-” “FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)” “-“

こちらは普通のbot。ipは同じだけどUserAgentが違うので判断できますね。
66.249.79.121 – – [20/Feb/2016:14:14:14 +0900] “GET /article/532 HTTP/1.1″ 200 8926 “-” “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” “-“

上記のようにbotが即webサイトを見に来たことから
このプラグインはgoogleがurl検知してから検索エンジンに登録されるまでの時間が
短くなる訳ではなく(たぶん)。url検知がほぼ0秒となることで結果index登録が速くなる
というプラグインなのかなと思ってます。
もしPubSubHubBubから登録することでGoogleがindex登録の優先度をあげてるとすれば
間違った仮説かもしれませんが。

通知したurlを15時間ぐらい待って検索結果に表示されるか確認しましたが、
まだ登録されていませんでした。うーんな感じです。

AM5時に導入したときのanalytics結果です。午後に同曜前週比3%upしている感じです。

こちらは別サイトですがAM9時に導入した時のanaytics結果です。
同曜前週比7%upしている感じです。
AM0,1時の数値は別要因でUPしたものです。

以下反映速度についての記事紹介。

15分が桁違いに速くなったらしい。
http://shumaiblog.com/blog-pubsubhubbub-fat-ping/

10時間~3日で登録されたらしい。
http://memo.everyday.jp/archives/264

25分たっても表示されなかったらしい
https://b.eax.jp/wp/wp-plugin/7600/

4-5時間が30秒未満へ
http://on-ze.com/archives/2613

GoogleのエンジニアMatt Cutts氏が「コピー対策・スクレイパー対策」として導入を推奨しているし
入れておくといいかも。

追記2016/02/26
pubsubhubbub対応したサイトがgogoleの手動ペナルティをくらいました。
多分短いスパン(秒間)でpubsubをしてしまったせいだと思います。
使用時はお気をつけを。

sitemap登録からindexまでの期間を計測した結果

SearchConsoleにサイトマップを登録した時のindexされるまでの期間を計測してみました。
件数は200件程度と少ないですが解りやすいグラフが得られたので公開します。
2/1に登録して2/9にほぼindexが完了しています。

こちらは少し件数が多いですがやはり9日間程度でindex登録されるようです。

ニュースサイトなどはsitemap登録以外にもseo対策しないと
他サイトに負けてしまうでしょう。

気になってたlaravel5を触ってみました。

laravel5は海外で人気らしいです。

helloworldからauthあたりまでlaravel5(5.2)を触ってみました。
以下は一発コマンドで作ったauth画面です。

fuelphpにあるものはだいたいついてる感じでした。
“Blade”テンプレートエンジンはすっきりしていていいかもしれません。
あとmigrationで自動で作られたコンテンツを見ることで、
トレンドとかは把握できそうな気がします。

テンプレを見ることでcdnはここのを使ってたりとか。
<script src=”https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js”>
<script src=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js”>

grunt.jsでなくgulp.jsを使ってたりとか

自サイトをphp5.6/opcacheからphp7.0/opcacheへversionUpした際のパフォーマンス比較

以下は自サイト(Zendベース)のサイトトップページのphp7バージョンアップによるxhgui解析比較です。
レガシーなライブラリを使ってると大変ですが、
phpを7にバージョンアップするだけなんで楽ちんパフォーマンスチューニングですね。

php5.6/opcacheの上位ボトルネック(全体22,237 microsecs)

php7.0/opcacheの上位ボトルネック(全体15,680 microsecs)

解析図ではボトルネック箇所がVersionUpで変わっているためメソッド名が上下してます。
主要なボトルネック箇所は以下のように処理時間が早くなってます。

単位はμs
Zend_Config_Ini::_processKey 724 → 355
Zend_Config_Ini::_processKey@1 624 → 274
Zend_Config_Ini::_processKey@2 522 → 272
Zend_Config_Ini::_processKey@3 515 → 251
Zend_Config_Ini::_processKey@4 402 → 236
Zend_Controller_Router_Rewrite::addConfig 215 → 232
smarty_core_read_cache_file 224 → 222
Zend_Config_Ini::_processSection@1 367 → 183
Zend_Controller_Router_Route::getInstance 226 → 158
Zend_Controller_Response_Abstract::outputBody 202 → 143

サイトトップページ全体では主にcacheを使ってるのですが、それだけでも7msは速くなってます。
レスポンス時間は全体の3割減となりました。
パフォーマンスチューニング仕切ってcache化したものが更に速くなるのは嬉しいですね。

dockerでapache-php7を動作させる

まずdockerのipを確認しておく

$ docker-machine ip
192.168.99.101

php7つきの仮想imageを探す
$ docker search centos:php7
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
padster83/centos7-php7-laravel5 centos7 php7 and larvel5.1 4 [OK]
skywidesoft/centos-apache-php7 1
bobbydvo/centos-php7 Docker container running Centos7 and the O… 0 [OK]
miyamotota/php7-centos67 PHP7 based CentOS6.7 0 [OK]

一番下の仮想imageが良さそうだったので、imageをpullする

$ docker pull miyamotota/php7-centos67

80port開放の状態で起動

$ docker run -it –publish 80:80 –name webphp7 miyamotota/php7-centos67:latest /bin/bash
apacheをinstallし起動させる
[root@8ff8c5a8cb27 /]# yum install httpd
[root@8ff8c5a8cb27 /]# /etc/rc.d/init.d/httpd start

dockerを再接続したい場合
$ docker start webphp7
$ docker attach webphp7

ローカルマシンからhttp://192.168.99.101へアクセスすると画面が開く
スクリーンショット 2016-02-16 3.32.05

php -v
PHP 7.0.3 (cli) (built: Feb 3 2016 11:40:05) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.0RC4, Copyright (c) 2002-2016, by Derick Rethans

php7の動作検証にdockerは使えそうです。

意識ないままにzozotownのプレミアム会員になってた。

先日クレジット明細を見てみるとZOZOPREMIUMなるものに500円支払っていることが判明。
購入遷移フロー時にデフォルトでチェックが入れられていたものを見逃して、
加入意識のないうちに入会してしまったのかな?
現時点(2016/2/12)の購入フローを確認しに行きましたが、購入確定までに
そのようなプレミアム会員加入へのデフォルトチェックはありませんでした。
私の勘違いかな?
プレミアムでなくても3000円以上だと送料が無料になるようで不要なので退会しました。
次から気をつけよう。
スクリーンショット 2016-02-12 15.40.58

SearchConsoleのSitemapのIndex率から評価の高いページを見つける方法

みなさんサイトマップを作成する際どのように作ってますでしょうか?
全てのページを1つのサイトマップに作っていることはありませんか?
私は以下のようにページを種類ごとにまとめてサイトマップを作成してます。

画像だけページでまとめたサイトマップと
ログページでまとめたサイトマップ

2013年だけをまとめたサイトマップ

直近作成したページをまとめたサイトマップ

ここから価値のあるページとないページがわかると思います。
2016現在評価の低いページは削除(noindex化)をしたほうが
サイト全体の評価が高くなるということが言われています。
この場合、ログページはindex率が0%だったので
この後、サイトマップから除外することにしました。

*応用1
例えばpagerがついたページを全てsitemapに登録している場合は、
1ページと2ページを別にしてsitemapを作ってindex率を見ながら
あるページ以後はindex率が少ないので、sitemap登録から除外するなどという使い方

*応用2
お気に入りをつけることができる記事を表示しているときは
お気に入り数が5,10,15,20以下などと種類を区切って
sitmeap登録する。
お気に入り数が5以下はindex率が少ないので除外するなどといった使い方。

渋谷のLivingRoomCafeへ行ってみました。

渋谷5階にあるおしゃれなカフェです。

部屋は6タイプあります。
Terrace free Wi-Fi 喫煙席
Living free Wi-Fi LIVE
Patio free Wi-Fi LIVE
Terrace Room free Wi-Fi
Bar free Wi-Fi 電源コンセント
Dining free Wi-Fi 電源コンセント LIVE

今回は電源も使えるダイニングカウンターに座ってみました。
IMG_1129

リビングループはこんな感じでした。
IMG_1130

wifiもあります。
IMG_1125

タイザーを頼んでみました。600円だったかな?
IMG_1127

17時ごろでしたがひとはあまりいませんでした。
IMG_1128

予約もやっているようで値段はこんな感じでした。
IMG_1131

個室もやっているようで、2315円/1hでやっているようです。
ノマドワーカーにはいい場所でした。

http://livingroomcafe.jp
【OPEN】
11:30~24:00(LO 23:00)
日曜・祝日~22:00(LO 21:00) 
※祝前日は通常営業

【ADDRESS】
〒150-0043
東京都渋谷区道玄坂2-29-5 渋谷プライム5F

bizerとfreeeを使って決算書を作成してみました

実際にbizerとfreeeを使って決算書を作成してみた時のレポートです。

HP(https://bg-bizer.jp/settlement)にはfreeeで記帳していて、売上げ1000万円以下だと
50000円でやってくれるとの記載がありました。

前年に別の知人に紹介された格安税理士さんにお願いした時は
税抜で150000円取られたので、1/3です。

これはいい!と思ったので早速bizerの相談から決算書作成の申請しました。
そうしたところ1日も待たずに税理士さんから請求書が送られてきたので、確認しました。

税理士さんが出してきた請求書の報酬があってるか確認します。
税抜き50000円であれば、振込額は48895円となります。

税理士さんへの報酬の計算方法
**税抜き50000円の場合			
報酬額54000円で税抜き報酬額は54000/1.08で50000円。税額は50000*0.1021で5105円。税理士さんへの振込額は54000-5105=48895						
報酬額	54000	税抜き報酬額	50000	税額	5105	
振込額	48895
**税抜き75000円の場合
報酬額81000円で税抜き報酬額は81000/1.08で75000円。税額は75000*0.1021で7657円。税理士さんへの振込額は81000-7657=73343						
報酬額	81000	税抜き報酬額	75000	税額	7657	
振込額	73343		
**税抜き150000円の場合
報酬額162000円で税抜き報酬額は162000/1.08で150000円。税額は150000*0.1021で15315円。税理士さんへの振込額は162000-15315=146685					
報酬額	162000	税抜き報酬額	150000	税額	15315
振込額	146685				

ちなみに税理士さんは勝手に割り振られるようです。
ここで気になるのが、その税理士さんとは別の税理士さんにしたい場合ですが、
実際にやったわけではないので確定的なことはいえませんが、
請求書添付の段階で変えて欲しいといえば変えてくれそうな気もします。

この税理士さんでよければ、改めて決算書作成の依頼をします。

次に以下のpdfファイルををbizerの相談ページに添付投稿します。
①前期提出した確定申告書
②定款
③法人登記簿謄本
④税務届出書(設立届や青色申請など)
定款以外紙媒体だったので、一つ一つスマホで写真を撮って
GoogleDriveのドキュメントに登録してpdf化しました。
(コンビニでスキャンすれば1枚30円でできます)

決算書作成までの手順は以下の通りです。
①税理士さんへのfreeeの閲覧権限を付与
②freeeへの12月までの取引を全て記帳をします。
③記帳内容を確認し、修正等を依頼
④修正後、決算書・申告書を作成

“②のfreeeへの記帳”については決算月の12月の収支が来年2月ごろまでかかってしまうので、
2月まで待ってもらうことにしました。
2月中旬に”③の記帳内容を確認”をしてもらって、
3月ごろには”④の決算書”が届く予定です。
こちらでの作業は全て終わっているので決算書が届くのが楽しみです。

bizerとfreeeを契約している場合のみこの値段(50000円)で対応してくれます。
bizerの顧問料は月2980円で年間35760円。freeeは年間19800円なので
全て合わせると(35760+19800+50000=)105560円で、前年の決算よりも安いです。
クラウド決算は超おすすめです!

crontabの代用としてjenkinsを使ってみた結果

crontabだとエラーが起こったときのログ確認や多重起動の制御などがしやすいため、
crontabの代用としてjenkinsを使ってみました。

jenkinsに置き換えて処理実行
スクリーンショット 2016-01-08 4.52.32
エラーが起こった際は、晴れマークが曇りマークor雨マークになるので直ぐに検知ができます。
アラートはメールでいいのでは?と思うかもしれませんが、
バッチ数が50件などと多くなると、アラートメールでは難しくなります。

処理スクリプトごとにログを確認できます。
さらに過去処理のログもすぐに確認ができます。
スクリーンショット 2016-01-08 4.54.27

懸念があるとすれば、2点ほど
・サーバ移行したとき記述を変えないとならないのがめんどくさい。
・新しくバッチを追加するときに他のバッチのスケジュールを一覧でみれないので、空き時間がわかりずらい。
とはいえ、メリットがでかいので、cronのjenkins処理はおすすめです。