planet-green.com

RETRIPが本当に酷いサイトか検証してみました



先に結論を書いてしまいましょう。本当に酷いサイトでした。
このような結論に至った経緯を書いてみたいと思います。

ざっくりとまとめると…

  • RETRIPは実際に現地に行ったことの無い人が観光情報の記事を書いているサイト。
  • そのため、事実誤認や不親切な内容の記事が少なくない。
  • 現在、Googleで『札幌 観光』を検索すると、間違いだらけのRETRIPの記事が1位に表示される(おそらく北海道以外の観光記事でも同じことが起きている)。
  • 「おまえのページランクは俺のもの、俺のページランクは俺のもの」という考え。

目 次

事の始まり:無断転載されていました

旅行キュレーションメディア《RETRIP》とは何ぞや

北海道に関する記事で検証

技術的な側面から調べてみると

そして一番の問題は・・・

»ç¶šãã‚’読む

コメント(19)
planet-green.com

[Photo] たきかわ菜の花まつり



北海道・滝川市で5月下旬頃に開催される「たきかわ菜の花まつり」の様子です。

滝川 菜の花まつり

滝川 菜の花まつり

滝川市公式サイトより

滝川市内最大のイベント「たきかわ菜の花まつり」。
滝川市は平成に入って菜種栽培が盛んになり、現在では日本有数の作付面積を誇ります。
(2016年 菜種作付面積は日本一の177ha)
開花となる5月中旬~5月下旬には市内に菜の花の黄色いじゅうたんが一面に広がり、国内外の多くの観光客が訪れます。
見頃に合わせ開催される「たきかわ菜の花まつり」では、滝川市で採れた食材や菜の花を使ったグルメフェアやステージイベントも開催されます。

滝川 菜の花まつり
祭り期間中は仮設の展望台が用意されており、あたり一面に広がる菜の花畑を眺めることが出来ます。
菜の花畑は広いです。本当に広いです。

滝川 菜の花まつり

滝川 菜の花まつり

滝川 菜の花まつり

菜の花とミツバチ

滝川 菜の花まつり

滝川 菜の花まつり

滝川 菜の花まつり
📷 5DMarkII / EF16-35mm F4L IS USM

札幌から滝川へ車で行くと高速を通って1時間15分、下道だと2時間くらいでしょうか。
お祭りの開催期間は短いので公式HPでご確認を。

【たきかわ観光トップページ – 滝川市役所 公式ホームページ】
http://www.city.takikawa.hokkaido.jp/230keizai/03kankourenkei/10menu/nanohanamatsuri.html

【滝川市菜の花 – たきかわ菜の花まつり】
https://www.takikawa-nanohana.com/

コメント
planet-green.com

[開発/備忘録] WordPressのテーブルを手動でutf8mb4に一括変換する



現在、WordPressを新規でインストールするかv4.2以前から最新版にアップデートすると、DBの各テーブルの文字コードが自動的にutf8mb4_general_ciに設定されます。
(ただし、DBがMySQLの5.5.3以上かMariaDBの10以上だった場合のみ)

しかし、DBのバージョンが古かったサーバーでWordPressを運用していて既にv4.3以降にアップデートした後、新しいサーバーにデータごと引っ越した場合は、文字コードがutf8_general_ciのままになってしまいます。(当サイトがそうでした。)

そんな時は、まず wp-config.php の DB_CHARSET を utf8mb4 にして、

define('DB_CHARSET', 'utf8mb4');

下記のコードをfunction.phpに貼り付け、 http://(サイトのURL)/?upgradeUtf8mb4=1 をブラウザで呼び出せば utf8mb4_general_ci に一括返還してくれます。
(v4.7.3で動作確認はしましたが、必ず実行前にバックアップしてください)

if( isset($_GET["upgradeUtf8mb4"]) && $_GET["upgradeUtf8mb4"==1 )
{
        require_once ABSPATH."wp-admin/includes/upgrade.php";

        if ( is_multisite() ) {
                $tables = $wpdb->tables( 'blog' );
        } else {
                $tables = $wpdb->tables( 'all' );
                if ( ! wp_should_upgrade_global_tables() ) {
                        $global_tables = $wpdb->tables( 'global' );
                        $tables = array_diff_assoc( $tables, $global_tables );
                }
        }

        foreach ( $tables as $table ) {
                maybe_convert_table_to_utf8mb4( $table );
        }

        echo "done.";
        exit;
}

実行後、テーブルが変換されているのを確認したらこのコードは削除してください。

ちなみに utf8mb4_general_ci は何が違うのかと言うと、絵文字を直接保存できるようになるのです。
(逆に言うと、絵文字を使わないのであればテーブルを変換する必要は無いです)

コメント
planet-green.com

[開発/備忘録] WordPressでSchema.org用JSON-LDを出力(複数画像対応)



WordPressで構造化データ(schema.org用)のJSON-LDを<head>内に出力する関数です。function.phpに追記してください。

ネットで調べてみると似たようなコードはいくつかありましたが、複数の添付画像・複数のカテゴリーに対応したものが無かったので自作しました。

function insert_json_ld_for_schema_org()
{
	if( !is_single() || !have_posts() ) {
		return;
	}
	
  //あなたのサイトのロゴ画像をここで設定してください
  $logo = array(
		'@type' => 'ImageObject',
		'url' => 'http://*****/****.jpg',
		'width' => '240',
		'height' => '80'
	);
	
	while (have_posts()) {
		the_post();
		$category_info = get_the_category();
		if( count($category_info) > 1 ) {
			$articleSection = array();
			foreach( $category_info as $ct )
			{
				$articleSection[] = $ct->name;
			}
		} else 	{
			$articleSection = $category_info[0]->name;
		}
		
		//添付画像を取得
		$attachments = get_children( array( 'post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image') );
		
		$images = array();
		foreach($attachments as $image) {
			$src = wp_get_attachment_image_src( $image->ID, 'medium' );
			$images[] = array(
				'@type' => 'ImageObject',
				'url' => $src[0],
				'width' => strval($src[1]),
				'height' => strval($src[2])
			);
		}
		
		//添付画像が無い場合はアイキャッチ画像を取得
		if( !count($images) ) {
			if( has_post_thumbnail() ) {
				$thumbnail_id = get_post_thumbnail_id(); 
				$src = wp_get_attachment_image_src( $thumbnail_id , 'medium' );
				$images = array(
                                	'@type' => 'ImageObject',
                                	'url' => $src[0],
                                	'width' => strval($src[1]),
                                	'height' => strval($src[2])
				);
			} else {
				//それも無い場合はロゴ画像をセット
				$images = $logo;
			}
		}
		$data = array(
			'@context' => 'http://schema.org',
			'@type' => 'Article',
			'headline' => get_the_title(),
			'author' => array(
					'@type' => 'Person',
					'name' => get_the_author(),
			),
			'datePublished' => get_the_date('Y-m-d'),
			'dateModified' => get_the_modified_time( 'Y-m-d' ),
			'articleSection' => $articleSection,
			'url' => get_permalink(),
			'mainEntityOfPage' => array(
				'@type' => 'WebPage',
				'@id' => get_permalink()
			),
			'publisher' => array(
				'@type' => 'Organization',
				'name' => get_bloginfo('name'),
				'logo' => $logo,
			),									
			'image' => $images,
		);
		
		//php5.4以前のバージョンではオプション引数(JSON_UNESCAPED〜)を削除すれば大丈夫だと思います。
		echo '<script type="application/ld+json">'
			.json_encode($data, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT)
			.'</script>'.PHP_EOL;
	}
	rewind_posts();
}
add_action('wp_head','insert_json_ld_for_schema_org');

出力サンプル。

<script type="application/ld+json">{
    "@context": "http://schema.org",
    "@type": "Article",
    "headline": "[Photo] 幌見峠のラベンダー園",
    "author": {
        "@type": "Person",
        "name": "tomoya"
    },
    "datePublished": "2017-04-08",
    "dateModified": "2017-04-08",
    "articleSection": "Photo",
    "url": "https://planet-green.com/horomitouge-lavender/1501",
    "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://planet-green.com/horomitouge-lavender/1501"
    },
    "publisher": {
        "@type": "Organization",
        "name": "planet-green.com",
        "logo": {
            "@type": "ImageObject",
            "url": "https://planet-green.com/wp-content/uploads/2017/03/Twenty-Seventeen-capture-2017-03-28-.jpg",
            "width": "640",
            "height": "573"
        }
    },
    "image": [
        {
            "@type": "ImageObject",
            "url": "https://planet-green.com/wp-content/uploads/2017/04/horomitouge-7399-720x480.jpg",
            "width": "720",
            "height": "480"
        },
        {
            "@type": "ImageObject",
            "url": "https://planet-green.com/wp-content/uploads/2017/04/horomitouge-7418-720x480.jpg",
            "width": "720",
            "height": "480"
        },
        (略)
    ]
}</script>

そのSchema.orgなんですが、仕様についてネット上の情報が錯綜している上に、公式サイトの説明も曖昧で、いまいちよくわからない部分が多いのですよね。

例えば、記事タイトルはnameプロパティで指定すると書いてあるサイトもあれば、headlineプロパティで指定すると書いてあるサイトもあります。
Schema.org公式サイトでは簡素にnameはname、headlineはheadlineと書いてありますが言葉の定義についての説明が無いのです。

しかもgoogleまで錯綜していて、Search Console(webmasterツール)の 〔その他のリソース〕 にある 〔構造化データ マークアップ支援ツール〕 を使って画像タグのマークアップをしても、〔構造化データ テスト ツール〕を使ってチェックするとエラーになるという状態です。

そこで上記のPHP関数は、私が調べた範囲において最大公約数的な解釈をして実装しました。
間違いがありましたらコメントでご指摘していただけると幸いです。

コメント
planet-green.com

[Photo] 幌見峠のラベンダー園



幌見峠にて。2015年7月中旬。

幌見峠のラベンダー畑と札幌市街

幌見峠から眺める札幌市街

北海道のラベンダー畑と言えば富良野が有名ですが、札幌にも素敵なラベンダー畑があります。
規模では富良野に負けますが、眺めの良さでは勝るとも劣らないと思います!
なにより札幌市街から近いのが嬉しいです。

【公式HP】
幌見峠のラベンダー園

幌見峠のラベンダー園

幌見峠のラベンダー園と札幌市街

ミツバチが一心不乱に蜜を集めていますが、こちらから刺激しない限り襲ってくることはまず無いです。

幌見峠のラベンダーと蜂

幌見峠のラベンダーと虫

幌見峠のラベンダー園

幌見峠のラベンダー園

📷 EOS 5D MarkII / EF16-35mm F4L IS USM / TAMRON SP AF90mm F/2.8 Di MACRO

コメント
planet-green.com

[開発/備忘録] 個人でSSL証明書を取得してHTTPS化してみた話



個人でSSL証明書を取得して当サイトをHTTPS化してみました。
証明書はGeoTrust社のRapid SSLです。

実はその少し前に無料のLet’s Encryptを試しに入れていたのですが、次章で書く懸念事項があり、Rapid SSLが3年間3,200円(税別)と安かったので購入することにしました。ちなみにニジモさんで購入しました。

Let’s Encryptについて

無料なのは大変ありがたいです。理念も素晴らしいと思います。

証明書を取得・更新するためには、一時的にWEBサーバー(Apacheやnginxなど)を停止し、専用のスクリプトを走らせる必要があります。

このスクリプトはサーバーの80ポートまたは443(SSL)ポートを独占して認証サーバーのAPIにアクセスし証明書を取得するようです。
(おそらくサーバーの所有者であることを確認するためにそのようにしているのでは無いかと思います)

証明書は90日ごとに更新が必要なので、サーバー管理者が手動で行うか自動化スクリプトをcronで登録する必要があります。

怖いのは、いつか忘れた頃にLet’s Encrypt側のAPI仕様やURLが変更されて自動更新に失敗したり、無料サービスが打ち切られてしまうことですね。

最初は無料で始まったサービスがいつのまにか有料になったり、大手企業に買収されて理念が大きく変質してしまった例を何度か見てきていますので・・。
(前者ならDynDNS、後者ならMySQLなどですね)

また、サーバーを管理する者としては、自分が忘れている間にWebサーバーが一時停止された後、何らかのトラブルで再起動に失敗するのが一番怖いです。

・・・と、懸念事項を思いつくだけ書いてみましたが、個人が趣味で運営しているようなサイトなら大きな問題にはならないでしょう。

しかし、商用利用してるサーバーや業務で扱うサーバーではリスクが大きいかもしれません。

Rapid SSLとFUJI SSLの比較

ニジモさんではFUJI SSLという日本のセコム社が販売しているSSLも取り扱っていて、こちらの方が3年2,400円(税別)と安かったので、購入時の比較対象としました。

ちなみに両者の対応ブラウザは次のようになっています。

RapidSSL

  • Internet Explorer ver.6以降 ※1
  • Chrome 1.0以降
  • Opera 9.5以降
  • Firefox 1.0.0以降
  • Mac OS X Safari 2.0以降 ※1
  • Android Ver.1.5以降 ※2
  • iOS Safari iOS3.0以降
  • Windows Phone 7以降

https://www.geotrust.co.jp/products/resources/compatibility_listing/より抜粋

FUJI SSL

  • Internet Explorer 8以上
  • Chrome(IEと同様 Windows XP SP3以降)
  • Opera 9.5以上
  • Firefox 12.0以上
  • Mac OS X 10.6.7以上
  • Android ver1.5以上 ※2
  • iOS ver2.0以上 ※2
  • Windows phone ver7以上

https://www.fujissl.jp/certificate/cer-browser/より抜粋

※1 実際にはSHA-2(SHA-256)の制限があるので、IE7以降・Mac OS X 10.5以降になるはずです。
※2 中間CA証明書を追加する必要あり。
 
携帯電話、いわゆるガラケーに関してはFUJIの方が対応率が高いようですが、当サイトに携帯からのアクセスはほとんど無いので気にしないことにします。

IEに関してはVer.7を使っている人はもうほとんどいないので問題ないのですが、Mac OSに関しては、当サイトはMac関係の記事も書いているせいか、アクセスログを見ると10.4や10.5のユーザーが稀にいるのです。

これら古いMac OS Xのサポートはとっくに切れているので使い続けるとセキュリティ的に危険なのですが、現実としてまだ使い続けている人がいる以上、完全に切り捨てるわけにもいかないというところです。

(本当は切り捨てた方が、新しいOS・ブラウザへの移行を促すのでいいのかもしれないですけど)

というわけでRapid SSLを導入したのですが、個人的には、今回の有効期限が切れる3年後ならFUJI SSLにしてもいい時期かなと思います。両者とも最近のスマホには完全対応しているので、スマホ向けサイトなどであればFUJI SSLは魅力的な選択肢になるのではないでしょうか。

»ç¶šãã‚’読む

コメント