<?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/"
	>

<channel>
	<title>terkel.jp</title>
	<atom:link href="http://terkel.jp/feed/" rel="self" type="application/rss+xml" />
	<link>http://terkel.jp</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 23 Apr 2012 02:39:21 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>画像置換のあれへの補足</title>
		<link>http://terkel.jp/archives/2012/04/css-image-replacement-2012/</link>
		<comments>http://terkel.jp/archives/2012/04/css-image-replacement-2012/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 07:54:20 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=976</guid>
		<description><![CDATA[先月あたり、CSS による画像置換テクニックの話題がにわかに盛り上がりを見せていました。その経緯について <a href="http://d.hatena.ne.jp/ub-pnr/20120417/1334637257">まとりさんの記事</a> で紹介されていますが、僕からも簡単に補足してみます。]]></description>
			<content:encoded><![CDATA[<p>先月あたり、CSS による画像置換テクニックの話題がにわかに盛り上がりを見せていました。その経緯について <a href="http://d.hatena.ne.jp/ub-pnr/20120417/1334637257">まとりさんの記事</a> で紹介されていますが、僕からも簡単に補足してみます。</p>
<p>まず、よく知られた画像置換のテクニックとしていわゆる<b>ファーク式</b>がありました:</p>
<pre class="code lang-css"><code>/* Phark method */

.ir {
    height: 100px;
    width: 400px;
    background: url(image.png) no-repeat 0 0;
    <mark>text-indent: -9999px;</mark>
}</code></pre>
<p>このテクニックは長らく利用され続けてきましたが、その代替として、パフォーマンス面でより良いとされる <a href="http://scottkellum.com/">Scott Kellum</a> さんのテクニック (<b>ケラム式</b>) が <a href="http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/">Jeffrey Zeldman さんの記事</a> で紹介されました:</p>
<pre class="code lang-css"><code>/* Kellum method */

.ir {
    height: 100px;
    width: 400px;
    background: url(image.png) no-repeat 0 0;
    <mark>text-indent: 100%;</mark>
    <mark>white-space: nowrap;</mark>
    <mark>overflow: hidden;</mark>
}</code></pre>
<p>そしてこのケラム式が <a href="https://github.com/h5bp/html5-boilerplate/issues/1005">HTML5 Boilerplate のチームによって検討される</a> 過程で <a href="http://nicolasgallagher.com/another-css-image-replacement-technique/">もうひとつのテクニック</a> (<b>H5BP 式</b>) が <a href="https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757c9e03dda4e463fb0d4db5a5f82d7">提案</a> されます:</p>
<pre class="code lang-css"><code>/* H5BP method */

.ir {
    height: 100px;
    width: 400px;
    background: url(image.png) no-repeat 0 0;
    <mark>font: 0/0 a;</mark>
    <mark>text-shadow: none;</mark>
    <mark>color: transparent;</mark>
}</code></pre>
<p>ただしこの H5BP 式は、<a href="http://hail2u.net/blog/webdesign/on-image-replacement.html">該当する要素で <code>em</code> 単位が使えない</a>、コードが短さを優先したためややトリッキーでわかりづらい、IE6 でテキストが消えずゴマ粒のように残ってしまう、などの欠点があります。</p>
<p>さらに、ケラム式と H5BP 式ともに <a href="http://jsfiddle.net/necolas/drHaR/2/">IE7 でバグ</a> があります。</p>
<p>そしてこれはとくに重要な点ですが、以上 3 つのテクニックはいずれも、CSS が有効かつ画像が無効 (読み込みに失敗した場合や非表示に設定している場合など) という状況では何も表示されなくなってしまうという、アクセシビリティ上の問題があります。</p>
<p>というわけで、疑似要素を利用した <a href="http://nicolasgallagher.com/css-image-replacement-with-pseudo-elements/">ナッシュ式</a> に IE7 以下向けのフォールバックとしてファーク式を加えたものが<em>比較的まし</em>な画像置換かな、というのが僕の見解です:</p>
<pre class="code lang-css"><code>/* Nash method + fallback */

.ir {
    height: 100px;
    width: 400px;
    <mark>overflow: hidden;</mark>
    <mark>*text-indent: -9999px;</mark> /* for IE7/6 */
    <mark>*background: url(image.png) no-repeat 0 0;</mark> /* for IE7/6 */
}

.ir<mark>:before</mark> {
    <mark>content: url(image.png);</mark>
    <mark>display: inline-block;</mark>
    <mark>font-size: 0;</mark>
    <mark>line-height: 0;</mark>
}</code></pre>
<p>IE8 以上であれば CSS 有効/画像無効の場合でもテキストが表示されるのは大きいですね。ちなみに画像置換の歴史は <a href="http://css-tricks.com/examples/ImageReplacement/">CSS-Tricks の記事</a> に詳しいです。</p>]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2012/04/css-image-replacement-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>テーブルセルの vertical-align: baseline</title>
		<link>http://terkel.jp/archives/2012/04/vertical-align-baseline-in-table-cell/</link>
		<comments>http://terkel.jp/archives/2012/04/vertical-align-baseline-in-table-cell/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 15:58:25 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Typography]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=958</guid>
		<description><![CDATA[CSS でテーブルセルに対して <code>vertical-align: baseline</code> を指定したときの挙動はちょっと面白いです。そのセルが属するテーブル行で vertical-align: baseline が指定されたセルのうち、テキストの最初の行のベースラインの位置がもっとも低いセルによってそのテーブル行のベースラインが決まり、セルのテキストの最初の行のベースラインがそこに合わせられます。また、これを応用して、横に並べたフォントサイズの異なる異なるボックスのベースラインを揃えることができます。]]></description>
			<content:encoded><![CDATA[<p>CSS でテーブルセルに対して <code>vertical-align: baseline</code> を指定したときの挙動はちょっと面白いです。そのセルが属するテーブル行で <code>vertical-align: baseline</code> が指定されたセルのうち、テキストの最初の行のベースラインの位置がもっとも低いセルによってそのテーブル行のベースラインが決まり、セルのテキストの最初の行のベースラインがそこに合わせられます (<a href="http://www.w3.org/TR/CSS2/tables.html#height-layout">17.5.3 Table height algorithms [CSS 2.1]</a>)。たとえば同一行の見出しセルとデータセルでフォントサイズが異なる場合でも、このアルゴリズムによってバランス良く配置することが可能です。</p>
<figure class="image">
    <img src="/img/vertical-align-baseline-in-table-cell-1.png">
    <figcaption>Fig 1: フォントサイズの異なるセルに <code>vertical-align: baseline</code> を指定した結果</figcaption>
</figure>
<p>これを応用して、テーブル以外の要素でも <code>display: table-cell</code> を指定すれば、横に並べたフォントサイズの異なる異なるボックスのベースラインを揃えることができます。</p>
<pre class="code lang-html"><code>&lt;article&gt;
    &lt;header&gt;
        &lt;time&gt;April 12, 2012&lt;/time&gt;
        &lt;h1&gt;The Rise and Fall of...&lt;/h1&gt;
    &lt;/header&gt;
    ...
&lt;/article&gt;</code></pre>
<p>たとえばこのようなマークアップがあり、記事の日付とタイトルを横に並べたい場合、</p>
<pre class="code lang-css"><code>h1, time {
    display: table-cell;
    /* vertical-align: baseline; */
    ...
}

h1 { font-size: 1.5em; ... }

time { font-size: 0.75em; ... }</code></pre>
<p>このように指定すれば、フォントサイズの異なる <code>h1</code> と <code>time</code> のベースラインはきれいに揃います。<code>vertical-align</code> の初期値は <code>baseline</code> なので、多くの場合はわざわざ指定する必要がないはずです。もしどちらか一方のテキストが複数行にわたっても、ベースラインは最初の行をもとに決定されます。</p>
<figure class="image">
    <img src="/img/vertical-align-baseline-in-table-cell-2.png" alt="">
    <figcaption>Fig 2: フォントサイズの異なる要素に <code>display: table-cell</code> を指定した結果</figcaption>
</figure>
<p>もしこれと同じレイアウトを <code>display: table-cell</code> ではなくフロートなどでやろうとした場合、2 つの要素の <code>font-size</code> と <code>line-height</code> の値をもとにマージンやパディングを調整しなければならずかなり面倒なので、けっこううれしい挙動だと思うんですがどうでしょう。逆に、ベースラインではなくボックスの上端で揃えたい場合は <code>vertical-align: top</code> などのスタイルを追加する必要があります。</p>
<p>なんか書いてるうちにそんなん当たり前だろ何を今さらって言われそうな気がしてきましたが。</p>]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2012/04/vertical-align-baseline-in-table-cell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ブログ記事リストのマークアップ</title>
		<link>http://terkel.jp/archives/2012/04/markup-for-blog-post-list/</link>
		<comments>http://terkel.jp/archives/2012/04/markup-for-blog-post-list/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 16:38:59 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Markup]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=928</guid>
		<description><![CDATA[<a href="http://terkel.jp/archives/2012/04/re-make-re-model/">サイトをリデザインした</a> のにともない、全体的にマークアップについても見直しているのですが、ちょっと悩んだのがホームやアーカイヴ・ページなどにある「ブログ記事の概要や抜粋のリスト」です。]]></description>
			<content:encoded><![CDATA[<p><a href="http://terkel.jp/archives/2012/04/re-make-re-model/">サイトをリデザインした</a> のにともない、全体的にマークアップについても見直しているのですが、ちょっと悩んだのがホームやアーカイヴ・ページなどにある「ブログ記事の概要や抜粋のリスト」です。</p>
<p>よく見かけるのは以下のようなマークアップで、うちもリデザイン前はだいたいこんな感じでした:</p>
<pre class="code lang-html"><code>&lt;section class=&quot;articleExcerptList&quot;&gt;

    &lt;h1&gt;Recent articles&lt;/h1&gt;

    <mark>&lt;article&gt;</mark>
        &lt;h2&gt;&lt;a href=&quot;...&quot;&gt;ブログ記事リストのマークアップ&lt;/a&gt;&lt;/h2&gt;
        &lt;time datetime=&quot;...&quot;&gt;April 10, 2012&lt;/time&gt;
        &lt;p&gt;&lt;!-- 概要・抜粋 --&gt;&lt;/p&gt;
        &lt;a href=&quot;...&quot;&gt;Continue reading&lt;/a&gt;
    <mark>&lt;/article&gt;</mark>

    <mark>&lt;article&gt;</mark>
        &lt;h2&gt;&lt;a href=&quot;...&quot;&gt;リデザインしました!&lt;/a&gt;&lt;/h2&gt;
        &lt;time datetime=&quot;...&quot;&gt;April 8, 2012&lt;/time&gt;
        &lt;p&gt;&lt;!-- 概要・抜粋 --&gt;&lt;/p&gt;
        &lt;a href=&quot;...&quot;&gt;Continue reading&lt;/a&gt;
    <mark>&lt;/article&gt;</mark>

    . . .

&lt;/section&gt;</code></pre>
<p>各アイテムが記事ごとのタイトル、メタデータ (日付やタグなど)、適当な長さの概要・抜粋、「続きを読む」リンクといったものから構成されていて、それぞれが <code>article</code> 要素、というかたちです。よく見かけるというか、ざっと調べたところかなりの割合のブログがこうでしたね。</p>
<p>で、これって <code>article</code> でいいんだろうか、というのが気になったわけです。</p>
<p><code>article</code> 要素について <a href="http://www.w3.org/TR/2012/WD-html5-20120329/the-article-element.html#the-article-element">仕様</a> にはこう書かれています:</p>
<blockquote cite="http://www.w3.org/TR/2012/WD-html5-20120329/the-article-element.html#the-article-element">
    <p>The <code><a href="http://www.w3.org/TR/2012/WD-html5-20120329/the-article-element.html#the-article-element">article</a></code> element represents a self-contained composition in a document, page, application, or site and that is, in principle, independently distributable or reusable, e.g. in syndication. This could be a forum post, a magazine or newspaper article, a blog entry, a user-submitted comment, an interactive widget or gadget, or any other independent item of content.</p>
</blockquote>
<p>「<code>article</code> 要素は、ドキュメント、ページ、アプリケーション、またはサイトにおいて<strong>それだけで機能する構成要素</strong>を表すもので、それは原理的にはたとえばフィードなどで独立して共有されたり再利用されたりすることが可能なものです。フォーラムの発言、雑誌や新聞の記事、ブログのエントリー、ユーザーの投稿したコメント、インタラクティヴなウィジェットやガジェット、そのほか独立した内容を持つアイテムがこれにあたるでしょう」といったところですね (オレオレ翻訳)。</p>
<p>リストの各項目の内容はたしかに “blog entry” のデータなので <code>article</code> 要素で間違いはないようにも思えますが、“self-contained composition in a document” かというとちょっと違う気がします。それぞれの<strong>リンク先</strong>の記事そのものは self-contained ですが、リストを含むドキュメント (たとえばホームページ) においてそれらはあくまで別のドキュメントの概要や抜粋であり、それだけで機能するとは言いがたいと思うのです。概要や抜粋のリストはいわば「目次」のようなものであり、記事そのものではありません。逆に、複数の記事が並んでいてもそれぞれ全文を掲載していれば <code>article</code> でもいいかなと思います。</p>
<p>というわけで、これらは <code>article</code> ではなく <code>section</code> のほうが良いのではないだろうか、と思うのですがどうでしょう:</p>
<pre class="code lang-html"><code>&lt;section class=&quot;articleExcerptList&quot;&gt;

    &lt;h1&gt;Recent articles&lt;/h1&gt;

    <mark>&lt;section&gt;</mark>
        &lt;h2&gt;&lt;a href=&quot;...&quot;&gt;ブログ記事リストのマークアップ&lt;/a&gt;&lt;/h2&gt;
        &lt;time datetime=&quot;...&quot;&gt;April 10, 2012&lt;/time&gt;
        &lt;p&gt;&lt;!-- 概要・抜粋 --&gt;&lt;/p&gt;
        &lt;a href=&quot;...&quot;&gt;Continue reading&lt;/a&gt;
    <mark>&lt;/section&gt;</mark>

    <mark>&lt;section&gt;</mark>
        &lt;h2&gt;&lt;a href=&quot;...&quot;&gt;リデザインしました!&lt;/a&gt;&lt;/h2&gt;
        &lt;time datetime=&quot;...&quot;&gt;April 8, 2012&lt;/time&gt;
        &lt;p&gt;&lt;!-- 概要・抜粋 --&gt;&lt;/p&gt;
        &lt;a href=&quot;...&quot;&gt;Continue reading&lt;/a&gt;
    <mark>&lt;/section&gt;</mark>

    . . .

&lt;/section&gt;</code></pre>
<p>また、概要などがなく、タイトルと日付ぐらいのリストなら <code>ul</code> がいいかなと思います:</p>
<pre class="code lang-html"><code><mark>&lt;ul class=&quot;articleList&quot;&gt;</mark>

    <mark>&lt;li&gt;</mark>
        &lt;a href=&quot;...&quot;&gt;ブログ記事リストのマークアップ&lt;/a&gt;
        &lt;time datetime=&quot;2012-04-09&quot;&gt;April 9, 2012&lt;/time&gt;
    <mark>&lt;/li&gt;</mark>

    <mark>&lt;li&gt;</mark>
        &lt;a href=&quot;...&quot;&gt;リデザインしました!&lt;/a&gt;
        &lt;time datetime=&quot;2012-04-08&quot;&gt;April 8, 2012&lt;/time&gt;
    <mark>&lt;/li&gt;</mark>

    . . .

<mark>&lt;/ul&gt;</mark></code></pre>
<p>HTML5 のセクショニングの基本的な考え方として、見出しがある (あるいはあってもおかしくない) ものはとりあえず <code>section</code> として、中身が (major な) ナビゲーションなら <code>nav</code>、それだけで機能するようなものなら <code>article</code>、本文とあんまり関係なければ <code>aside</code>、みたいな感じに考えるといいかなと思ってます最近は。</p>]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2012/04/markup-for-blog-post-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Re-Make/Re-Model</title>
		<link>http://terkel.jp/archives/2012/04/re-make-re-model/</link>
		<comments>http://terkel.jp/archives/2012/04/re-make-re-model/#comments</comments>
		<pubDate>Sat, 07 Apr 2012 18:03:08 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=893</guid>
		<description><![CDATA[およそ 2 年ぶりにこのサイトを全面的にリデザインしました。印象としてはさほど大きく変化していないと思うんですが、内部的にはけっこういじってます。細かい部分は追って別の記事にするとして、とりあえずおもな変更点などをざっとまとめてみました。]]></description>
			<content:encoded><![CDATA[<p>およそ 2 年ぶりにこのサイトを全面的にリデザインしました。印象としてはさほど大きく変化していないと思うんですが、内部的にはけっこういじってます。細かい部分は追って別の記事にするとして、とりあえずおもな変更点などをざっとまとめてみました。</p>
<section>
    <h2>レスポンシヴ!</h2>
    <p>…ってほどではないのですが、レイアウトを表示域に応じたものにしています (Fig 1)。</p>
    <figure class="image">
        <img src="/img/re-make-re-model-responsive.png" alt="">
        <figcaption>Fig 1: 表示域の幅 320px、768px、1024px (左から) でのスクリーンショット</figcaption>
    </figure>
    <pre class="code lang-css"><code>body {
    font-size: 1em;
}

@media screen and (max-width: 32em) {
    body {
        font-size: 0.875em;
    }
}

[role="banner"],
[role="main"],
[role="contentinfo"] {
    margin-left: auto;
    margin-right: auto;
    max-width: 46em;
    padding-left: 1em;
    padding-right: 1em;
}

@media screen and (min-width: 64em) {
    [role="banner"],
    [role="main"],
    [role="contentinfo"] {
        padding-left: 17em;
    }
    .logo {
        left: 2em;
        position: absolute;
    }
}</code></pre>
    <p>CSS でレイアウトに関するおもな記述を抜き出すとこんな感じです。各コンテナの幅は指定せず最大幅のみ指定しています。</p>
    <p>スマートフォンなど表示域の幅が狭い場合、フォントサイズがデフォルトのままだとやや大きく感じられたので、ベースをやや小さくしています (デフォルトが 16px なら 14px 相当)。この指定だと iPhone の縦で全角文字が 1 行あたりだいたい 20 文字入ります。</p>
    <p>表示域の幅が十分に広い場合は左側に余白を作ってロゴをそちらに配置し、画面あたりの縦の情報量を増やしています。この左側の余白に記事の日付を置いたり画像をはみ出させたりとかも試してみましたが、あまり上手くいかなかったのでやめました。</p>
    <p>なおメディアクエリをサポートしていない環境のために <a href="https://github.com/scottjehl/Respond">Respond.js</a> を使っています。</p>
</section>
<section>
    <h2>ロゴとナビゲーション</h2>
    <p>ヘッダのロゴとナビゲーションには <a href="http://www.theleagueofmoveabletype.com/league-gothic">League Gothic</a> を使っていましたが (Fig 2)、わりとよく見るようになったし、本来は大文字で使ったほうが活きる書体という気もするので変えることにしました。ロゴは <a href="http://www.google.com/webfonts/specimen/Open+Sans+Condensed">Open Sans Condensed</a> の Book 700、ナビゲーションは本文と同じ <a href="http://www.google.com/webfonts/specimen/Open+Sans">Open Sans</a> の Bold 700 に (Fig 3)。Open Sans がとても気に入っているということです!</p>
    <figure class="image" id="fig-2">
        <img src="/img/re-make-re-model-header-v3.png" alt="">
        <figcaption>Fig 2: 旧ヘッダ</figcaption>
    </figure>
    <figure class="image" id="fig-3">
        <img src="/img/re-make-re-model-header-v4.png" alt="">
        <figcaption>Fig 3: 新ヘッダ</figcaption>
    </figure>
    <p>ロゴ部分にはこのブログについての簡単な説明のようなものを入れてみました。マークアップとしては <code>h1</code> と <code>h2</code> で、それらを <code>hgroup</code> でまとめて、さらに <code>a</code> でまるごとリンクにしています。</p>
    <pre class="code lang-html"><code>&lt;a href=&quot;/&quot;&gt;
    &lt;hgroup class=&quot;logo&quot;&gt;
        &lt;h1&gt;terkel.jp&lt;/h1&gt;
        &lt;h2&gt;A blog by…&lt;/h2&gt;
    &lt;/hgroup&gt;
&lt;/a&gt;</code></pre>
    <p>ナビゲーションのラベルはすべて大文字で、そうすると単語ごとの「かたまり感」のようなものが出せる反面、パッと見でテキストとしてやや認識しづらくなるので、文字間と単語間に余裕を持たせています。</p>
    <pre class="code lang-css"><code>.primaryNav {
    font-weight: bold;
    letter-spacing: 0.125em;
    text-transform: uppercase;
    word-spacing: 0.25em;
}</code></pre>
    <p>ロゴの装飾とナビゲーションのインジケーターに使っている「円」のイメージにはあまり意味はないのですが、全体的に堅いイメージになりがちなのが若干柔らぐのでいいかなと思ってます。</p>
</section>
<section>
    <h2>タグ、関連記事、ツイート</h2>
    <p>各記事のタグとタグクラウド、<a href="http://wordpress.org/extend/plugins/yet-another-related-posts-plugin/">Yet Another Related Posts Plugin</a> による「関連記事」、あと僕の Twitter から最新ツイートを表示するウィジェットをなくしました。</p>
    <p>タグは記事を探す手がかりとして使えるだけではなく、その記事の言及している内容を端的に示すことができるということもあり採用していましたが、そういった部分はタイトルや概要をわかりやすくすることで解決したいなと考えてます。そのかわり今後は検索機能をもっと使いやすくしたいですね。</p>
    <p>関連記事は必要に応じて記事内で言及したほうがいいという判断ですね。プラグインの精度はけっこう高くて良かったですが。</p>
    <p>ツイートは自作 jQuery プラグインで読み込んでいたんですが、やはり前後の文脈をすっ飛ばしてそれだけ載っけてもよくわからんというか、場合によっては良くない印象を与えることもあると思ったので。ちなみに <a href="http://terkel.jp/archives/2011/07/jquery-lastfm-profile-plugin/">Last.fm のウィジェット</a> は誰も必要としていないですが自分が好きなので残します。</p>
</section>
<section>
    <h2>カラー</h2>
    <p>背景色のオフホワイト #f8f8f0、前景色のブルーブラック #002040、リンク色のブルー #0080ff の 3 色を基本にして、これらを <a href="http://sass-lang.com/">Sass</a> の <a href="http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html#mix-instance_method">mix 関数</a> で混ぜて色を作っています。</p>
    <pre class="code lang-scss"><code>$white:     #f8f8f0;
$black:     #002040;
$blue:      #0080ff;

$darkgray:  mix($white, $black, 25%);
$gray:      mix($white, $black, 50%);
$lightgray: mix($white, $black, 75%);
$palegray:  mix($white, $black, 87.5%);

$darkblue:  mix($black, $blue, 50%);
$lightblue: mix($white, $blue, 75%);
$paleblue:  mix($white, $blue, 87.5%);</code></pre>
    <p>というわけでもちろん CSS は Sass を使って書いているわけですが、来るべき Sass 3.2 も視野に入れつつ書き方を試行錯誤しているので、現時点ではかなりぐちゃぐちゃ (「ソース見んな」って意味です)。近々プレリリース版を入れて整理して、まとまったら一式を GitHub に公開したいですね。</p>
</section>
<section>
    <h2>Re-Make/Re-Model</h2>
    <p>いままでホームページには最新の記事 1 本をまるまる載せてたんですが、直近の 8 本の抜粋を並べることにしました。でもそれだけだとちょっとさびしいのでスローガンというかキャッチコピーのようなものを置きたい、ということで <a href="http://www.youtube.com/watch?v=kWhzG9cQGgc">ロクシー・ミュージックの曲</a> から <b>Re-Make/Re-Model</b> というフレーズを拝借。フォントはロゴと同じ Open Sans Condensed の Book 300 で、<a href="http://fittextjs.com/">FixText</a> で幅に応じてフォントサイズが変化するようになってます。</p>
    <p>このフレーズを選んだのはもちろんそれなりに思うところがあってのことなのですが、そのあたりはこれからこのブログや仕事などで見せていければと思っております!</p>
</section>
]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2012/04/re-make-re-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>for 属性に対する属性セレクタの IE7 での挙動</title>
		<link>http://terkel.jp/archives/2012/02/for-attribute-selectors-in-ie7/</link>
		<comments>http://terkel.jp/archives/2012/02/for-attribute-selectors-in-ie7/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 13:45:06 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=870</guid>
		<description><![CDATA[<abbr title="Internet Explorer 7">IE7</abbr> には、<code>label</code> 要素の <code>for</code> 属性に対する CSS の属性セレクタが無効になるバグがあります。]]></description>
			<content:encoded><![CDATA[<p><abbr title="Internet Explorer 7">IE7</abbr> には、<code>label</code> 要素の <code>for</code> 属性に対する CSS の属性セレクタが無効になるバグがあります。</p>
<figure class="code">
    <pre class="lang-css"><code>label[<mark>for</mark>="foo"] {
    background-color: yellow;
}</code></pre>
</figure>
<p>この場合 <code>for="foo"</code> という属性を持つ <code>label</code> 要素の背景が黄色になるはずですが、IE7 では無視されてしまいます。これはどうやら <code>for</code> というキーワードが <abbr title="Document Object Model">DOM</abbr> の予約語であることに由来するバグのようです (参考: <a href="http://reference.sitepoint.com/css/attributeselector">Attribute Selector (CSS selector) &#8211; SitePoint CSS Reference</a>)。そのかわり、IE7 では <code>htmlFor</code> という属性名を利用すればスタイルが有効になります。</p>
<figure class="code">
    <pre class="lang-css"><code>label[<mark>htmlFor</mark>="foo"] {
    background-color: yellow;
}</code></pre>
</figure>
<p>ただこれだと IE8 以降やほかのブラウザが解釈してくれないので、<code>htmlFor</code> と <code>for</code> によるセレクタを並べます。</p>
<figure class="code">
    <pre class="lang-css"><code>label[<mark>htmlFor</mark>="foo"],
label[<mark>for</mark>="foo"] {
    background-color: yellow;
}</code></pre>
</figure>
<p>これで属性セレクタを解釈するすべてのブラウザでスタイルが有効になります。</p>
<ul>
    <li><a href="/demo/for-attribute-selectors-in-ie7.html">Demo: <code>[for]</code> attribute selectors in IE7</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2012/02/for-attribute-selectors-in-ie7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>キャプションの幅を画像の幅に合わせる</title>
		<link>http://terkel.jp/archives/2012/01/shrink-to-fit-figcaption/</link>
		<comments>http://terkel.jp/archives/2012/01/shrink-to-fit-figcaption/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 05:25:51 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=861</guid>
		<description><![CDATA[ちょっとわかりにくいタイトルになってしまいましたが、つまり Wikipedia のやつ (<a href="http://terkel.jp/archives/2012/01/shrink-to-fit-figcaption/#fig1">Fig 1</a>) みたいに、「<b>画像 (またはビデオなどの埋め込みコンテンツ) の下にキャプションをレイアウトするとき、キャプションが複数行にわたる場合は画像の幅に合わせて折り返したい (ただし画像の幅はバラバラ)</b>」というのをシンプルかつ汎用的なかたちで実現する CSS を考えてみました。というか、このブログのレイアウト用にけっこう長いことあれこれ考えてたもののこれといった手が思いつかなくて放置していたんですが、<a href="http://stackoverflow.com/a/6536025">上手い解決を Stack Overflow でみつけた</a> のでパクった、という話です。]]></description>
			<content:encoded><![CDATA[<figure class="image right" id="fig1">
    <a href="http://ja.wikipedia.org/wiki/%E6%9E%9D%E3%82%80%E3%81%A1"><img src="/img/shrink-to-fit-figcaption-fig1.png"></a>
    <figcaption>Fig 1: Wikipedia のキャプションつき画像の例</figcaption>
</figure>
<p>ちょっとわかりにくいタイトルになってしまいましたが、つまり Wikipedia のやつ (<a href="#fig1">Fig 1</a>) みたいに、「<b>画像 (またはビデオなどの埋め込みコンテンツ) の下にキャプションをレイアウトするとき、キャプションが複数行にわたる場合は画像の幅に合わせて折り返したい (ただし画像の幅はバラバラ)</b>」というのをシンプルかつ汎用的なかたちで実現する CSS を考えてみました。というか、このブログのレイアウト用にけっこう長いことあれこれ考えてたもののこれといった手が思いつかなくて放置していたんですが、<a href="http://stackoverflow.com/a/6536025">上手い解決を Stack Overflow でみつけた</a> のでパクった、という話です。</p>
<figure class="code">
    <pre class="lang-html"><code>&lt;figure&gt;
    &lt;img src=&quot;/img/photo.jpg&quot;&gt;
    &lt;figcaption&gt;Lorem ipsum dolor sit amet&lt;/figcaption&gt;
&lt;/figure&gt;</code></pre>
</figure>
<p>ここではこのマークアップをもとに考えてみます。スタイルの要件をまとめると以下のとおり:</p>
<ul>
    <li><code>figure</code> の幅は <code>img</code> の幅に合わせたい</li>
    <li><code>img</code> の幅は不確定</li>
    <li><code>figcaption</code> は存在しない場合もあり、もし存在すればテキスト量は不確定で、幅は <code>figure</code> の幅に合わせ、複数行にわたる場合はなりゆきで折り返したい</li>
</ul>
<p>考えられるアプローチのひとつとして、<code>figure</code> の幅についてあらかじめいくつかのパターンを決めておくというものがあります。<code>img</code> は <code>figure</code> の幅に合わせて書き出してもいいし、大きめに作っておいてブラウザで縮めてもいいでしょう。シンプルなグリッドがきっちり決まってる場合なんかはいいかもしれませんが、マークアップの <code>class</code> 属性や <code>data-*</code> 属性などを指定する必要があり、あまり汎用的とは言えないかもしれません。</p>
<figure class="code">
    <pre class="lang-css"><code>figure.small   { width: 160px; }
figure.mideium { width: 240px; }
figure.large   { width: 320px; }

figure img { max-width: 100%; }</code></pre>
</figure>
<p>あるいは JavaScript で <code>img</code> の幅を取得して <code>figure</code> の幅を操作するという手もあります。これならかなり汎用性も高いです。ただ、JavaScript で画像のサイズの取得をエラー処理やなんかも含めてきっちりやるのって、けっこうたいへんですよね? 僕は何度か挫折しました…</p>
<p>あとは CMS とかのシステム側でうまいことやってもらうって感じですかね。画像のアップロード時に、その幅に応じて <code>style</code> 属性を自動的にかますような。<a href="http://ja.wikipedia.org/wiki/Help:%E7%94%BB%E5%83%8F%E3%81%AE%E8%A1%A8%E7%A4%BA">Wikipedia なんかはそんな感じ</a> でしょうし、WordPress のプラグインなんかでもそんなのありそう (調べてない)。</p>
<p>というわけで、やはり CSS だけでなんとかしたいなーというのが以下のコード。前述の Stack Overflow で見つけたやつに少しアレンジを加えたものです:</p>
<figure class="code">
    <pre class="lang-css"><code>figure {
    display: table;
    width: 160px; /* minimum width */
    *width: auto; /* for IE7 and below */
}</code></pre>
</figure>
<p>これだけ。<code>figure</code> はテーブルのように振る舞うので、<code>img</code> の幅が <code>figure</code> に指定した幅を超えた場合はその幅に合わせて広がります。またもし <code>img</code> の幅が <code>figure</code> に指定した幅に満たない場合でもつねにその幅が確保されます。<code>figcaption</code> は横に広がろうとしますが、<code>figure</code> の制限をうけてぴったりの幅に収まります。ちなみにここでは <code>figure</code> と <code>figcaption</code> ですが、<code>div</code> と <code>span</code> やなんかでも同じです。デモを用意したのでどうぞ:</p>
<ul>
    <li><a href="/demo/shrink-to-fit-figcaption.html">Demo: Shrink-to-fit figcaption</a></li>
</ul>
<figure class="image center" id="fig2">
    <img src="/img/shrink-to-fit-figcaption-fig2.png" alt="">
</figure>
<p>Stack Overflow のバージョンだと <code>width</code> の値が <code>1px</code> なんですが、それだと <code>img</code> の幅がごく小さいときに <code>figcaption</code> がせまくなり過ぎて読みづらいので、サイトのグリッド構成などに応じて最低限これだけの幅はほしいという値を指定しておくのがいいと思います。ちなみにその場合、<code>img</code> は左に寄せず中央に置くと座りがいいです。</p>
<p>同じく Stack Overflow バージョンは <code>img</code> と <code>figcaption</code> に対して <code>display: table-row</code> を指定していますが、それは必要ない気がします。検証した限りとくに不都合はないのでたぶん大丈夫だと思うんですが…</p>
<p>また、もし <code>img</code> に <code>max-width: 100%</code> というスタイルが指定されていると <code>figure</code> の幅に縮められてしまうので注意が必要です。レスポンシヴなデザインでよく使われるスタイルだと思いますが。</p>
<p><code>display: table</code> をサポートしていない IE7 以下では <code>figure</code> の幅が <code>width</code> の値のとおりに解釈され、結果として縦にひしゃげたかたちになりキャプションが読みづらくなってしまうので、<code>width: auto</code> で上書きしています。とは言えこれで IE8 以上と同じレイアウトになるわけではなく、ただボックスが横に広がるだけです。IE7 では <code>figure</code> と <code>img</code> に <code>max-width</code> を指定すればある程度はコントロールできます (<a href="#fig3">Fig 3</a>) が、もし同じレイアウトでということになると、前述のような JavaScript を用いたり幅を固定したりといった手法が必要でしょう。</p>
<figure class="image center" id="fig3">
    <img src="/img/shrink-to-fit-figcaption-fig3.png">
    <figcaption>Fig 3: IE7 で <code>figure</code> 要素と <code>img</code> 要素に <code>max-width</code> プロパティを指定した場合の表示例</figcaption>
</figure>
<p>Web コンテンツがスマートフォンやタブレットといった多様なデバイスで閲覧される機会が増え、canvas や SVG といった手法も広まってきたいま、「画像」をいかに取り扱うかというのはあらためて考えなければいけない課題のひとつです。今回ここで紹介したのはレイアウトに関するちょっとしたテクニックに過ぎないですが、将来に向けてできる限りシンプルで汎用性の高い手法を模索していきたい、と考えた結果でもあります。</p>
<p>あけましておめでとうございます!</p>
]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2012/01/shrink-to-fit-figcaption/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>俺の CSS リセット: 2011 冬</title>
		<link>http://terkel.jp/archives/2011/12/css-reset-2011-winter/</link>
		<comments>http://terkel.jp/archives/2011/12/css-reset-2011-winter/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 15:16:32 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=840</guid>
		<description><![CDATA[年末だからというわけでもないのですが、いつものサイト作りに使う CSS リセットについて見直してみました。今までもちょっとずつ手を入れてはいたのですが、今回はかなり大きく修正しています。というのも、<a href="http://nicolasgallagher.com/">Nicolas Gallagher</a> と <a href="http://twitter.com/jon_neal">Jonathan Neal</a> の両氏による <a href="http://necolas.github.com/normalize.css/">normalize.css</a> を知り、大きく影響を受けたからです。]]></description>
			<content:encoded><![CDATA[<p>年末だからというわけでもないのですが、いつものサイト作りに使う CSS リセットについて見直してみました。今までもちょっとずつ手を入れてはいたのですが、今回はかなり大きく修正しています。というのも、<a href="http://nicolasgallagher.com/">Nicolas Gallagher</a> と <a href="http://twitter.com/jon_neal">Jonathan Neal</a> の両氏による <a href="http://necolas.github.com/normalize.css/">normalize.css</a> を知り、大きく影響を受けたからです。</p>
<p>Normalize.css は「新手の CSS リセット」ではありません。CSS を「リセット」するのではなく「ノーマライズ」する、という新しい考え方です。CSS リセットとノーマライズはどちらも、ブラウザ間で CSS の実装に差異があることを前提にそれらを吸収しようとする、という同じ目的を持っています。ただ、リセットはすべてをまっさらな「さら地」にしようとするのに対し、ノーマライズは使える部分は残しつつ手を入れる必要のある部分だけを整える、という違いがあります。「ブラウザ間の CSS 実装に差異がある」とは言っても、それぞれのブラウザが勝手にてんでバラバラの方向を向いているわけではないので、歩調のあってるとこまでわざわざ殺さず、活かせるものはそのまま活かして、という発想です。</p>
<p>Normalize.css によって具体的にどんなスタイルになるかは <a href="http://necolas.github.com/normalize.css/demo.html">デモ</a> をご覧いただくのが手っ取り早いと思います。シンプルなサイトなら、ここにちょっとしたレイアウトのスタイルを追加すればそのまま完成するような、汎用性の高いスタイルです。</p>
<p>とは言え、長いことリセットという手法が一般的であったため、たとえばブロックレベル要素のマージンやリストのマーカーがデフォルトのままだったりすると扱いづらいという場合も多いんじゃないでしょうか。一から自分でコントロールできる新規プロジェクトならいいですが、チームでメンテナンスしていたり、運用・管理を他の人に移譲するものの場合、ある程度はコモンセンスというか浸透している手法でないと採用が難しい、というところもあると思います。とくにリセットもノーマライズもスタイルの基盤を作るもので、その後の CSS 設計のすべてに大きく影響するものなのでなおさらです。</p>
<p>というわけで、ノーマライズの考え方を取り入れつつも影響の大きそうな部分はリセットしておくという、新しいリセットのアプローチを模索しています。以下はそうやって出来た「俺の CSS リセット: 2011 冬」です。Normalize.css については <a href="https://github.com/necolas/normalize.css/wiki">GitHub の Wiki</a> に詳しい解説があるのでそちらも参照してみてください。そこには先人たちの様々な CSS テクニックが盛り込まれており、そのまま採用しないにしても読むだけで得られるものは少なくないと思います。</p>
<section id="code">
    <h2>ソースコード</h2>
    <figure class="code">
        <pre class="lang-css"><code>/*!
 * CSS Reset 2011-12-25
 * https://gist.github.com/1360380
 *
 * Author:  Takeru Suzuki, http://terkel.jp/
 * License: Public domain
 *
 * Inspired by Normalize.css: http://necolas.github.com/normalize.css/
 */



/* HTML5 display definitions */

section, nav, article, aside, hgroup,
header, footer, figure, figcaption, details {
    display: block;
}

video, audio, canvas {
    display: inline-block;
    *display: inline;
    *zoom: 1;
}

audio:not([controls]) {
    display: none;
}

[hidden] {
    display: none;
}



/* The root element */

html {
    font-size: 100%;
    overflow-y: scroll;
    -webkit-text-size-adjust: 100%;
        -ms-text-size-adjust: 100%;
}



/* Sections */

body {
    font-family: sans-serif;
    margin: 0;
}

h1, h2, h3, h4, h5, h6 {
    font-size: 1em;
    margin: 0;
}



/* Grouping content */

p, blockquote, dl, dd, figure {
    margin: 0;
}

hr {
    color: inherit;
    height: auto;
    -moz-box-sizing: content-box;
         box-sizing: content-box;
}

pre {
    font-family: monospace, sans-serif;
    white-space: pre-wrap;
    word-wrap: break-word;
    margin: 0;
}

ol, ul {
    padding: 0;
    margin: 0;
}

li {
    list-style: none;
}



/* Text-level semantics */

a:focus {
    outline: thin dotted;
}

a:hover, a:active {
    outline: 0;
}

strong, b {
    font-weight: bold;
}

small {
    font-size: 0.83em;
}

q {
    quotes: none;
}

abbr[title] {
    border-bottom: 1px dotted;
}

code, samp, kbd {
    font-family: monospace, sans-serif;
}

mark {
    color: black;
    background-color: yellow;
}

sub, sup {
    font-size: 0.83em;
    line-height: 0;
    vertical-align: baseline;
    position: relative;
}

sub {
    bottom: -0.25em;
}

sup {
    top: -0.5em;
}

br {
    letter-spacing: 0;
}



/* Embedded content */

img {
    border: 0;
    -ms-interpolation-mode: bicubic;
}

svg:not(:root) {
    overflow: hidden;
}



/* Tabular data */

table {
    border-collapse: collapse;
    border-spacing: 0;
}

caption {
    padding: 0;
    text-align: left;
}

th, td {
    text-align: left;
    vertical-align: baseline;
    padding: 0;
}



/* Forms */

form {
    margin: 0;
}

fieldset {
    border: 0;
    padding: 0;
    margin: 0;
}

legend {
    border: 0;
    *margin-left: -7px;
}

input, button, select, textarea {
    font-family: inherit;
    font-size: 1em;
    color: inherit;
    margin: 0;
}

input, button {
    line-height: normal;
    vertical-align: inherit;
    *vertical-align: middle;
}

input::-moz-focus-inner,
button::-moz-focus-inner {
    border: 0;
    padding: 0;
}

input[type=&quot;search&quot;] {
    -webkit-appearance: textfield;
    -webkit-box-sizing: content-box;
       -moz-box-sizing: content-box;
            box-sizing: content-box;
}

input[type=&quot;search&quot;]:focus {
    outline-offset: -2px;
}

input[type=&quot;search&quot;]::-webkit-search-decoration {
    -webkit-appearance: none;
}

input[type=&quot;checkbox&quot;],
input[type=&quot;radio&quot;] {
    box-sizing: border-box;
    padding: 0;
}

input[type=&quot;submit&quot;],
input[type=&quot;reset&quot;],
input[type=&quot;button&quot;],
button {
    cursor: pointer;
    -webkit-appearance: button;
    *overflow: visible;
}

select {
    background-color: inherit;
    line-height: normal;
}

textarea {
    vertical-align: top;
    overflow: auto;
    *font-family: sans-serif;
}</code></pre>
    </figure>
    <p>長い… 要素の分類と記述順は <a href="http://dev.w3.org/html5/spec/Overview.html">HTML5 の仕様書</a> を参考にしました。以下、それぞれのパートごとにできる限り解説してみます。</p>
    <section id="html5-display-definitions">
        <h3>HTML5 display definitions</h3>
        <figure class="code">
            <pre class="lang-css"><code>section, nav, article, aside, hgroup,
header, footer, figure, figcaption, details {
    display: block;
}

video, audio, canvas {
    display: inline-block;
    *display: inline;
    *zoom: 1;
}

audio:not([controls]) {
    display: none;
}

[hidden] {
    display: none;
}</code></pre>
        </figure>
        <p>まずは HTML5 の新仕様関連で、normalize.css 丸写しです。HTML5 以前の古いブラウザ向けですね。<code>video</code> や <code>audio</code> などマルチメディア系の要素は個人的に扱った経験がないため詳しくはわからないんですが、とりあえずは <code>display</code> まわりを揃える程度なので、このままいってよさそうです。将来的に実装が進んだときはもうちょっと複雑な記述が必要になるのかもしれません。<a href="http://dev.w3.org/html5/spec/Overview.html#the-hidden-attribute"><code>hidden</code> 属性</a> は HTML5 で新しく定義されたグローバル属性です。属性セレクタによる指定のため IE6 では非表示になりませんが。</p>
    </section>
    <section id="the-root-element">
        <h3>The root element</h3>
        <figure class="code">
            <pre class="lang-css"><code>html {
    font-size: 100%;
    overflow-y: scroll;
    -webkit-text-size-adjust: 100%;
        -ms-text-size-adjust: 100%;
}</code></pre>
        </figure>
        <p>次はドキュメントのルートであるところの <code>html</code> への指定で、ここも normalize.css まんまです。</p>
        <p><code>font-size: 100%</code> は、フォントサイズを em 単位で指定した場合に「文字サイズの変更」をおこなうとサイズが極端に変動するという IE6/7 のバグへの対応です。これはいずれかの祖先要素のフォントサイズを % 単位で指定しておくと回避できるので、こうしておけば <code>body</code> 以下で自由に em が使えます。</p>
        <p><code>overflow-y: scroll</code> は IE6/7 以外のブラウザ向けで、ドキュメントの高さがウィンドウより小さくても縦のスクロールバー領域を確保するというものです。</p>
        <p>次の <code>-webkit-text-size-adjust: 100%</code> と <code>-ms-text-size-adjust: 100%</code> は iOS の文字サイズ自動アジャスト機能に対するもののようです。が、手元の iPhone で軽く検証したりググってみたりしたものの、正直よくわかっていません… とりあえず、この値を <code>none</code> にしてしまうのはどうもよくないらしいとか、IE Mobile がなぜか <code>-webkit-text-size-adjust</code> をサポートしてた (けど直った?) とか、iOS だけじゃなくてデスクトップ版 Safari にも影響があったとか、なんかややこしいらしいってことだけはわかりました。どなたかご教授いただけると嬉しいです! ここでは参考になりそうなリンクだけ並べてお茶を濁します:</p>
        <ul>
            <li><a href="http://developer.apple.com/library/IOs/#documentation/AppleApplications/Reference/SafariWebContent/AdjustingtheTextSize/AdjustingtheTextSize.html">Safari Web Content Guide: Customizing Style Sheets</a></li>
            <li><a href="http://msdn.microsoft.com/ja-jp/library/ff462082(v=VS.92).aspx">MSDN &#8211; Windows Phone 用の Web 開発</a></li>
            <li><a href="http://www.atmarkit.co.jp/fsmart/articles/iphone/04.html">iPhone向けWebアプリを作ろう（4/4） － ＠IT</a></li>
            <li><a href="http://www.456bereastreet.com/archive/201011/beware_of_-webkit-text-size-adjustnone/">Beware of -webkit-text-size-adjust:none | 456 Berea Street</a></li>
            <li><a href="http://www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/">Controlling text size in Safari for iOS without disabling user zoom | 456 Berea Street</a></li>
            <li><a href="https://bugs.webkit.org/show_bug.cgi?id=56543">WebKit Bugzilla &#8211; Bug 56543 &#8211; CSS property &#8220;-webkit-text-size-adjust&#8221; means different things in Safari and iOS</a></li>
            <li><a href="http://web.g.hatena.ne.jp/vantguarde/20110614/1308061678">-webkit-text-size-adjustがiOS以外でも効いてしまうらしい &#8211; vantguarde &#8211; web:g</a></li>
            <li><a href="https://github.com/necolas/normalize.css/issues/28">#28: Delete -ms-text-size-adjust &#8211; Issues &#8211; necolas/normalize.css &#8211; GitHub</a></li>
        </ul>
    </section>
    <section id="sections">
        <h3>Sections</h3>
        <figure class="code">
            <pre class="lang-css"><code>body {
    font-family: sans-serif;
    margin: 0;
}

h1, h2, h3, h4, h5, h6 {
    font-size: 1em;
    margin: 0;
}</code></pre>
        </figure>
        <p><code>body</code> の <code>font-family</code> はとりあえずざっくりと指定しておいて、あとはプロジェクトごとに細かくやる (あるいはやらない) という感じ。<code>margin</code> はリセット。ちなみに <code>body</code> のマージンはデフォルトだと IE6/7 でやや大きいです。</p>
        <p><code>h<var>n</var></code> は normalize.css だと HTML5 のセクショニング要素の対応として <code>h1 { font-size: 2em; }</code> しか指定してない (<a href="https://github.com/necolas/normalize.css/issues/41">#41: Normalize headings &#8211; Issues &#8211; necolas/normalize.css &#8211; GitHub</a>) ですが、ここでは <code>h1</code> から <code>h6</code> まで <code>font-size</code> と <code>margin</code> をリセットしてます。</p>
    </section>
    <section id="grouping-content">
        <h3>Grouping content</h3>
        <figure class="code">
            <pre class="lang-css"><code>p, blockquote, dl, dd, figure {
    margin: 0;
}

hr {
    color: inherit;
    height: auto;
    -moz-box-sizing: content-box;
         box-sizing: content-box;
}

pre {
    font-family: monospace, sans-serif;
    white-space: pre-wrap;
    word-wrap: break-word;
    margin: 0;
}

ol, ul {
    padding: 0;
    margin: 0;
}

li {
    list-style: none;
}</code></pre>
        </figure>
        <p>段落やリストなど、実際にサイトでよく使うとこですね。このへん、normalize.css ではあまりいじってないんですが、ここではけっこうリセットしてます。</p>
        <p>まず <code>p</code> などブロックレベル要素の <code>margin</code> はリセット。<code>ul</code> と <code>ol</code> は <code>padding</code> も <code>0</code> に、<code>li</code> のマーカーもなし。normalize.css では <code>nav</code> 要素の子孫である場合にだけマーカーなしですが、実際問題としていわゆる普通のサイトではマーカーとして独自の画像を用意することが多いと思うので。</p>
        <p><code>hr</code> は <a href="http://mxr.mozilla.org/mozilla-central/source/layout/style/html.css#632">Firefox のスタイルがちょっと例外的</a> なので他のブラウザに合わせる方向。IE6/7 以外は上下に 0.5em の <code>margin</code> を持っていますが、IE6/7 では上下の余白がコントロールできないため、きっちり見た目を揃えるのが難しいです。なのであえてリセットせずそのまま残してます。</p>
        <p><code>pre</code> はまず <a href="http://en.wikipedia.org/wiki/User:Davidgothberg/Test59">Safari と Chrome でフォントサイズが揃わない問題</a> への対応として <code>font-family: monospace, sans-serif</code> を指定。あと行が長くなったときに折り返すようにしています。</p>
    </section>
    <section id="text-level-semantics">
        <h3>Text-level semantics</h3>
        <figure class="code">
            <pre class="lang-css"><code>a:focus {
    outline: thin dotted;
}

a:hover, a:active {
    outline: 0;
}

strong, b {
    font-weight: bold;
}

small {
    font-size: 0.83em;
}

q {
    quotes: none;
}

abbr[title] {
    border-bottom: 1px dotted;
}

code, samp, kbd {
    font-family: monospace, sans-serif;
}

mark {
    color: black;
    background-color: yellow;
}

sub, sup {
    font-size: 0.83em;
    line-height: 0;
    vertical-align: baseline;
    position: relative;
}

sub {
    bottom: -0.25em;
}

sup {
    top: -0.5em;
}

br {
    *letter-spacing: 0;
}</code></pre>
        </figure>
        <p>いわゆるインライン要素。このあたりは基本的にデフォルトの <code>font-weight</code> や <code>font-style</code> をそのまま活かします。</p>
        <p><code>a</code> の <code>outline</code> プロパティは、<a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">Eric Meyer 氏のリセットの古い版</a> で「ちゃんとあとから自分で定義し直してね!」っていう注釈つきで <code>:focus { outline: 0; }</code> となってた (<a href="http://meyerweb.com/eric/thoughts/2011/01/03/reset-revisited/">のちに修正された</a>) のがそのまま広まってしまった感があります。が、それではアクセシビリティ上の問題があるので、そのあたりを考慮したものになってます。以下、参考資料:</p>
        <ul>
            <li><a href="http://www.outlinenone.com/">CSS outline property &#8211; outline: none and outline: 0</a></li>
            <li><a href="http://24ways.org/2009/dont-lose-your-focus">24 ways: Don&#8217;t Lose Your :focus</a></li>
            <li><a href="http://people.opera.com/patrickl/experiments/keyboard/test">Better CSS outline suppression</a></li>
            <li><a href="http://white-stage.com/article.php/outline">フォーカス時の輪郭線（アウトライン）の役割をご存知ですか？ &#8211; White Stage</a></li>
        </ul>
        <p><code>strong</code> と <code>b</code> は Firefox や WebKit のデフォルトでは <code>bold</code> ではなく <code>bolder</code> という相対値です。つまり、<code>&lt;h1&gt;&lt;b&gt;Steve Jobs&lt;/b&gt;: 1955–2011&lt;/h1&gt;</code> というマークアップで  <code>h1</code> の <code>font-weight</code> が <code>bold</code> (<code>700</code>) の場合、その中の <code>b</code> は <code>900</code> となるわけです (<a href="http://www.w3.org/TR/css3-fonts/#font-weight-prop">CSS Fonts Module Level 3 &#8211; 3.2 Font weight: the font-weight property</a>)。このままでもいいんですが、予期したウェイトよりも太くなってしまうってことがけっこうありそうなので <code>bold</code> に揃えよう、ってことだと思いますたぶん。ウェイトがノーマルかボールドしか使えない場合がほとんどの和文フォントではあまり気にする機会がありませんが。</p>
        <p><code>sub</code> と <code>sup</code> は行の高さと縦位置の調整です (<a href="https://gist.github.com/413930">CSS for &lt;sub&gt; and &lt;sup&gt; — Gist</a>)。</p>
        <p><code>br</code> は <a href="http://d.hatena.ne.jp/aratako0/20070131/p1">親要素に <code>letter-spacing</code> が指定されているときに連続して改行しても認識されない</a> という IE6/7 のバグへの対応。</p>
    </section>
    <section id="embedded-content">
        <h3>Embedded content</h3>
        <figure class="code">
            <pre class="lang-css"><code>img {
    border: 0;
    -ms-interpolation-mode: bicubic;
}

svg:not(:root) {
    overflow: hidden;
}</code></pre>
        </figure>
        <p><code>img</code> はリンク時のボーダーを消して、<a href="http://msdn.microsoft.com/en-us/library/ms530822(v=vs.85).aspx">IE7 で拡大縮小したときに綺麗にする</a>、っていういつものやつです。<code>svg</code> は IE9 向けの指定みたいです。</p>
    </section>
    <section id="tabular-data">
        <h3>Tabular data</h3>
        <figure class="code">
            <pre class="lang-css"><code>table {
    border-collapse: collapse;
    border-spacing: 0;
}

caption {
    padding: 0;
    text-align: left;
}

th, td {
    text-align: left;
    vertical-align: baseline;
    padding: 0;
}</code></pre>
        </figure>
        <p>テーブル関連はセル間の隙間をなくすのに加えて、キャプションとセルの文字方向とパディングをリセットしてます。</p>
    </section>
    <section id="forms">
        <h3>Forms</h3>
        <figure class="code">
            <pre class="lang-css"><code>form {
    margin: 0;
}

fieldset {
    border: 0;
    padding: 0;
    margin: 0;
}

legend {
    border: 0;
    *margin-left: -7px;
}

input, button, select, textarea {
    font-family: inherit;
    font-size: 1em;
    color: inherit;
    margin: 0;
}

input, button {
    line-height: normal;
    vertical-align: inherit;
    *vertical-align: middle;
}

input::-moz-focus-inner,
button::-moz-focus-inner {
    border: 0;
    padding: 0;
}

input[type=&quot;search&quot;] {
    -webkit-appearance: textfield;
    -webkit-box-sizing: content-box;
       -moz-box-sizing: content-box;
            box-sizing: content-box;
}

input[type=&quot;search&quot;]:focus {
    outline-offset: -2px;
}

input[type=&quot;search&quot;]::-webkit-search-decoration {
    -webkit-appearance: none;
}

input[type=&quot;checkbox&quot;],
input[type=&quot;radio&quot;] {
    box-sizing: border-box;
    padding: 0;
}

input[type=&quot;submit&quot;],
input[type=&quot;reset&quot;],
input[type=&quot;button&quot;],
button {
    cursor: pointer;
    -webkit-appearance: button;
    *overflow: visible;
}

select {
    background-color: inherit;
    line-height: normal;
}

textarea {
    vertical-align: top;
    overflow: auto;
    *font-family: sans-serif;
}</code></pre>
        </figure>
        <p>そして最後はフォーム関連。やはりここがもっともややこしいですね。基本的に normalize.css まんまなので詳しくはそちらを参照していただきたいんですが、おもに以下のような指定を追加してます:</p>
        <ul>
            <li><code>fieldset</code> の余白とボーダーはリセット。</li>
            <li>Chrome は <code>select</code> に <code>background-color</code> を指定しないとフォント系プロパティを継承しないので指定。</li>
        </ul>
        <p>HTML5 の新しいコントロール型として <code>search</code> 型にけっこうな手間をかけてますが、これからほかの新しい型の実装も進んだとき、今までのようにすべてリセットしてクロスブラウザでピクセルパーフェクトなルックを目指すというのはいよいよ現実的ではないと思います。そういった意味で、フォームこそ CSS ノーマライズという考え方の真価が発揮されるところかもしれません。</p>
    </section>
</section>
<section id="maintenance">
    <h2>メンテナンス</h2>
    <p>さて、この手のコードは、チームや個人で一度これと決めてしまうとあまり中身を見直されることなくそのまま使い回されるということになりがちです。その結果として、すでに不要になった古い (バッド) ノウハウが残り続け、よくわからないまま「おまじない」として次世代に受け継がれていく… という、あまり好ましくない事態が想定されます。とくに今後、要らないベンダー接頭辞が残り続けているという事態はちょくちょく目にすることになりそうです。ですから、ブラウザの実装の進歩やシェアの変動を踏まえつつ、折を見て内容を吟味して、更新し続けることが重要だと考えます。</p>
    <p>というわけで、上記 CSS のソースコードは Gist に置いてます。気がついたときにちょくちょく手を入れると思うので、本稿での記述とは違っていることがあるかもしれません。あと現時点でのデモページも用意しました。HTML の中身は normalize.css のをそのまま拝借しています:</p>
    <ul>
        <li><a href="https://gist.github.com/1360380">CSS Reset — Gist</a></li>
        <li><a href="http://terkel.jp/demo/css-reset-2011-winter.html">Demo: CSS Reset 2011 Winter</a></li>
    </ul>
</section>
<section id="references">
    <h2>参考</h2>
    <p>最後に参考にしたリソースのリストを。まずはブラウザのデフォルトのスタイルシートを確認できるサイトです。IE のは公式じゃないし、Opera のは見つけられませんでした:</p>
    <ul>
        <li><a href="http://mxr.mozilla.org/mozilla-central/source/layout/style/html.css">mozilla-central mozilla/layout/style/html.css</a></li>
        <li><a href="http://mxr.mozilla.org/mozilla-central/source/layout/style/forms.css">mozilla-central mozilla/layout/style/forms.css</a></li>
        <li><a href="http://trac.webkit.org/browser/trunk/Source/WebCore/css/html.css">/trunk/Source/WebCore/css/html.css – WebKit</a></li>
        <li><a href="http://www.iecss.com/">Internet Explorer UA Style Sheets</a></li>
        <li><a href="http://css-class.com/test/css/defaults/UA-style-sheet-defaults.htm">CSS2.1 User Agent Style Sheet Defaults</a></li>
    </ul>
    <p>あと、メジャーな CSS リセットをいくつか:</p>
    <ul>
        <li><a href="http://meyerweb.com/eric/tools/css/reset/">CSS Tools: Reset CSS</a>: Eric Meyer&#8217;s CSS Reset</li>
        <li><a href="http://html5doctor.com/html-5-reset-stylesheet/">HTML5 Reset Stylesheet | HTML5 Doctor</a></li>
        <li><a href="http://yuilibrary.com/yui/docs/cssreset/">CSS Reset &#8211; YUI Library</a></li>
    </ul>
    <p>メリー・クリスマス!</p>
</section>]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2011/12/css-reset-2011-winter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sass の @extend はどこがすごいのか</title>
		<link>http://terkel.jp/archives/2011/12/sass-extend/</link>
		<comments>http://terkel.jp/archives/2011/12/sass-extend/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 14:59:19 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Sass]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=830</guid>
		<description><![CDATA[この記事では <a href="http://atnd.org/events/21919">Less &#38; Sass Advent calendar 2011</a> の 16 日目として、Sass の <a href="http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#extend"><code>@extend</code></a> 機能について書いてみます。が、諸事情により締め切りを過ぎてからあわてて書いており、かなりとっ散らかったものになるであろうことをあらかじめお断りしておきます。]]></description>
			<content:encoded><![CDATA[<p>この記事では <a href="http://atnd.org/events/21919">Less &amp; Sass Advent calendar 2011</a> の 16 日目として、Sass の <a href="http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#extend"><code>@extend</code></a> 機能について書いてみます。が、諸事情により締め切りを過ぎてからあわてて書いており、かなりとっ散らかったものになるであろうことをあらかじめお断りしておきます。</p>
<p>さて、まずは <code>@extend</code> の基本的な機能についてざっとおさらい。<code>@extend</code> される側として一連のスタイルを定義したセレクタがあり、そのセレクタを <code>@extend</code> で継承しつつプロパティを追加したりして、新しいセレクタを作ります:</p>
<figure class="code">
    <pre class="lang-scss"><code>// SCSS

// 継承元のセレクタ
.button {
    display: inline-block;
    border: 1px solid gray;
    background-color: silver;
    &#038;:hover {
        border-color: black;
    }
}

// .button セレクタを継承・拡張
.button-download {
    <mark>@extend .button;</mark>         // .button を継承
    background-color: green; // プロパティを上書き
    border-radius: 4px;      // 新たなプロパティの追加
    .icon {                  // ネストしたセレクタの追加
        background: url(/img/download.png) no-repeat 0 50%;
    }
}</code></pre>
</figure>
<p>この SCSS をコンパイルすると、こういう CSS が生成されます:</p>
<figure class="code">
    <pre class="lang-css"><code>/* CSS */

.button,
.button-download {
    display: inline-block;
    border: 1px solid gray;
    background-color: silver;
}

.button:hover,
.button-download:hover {
    border-color: black;
}

.button-download {
    background-color: green;
    border-radius: 4px;
}

.button-download .icon {
    background: url(/img/download.png) no-repeat 0 50%;
}</code></pre>
</figure>
<p>このように、共通するプロパティはひとつのルールセットに、そして差分だけが新たなルールセットにまとめられ、じつに合理的なコードが生成されます。ここでは 2 つのセレクタ間でしか <code>@extend</code> していませんが、これが増えてくるとさらにありがたみが増します。ボタンを例に出しましたが、たとえばリストやテーブルなど、基本的には似てるんだけど少しずつ違うスタイルのモジュールがいくつもある、みたいなときに威力を発揮します。</p>
<p>しかし、これだったら <a href="http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixins">ミックスイン</a> でもいいんじゃないの、という意見もあるかもしれません。この場合で言うと、<code>.button</code> のスタイルをミックスイン化して <code>.button-download</code> のルールセット内で <code>@include</code> すれば、結果として同じスタイルを実現することはできます。しかし、そこに至る考え方が <code>@extend</code> とミックスインではまるで違うのです。</p>
<p>ミックスインは、<code>@include</code> で挿入した箇所で展開されるコード片です。ミックスイン自体のコードは CSS としてコンパイルされず、<code>@include</code> されてはじめて実体を持ちます。そのため、使いそうなものをひととおりライブラリとして読み込んでおいて必要に応じて呼び出す、という使い方が可能です。</p>
<p>一方 <code>@extend</code> は、実際に存在している CSS のスタイルをもとにしたものです。一連のスタイル定義をいわば「スタイルオブジェクト」として捉え、<code>@extend</code> によってそれを継承・拡張して新たなオブジェクトを作るもの、と考えられます。</p>
<p>この「スタイルオブジェクト」というのは僕が勝手に呼んでいる名前で、なんとなくぼんやりとそう捉えている、というものです。僕はプログラマでもなければオブジェクト指向をきっちり勉強した経験もないので (こないだ友人の <a href="http://www.marugoshi.org/">@marugoshi</a> さんにちょっとだけご教授いただきましたが)、ここでぜひ皆さんのご意見をうかがいたいんですが、<b>これってひょっとしてオブジェクト指向ですか?</b></p>
<p>上の SCSS のコードでやってることって、<code>.button</code> っていうひとつのオブジェクトがあって、それを継承しつつも一部のプロパティが違ったり新たなプロパティが追加された <code>.button-download</code> っていうもうひとつのオブジェクトが生成されてる、っていうふうに捉えてるんですが…</p>
<p>そして僕はこういうふうにスタイルを捉えるようになって、明らかにマークアップとスタイルの設計が変わったんですよ。それまで、CSS ってどう書いても最終的にはグチャグチャになる運命 (さだめ) なのでは… と思っていたんですが、はじめてスタイルというものが実体を持って見えるようになった、ような気がしたんです、Sass の <code>@extend</code> を使うようになって。</p>
<p>オブジェクト指向の CSS というと <a href="https://github.com/stubbornella/oocss">OOCSS</a> というのが有名ですけど、あれってどうも曲解されているというか、ようするにスタイルをクラスに細切れにしてマークアップにぽんぽん放り込めばいいんでしょ、みたいな見方をされてる気がするんですよ。たとえばこんなの:</p>
<figure class="code">
    <pre class="lang-html"><code>&lt;a <mark>class=&quot;button button-download button-rounded button-green text-bold align-center valign-top font-15&quot;</mark>&gt;ダウンロード&lt;/a&gt;</code></pre>
</figure>
<p>これはさすがに極端ですが、でもいわゆる CSS フレームワーク的なアプローチを採ろうとすると多かれ少なかれこういったマークアップになりがちな気がします。</p>
<p>そうではなくて、マークアップをシンプルに保ち、かつスタイルを変更する際になるべく影響を受けないよいうに、あらかじめマークアップの各要素というかモジュールごとにスタイルとは切り離した適切な名前をつけておいて、スタイルはスタイルでオブジェクトとして体系化してマークアップから分離する、みたいな理想にオブジェクト指向な Sass で少し近づけるのかも… とか考えるんですが、どうでしょう。</p>
<p>最後に、Sass の <code>@extend</code> 関連で参考になった記事をいくつかリストアップしておきます:</p>
<ul>
    <li><a href="http://nex-3.com/posts/99-selector-inheritance-the-easy-way-introducing-extend">Selector Inheritance the Easy Way: Introducing @extend : Nex3</a>:<br />開発者のブログ</li>
    <li><a href="http://d.hatena.ne.jp/jdg/20110603/1307084785">Sassの@extendでCSSとHTMLをシンプルに &#8211; あと味</a>:<br />入門編として簡潔にまとまっていてわかりやすい</li>
    <li><a href="http://www.culture27.com/blog/2011/07/sass_memo_4.php">Sass(Scss) Memo: @extend | Culture27</a>:<br />じつはややこしい <code>@extend</code> の仕様がかなり詳細に調べられていて素晴らしいです</li>
    <li><a href="http://designshack.net/articles/css/extends-and-control-directives-two-crazy-things-sass-can-do-that-less-cant/">Extends and Control Directives: Two Crazy Things Sass Can Do That LESS Can’t | Design Shack</a>:<br />Sass は LESS と違って <code>@extend</code> とか使えてヤバい、という話<br />(あわせて読みたい: <a href="http://d.hatena.ne.jp/hokaccha/20111214/1323821463">LESSにextendを実装してみた &#8211; hokaccha.hamalog v2</a>)</li>
    <li><a href="http://blog.millermedeiros.com/2011/11/the-problem-with-css-pre-processors/">The problem with CSS pre-processors |  Blog | Miller Medeiros</a>:<br />Sass の問題点や要望など。<code>@extend</code> の継承元をコンパイルされないようにする機能とかたしかにあるといかも</li>
</ul>
<p>えー、タイトルで「どこがすごいのか」と大見得を切っておきながらこれといった結論に至らずお恥ずかしい限りです。あと、アドベントカレンダーのスケジュールを乱してまことに申し訳ございませんでした!</p>]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2011/12/sass-extend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Sans</title>
		<link>http://terkel.jp/archives/2011/12/open-sans/</link>
		<comments>http://terkel.jp/archives/2011/12/open-sans/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 16:32:07 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Typography]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=821</guid>
		<description><![CDATA[このサイトのボディの欧文フォントとして <a href="http://www.google.com/webfonts">Google Web Fonts</a> で提供されている <a href="http://www.google.com/webfonts/specimen/Open+Sans">Open Sans</a> を使ってみることにした。<a href="https://chrome.google.com/webstore">Chrome ウェブストア</a> とかで採用されてるので見たことある人も多いんじゃないでしょうか。]]></description>
			<content:encoded><![CDATA[<p>このサイトのボディの欧文フォントとして <a href="http://www.google.com/webfonts">Google Web Fonts</a> で提供されている <a href="http://www.google.com/webfonts/specimen/Open+Sans">Open Sans</a> を使ってみることにした。<a href="https://chrome.google.com/webstore">Chrome ウェブストア</a> とかで採用されてるので見たことある人も多いんじゃないでしょうか。</p>
<figure class="image center">
    <img src="/img/open-sans.png" alt="">
</figure>
<p>比較的ニュートラルだけど、g や t やイタリックの f あたりのクセが好み。5 ウェイトでそれぞれにイタリックがあり、計 10 通りのバリエーションがあるのもいいです。とは言え実際にはそこまで必要ないので、このサイトでは 400、400 のイタリック、700、700 のイタリックという 4 種に絞って利用。</p>
<p>Google Web Fonts のフォントファイルを読み込むには CSS の <code>@import</code> ルールや JavaScript の API を使う方法もあるけど、おそらく <code>link</code> 要素でのインクルードがいちばん手軽で速いと思います。</p>
<figure class="code">
    <pre class="lang-html"><code>&lt;link rel=&quot;stylesheet&quot;
href=&quot;http://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700&quot;&gt;</code></pre>
</figure>
<p>あとは CSS で <code>font-family</code> を指定するだけ。</p>
<figure class="code">
    <pre class="lang-css"><code>body {
    font-family: &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, &quot;Arial&quot;, &quot;Hiragino Kaku Gothic ProN&quot;, &quot;ヒラギノ角ゴ ProN W3&quot;, &quot;メイリオ&quot;, sans-serif;
}</code></pre>
</figure>
<p>ヒラギノやメイリオとの相性も悪くないと思うんですが、どうですかね。</p>
<figure class="image center">
    <img src="/img/open-sans-mac.png">
    <figcaption>Open Sans + ヒラギノ角ゴ ProN (Mac)</figcaption>
</figure>
<figure class="image center">
    <img src="/img/open-sans-win.png">
    <figcaption>Open Sans + メイリオ (Windows)</figcaption>
</figure>
<p>ちなみに、このサイトでは長らく Helvetica Neue を使ってたけど、和文との相性が気になりだして Lucida Grande に鞍替え、でも Lucida Grande はイタリックがないしちょっとうるさい気がしてきたのでなんかいいのないかな、というのが今までの流れです。飽きたら Helvetica に戻します!</p>]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2011/12/open-sans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordCamp と俺</title>
		<link>http://terkel.jp/archives/2011/11/wordcamp-and-me/</link>
		<comments>http://terkel.jp/archives/2011/11/wordcamp-and-me/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 02:02:41 +0000</pubDate>
		<dc:creator>Takeru Suzuki</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://terkel.jp/?p=813</guid>
		<description><![CDATA[いよいよこんどの日曜日に開催がせまった <a href="http://2011.tokyo.wordcamp.org/">WordCamp Tokyo 2011</a>。俺もデザイナーとして運営に参加しているわけですが、その運営スタッフがおのおののブログに日替わりで WordCamp についての記事を書く <a href="http://2011.tokyo.wordcamp.org/relay-blog/">リレーブログ</a> なる企画があり、このたび <a href="http://experiment.street-square.com/2011/11/21/wordcamp-tokyo-photo/">真木さんからのバトン</a> を受けて、いよいよ俺に順番がまわってきました。]]></description>
			<content:encoded><![CDATA[<p>いよいよこんどの日曜日に開催がせまった <a href="http://2011.tokyo.wordcamp.org/">WordCamp Tokyo 2011</a>。俺もデザイナーとして運営に参加しているわけですが、その運営スタッフがおのおののブログに日替わりで WordCamp についての記事を書く <a href="http://2011.tokyo.wordcamp.org/relay-blog/">リレーブログ</a> なる企画があり、このたび <a href="http://experiment.street-square.com/2011/11/21/wordcamp-tokyo-photo/">真木さんからのバトン</a> を受けて、いよいよ俺に順番がまわってきました。</p>
<p>何を書こうか少し悩みましたが、とくにこれといったネタもないので、俺と WordCamp の関係や、俺が WordCamp について思うところなどをだらだらと書いてみます。ちなみにこのブログでは Web デザインについて淡々と書くことがほとんどなので、こういったスタイルの記事はめずらしいです、すごく。</p>
<p>さて、俺がはじめて WordCamp に参加したのは 2010 年春の <a href="http://yokohama2010.wordcamp.jp/">WordCamp Yokohama 2010</a> でした。俺は基本的にこういったセミナー的なイベントにあまり積極的に参加しないし、それまで WordPress についてさほど勉強してたわけでもないのですが、当時仕事してなくて時間もあったし、タダだし、っていう軽い気持ちで参加したのでした。</p>
<p>会場でまず感じたのは、運営のある種の「ゆるさ」のようなものでした。かと言ってイベントはぐだぐだにはならず、なぜかそれなりに進行していく。少し大げさに言うと、イベントが運営スタッフによって動かされているのではなく、イベントが参加者もスピーカーもスポンサーも巻き込んでそれ自体の意思でずるずると動いているような、そんな感じ。そして俺にはその感じが面白かったし、けっこう心地良かったんです。</p>
<p>カンファレンスも、その筋の権威をお招きしてありがたいお話をうかがうみたいなノリがまるでなくて、現場で実際に WordPress に関わっている人たちがそれぞれの知見をシェアする場、という印象。スピーカーと参加者が明確に分かれてなくて、参加者のうち何人かがたまたま登壇してしゃべっている、そんな雰囲気でした。</p>
<p>カンファレンス後の懇親会も、ふだんならその手のはシカトしてとっとと帰るとこなんですが、勢いで参加してみたら思いのほか楽しかったです。あまり関係ないですが、そのとき <a href="http://www.cardcloud.com/cipher">こもりさん</a> にはじめてお会いして、「いま無職なんですよ」みたいな話をしたら「僕も無職みたいなもんです」って返されたのが妙に印象に残ってますね。</p>
<p>というように WordCamp Yokohama 2010 がとても楽しかったので、もし自分にも貢献できることがあればやってみたいなーなどとぼんやり考えて、横浜で出会った運営スタッフの <a href="http://www.understandard.net/">じゅんさん</a> に、もし次に首都圏で何かやるときは呼んでねーみたいな話をしてたんです。そしたら今年の秋、こんど東京でやるのでデザイナーやりませんかと声をかけていただき、今に至るというわけです (ありがとう、じゅんさん!)。だから今回の WordCamp に参加して自分も何かやってみたいと思った方は、実行委員長の <a href="http://waviaei.com/">とおるさん</a> あたりをつかまえて「何かやらせろ」って言ってみるといいです。なんなら次回の実行委員長とかやらせてもらえます。</p>
<p>以上、WordPress をマニアックに追っかけているわけでもない上、人見知りするし出不精だし友達も少ない、そんな俺でも WordCamp は楽しめるし、その気になれば運営スタッフとして関わることもできるよ、という話でした。<a href="http://2011.tokyo.wordcamp.org/registration/">参加登録</a> がまだの方はお早めにどうぞ!</p>
]]></content:encoded>
			<wfw:commentRss>http://terkel.jp/archives/2011/11/wordcamp-and-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

