<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:xhtml="http://www.w3.org/1999/xhtml" ><channel><title>gaspanik weblog &#187; wordpress</title> <atom:link href="http://blog.gaspanik.com/tag/wordpress/feed" rel="self" type="application/rss+xml" /><link>http://blog.gaspanik.com</link> <description>beat one&#039;s brain</description> <lastBuildDate>Thu, 15 Dec 2011 23:53:18 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/tag/wordpress/feed" /> <atom:link rel='hub' href='http://blog.gaspanik.com/?pushpress=hub'/> <cloud domain='blog.gaspanik.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' /> <item><title>ありがとうございました、のWordCamp Tokyo</title><link>http://blog.gaspanik.com/thanks-wordcamp-tokyo-2011</link> <comments>http://blog.gaspanik.com/thanks-wordcamp-tokyo-2011#comments</comments> <pubDate>Wed, 30 Nov 2011 00:26:09 +0000</pubDate> <dc:creator>[cipher]</dc:creator> <category><![CDATA[articles]]></category> <category><![CDATA[scribbling]]></category> <category><![CDATA[works]]></category> <category><![CDATA[event]]></category> <category><![CDATA[webdesign]]></category> <category><![CDATA[wordcamp]]></category> <category><![CDATA[wordpress]]></category><guid isPermaLink="false">http://blog.gaspanik.com/?p=6704</guid> <description><![CDATA[先日27日に開催された「WordCamp Tokyo 2011」に行ってきました（というか、スピーカーなので行かなきゃダメなんすけどｗ）。あらためて、運営スタッフの皆様、スピーカーの皆様、そしてご来場くださった皆様ありがとうございました。そして、長丁場お疲れ様でした。多くの方が既に参加レポートをあげてくださっていますが、ボクはボクなりに今回のWordCampの話を書き綴っておこうかと思います。]]></description> <content:encoded><![CDATA[<p>先日開催された「<a href="http://2011.tokyo.wordcamp.org/"><strong>WordCamp Tokyo 2011</strong></a>」に行ってきました（スピーカーなので行かなきゃダメなんすけどｗ）。あらためて、運営スタッフの皆様、スピーカーの皆様、そしてご来場くださった皆様ありがとうございました。そして、長丁場お疲れ様でした。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/11/wctokyo2011r.jpg" alt="wctokyo2011" title="wctokyo2011" width="450" height="253" class="alignnone size-full wp-image-6703" /></p><p>多くの方が既に参加レポートをあげてくださっていますが、ボクはボクなりに今回のWordCampの話を書き綴っておこうかと思います。</p><p><span id="more-6704"></span></p><h3>今回登壇するにいたるまで</h3><p><a href="https://twitter.com/naokomc">@naokomc</a>さんから「<strong>WordCamp Tokyoやるから出てくんない？</strong>」と打診をいただいたのが10月初旬。普段あまりWordPressのコミュニティに貢献しているわけでもないので、「<strong>こんなボクで何かお役に立てることならやりますよ</strong>」とオッケイを。実はもともと彼女とは旧知というか、世の中でブログが流行り始めた頃からその存在を知っていましてね。そう、皆さんご存じないと思いますが、ボクは日本で二番目にブログの本を出してまして、今や見る影もありませんがその昔はブロガー的な立ち位置だったのです（笑）。</p><p>と、そんなことはどうでもいいのですが、その後今回のWordCampの実行委員長の<a href="https://twitter.com/waviaei">@waviaei</a>さんと三人集まって、都内某所で何を話すか会議を（というかご飯をｗ）。今回参加された皆さんはお分かりいただけたかと思うのですが、イベントに参加される皆さんのWordPressとの接し方は多岐にわたります。参加される皆さんひとりひとりをすべて満足させられるような話はできませんし、他のスピーカーの皆さんのこともあります。とりあえず、その場は何が良いんだろうね？ってトコからある程度の方向性だけを決めて、後日「<strong>レスポンシブネス</strong>」な話でいきましょうか、ということになった、と。</p><h3>うまく枠にはめてきましたねｗ</h3><p>10月中旬にはそういった方向性だけは決まっていたものの、その時点では他のスピーカーの方はもちろんタイムテーブルも出ていません。まぁその辺が決まってから話の内容や構成を考えようかな、とのんびり構えていました。「<strong>レスポンシブネス</strong>」といってもその指し示すところは広いわけで、実のところ「<strong>あまり視覚的な表現に振れない方向で</strong>」ということは言われてました。Webデザイン業界でいま話題になっている「<strong>Responsive Web Design</strong>」的なものは、多様なデバイスへの対応が前面に出ているので割と視覚的な部分と捉えられがちです。</p><p>で、他のスピーカーやタイムテーブルが明らかになるにつれ、「<strong>この人たちうまいこと枠にはめてきたなぁ…</strong>」と感心しました（笑）。ボクのセッションをお聞きになった方は、最後の最後で次のセッションへの案内を出したことでお分かりいただけたかと思うのですが、ボクの話は次のお三方のセッションすべてに繋がる導入セッションだったのですね。パブリッシング・プラットフォームとして、Webコンテンツに限らないレスポンシブなWordPressの使い方で、と考えたのです。</p><p>実際、後のお三方がどのようなお話をされるかは、タイトルと概要を見て判断するしかないのですが（すり合わせることはできるけどしていない 笑）、長谷川さんやたにぐちさんは普段からブログや講演をなさってますし、高橋さんは既にWordCamp Kobeで電子書籍の話をされています。幸いそんな感じで、皆さんがどういった内容を話されるかはある程度の想像が付いたので、そこに繋がるような構成で今回のボクのセッションの骨子ができあがりました。</p><h3>でも、前日まで何もしていませんでした</h3><p>とはいうものの、30分という限られた枠の中で講演内容を詰めていくというのは実は大変な作業です。ライトニングトークみたいな短時間なら勢いでどうにかできますし、45分や1時間ぐらいの枠であればデモを含めながらの講演も考えられます。でも、技術的な話をする場合の30分って実はすごく微妙な時間なんです。詰め込みすぎて時間オーバーするのもダメだし、かといって内容を薄くしたり早口になりすぎて早く終わりすぎてもダメ…。ましてやデモなんて、トラブったらそこで終わり…。百戦錬磨なはずの皆さんからも「<strong>30分なんだよなぁ…</strong>」と（笑）。</p><p>そんな30分をどう使うか、ということをずっと考えていたので、骨子ができた後も全然スライドに手がつきません。結局、スライドを作り始めたのは前日の夜。ある程度形になってから一回寝て、起きてからあらためて見直してまた修正。練習なんて一度もすることもなく、朝会場へ向かう電車の中でもう一度確認。でも、新宿から品川シーサイドまでの移動は20分で話す時間より短く、iPhoneに入れたPDFを使ってイメトレどころじゃない（笑）。会場について、機材チェックを終えてから控え室にこもって、ホントに直前までスライドを修正していました。つまり、正直なところ練習一度もなしのぶっつけ本番で挑んでしまいました、ごめんなさい。</p><h3>聴講いただいた皆様にお礼を</h3><p>当日午前中のデザイナートラックのお二方は満員御礼の大盛況。出番が近づくにつれ、変なプレッシャーがおそってきます（笑）。「<strong>おいおい、デザイナートラックなのに一枚も絵がないよ</strong>」「<strong>コードすらないじゃん</strong>」みたいな状態からは脱したものの、内容はデザイナー向けと言って良いのか？みたいなところもあって、「<strong>全然デザインの話ないじゃん！</strong>」とか言われちゃうんじゃないかと、ハラハラドキドキどうなることかと思ってました。幸いにも若干の空席はあったものの、多くの方に聞いていただいてホッとしました。</p><p>そんな練習すら一度もしていないボクのセッションをご覧くださった皆様、あらためてこの場を借りてお礼を申し上げます。ここまで登壇に至った経緯からそのバッググラウンドを書き連ねてきましたが、今回WordCamp Tokyoのボクのセッションでは、デザインのことも技術的なことも表面をなぞるぐらいしか触れていません。即効性のあるツールの使い方やちょっとしたTipsといったウケる話ではありませんでしたが、ひとりでも多くの方にこれからのコンテンツ制作、そしてコンテンツ配信の未来を考える何かしらのきっかけや気づきを与えられていたら幸いです。ありがとうございました。</p><div style="width:425px" id="__ss_10346938"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/gaspanik/wordcamp-tokyo-2011-komori" title="WordCamp Tokyo 2011 komori" target="_blank">WordCamp Tokyo 2011 komori</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/10346938" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/gaspanik" target="_blank">Masaaki Komori</a></div></p></div><p>＃もともと人前に出て話をすることどころか、結構な人見知りなもので懇親会なども端っこにいて交流もしなくてスミマセン（笑）。お会いして名刺交換などしていただいた皆さん、ありがとうございました。</p><h3>あ、いっこ言い忘れてた</h3><p>いろんな閲覧環境がますます増えていくことが想像できますから、見た目の同一性とかあんま細かいことにこだわりすぎない方がいいですよ（笑）。</p><h3>それと、最後にいろいろ宣伝…</h3><p>えっと、今回内容的には「<strong>Responsive Web Design</strong>」「<strong>HTML5</strong>」「<strong>電子書籍（ePub）</strong>」、そして「<strong>WordPress</strong>」とこれからのWeb技術などを織り交ぜて展開しましたが、実はいずれについても現在書籍を執筆中です。正確な発売時期や書名などは全然決まっていませんが、来年早々には書店に並ぶのではないか、と。また、この11月から<a href="http://www.active-college.jp/">アクティブ・カレッジ</a>さんで、HTML5の基礎講座、電子書籍の基礎講座、スマートフォン制作の基礎講座などを担当しておりますので、それらの技術に興味のある方はそちらもよろしくお願いいたします。</p> ]]></content:encoded> <wfw:commentRss>http://blog.gaspanik.com/thanks-wordcamp-tokyo-2011/feed</wfw:commentRss> <slash:comments>1</slash:comments> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/thanks-wordcamp-tokyo-2011" /> </item> <item><title>WordCamp Tokyo 2011 に出演します</title><link>http://blog.gaspanik.com/wordcamp-tokyo-2011</link> <comments>http://blog.gaspanik.com/wordcamp-tokyo-2011#comments</comments> <pubDate>Wed, 23 Nov 2011 23:15:30 +0000</pubDate> <dc:creator>[cipher]</dc:creator> <category><![CDATA[articles]]></category> <category><![CDATA[notice]]></category> <category><![CDATA[scribbling]]></category> <category><![CDATA[webdesign]]></category> <category><![CDATA[wordcamp]]></category> <category><![CDATA[wordpress]]></category><guid isPermaLink="false">http://blog.gaspanik.com/?p=6688</guid> <description><![CDATA[WordPress を使ったオンラインコンテンツも多様なデバイスに「レスポンシブ」に対応できることが望まれる昨今。視覚的な対応はもちろん、コンテンツそのものをさまざまな形態で柔軟に配信するための考え方や手法を紹介します。]]></description> <content:encoded><![CDATA[<p>昨年のWordCamp Yokohamaにも出演させていただいたのですが、きたる2011年11月27日（日）に品川の楽天タワー2号館で開催される「<a href="http://2011.tokyo.wordcamp.org/">WordCamp Tokyo 2011</a>」にまた出演することになりました。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/11/wctokyo.jpg" alt="WordCamp Tokyo" title="wctokyo" width="450" height="253" class="alignnone size-full wp-image-6690" /></p><p>前回は「WordPressのパフォーマンス改善あれこれ」みたいな話をしましたが、今回はガラッと方向性を変えてデザイナートラックの午後一発目に「レスポンシブ・パブリッシング」というお題で30分ほど話をさせていただきます。</p><p><span id="more-6688"></span></p><blockquote><p>WordPress を使ったオンラインコンテンツも多様なデバイスに「レスポンシブ」に対応できることが望まれる昨今。視覚的な対応はもちろん、コンテンツそのものをさまざまな形態で柔軟に配信するための考え方や手法を紹介します。</p></blockquote><p>というわけで、多様化していくデバイスやコンテンツ形態を見据え、これから先WordPressをどう使いこなしていけばいいか、といった内容になる予定でございます。視覚的なマルチデバイスへの対応は、後に続くたにぐちさんでも扱われると思うのでそこそこにしておきます（笑）。</p><p>当日の<a href="http://2011.tokyo.wordcamp.org/timetable/">タイムテーブル</a>をご覧いただくとおわかりいただけると思うのですが、多様なセッションが目白押しの1日となっております。まだ、参加登録は受付中ですので、日曜日の品川でお会いしましょう。</p><p>&rarr; <a href="http://bit.ly/vpmeGO">WordCamp Tokyo 2011 | 2011年11月27日（日）</a></p><p>＃ちなみに今回の公式サイトのトップの写真は、ボクが昨年の横浜で撮影したものです。手タレとして出ていただいてるお二方、ありがとうございます。</p><hr /><p>今頃公開するな、と言われそうですが去年のです。ごめんなさい。</p><div style="width:425px" id="__ss_10298142"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/gaspanik/wordcamp-yokohama-2010-komori" title="WordCamp Yokohama 2010 Komori" target="_blank">WordCamp Yokohama 2010 Komori</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/10298142" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/gaspanik" target="_blank">Masaaki Komori</a></div></p></div><p>今回こちらのパフォーマンスの話は別の切り口から<a href="http://dogmap.jp/">@wokamoto</a>さんが講演されます。その予習程度にご覧いただくといいかもしれません。</p> ]]></content:encoded> <wfw:commentRss>http://blog.gaspanik.com/wordcamp-tokyo-2011/feed</wfw:commentRss> <slash:comments>0</slash:comments> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/wordcamp-tokyo-2011" /> </item> <item><title>レスポンシブな感じで quoted を立ち上げました</title><link>http://blog.gaspanik.com/inside-quoted</link> <comments>http://blog.gaspanik.com/inside-quoted#comments</comments> <pubDate>Sun, 02 Oct 2011 03:53:37 +0000</pubDate> <dc:creator>[cipher]</dc:creator> <category><![CDATA[articles]]></category> <category><![CDATA[scribbling]]></category> <category><![CDATA[themes]]></category> <category><![CDATA[webdesign]]></category> <category><![CDATA[websites]]></category> <category><![CDATA[wordpress]]></category><guid isPermaLink="false">http://blog.gaspanik.com/?p=6586</guid> <description><![CDATA[Responsive Web Designの話を少しずつ目にし始めたので、レスポンシブなのでも作ってみるかということで「quoted」というサイトを立ち上げました。いや、むしろ逆で引用文主体のサイトだからレスポンシブでいいよね、って感じなのですが。]]></description> <content:encoded><![CDATA[<p>Responsive Web Designの話を少しずつ目にし始めたので、レスポンシブなのでも作ってみるかということで「<a href="http://q.gaspanik.com">quoted</a>」というサイトを立ち上げました。いや、むしろ逆で引用文主体のサイトだからレスポンシブでいいよね、って感じなのですが（笑）。作ったといっても、そのほとんどで自分の力は何一つ使ってません。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/10/skelton-001.png" alt="skelton-001" title="skelton-001" width="450" height="253" class="alignnone size-full wp-image-6583" /></p><p>ということで、今日はその舞台裏というか、コレがアレでこうなってできているよ、って話をしてみようかと思います。なにかの参考になれば幸いです。</p><p><span id="more-6586"></span></p><h3>Responsive Web Design の簡単な説明</h3><p>インターネットに接続できるデバイスが増えています、というか多様化しています。画面サイズや画面解像度はまちまちです。日本の場合は10年ぐらい前からいわゆる携帯電話で接続できてましたが、それらもやはり同じような問題を抱えていました。そのような個別の端末に対して、画面解像度や技術仕様などをベースにコンテンツを最適化して配信するということは大変ことです。</p><p>さらに、今時はスマートフォン向けのサイト制作などもあります。今後ますます増えていくであろう端末に対して、情報をどのように出していくか、ということを考えなければいけません。デバイスに完全に最適化するのか、ある程度の見栄えを維持したままワンソースで展開していくか、ってなことです。</p><p>ま、そういう手法のひとつがこの「Responsive Web Design」や「Adaptive Web Design」などと呼ばれているものです。厳密に言えば、二つの意味するとこは異なると思いますが、端末の画面サイズや利用可能な技術、仕様にあわせて、最適化というより適合させていくという考えです。</p><p>たとえば、カラムのレイアウトは流動的に変化するように「%」ベースで幅を指定する、画像や映像のサイズもそれにあわせて変化させる、といったテクニックを駆使します。そこで使われる技術としては、CSS3はもちろんMediaQueriesやJavaScriptなども含まれます。</p><p>ただし、この方法もやはり万能とは言い切れません。たとえば、ブログやニュースのような文字が主体のコンテンツには向いてますが、Webアプリや視覚的な情報も含んだコンテンツなどではコンテンツそのものの見せ方を考えなければならないかもしれません。要は向き不向きがあるってことです。</p><h3>WordPressのテーマ「Skeleton」を使ってみた</h3><p>ま、そんなわけで今回作ったサイトは、「書籍や誰かのインタビューなどで気になる発言を引用してメモしておく」という内容です。文字ベースになるのは明白ですし、個別のデバイスに対応する意味もあまり感じられないので、レスポンシブな感じにしてみようと思ったのですね。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/10/skelton-002.png" alt="skelton-002" title="skelton-002" width="450" height="253" class="alignnone size-full wp-image-6584" /></p><p>そこで採用したのが（自分で作れよって話ですが）、こちらの「<a href="http://bit.ly/oUXnKr">Skeleton WordPress Theme</a>」です。Skelton という名前からピンと来る方もいらっしゃる方も多いかもしれませんが、このテーマの元になっているものは「<a href="http://bit.ly/iwCURj">Skelton</a>」というフレームワークです。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/10/skelton-003.png" alt="skelton-003" title="skelton-003" width="450" height="253" class="alignnone size-full wp-image-6585" /></p><p>「Beautiful Boilerplate for Responsive, Mobile-Friendly Development 」というタイトルになってるように、多様な端末での見栄えをサポートしてくれるフレームワーク。HTML5ベースで主要な要素などがシンプルにスタイリングされたものなので電子書籍などでも使える感じです。これは、カラム幅は % 指定するのではなく、960pxをベースにしたpx指定となっています。</p><p>テーマの方はWordPress以外のCMSをサポートしていたりしてるので不要なファイルなども含まれていますが、ファイルをダウンロードしてテーマのディレクトリにアップすれば使えます。いらないCSSのコードもできれば抜いた方が軽くなるでしょう（そのままだと60kぐらいになるので）。</p><p>とまぁ、SkeltonがベースのWordPressのテーマをいれて楽はしてるのですが、そのままではちょっと使えないというか、ところどころに凡ミスもあるのでその辺を修正しながら「<a href="http://q.gaspanik.com/">quoted</a>」ができています。ブラウザのサイズを変えたりiPhoneやiPadなどのデバイスでご覧いただければ、と。</p><p><strong>（追記）</strong>iPadを縦方向にすると横幅がぴっちりになるのもやはり単純な記述ミスだと思われますが、修正する場合は「skelton.css」の「#Tablet (Portrait)」のcontainerの横幅を748pxに変更しましょう。デフォルトでは左右のマージンが10pxずつ、16カラムがベースなので.sixteenは728px、たとえば「one＋fifteen＝728px」じゃないと話がおかしくなります。</p><h3>それ以外にやっていること</h3><p>それと今回は、Web fontも使ってみようかな？と思って「<a href="http://www.google.com/webfonts">Google Web Fonts</a>」をタイトル部分に使っています。CSS版で入れました。</p><p>あと、FacebookのOGPはシンプルに「<a href="http://bit.ly/pyA959">WP Facebook Open Graph protocol</a>」をベースにちょっとだけ改良。デフォルトイメージの登録、「og:description」には本文先頭の160文字かexcerptを抜いてくれるので楽ですね。</p><p>それ以外には、いわゆるサイトパフォーマンス高速化の手法をあれやこれやと。例によって「W3 Total Cache」を入れてCDNのオプションを有効にし、CSSやJS、ちょっとした画像などは別サイトから配信といった感じになっています。</p><p>参考までにGTmetrixのデータはこちらです。<br /> &rarr; <a href="http://bit.ly/oeUg7M">Latest Performance Report for: http://q.gaspanik.com/</a></p><p>以上、これからWordPressを使ってレスポンシブ・ウェブ・デザインで何か…と、お考えの皆さんの参考になればと幸いです。</p> ]]></content:encoded> <wfw:commentRss>http://blog.gaspanik.com/inside-quoted/feed</wfw:commentRss> <slash:comments>0</slash:comments> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/inside-quoted" /> </item> <item><title>WebサイトとGoogleプロフィールを紐付けるAuthorship</title><link>http://blog.gaspanik.com/how-to-add-your-site-authorship-markup</link> <comments>http://blog.gaspanik.com/how-to-add-your-site-authorship-markup#comments</comments> <pubDate>Mon, 11 Jul 2011 09:36:42 +0000</pubDate> <dc:creator>[cipher]</dc:creator> <category><![CDATA[articles]]></category> <category><![CDATA[scribbling]]></category> <category><![CDATA[google]]></category> <category><![CDATA[googleplus]]></category> <category><![CDATA[profiles]]></category> <category><![CDATA[tips]]></category> <category><![CDATA[webdesign]]></category> <category><![CDATA[wordpress]]></category><guid isPermaLink="false">http://blog.gaspanik.com/?p=5809</guid> <description><![CDATA[タイトルには若干語弊があるんですが、Googleさんが先にブログで公開した「Authorship Markup」のことを書いておこうかと思います。WordPressでの導入の仕方は一番最後に参考サイトを載せています。]]></description> <content:encoded><![CDATA[<p>タイトルには若干語弊があるんですが、Googleさんが先にブログで公開した「<strong><a href="http://googlewebmastercentral.blogspot.com/2011/06/authorship-markup-and-web-search.html">Authorship Markup</a></strong>」のことを書いておこうかと思います。これまでそんなにGoogleプロフィールを気にすることもなかったのですが、Google+も始まっていろいろ変わってきてますしね。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/07/authorship.png" alt="authorship" title="authorship" width="450" height="253" class="alignnone size-full wp-image-5808" /></p><p>このAuthorshipっていうのは、「<strong>コンテンツ（の作者）とGoogleプロフィールを結びつけて、そのコンテンツの原作者が誰かなのかをはっきりさせること。それによって、Googleを使う人たちも検索結果からその作者を見つけやすくなるでしょう</strong>」といった感じでしょうか。</p><p>そんなわけで簡単ですが、Authorshipの追加の仕方をひとつ。</p><p><span id="more-5809"></span></p><h3>ブログを例に挙げて解説するとこんな感じ</h3><p>わかりやすく説明するためにブログを例にしてみますね。ブログの記事っていうのは、それぞれの記事に執筆者がいます。執筆者が単体であるうちのようなブログもあれば、複数人で書いてるブログもあることでしょう。</p><p>その記事の執筆者が誰なのかは、記事に併記されたクレジットなどから確認できますし、名前の部分にリンクが埋め込まれていればサイトのアバウトページ（もしくはそれに準ずるページ）などでプロフィールを確認することができます。ここまでは既存のブログやWebサイトによくある形です。</p><p>でも、それだけだとそこで完結してしまう。そこでAuthorshipの登場です。</p><p>それを用意しておけばの話ですが、「Googleプロフィール」というのは、Googleにある自分のアバウトページだと言い換えることもできます。そのプロフィールページにはリンクを入れる箇所が右側に用意されています。その部分とサイトのアバウトページをリンクさせる、とGoogleプロフィールとサイトが紐付くわけですね。その関係性を手短に説明するとこのような仕組みになっているようです。</p><p>前述した説明の一部だけ取り上げると単なる紐付けに思えるけど、実は同じ内容のコンテンツが仮に大量複製されて別サイトに掲載されても、そのコンテンツが初めてネットに出た時の執筆者が特定できるわけですよね。コピー先があたかも自分が書いたように同じように紐付けたらアウトというか。<strong>Googleさんからしてみれば、文章の大半が同じであるうさんくさいコンテンツの発見、そういうサイトの排除にも役立つんじゃないか</strong>と思われます（なので、ブログ書いてる人はやっといた方が良いかもね）。</p><h3>では、簡単に入れ方の説明を</h3><p>まず、サイト内にある個々の記事に執筆者名にリンクを入れてアバウトページへのリンクを貼ります。この時に使うのが「rel=&#8221;author&#8221;」です。</p><blockquote><p>Written by &lt;a href=&#8221;http://example.com/about&#8221; rel=&#8221;author&#8221;&gt;執筆者名&lt;/a&gt;</p></blockquote><p>このように「rel=&#8221;author&#8221;」を指定して、一旦アバウトページへリンクします。</p><p>それができたら、アバウトページには以下のように「rel=&#8221;me&#8221;」を使ってGoogleプロフィールへのリンクを追加します。</p><blockquote><p>&lt;a href=&#8221;GoogleプロフィールのURL&#8221; rel=&#8221;me&#8221;&gt;執筆者名&lt;/a&gt;</p></blockquote><p>たとえば、ボクの場合は以下のようになります。</p><blockquote><p>&lt;a href=&#8221;https://profiles.google.com/108893305869300078846/&#8221; rel=&#8221;me&#8221;&gt;こもりまさあき&lt;/a&gt;</p></blockquote><p>はい。サイト側の設定はこんな感じです。Googleプロフィールのボタンを使いたい場合は、<a href="http://www.google.com/webmasters/profilebutton/">こちらのページで生成</a>することができます。</p><p>最後にGoogleプロフィールのページのリンクを編集して、リンク先が「自分のことについて書かれているページだよ」ってところにチェックを入れて保存しておきましょう。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/07/gprofiles.png" alt="gprofiles" title="gprofiles" width="450" height="253" class="alignnone size-full wp-image-5822" /></p><p>ちゃんとリンクされてるかどうか確認するには、「<a href="http://www.google.com/webmasters/tools/richsnippets">Rich Snippets Testing Tool</a>」で適当な記事のURLを入れてみると良いでしょう。</p><blockquote><p><strong>author</strong><br /> profile = http://example.com/about<br /> verified = <strong>Verified</strong>: The author link points to an author profile page on the same domain as this page.</p></blockquote><p>「Verified」という緑の文字が出てきたらおそらく大丈夫です。</p><p>最後のステップとして、<a href="http://www.google.com/support/webmasters/bin/answer.py?answer=1229920">この解説ページの</a>一番下にあるリンク先のフォームから何やら入れてくれって書いてあるようなので一応入れておきました。複数のサイトを持っていたりする場合などの説明もここに書いてありますのでそちらを参考にしてください。</p><p>＃WordPressでこの「rel=&#8221;author&#8221;」やら「rel=&#8221;me&#8221;」を追加する方法は、既にいくつかの記事が出ていますが、<a href="http://yoast.com/wordpress-rel-author-rel-me/">Yoast</a>さんのとこにテンプレートをいじる方法が載っています。ご参考までに。</p> ]]></content:encoded> <wfw:commentRss>http://blog.gaspanik.com/how-to-add-your-site-authorship-markup/feed</wfw:commentRss> <slash:comments>0</slash:comments> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/how-to-add-your-site-authorship-markup" /> </item> <item><title>うちのWordPressでやってることを教えます</title><link>http://blog.gaspanik.com/our-site-wide-settings</link> <comments>http://blog.gaspanik.com/our-site-wide-settings#comments</comments> <pubDate>Fri, 03 Jun 2011 08:12:11 +0000</pubDate> <dc:creator>[cipher]</dc:creator> <category><![CDATA[articles]]></category> <category><![CDATA[scribbling]]></category> <category><![CDATA[cdn]]></category> <category><![CDATA[optimization]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[plugins]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[wp]]></category><guid isPermaLink="false">http://blog.gaspanik.com/?p=5193</guid> <description><![CDATA[この1年ちょっとぐらいかな？結構あれこれとサイトのパフォーマンス改善みたいな話（WordPress含む）を書いてるんですけど、昨日書いて公開したのが思いの外反応があったようでありがとうございます。お礼といってはなんですが [...]]]></description> <content:encoded><![CDATA[<p>この1年ちょっとぐらいかな？結構あれこれとサイトのパフォーマンス改善みたいな話（WordPress含む）を書いてるんですけど、昨日書いて公開したのが思いの外反応があったようでありがとうございます。お礼といってはなんですが、誰かのためになるかもしれないので、現時点でのうちの環境を記しておきます。</p><p><span id="more-5193"></span><br /> 以前から読んでくださってる皆さんには「またかよ」って話になるのですが、このへなちょこブログを書いてるWordPressの設定は以下のような感じです。昨日書いた内容に大体則すような流れにしておきました。</p><ul><li><strong>キャッシング:</strong> W3 Total Cache（以下、W3TC）</li><li><strong>Minify化:</strong> HTMLのみW3TC、CSS/JSは手動（外部サービス以外）</li><li><strong>画像の最適化:</strong> WP Smush.itで自動実行</li><li><strong>配信サーバの分割:</strong> EdgeCastのCDN（Content Delivery Network）</li><li><strong>Gzipの有無:</strong> Apache側で有効化</li><li><strong>ファイルの有効期限:</strong> Apache側で個別に設定</li><li><strong>head要素の最適化:</strong> 手動</li></ul><p>APCを入れてる以外は特にバックエンドのサーバ側をチューニングしたりといったアレコレはやっていません（サーバのことを触らないつもりで引っ越したので…）。画像の最適化は、以前にも書いてるのでやっぱり省略します。</p><h3>W3 Total Cacheでやってること</h3><p>キャッシング系のプラグインとして有名な「WP Super Cache」ではなく、機能が豊富でかなり細かい設定が可能な「<a href="http://www.w3-edge.com/wordpress-plugins/w3-total-cache/">W3 Total Cache</a>」をインストールして楽をしています（笑）。</p><h4>静的なファイルでなく、Opcode Cacheで</h4><p>W3TCもまた静的なHTMLファイルをキャッシュしておくことができますが、サーバ側に「APC」を突っ込んであるのもあって、せっかくなので静的なファイルではなくOpcode Cacheを使ってます（ここは気分的にｗ）。W3TCでは、ファイルやDBへの接続なども個別に指定できるようになっていますし、キャッシュを使用しないUAを指定したりといったことも可能です。</p><p>一応DBとかのキャッシュも有効にしてます。</p><h4>HTMLのMinify化</h4><p>W3TCには、HTML/CSS/JavaScriptのMinify化のオプションもあります。こちらはHTMLのみオンにしてファイルではなくこれもまたOpcode Cacheで。CSSとJSは数も多くないので手動でやってます。</p><p>CSSやJSなどは、複数ファイルの結合なんかも設定可能になってます（Minify化しないで結合だけとかも可）。</p><h4>CDNの有効化</h4><p>うちは契約しているサーバのオプションで<a href="http://www.edgecast.com/">EdgeCast</a>のCDNが使えるのでそれを利用してます（なんせ海の向こうなので遠いんですよ…）。</p><p>W3TC側ではCDN側に設定したサーバのドメイン名（CNAME）を入れれば、あとは自動的に「wp-includes」以下のディレクトリやコンテンツ内にアップする画像のパスをCDN側のドメインに置換してくれます。うちのCDNはOrigin Pullなので、記事を公開すればCDNからデータを吸い上げてくれるので完全放置です（笑）。</p><p>あ、そうそうW3TCのCDNの設定には、FTPというかSelf Hostedなサイトのオプションもあるので、昨日書いたみたいに自前のサーバでサブドメイン使ったりする人にもいいかもしれません。</p><h4>それ以外にW3TCでできること</h4><p>それ以外にも、W3TCの中でMinify化やキャッシングにプラスしてGzip圧縮をかけてみたり、HTTPヘッダを付けたりしてファイルタイプ別に有効期限の設定などもできますね。うちはその辺の作業はサーバ側でまとめてやってしまっているので、W3TC側では前述したもの以外は特に何もしてません。</p><h3>Apache側でやっていること</h3><p>W3TCでいろいろできるのはわかってますが、いちいちWordPressの管理画面開いて設定するより、直接サーバ側で細かくコントロールした方が早いし楽なので、Gzip圧縮とファイルタイプ別の有効期限設定をおこなってます。</p><h4>mod_deflateでGzip圧縮</h4><p>うちなんかはそんなアクセスも多くないですし、訪問される方もだいぶ偏っているので特に気にもせずGzip圧縮が有効になるように.htaccessで設定しています。以下は、Apache 2.x系での設定例です。</p><p><code><br /> AddOutputFilterByType DEFLATE text/html text/plain<br /> </code></p><p>せっかちな人はこんな感じでHTMLのみとかもできます。</p><p><code><br /> &lt;IfModule mod_deflate.c&gt;<br /> SetOutputFilter DEFLATE<br /> BrowserMatch ^Mozilla/4 gzip-only-text/html<br /> BrowserMatch ^Mozilla/4\.0[678] no-gzip<br /> BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html<br /> SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br /> Header append Vary User-Agent env=!dont-vary<br /> &lt;/IfModule&gt;<br /> </code></p><p>特定のブラウザやファイルタイプにはGzipしないとかまでいれるとこんな感じ。詳しいことは、<a href="http://httpd.apache.org/docs/">Apacheのマニュアルがバージョン毎に公開</a>されてるのでそれを見ましょう。</p><h4>mod_expiresで有効期限を追加</h4><p>ファイルの有効期限は、Apache側でmod_expiresを使って設定しています。全部は載せてませんが、.htaccessとかでHTMLやらCSS、JavaScriptに有効期限を設定するにはこういう風に書けておけばいいですね。</p><p>&lt;ifModule mod_expires.c&gt;<br /> ExpiresActive On<br /> ExpiresDefault &#8220;access plus 1 seconds&#8221;<br /> （中略）<br /> ExpiresByType text/css &#8220;access plus 2 weeks&#8221;<br /> ExpiresByType text/javascript &#8220;access plus 2 weeks&#8221;<br /> ExpiresByType application/x-javascript &#8220;access plus 2 weeks&#8221;<br /> ExpiresByType text/html &#8220;access plus 600 seconds&#8221;<br /> ExpiresByType application/xhtml+xml &#8220;access plus 600 seconds&#8221;<br /> &lt;/ifModule&gt;</p><p>1なのに「seconds」とかsついてるじゃんみたいなくだらない突っ込みはやめてください。これでも動きますから（笑）。</p><h3>HTMLのhead要素の最適化</h3><p>HTMLのhead要素の最適化は、「<a href="http://wppluginsj.sourceforge.jp/head-cleaner/">Head Cleaner</a>」などを入れれば何か何までやってもらえるのがわかってますが、以前から自分でプラグインの中身とかゴニョゴニョしていらんもんが出ないように改良したので手動です（笑）。</p><p>ブラウザの並行ダウンロードを妨げないように、画面の描画に関係ないJavaScriptは、&lt;/body&gt;の直前あたりで読み込むように全部下に。直接コードが書かれてるJavaScriptは、head要素のtitle直下に置いてます。</p><p>head要素の中でいくつかのCSSを読み込んだり、JavaScriptを読み込んでる場合（もちろん直接書かれてるのも含め）は、その順番次第で表示速度が変わってくるかもしれませんので調べてみるといいですね（変えたくても、読み込み順が関係するものもあるでしょうけど）。</p><h3>と、こんな感じっす</h3><p>このブログはWordPressの以前のデフォルトテーマのままですしCSSもほとんどいじってはいません（仕事じゃないんで 笑）。W3TCに任せる部分とサーバ側でやる部分をわけて、読み込み順の調整やMinify化、テンプレート中の画像の最適化なんかは手作業でやってます。記事中の画像は「WP Smush.it」で最適化、と。</p><p>サーバが海の向こうってこともあるので、全部を一カ所から出すと遅くなるだろうな？ということで、一応CDNをかまして画像だけでもできるだけ近いところから出てくるようにしてる、ぐらいでしょうか。</p><p>と、こんな感じっす。</p><p>＃サーバ側があれこれいじれないのであれば、キャッシングの機能を使わなくともW3TC使うのもありじゃないでしょうかね。</p> ]]></content:encoded> <wfw:commentRss>http://blog.gaspanik.com/our-site-wide-settings/feed</wfw:commentRss> <slash:comments>0</slash:comments> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/our-site-wide-settings" /> </item> <item><title>できることからはじめる、パフォーマンス最適化プラグイン7選</title><link>http://blog.gaspanik.com/wordpress-site-optimization-plugins</link> <comments>http://blog.gaspanik.com/wordpress-site-optimization-plugins#comments</comments> <pubDate>Thu, 21 Apr 2011 04:36:16 +0000</pubDate> <dc:creator>[cipher]</dc:creator> <category><![CDATA[articles]]></category> <category><![CDATA[scribbling]]></category> <category><![CDATA[optimization]]></category> <category><![CDATA[peformance]]></category> <category><![CDATA[plugins]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[wp]]></category><guid isPermaLink="false">http://blog.gaspanik.com/?p=4817</guid> <description><![CDATA[結局のところサイトパフォーマンスの高速化に最も効果的なのは「CDN使って画像をそっちから出すのが一番じゃね？」なんて思い始めたこもりです、こんにちは（笑）。いや、CDN使うのもいいのですが、その前提としてサイト全体をしっ [...]]]></description> <content:encoded><![CDATA[<p>結局のところサイトパフォーマンスの高速化に最も効果的なのは「CDN使って画像をそっちから出すのが一番じゃね？」なんて思い始めたこもりです、こんにちは（笑）。いや、CDN使うのもいいのですが、その前提としてサイト全体をしっかり最適化しておくに超したことはありません（その方がより効果的なわけです）。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/speedup-wp.jpg" alt="speedup-wp" title="speedup-wp" width="450" height="253" class="alignnone size-full wp-image-4819" /></p><p>そんなわけで、今日は誰でもできることから段階的に適用する感じで、WordPressのパフォーマンス向上に役立つであろう素敵なプラグインを7つ紹介してみたいと思います。</p><p><span id="more-4817"></span></p><h3>まずは、画像を最適化する</h3><p>サーバ環境のこととか特別な知識も必要とせず、誰でもできる高速化の第一歩といえば、サイト内で使用する画像の最適化でしょう。WordPressにアップロードするJPGやPNGといった画像を自動的にスリムアップするのです。</p><h4><a href="http://wordpress.org/extend/plugins/wp-smushit/">WP Smush.it</a></h4><p>「WP Smush.it」は、アップロードする際に自動的に「<a href="http://www.smushit.com/ysmush.it/">Yahoo! Smush.It&#8482;</a>」を経由させて、画像から不要な部分を削除してくれます。PhotoshopやFireworksで書き出しただけの画像じゃまだまだです（笑）。画像の内容や形式で変わってきますが、JPGで10〜20%程度、PNGで1〜2%程度は軽量化できるんではないかと。</p><p>ただし、テンプレートとかの画像は最適化されませんので、それは別のツールやオンラインサービスを使いましょう。</p><h3>DBへの問い合わせをキャッシュする</h3><p>WordPressは、ファイルのリクエストがあればデータベースに問い合わせをして、その都度HTMLファイルを生成する仕組みです。テンプレートからページを生成するデータの呼び出し処理をキャッシュして使いまわせば、DBへのアクセス頻度を減らすことができるはずでしょう。その分の負荷を減らそうかと。</p><h4><a href="http://wordpress.org/extend/plugins/db-cache-reloaded-fix/">DB Cache Reloaded Fix</a></h4><p>「DB Cache Reloaded Fix」は、そのようなバックエンドの処理をキャッシュするプラグインです。動的に都度生成されるHTMLをキャッシュするのとは別に、まずは頻繁にアクセスするであろうDBへの問い合わせをキャッシュし、生成処理自体を高速化・最適化してしまおうというものですね。</p><h3>HTML、CSS、JSを最適化する</h3><p>バックエンドの次はフロントエンドの最適化です。</p><p>WordPressに限った話ではないですが、多くのCMSではプラグインやテーマを使ってサイトを拡張することができます。あれもこれもと導入するのはいいのですが、結果として待ち受けているのはクライアントに送信されるHTMLがごちゃごちゃしたり肥大化してしまうことがあげられます。</p><h4><a href="http://wordpress.org/extend/plugins/head-cleaner/">Head Cleaner</a></h4><p><a href="http://dogmap.jp/">@wokamoto</a>さんが公開されている「Head Cleaner」は、プラグインやテーマによってあれこれ追加されてしまっているhead要素内を最適化してくれるプラグインです。もはや最適化というレベルを超えて、あれやこれやと高速化に役立つ処理を一手に引き受けてくれます。</p><p>フロントエンドに関係する部分を最適化することは、結果としてHTTPリクエスト数や転送サイズの削減に繫がるわけです。</p><h3>静的なHTMLを作ってキャッシュする</h3><p>WordPressの高速化で有名なのは、リクエストに応じて動的に生成されて送信されるHTMLを静的なHTMLファイルとしてキャッシュしてしまうプラグインの導入でしょうか。</p><p>一度リクエストがあって生成されたファイルは、有効期限内はディスクやメモリ内に保存されてそれが代用されるというものですね。頻繁にアクセスのあるようなサイトは生成処理をすっ飛ばして、保存されたHTMLを送り返す方が速いんじゃないか？って話。</p><h4><a href="http://wordpress.org/extend/plugins/wp-super-cache/">WP Super Cache</a></h4><p>いまさら説明の必要もないほど有名なプラグインです。環境に合わせて設定方法というか適用方法もいくつか用意されています。キャッシュの処理とあわせて、Gzip圧縮をかけてHTMLファイルそのものを小さくするなんてこともできます。</p><h4><a href="http://wordpress.org/extend/plugins/quick-cache/">Quick Cache ( A WP Super Cache Alternative )</a></h4><p>「Quick Cache」は名前にもあるようにSuper Cacheの代用になるプラグインです。他にも「Hyper Cache」とかありますが、最新版にも対応しているみたいなのでこっちを紹介。ボクはインストールしたことはありませんが、サイトのスクリーンショットやChangeLogなんかを見ると良い感じに思えますね。</p><p>キャッシュ系のプラグインは「入れる・入れない」の線引きが難しいかもしれませんが、非力なサーバ環境で負荷を減らしたいとか、ページ公開時にはアクセスが集中するといったサイトなら利用価値はあるんじゃないかと。</p><h3>さらにCDNをかましてみる</h3><p>全体的なページのロード時間は、HTMLファイルがダウンロードされてからが勝負です。HTML内に記述された構成要素が同じサーバから配信されていたら、順番にローカルにダウンロードされてくるのを待ってなくてはなりません。数が増えれば増えた分、データサイズが大きければ大きい分、データがダウンロードされてページ表示が完成するまでの時間がかかるわけです。</p><p>CDN（Contents Delivery Network）は、冒頭にも書いたように全体的なページのロード時間の短縮には結構良いものです（笑）。サイト内の画像、CSSやJSファイルをCDN側にも置いておけば、1サイトから全部配信されていた膨大なファイルを、閲覧側に近い高速なネットワークから配信させることができます。</p><h4><a href="http://wordpress.org/extend/plugins/cdn-sync-tool/">CDN Sync Tool</a></h4><p>「CDN Sync Tool」は、WP Super Cacheと併用して利用するCDNの同期プラグインです。説明には、AmazonのS3やCloudFront、CloudFiles、MaxCDNといった大手のCDNサービスの名前が列挙されています。</p><p>CDNはサービスによって、オリジナルのファイルをこちらからアップロードするのか、ファイルのリクエスト時に勝手に拾うのか、みたいな仕組みが異なります。その辺の処理（ファイルの同期をとる）を勝手にやってくれるツールと思えばいいでしょうか。</p><p>最近ではこのような既存のCDNサービスではなく、無償プランもある「CloudFlare」というサービスが人気のようです（WordPressのプラグインもある）。CloudFlareは、大元のDNSの情報から書き換えないといけないので導入できる環境がやや限定的ですかね。</p><p>ちなみに我が家は、先日も書いたとおりEdgeCastのCDNを使っています。記事中の画像だけを扱うサーバと、テンプレート中の画像やJSファイルを分けて、計3サイトからダウンロードされるようにしています。</p><h3>全部まとめてやるなら、W3 Total Cacheで</h3><p>ここまで段階的に適用できるWordPressのプラグインを紹介してきましたが、冒頭の「WP Smush.it」以外の処理を一気にできるプラグインもあります。</p><h4><a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a></h4><p>「W3 Total Cache」はうちも入れてるのですが、それこそページキャッシュからMinify化、DBキャッシュ、サーバ側で処理したりするブラウザキャッシュの追加、CDNのサポートまで何から何まで一個で補えるプラグインです。いや、ホントに何でもかんでもできちゃいます。</p><h3>最後に</h3><p>ここまでいくつかのプラグインを段階的に紹介してきましたが、何も全部入れる必要はありません。配信するサイトの内容によって組み合わせの妙というのもあります。静的なHTMLファイルキャッシュさせるさせないはおいておいて、画像やDBへのアクセス、フロントエンドの最適化だけでも十分効果はあります。PHPによる動的な処理云々ではなく、多くの画像が含まれていてボトルネックになってる場合は、CDNの導入を考えてみるのもひとつの手かもしれません。</p><p>自分のサイトが遅い原因が、PHPによる動的処理なのか、サイトの作り方の問題なのか、を見極めることが最初にやるべきことです。それがわかったら、ココで紹介したものを試していくのが良いでしょう。</p><h4>おまけ</h4><p>一般的にいわれることですが、CSSやJSのような更新頻度の少ないファイルは、クッキーの付かないCDNなどの外部サーバから配信するのが高速化に良いとされています。HTMLファイルがダウンロードされると、次はそこに記述されたCSSやJSはもちろん画像などが順次ダウンロードされます。</p><p>ここ数日検証しながらふと思ったのですが、HTMLと一緒にページのレイアウトやデザインをつかさどるCSSをどこに置いておくのがいいのか、という問題がありました。外部のサーバに置いた場合は、DNSでそのサーバのIPアドレスを調べる時間がかかるため、初回の接続には微々たるものですが時間がかかります。</p><p>特にCSSなんてのはHTMLの頭にあるので真っ先にダウンロードが始まります。また、そこにはCDN側においた背景画像として使っている画像なんかもあります。それを考えるとCSSだけは同じサーバからの方がいいんじゃないかな？なんていう暫定的な結論に達しました（うちの場合は、CSSは一個しかないので）。</p> ]]></content:encoded> <wfw:commentRss>http://blog.gaspanik.com/wordpress-site-optimization-plugins/feed</wfw:commentRss> <slash:comments>1</slash:comments> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/wordpress-site-optimization-plugins" /> </item> <item><title>WordPress ＋ W3 Total Cache ＋ CDN な話</title><link>http://blog.gaspanik.com/activate-cdn-option-on-w3totalcache</link> <comments>http://blog.gaspanik.com/activate-cdn-option-on-w3totalcache#comments</comments> <pubDate>Mon, 18 Apr 2011 18:51:55 +0000</pubDate> <dc:creator>[cipher]</dc:creator> <category><![CDATA[articles]]></category> <category><![CDATA[scribbling]]></category> <category><![CDATA[cdn]]></category> <category><![CDATA[optimization]]></category> <category><![CDATA[plugins]]></category> <category><![CDATA[tips]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[wp]]></category><guid isPermaLink="false">http://blog.gaspanik.com/?p=4759</guid> <description><![CDATA[今となってはさほどアクセスもないうちのブログなんですが、なんとなくCDN（Contents Delivery Network）を導入してみました。というのも、か細い回線&#38;自宅サーバだったこの10年にお別れをし、自 [...]]]></description> <content:encoded><![CDATA[<p>今となってはさほどアクセスもないうちのブログなんですが、なんとなく<a href="http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%83%87%E3%83%AA%E3%83%90%E3%83%AA%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF">CDN</a>（Contents Delivery Network）を導入してみました。というのも、か細い回線&amp;自宅サーバだったこの10年にお別れをし、自宅の引っ越しを機に海外のサーバに移転したからですが。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-001.jpg" alt="cdn-settings-001" title="cdn-settings-001" width="450" height="253" class="alignnone size-full wp-image-4788" /></p><p>日本語でしか書いてないこのブログ、普通に考えれば国内のサーバを借りて公開ってのが筋でしょうが、あいにくのひねくれ者なので「<a href="http://mediatemple.net/">Media Temple</a>」という海外のホスティング会社の<a href="http://mediatemple.net/webhosting/dv/">Dedicated Virtual</a>のサービスを使っています（俗に言うVPSに似た感じのサービスで管理があまりいらない）。</p><p>サーバのスペック的には強力になったとはいえ、日本国内からではネットワーク的にはかなり遠い…。どれぐらい遠いかと言えば、日本とアメリカぐらい（そのまま 笑）。そういう背景もあって、このWordPressを使ったブログでもあれやこれやと実験しながら、せめてコンテンツ自体を最適化してロード時間を抑えようと努力してたわけですが、ネットワークが遠すぎたら限界も出てきます。</p><p>そこで、今回のこのCDN導入とあいなったわけです。</p><p><span id="more-4759"></span></p><h3>ところでCDNって何なのよ？</h3><p>大規模なサイトを運用したりしてる方にはおなじみかもしれませんが、あまりそういう機会のない方のために簡単にCDNの話から始めてみましょう。</p><p>CDNっていうのは、直訳すれば「コンテンツ配信ネットワーク」のこと。この仕組み自体は古くからあって、ライブのストリーミングやら容量が大きくなる動画ファイルの配信によく用いられていました（有名なところでは、AppleやらAdobeなんかも使ってる<a href="http://www.akamai.co.jp/">Akamai</a>、国内だと<a href="http://www.stream.co.jp">Jストリーム</a>などがありますね）。</p><p>CDNを使えば、一箇所のサーバにアクセスが集中して配信が止まらないよう、データそのものを世界中に分散されたサーバに配置して、閲覧側のネットワークから近いサーバからコンテンツを配信することが可能になります。期間限定のキャンペーンなどで一時的にアクセスが集中することが予想される場合も、落ちたりしないように前もって予防策が採れるわけです。</p><p>今回の震災絡みでは、計画停電の実施で東京電力のサイトが繫がらなくなりました。あれも結構日にちが経ってからAkamaiから配信されるようになってましたが、アクセスが集中するのはアホでもわかるわけだから前もってサイトが落ちないようにすべきとこですけどねぇ…、トップとその告知のページだけでも（契約さえすれば短時間ですぐ稼働させられるんだし）。</p><p>近年ではそのような大容量になる動画などのコンテンツ配信や一時的なアクセスの集中を分散化させる以外でも用いられています。最近のWebサイトは、サイト内で使用する画像やCSS、JSといった静的ファイルの数も容量も肥大化してるので、これらのファイルをCDNに置いて配信すればより高速なページ表示が可能になるわけです。</p><p>これが大規模なサービスや人気コンテンツを持ってアクセスの多いサイトだけに有益かというとそうでもない。限定的なリソースで運用することで負荷がかかってる部分を他にまわしてあげることは、中小規模のサイトでも導入してみる価値はあります（HTTPリクエストを分散させる意味でも）。</p><p>ただし、国内でCDNなどと名が付いてるサービスは、値段が書いてない（問い合わせしてね&hearts;）とかそもそも高いとか、個人レベルだと導入までの敷居がなんとなく高いものです。そんな理由もあるのか既に多くの人が導入しているのが、従量制で課金される「<a href="http://aws.amazon.com/jp/s3/">Amazon S3</a>（Amazon Simple Storage）」や「<a href="http://aws.amazon.com/jp/cloudfront/">Amazon Cloud Front</a>」だったり、無償のプランもあって最近話題の「<a href="https://www.cloudflare.com/">CloudFlare</a>」でしょうか。AmazonのサービスやCloudFlareの導入については、多くの方が書いてるので検索してみましょう。</p><h3>Media TempleのProCDNを使ってみるのさ</h3><p>ボクが契約しているMedia Templeには、世界的にも有名な「<a href="http://www.edgecast.com/">EdgeCast</a>」のCDNが月額$20-（月間転送量200GBまで）で使える「<a href="http://mediatemple.net/webhosting/procdn/">ProCDN</a>」っていうアドオンサービスがあります。EdgeCastの持つ世界4大大陸、東京をはじめとした19箇所の拠点があるので、静的なファイルだけでも閲覧側から近いトコから出してあげれば多少なりとも表示速度は改善されるだろう、と。</p><p>日本語での解説もあるAmazonなんかのサービスと違って、英語でしか使えないような海外のサーバを使ってる物好きには説明の必要もないですかね…、でも一応。Media Templeのアカウントでログインして、サービスをアクティベートすればすぐ使えます（笑）。サービスが有効になったら、アカウントセンターからProCDNの管理画面を開いて設定をおこないましょう。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-002.jpg" alt="cdn-settings-002" title="cdn-settings-002" width="450" height="253" class="alignnone size-full wp-image-4789" /></p><h4>最初にやることは、Customer Originの追加</h4><p>EdgeCastのCDNは、用意されたEdgeCastのサーバに手動でコンテンツをアップロードする方法と、特定のドメインをCustomer Originとして追加して自動的にコンテンツを追加する方法が採れます。自動で取得する場合は、「HTTP Large」と「HTTP Small」の区別がありますが、300kを超える.flvとか.wmvのようなコンテンツは「HTTP Large」、そうでない画像なんかは「HTTP Small」で扱えば良いようです。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-003.jpg" alt="cdn-settings-003" title="cdn-settings-003" width="450" height="253" class="alignnone size-full wp-image-4790" /></p><p>自動的にコンテンツを取得する場合は、EdgeCastでどのサーバのコンテンツを拾うかを決めなければなりません。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-004.jpg" alt="cdn-settings-004" title="cdn-settings-004" width="450" height="253" class="alignnone size-full wp-image-4791" /></p><p>配信の大元となるサーバとEdgeCast側の位置の紐付けは、「Customer Origin」メニューを選んでから「Directory Name」にCDN内の位置となるディレクトリ名を入力、「Hostname or IP Address」で配信元のオリジナルのサーバを追加します。で、最後に「Add」を押して終了。</p><p>うちの場合は、以前から別ドメイン（gaspanik.com）から配信していたテンプレート（テーマ）に含まれる画像やCSSは「static.gaspanik.com」、WordPressのディレクトリの「wp-includes」や「wp-content」以下にあるアップロード済みの画像やJSといった静的なファイルは「content.gaspanik.com」から配信するように設定しました。本当は一個あればいいんですけどね（笑）。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-006.jpg" alt="cdn-settings-006" title="cdn-settings-006" width="450" height="253" class="alignnone size-full wp-image-4793" /></p><p>EdgeCastは、CDN側のコンテンツのGzip圧縮なんかも設定できます。</p><h4>箱の用意が終わったら、DNSにCNAMEを登録する</h4><p>EdgeCast側のデータの場所を決めたら、CDNとして稼働するドメインのCNAME（カノニカルネーム。言ってしまえば、エイリアスというか別名）を決めて、EdgeCast側に登録しドメイン側のDNSにもそれを反映させます。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-005.jpg" alt="cdn-settings-005" title="cdn-settings-005" width="450" height="253" class="alignnone size-full wp-image-4792" /></p><p>まずは、EdgeCast側の「Edge Cnames」で別名を設定します。「cdn.〜」みたいなサブドメインを入れて、EdgeCastのサーバ内でポイントされる場所（先に設定したディレクトリ以下など）を指定します。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-007.jpg" alt="cdn-settings-007" title="cdn-settings-007" width="450" height="253" class="alignnone size-full wp-image-4794" /></p><p>次に自分のドメインのDNSにCNAMEレコードを追加して、HTTP Smallなら「wac.〜.edgecast.net」みたいな指定されたEdgeCastのドメインを指定します。これでEdgeCastのCDNに関するもろもろの設定は終わり。</p><h3>W3 Total CacheのCDNオプションを有効に</h3><p>いよいよ本題です（笑）。WordPressで構築されたサイトの高速化するプラグインとして有名な「<a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a>」には、CDNオプションが用意されています。ブログにアップロードする画像やテーマなどに含まれるJSなどはそこそこデータサイズも大きいので、更新の必要のない静的なファイルをCDN側から配信すれば更なる高速化が見込めるわけです。</p><p>W3 Total CacheでCDNのオプションを有効にするには、「General Setting」で「Content Delivery Network」を「Enable」にして、自分の使うCDNの種類を選択します。今回のうちの環境はコンテンツをミラーするだけなので、ここでは「Mirror」を選びましたが、Amazon S3やCloudFrontも選択可能です。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-008.jpg" alt="cdn-settings-008" title="cdn-settings-008" width="450" height="253" class="alignnone size-full wp-image-4795" /></p><p>次に「Content Delivery Network Settings」に移動して、CDN経由で配信するコンテンツを選択します。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-009.jpg" alt="cdn-settings-009" title="cdn-settings-009" width="450" height="253" class="alignnone size-full wp-image-4796" /></p><p>ミラーするだけの場合は、CDN経由で配信されるコンテンツをCNAMEに指定したドメインに置き換えることになります。W3 Total Cacheは、Configurationのところに追加すれば自動的にソースが書き換えられます。</p><p>利用するCDNのサービスによっては、FTPなどのログイン情報を指定してライブラリ内のファイルをアップロードすることになるかもしれません、はい。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-010.jpg" alt="cdn-settings-010" title="cdn-settings-010" width="450" height="253" class="alignnone size-full wp-image-4797" /></p><p>今回のEdgeCastの設定はCustomer Originにしてるので、ブラウザからコンテンツがリクエストされると配信元のドメインにあるデータが自動的に保存され、その後はCDN側のサーバから配信されるようになるんですね。</p><p>あー楽ちん楽ちん。</p><h3>traceroute で経路を確認してみる</h3><p>CDN経由でコンテンツの一部を配信するようにしたのでどれぐらい速いかを検証したいものです。Webコンテンツの<a href="http://blog.gaspanik.com/website-performance-check-services">ロード時間を計測するサイトは数多く存在</a>しています。実際に世界各国からいろいろ試してた結果、ロード時間は圧倒的に速くなっていました（世界各国から見られることはないけどもｗ）。</p><p>ホストまでの経路は接続先の環境によって異なるわけですが、自分のところからの経路の比較ならターミナルから「traceroute」というコマンドを使うと手っ取り早いです。</p><p><code>traceroute 調べたいホスト名</code></p><p>と入力すればオッケイ。</p><p><img src="http://content.gaspanik.com/wp-content/uploads/2011/04/cdn-settings-012.jpg" alt="cdn-settings-012" title="cdn-settings-012" width="450" height="253" class="alignnone size-full wp-image-4799" /></p><p>うちの回線からもともとのサーバまで約20ホップあったのですが、CDNに振ったサーバだと12ホップになってるので経路自体は短くなっています。EdgeCastは東京にも拠点があるようですが、うちからだとカリフォルニアから配信されてるのはまぁご愛敬ということで（笑）。</p><p>これで少しでも国内からのアクセスが速くなればいいな、と。</p><h3>単なる負荷分散で終わらすか、それとも…</h3><p>一箇所に集中するコンテンツへのアクセスの負荷を分散させる目的でCDNを使うのはもちろんありですが、それと同時にサイトの高速化を目論んでいる場合は、単純にファイルをCDNから配信すればいいってわけでもありません。</p><p>CDN側におく静的なCSSやJSファイルは、Minify化やGzip圧縮することでもっと速くロードされるでしょう。画像に関しても同様で、単にPhotoshopやFireworksから書き出しただけのファイルは別の方法で最適化すればさらに小さくなります。</p><p>更新頻度の少ない静的なファイルは、ブラウザのキャッシュを有効に効かせるようにしておけばなお効果的かな、と。最近話題のCloudFlareのことを書いてるサイトは、分散させてお終いだけだったりしますからね（謎）。</p><p>負荷分散と一緒にその辺もやってあげると、転送量で課金されるCDNは安くなるだろうし、見る側のストレスもさらに軽減されるんじゃないでしょうか。自サイトで何をすべきかは、Googleさんの<a href="http://pagespeed.googlelabs.com/">PageSpeed</a>とか<a href="http://gtmetrix.com/">GTmetrix</a>や、下の書籍で確認してみましょうか（笑）。</p><p>&rarr; <a href="http://amzn.to/e6O11Y">HTML＋CSSコーディング ベストプラクティス</a>（Amazon.co.jp）</p> ]]></content:encoded> <wfw:commentRss>http://blog.gaspanik.com/activate-cdn-option-on-w3totalcache/feed</wfw:commentRss> <slash:comments>0</slash:comments> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/activate-cdn-option-on-w3totalcache" /> </item> </channel> </rss>
<!-- Served from: blog.gaspanik.com @ 2012-02-08 10:33:52 by W3 Total Cache -->
