<?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>高橋文樹.com &#187; デザイン</title>
	<atom:link href="http://takahashifumiki.com/topics/web/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://takahashifumiki.com</link>
	<description>小説家高橋文樹が自ら情報を発信するブログです。小説・Web制作などの話があります。</description>
	<lastBuildDate>Fri, 18 May 2012 10:30:27 +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>iBooks用のePub作成覚え書き（ePub3.0とかフォント指定とか）</title>
		<link>http://takahashifumiki.com/web/design/1842/</link>
		<comments>http://takahashifumiki.com/web/design/1842/#comments</comments>
		<pubDate>Sun, 25 Dec 2011 23:30:07 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[ePub]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[電子書籍]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=1842</guid>
		<description><![CDATA[最近めっきりePubを触っていなかったのですが、iOS5.0になってからCSS3のサポートが目覚ましく、ePub3.0の対応も縦書き時のページングさえ除けば概ね満足できるレベルまで来たので、拙著『ハムスターに水を』をeP [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1844" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/12/IMG_0808.png"><img class="size-medium wp-image-1844" title="ePub3 on iBooks" src="http://s.takahashifumiki.com/wp-content/uploads/2011/12/IMG_0808-300x450.png" alt="ePub3 on iBooks" width="300" height="450" /></a><p class="wp-caption-text">ePub3 on iBooks</p></div>
<p>最近めっきりePubを触っていなかったのですが、iOS5.0になってからCSS3のサポートが目覚ましく、ePub3.0の対応も縦書き時のページングさえ除けば概ね満足できるレベルまで来たので、拙著『<a title="ハムスターに水を" href="http://takahashifumiki.com/ebook/%e3%83%8f%e3%83%a0%e3%82%b9%e3%82%bf%e3%83%bc%e3%81%ab%e6%b0%b4%e3%82%92">ハムスターに水を</a>』をePub3.0対応にしてみました。以下、その雑感です。</p>
<h2 class="clrL">iBooks日本語組版対応でイケてる内容</h2>
<p>iOS4の時点で「駄目だコリャ」と思ったていたものが改善されたケースが以下になります。</p>
<h3>ルビ対応</h3>
<p>これが今回個人的に一番重要だったものです。あくまで小説家としての意見ですが、ルビというのは見映え（ルビなんてカッコで書いときゃいいじゃん）やアクセシビリティ（低年齢向けに難しい感じは読みがなが振られるべき）の観点とは別に、「ルビそのものが表現の一種である」という意識があります。これから言及するそれ以外の改善点ははっきりいって見映え状の問題に過ぎないとさえ思うのですが、ルビだけは別格です。</p>
<p>ルビというのは、文字とそのメタ文字がバイリニアルに併記される世界的にも珍しい表記法であり、日本に印刷術が持ち込まれてからの最大の革命的副産物だと思います。<ruby><rb>聖剣</rb><rt>エクスカリバー</rt></ruby>とかがそうだと思うのですが、単に「漢字をどのように読むか」というよりも、「ある言葉にどのような意味を付与するか」という遊びのような表現ですね。小説家としてここらへんは譲れないところがあったのですが、対応されて嬉しいです。まあ、詩人などからすると、改行位置を指定できないリフロー型がそもそも許しがたかったりするのでしょうが。</p>
<p>さて、そのルビ対応なのですが、以下のように書けば有効になります。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;ruby&gt;聖剣&lt;rt&gt;エクスカリバー&lt;/rt&gt;&lt;/ruby&gt;
</pre>
<p>ルビに対応していないブラウザ向けにrpというタグもありますが、めんどくさいので今回は割愛。あと、rbタグはCSS3のドラフトから削除されたっぽいので、書かなくてもいいんじゃないでしょうか。</p>
<p>rtタグのデフォルトサイズはよくわかりませんが、0.5emとかにしておけばそれっぽくなるんじゃないでしょうか。</p>
<h3>テキスト両端揃え対応</h3>
<p>テキスト両端揃えが対応されました。和欧入り交じった文章では「ひでーな」と思うこともままありましたが、両端揃えがサポートされたので、我慢できるレベルになりました。</p>
<pre class="brush: css; title: ; notranslate">
p{
text-align:justify;
text-justify:inter-ideograph;
}
</pre>
<p>もしかしたら、設定 &gt; iBooksで両端揃えで有効になるのかもしれません。</p>
<h3>フォントをはじめとする上書き設定の無効化</h3>
<p>iOS4.3ぐらいからだったと思うのですが、いつからかiBooks用のePub作成覚え書き（text-alignハックと明朝体とか）で得意げに書いた明朝体の指定が無効になっていました。「Apple様の指定したフォント以外使うなよこのクズ」と受け取り、半ば諦めていました。</p>
<p>iBooksはフォントの指定が一応できるのですが、なぜか日本語のフォントは一つも入っていません。結果として、すべての文字がヒラギノゴシックで表示されるようになってしまいました。</p>
<p>ところがどっこい、<a href="http://imagedrive.tumblr.com/post/7251542317/using-embedded-fonts-in-epub-for-ibooks" target="_blank">iBooks用のEPUBで埋め込みフォントを使う</a>というエントリーに従って設定ファイルを追加することで、フォントの指定が有効になりました。</p>
<p>これでヒラギノ明朝を使うことができるようになりました。font-familyの指定は<a href="http://blog.imagedrive.jp/web/research/2011/10/20/css-font-family-for-ibooks-on-ios5" target="_blank">iOS5 の iBooks でフォントを指定する方法</a>というエントリーをご覧下さい。</p>
<p>あと、このファイルを追加した副産物として、リンク色を指定できるようになりました。これまではa:linkとかa:visitedとかに色やテキスト装飾を指定しても無視されていたのですが、ちゃんと効くようになりました。もしかしたら、「この程度の情報にも辿り着けないアホはデザインすんじゃねーぞ」っていうAppleからのメッセージなのかもしれませんね。</p>
<h3>圏点サポート</h3>
<p>CSS3がサポートされたので、圏点もサポートされるようになりました。サポートのされ具合は<a href="http://momdo.s35.xrea.com/web-html-test/CSS3-memo/text-emphasis.html" target="_blank">text-emphasis (CSS3 Text)</a>をMobile Safariで見るとわかりやすいです。</p>
<h2>iBooks日本語組版対応でイケてない内容</h2>
<h3>フォント指定</h3>
<p>まだしっかり検証していない情報。フォント指定で以下のように書くことで和欧混植ができたのですが、なんとなく一つ目のフォント以外は無視されているような気がします。</p>
<pre class="brush: css; title: ; notranslate">
font-family:georgia, 'HiraMinProN-W3', serif;
</pre>
<p>いつのバージョンだったか忘れましたが、PC版Safariがfont-familyをちゃんと読まないというバグがありました。他のブラウザは1番目のフォントがなかったら次のフォントという具合に読んでいってくれるので、上記の指定で和欧混植が出来たのですが、無理っぽいですね。</p>
<p>まあ、そのうち対応するでしょう。和漢混植が実現するのはいつのことやら……</p>
<h3>縦書き</h3>
<p>縦書きは表示されますが、ページングが逆になるみたいです。</p>
<h2>その他</h2>
<ul>
<li>ePub3.0になって、メタファイルがどう変わったのかを調べましたが、けっこうめんどくさかった。とりあえず<a href="http://www.epubcafe.jp/jbasic" target="_blank">イーストのサンプル</a>をダウンロードしてことなきを得る。基本は変わってない。</li>
<li>まだePub3.0対応のエディタはないっぽい。Sigilの対応に期待。基本的にはメタファイルのxmlタグ名や属性値なんて覚えたくないので、IDEの発展が待たれる。</li>
<li>Androidのことはよくわからない。</li>
<li><a href="http://labs.adobe.com/downloads/digitaleditions1-8.html" target="_blank">Adobe Digital Editionのプレビュー版</a>があればPCでもそこそこ読める。</li>
</ul>
<h2>終りに</h2>
<p>今回、旧作をアップデートしてみましたが、やはり沢山コンテンツがないと意味ないと思ったので、年内に2〜3本新作を追加してみたいと思います。あと、PDFも作ってると大変なので、しばらくは「iOS5端末を持っている人向けにePub3を出していく」という方針でいきます。</p>
<p>あと、立ち読みページなんかも作ってみましたので、まだ買っていない人は『<a title="ハムスターに水を" href="http://takahashifumiki.com/ebook/%e3%83%8f%e3%83%a0%e3%82%b9%e3%82%bf%e3%83%bc%e3%81%ab%e6%b0%b4%e3%82%92">ハムスターに水を</a>』を見てみてください。。</p>
<div id="fastlookup_top" style="display: none;"></div>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/web/design/1035/' rel='bookmark' title='iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）'>iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）</a></li>
<li><a href='http://takahashifumiki.com/web/design/1063/' rel='bookmark' title='iBooks用のePub作成覚え書き（text-alignハックと明朝体とか）'>iBooks用のePub作成覚え書き（text-alignハックと明朝体とか）</a></li>
<li><a href='http://takahashifumiki.com/announcement/984/' rel='bookmark' title='長編小説「ハムスターに水を」ePub版販売開始'>長編小説「ハムスターに水を」ePub版販売開始</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/1842/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iOSやMac OS Lionの布っぽいテクスチャをPhotoshopで作るチュートリアル</title>
		<link>http://takahashifumiki.com/web/design/1535/</link>
		<comments>http://takahashifumiki.com/web/design/1535/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 03:00:50 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Photoshop]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=1535</guid>
		<description><![CDATA[今このブログのリニューアルを検討していて、Photoshopをちまちまいじってます。その過程でちょっとした発見があったので、一応共有します。本当にあってるかどうか分かんないで、話半分に読んでください。 先日Appleから [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1536" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture1.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture1-300x186.png" alt="Safariの裏地はこんなの" title="Safariの裏地はこんなの" width="300" height="186" class="size-medium wp-image-1536" /></a><p class="wp-caption-text">Safariの裏地はこんなの</p></div>
<p>今このブログのリニューアルを検討していて、Photoshopをちまちまいじってます。その過程でちょっとした発見があったので、一応共有します。本当にあってるかどうか分かんないで、話半分に読んでください。</p>
<p>先日AppleからLionことMac OS 10.7が出ましたが、全体的にスクロールの挙動が変わり、ブラウザで限界までスクロールするとびよーんと動いて、ブラウザの裏地（という表現でいいのか）が見えるようになりました。<br class="clrL" /></p>
<div id="attachment_1537" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture2-e1312670183866.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture2-e1312670183866-300x263.png" alt="iOSのフォルダにも裏地" title="iOSのフォルダにも裏地" width="300" height="263" class="size-medium wp-image-1537" /></a><p class="wp-caption-text">iOSのフォルダにも裏地</p></div>
<p>この裏地っぽいテクスチャはiOSでも使われていて、アプリケーションのフォルダを開くと見えたりします。これからAppleにとって「裏」とか「領域外」の表現はこれがスタンダードなのかなと。</p>
<p>僕もこれを真似しようと思ったんですが、なかなかこれだというのが見つからなかったので、自分で作ってみました。以下、そのやり方です。</p>
<p>一応、順を追って説明しますが、僕はデザイナーではないので、そのものズバリを再現するまでは行きません。「こんな感じ」というレベルです。</p>
<p>いったんテクスチャとして取得してしまえば、あとは乗算でブレンドするなり、強度を変えるなりして工夫すればそれなりに似たものはできると思います。</p>
<h2 class="clrL">ステップ1. 裏地を観察する</h2>
<p>パッと見、この裏地はなんかの布地なんじゃないかと思って、&#8221;Photoshop tutorial texture mac&#8221;で探したんですが、なかなか見つかりません。「テクスチャ」も「布地」も英語にしちゃうと一緒ですからね。</p>
<p>さらによく観察すると、これは布ではなく、引っかき傷みたいなものが縦横に走っているんだということがわかりました。引っかき傷といえば、Mac OS X 10.5まではアルミのすり切れたような表現（ヘアライン？）が随所に使われていました。あれからメタリックなてかりを覗いた感じですね。</p>
<p>ということで、「ヘアラインを垂直に重ねればできるんじゃないか」という考えに至りました。</p>
<h2>ステップ2. ヘアラインを2つ作って重ねる</h2>
<p>ヘアラインの作り方は以下のとおりです。</p>
<ol>
<li>ランダムな点を描く</li>
<li>それを横に引き伸ばす</li>
<li>終わり</li>
</ol>
<p>では、やってみます。</p>
<p>1. 新規ドキュメントを作ったら、真っ白なレイヤーに「フィルター &gt; ノイズ &gt; ノイズを加える」を選びます。点々が入ります。</p>
<div id="attachment_1538" class="wp-caption alignnone" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture3-e1312669201667.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture3-e1312669201667-300x167.png" alt="フィルタ &gt; ノイズ &gt; ノイズを加える" title="フィルタ &gt; ノイズ &gt; ノイズを加える" width="300" height="167" class="size-medium wp-image-1538" /></a><p class="wp-caption-text">フィルタ &gt; ノイズ &gt; ノイズを加える</p></div>
<p>2. ノイズが入ったら、「イメージ &gt; 色調補正 &gt; 色相・彩度」で色味を抜かします。</p>
<div id="attachment_1539" class="wp-caption alignnone" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture4-e1312669282649.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture4-e1312669282649-300x154.png" alt="イメージ &gt; 色調補正 &gt; 色相・彩度" title="イメージ &gt; 色調補正 &gt; 色相・彩度" width="300" height="154" class="size-medium wp-image-1539" /></a><p class="wp-caption-text">イメージ &gt; 色調補正 &gt; 色相・彩度</p></div>
<p>3. 続いて、「フィルタ &gt; ぼかし &gt; ぼかし（移動）」で適当に値を調整します。ヘアラインっぽいものができます。</p>
<div id="attachment_1540" class="wp-caption alignnone" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture5-e1312669354115.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture5-e1312669354115-300x182.png" alt="フィルタ &gt; ぼかし &gt; ぼかし（移動）" title="フィルタ &gt; ぼかし &gt; ぼかし（移動）" width="300" height="182" class="size-medium wp-image-1540" /></a><p class="wp-caption-text">フィルタ &gt; ぼかし &gt; ぼかし（移動）</p></div>
<p>4. 新規レイヤーを作って、1と2をもう一度繰り返します。そして、3のぼかしに入る前にレイヤーを回転させてからぼかします。ぼかしが終わったら回転もう一度回転させます。</p>
<div id="attachment_1541" class="wp-caption alignnone" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture6-e1312669436456.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture6-e1312669436456-300x193.png" alt="90°回転させてからフィルタ" title="90°回転させてからフィルタ" width="300" height="193" class="size-medium wp-image-1541" /></a><p class="wp-caption-text">90°回転させてからフィルタ</p></div>
<p>5. できたら描画モードを「通常」から「乗算」に変更します。</p>
<div id="attachment_1542" class="wp-caption alignnone" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture7.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture7-300x200.png" alt="とりあえず完成" title="とりあえず完成" width="300" height="200" class="size-medium wp-image-1542" /></a><p class="wp-caption-text">とりあえず完成</p></div>
<p>これで一応完成です。そのものズバリという感じではありませんが、ノイズの量とかぼかしの強さをちょうせすれば、また色々と変わってくるかと思います。</p>
<h2>ステップ3. テクスチャを調整する</h2>
<div id="attachment_1543" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture8.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/08/texture8-300x208.png" alt="色とグラデーションを入れたもの" title="色とグラデーションを入れたもの" width="300" height="208" class="size-medium wp-image-1543" /></a><p class="wp-caption-text">色とグラデーションを入れたもの</p></div>
<p>これで一応テクスチャはできたわけなので、後はいろいろとやりようがあるんじゃないでしょうか。Appleのヤツのほうが、もっとメリハリがはっきりしてますね。</p>
<p>今のところはグレーなので、色の付いたものに重ねたりするといいでしょう。グラデーションとかで調整してください。</p>
<p>以上で終わりです。</p>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/others/1860/' rel='bookmark' title='山梨開拓日誌〜TVのない正月編〜'>山梨開拓日誌〜TVのない正月編〜</a></li>
<li><a href='http://takahashifumiki.com/web/design/673/' rel='bookmark' title='デザイン力向上のために言われたことをやる(2)'>デザイン力向上のために言われたことをやる(2)</a></li>
<li><a href='http://takahashifumiki.com/web/design/1508/' rel='bookmark' title='MacをLion(10.7)にしても挫けなかったけどカラーピッカーで挫けた'>MacをLion(10.7)にしても挫けなかったけどカラーピッカーで挫けた</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/1535/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MacをLion(10.7)にしても挫けなかったけどカラーピッカーで挫けた</title>
		<link>http://takahashifumiki.com/web/design/1508/</link>
		<comments>http://takahashifumiki.com/web/design/1508/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 01:00:45 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=1508</guid>
		<description><![CDATA[マカーの皆さん、もうLionに変えましたでしょうか。10.7になってiOSでの成果を取り入れた結果、衝撃的な変化がけっこうありました。僕はこんな印象を受けました。 マウスのスクロール方向が逆。タッチパネルじゃないから違和 [...]]]></description>
			<content:encoded><![CDATA[<p>マカーの皆さん、もうLionに変えましたでしょうか。10.7になってiOSでの成果を取り入れた結果、衝撃的な変化がけっこうありました。僕はこんな印象を受けました。</p>
<ul>
<li>マウスのスクロール方向が逆。タッチパネルじゃないから違和感あるっちゃありますが、一生懸命やり方を覚えてます。</li>
<li>Rosettaなくなる。僕はそんなに古いアプリを使っていないので、特に困りませんでした。<a href="http://veadardiary.blog29.fc2.com/blog-entry-341.html">Mac the Ripper</a>が使えなくなったことぐらいですかね。でも僕は一度見た映像を何度も見ない人間なので、リッピングもあんまり必要ないです。</li>
<li>Javaの公式サポートなくなる。Javaは「業務用」っていうイメージがあるので、別にいいかな。</li>
<li>ExposéとSpacedがMisson Controlへと謎の統合を果たす。これも慣れてないから違和感ありますが、まあ別にいいです。今年の夏があんまり暑くならないことに比べたらどうでもいいですね。</li>
<li><a title="Mac OS X Lion 対応リモート Time Machine サーバー構築" href="http://rewse.jp/blog/p/3569" target="_blank">TimeMachineがAFP3.3しかサポートしない</a>。おかげでI-OデータのNASがバックアップ用に使えなくなりましたが、そもそもI-Oデータにはあんまり期待してなかったので別にいいです。</li>
</ul>
<div id="attachment_1512" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/07/text-edit.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/07/text-edit-300x301.png" alt="縦書き対応したテキストエディット" title="縦書き対応したテキストエディット" width="300" height="301" class="size-medium wp-image-1512" /></a><p class="wp-caption-text">縦書き対応したテキストエディット</p></div>
<p>悪いことばかり挙げましたが、いいところもたくさんあります。アニメーションのクオリティはさらに上がってますし、心なしかストレスが軽減されているような気がします。とりわけ個人的なビッグイシューだったのは縦書きのネイティブサポートです。iWorksは縦書きできませんが、あれだけいらない子だったテキストエディットが可愛く見えてくるほどです。</p>
<p>あと、Safari5.1のCSS3日本語サポートが改善して、text-justify:inter-ideographが有効になりましたね。Safari5.1でこのサイトを見ると、行末が揃っていることだと思います。</p>
<p>とまあ、困った事はいろいろ合ったんですが、僕はなるべく人のいいところを見つけて生きていこうと心がけているので、けっこう楽しんで使ってました。</p>
<p>そんな僕なんですが、たった一つだけ困った事がありました。</p>
<h2 class="clrL">Macのカラーピッカーどうしてる？</h2>
<div id="attachment_1510" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/07/digital-color-meter1.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/07/digital-color-meter1-300x300.png" alt="DigitalColor Pickerって知ってました？" title="DigitalColor Pickerって知ってました？" width="300" height="300" class="size-medium wp-image-1510" /></a><p class="wp-caption-text">DigitalColor Pickerって知ってました？</p></div>
<p>Web開発を行う人なら誰でもカラーピッカーというものを使うと思います。任意のＲＧＢカラーの番号を教えてくれる憎いヤツですね。FirefoxとかChromeならEyeDropperとかそういうアドオンがあって、無料で色番号を取れてしまいますが、ローカルの画像とかいちいちブラウザに読み込ませるのはめんどくさいです。僕はそういうとき、Macにデフォルトで入ってるDigitalColor Meterというアプリを使っていました。</p>
<p>これはアプリケーション &gt; ユーティリティに入っていて（もしかしたらXcode入れないと存在しないかもしれません）マウスオーバーしたディスプレイ上の色を教えてくれるんですね。これまでは知りたい色があったら、Command + TabでDigitalColor Meterにフォーカスを当てて、カーソルを合わせ、Shift + Command + Cで色の16進数コピー完了でした。</p>
<p>僕はこれまで、「ププーッ！　この人、色番号を知るためだけにPhotoshopを開いているよ！」とか、「なんでAppStoreにカラーピッカーアプリが$5で売ってるんだよ、詐欺だろ」とかコッソリ思ってたんですが、Lionにしたことで衝撃的な結果が判明。</p>
<div id="attachment_1511" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/07/digital-color-picker2.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/07/digital-color-picker2-300x197.png" alt="この状態でShift + Command + Cでよかった" title="この状態でShift + Command + Cでよかった" width="300" height="197" class="size-medium wp-image-1511" /></a><p class="wp-caption-text">この状態でShift + Command + Cでよかった</p></div>
<p>なんと、このDigitalColor Meterさん、Lionになって色番号をコピーする機能を失ったんですね！　いったい何のために！　いまのところできることは、RGBで表示される255, 156, 221という番号を暗記して入力することぐらい。いったいなぜこの機能を削除してしまったのか、本当にがっかりしました。<br class="clrL" /></p>
<div id="attachment_1509" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/07/appstore-colorpicker.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/07/appstore-colorpicker-300x234.png" alt="AppStoreに並ぶカラーピッカー" title="AppStoreに並ぶカラーピッカー" width="300" height="234" class="size-medium wp-image-1509" /></a><p class="wp-caption-text">AppStoreに並ぶカラーピッカー</p></div>
<p>色番号を取得してコピペできるようにするのがそんなに難しい技術だとは思えないので、たぶんAppStoreに並んでいるカラーピッカーアプリ開発者たちに気を使ったんでしょう。AppStoreに並んでいる85円の奴がどう見てもDigitalColor Meterを30°回転させたものにしか見えません。</p>
<p>まあ、3000円もしないOSなので、アプリ市場を活性化させて稼ごうっていう魂胆はわからないでもないですが、こんな細かいところまで気を使うのかと思ってちょっとびっくりしちゃいました。一応、<a href="http://www.macosxtips.co.uk/index_files/replace-digitalcolor-meter-in-lion.php" target="_blank">AppleScriptでなんとかする方法もある</a>みたいなんですが、そこまでするんだったら85円ぐらい払ってもいいかなとか思っちゃいますね。終わり。</p>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/web/programing/1403/' rel='bookmark' title='Mac用テキストエディタの最高峰CotEditorを入力補完できるまで設定する'>Mac用テキストエディタの最高峰CotEditorを入力補完できるまで設定する</a></li>
<li><a href='http://takahashifumiki.com/web/design/1535/' rel='bookmark' title='iOSやMac OS Lionの布っぽいテクスチャをPhotoshopで作るチュートリアル'>iOSやMac OS Lionの布っぽいテクスチャをPhotoshopで作るチュートリアル</a></li>
<li><a href='http://takahashifumiki.com/web/design/673/' rel='bookmark' title='デザイン力向上のために言われたことをやる(2)'>デザイン力向上のために言われたことをやる(2)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/1508/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPressのエラー画面（wp_die）をカスタマイズ</title>
		<link>http://takahashifumiki.com/web/design/1450/</link>
		<comments>http://takahashifumiki.com/web/design/1450/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 03:00:14 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=1450</guid>
		<description><![CDATA[「wp_die カスタマイズ」でググっても日本語のページが該当しなかったので書いておきます。 WordPressにはいくつかのエラーページがあります。 404エラー これは該当するURLが存在しなかったときですね。テーマ [...]]]></description>
			<content:encoded><![CDATA[<p>「wp_die カスタマイズ」でググっても日本語のページが該当しなかったので書いておきます。</p>
<p>WordPressにはいくつかのエラーページがあります。</p>
<dl>
<dt>404エラー</dt>
<dd>これは該当するURLが存在しなかったときですね。テーマフォルダ内に404.phpを置いておけば大丈夫です。<a href="http://wpdocs.sourceforge.jp/Creating_an_Error_404_Page" target="_blank">Codex</a>にやり方が書いてあります。</dd>
<dt>データベース接続エラー</dt>
<dd> WordPressがデータベースに接続できなかったときに表示される画面です。表示されるタイミングとして一番多いのは、はてぶでホッテントリに入ったりYahooニュースに紹介されたりして大量のアクセスを食らったときでしょうか。今はどうか知りませんが、<a href="http://coliss.com/" target="_blank">コリス</a>さんとか<a href="http://www.ideaxidea.com/" target="_blank">IDEA*IDEA</a>さんとかはたまになってましたね。これはdogmap.jp「<a href="http://dogmap.jp/2009/07/14/wordpress-customize-db-error/" target="_blank">WordPress のデータベースエラーページをカスタマイズ</a>」にやり方が書いてあるので、そのとおりやればよろしいです。メンテナンスモード時の表示についてもドロップインというやり方で同じように変更できます。</dd>
<dt>wp_die</dt>
<dd>これが本題です。WordPressにはwp_dieという関数があります。WordPressが処理を行う上で、以上が発生した場合に呼び出される関数ですね。このカスタマイズ方法について説明します。</dd>
</dl>
<h2>wp_dieのデフォルトの挙動</h2>
<div id="attachment_1451" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/06/wp_die.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/06/wp_die-300x235.png" alt="wp_dieで表示される画面" title="wp_dieで表示される画面" width="300" height="235" class="size-medium wp-image-1451" /></a><p class="wp-caption-text">wp_dieで表示される画面</p></div>
<p>さて、wp_dieというのはPHPのdie関数と同じく、「もうこれ以上は処理しないよ」という緊急避難的な関数です。一応メッセージは表示されますが、いたってシンプル。関数の性質上、公開画面でも管理画面でも呼び出されるので、シンプルにしておいた方がいいという結論なんでしょうね。</p>
<p>この画面に遭遇するパターンは以下です。</p>
<ul class="clrL">
<li>コメントフォームに何も入れないで送信しちゃった</li>
<li>nonceが設定されていないログアウトのリンクを踏んだ</li>
</ul>
<p>普通のブログとしてWordPressを使っている分にはお目にかかることも少ないのですが、Webアプリっぽくフォームをたくさん使っている場合はwp_dieが使えると便利です。使い方はこんな感じですね。</p>
<pre class="brush: php; title: ; notranslate">
//なんらかの処理を行い、エラーがあった場合はwp_dieを実行
if($error){
     wp_die(&quot;エラー: 不正な処理がありました&quot;, &quot;Internal Server Error: 私のブログ&quot;);
}
//これ以降は実行されない
</pre>
<h2>wp_dieをカスタマイズする</h2>
<p>wp_dieをカスタマイズするには、まず自作の関数を2つ用意します。一つ目はwp_dieで画面をレンダリングする関数名を指定する関数（my_wp_die_handlerとか）で、もう一つは実際にレンダリングをする関数（my_wp_die）ですね。まずは一つ目の関数を指定する関数を書いて、フィルターフックにひっかけます。テーマ内のfunctions.phpとかに書いておけばいいでしょう。</p>
<pre class="brush: php; title: ; notranslate">
function my_wp_die_handler($function){
     //get_bloginfoが使えれば使う。
     //なければデフォルトのwp_dieを使う
     if(function_exists(&quot;get_bloginfo&quot;) &amp;&amp; &quot;&quot; != get_bloginfo(&quot;template_directory&quot;)){
          return &quot;my_wp_die&quot;;
     }else{
          return $function;
     }
}
add_filter(&quot;wp_die_handler&quot;, &quot;my_wp_die_handler&quot;, 1000);
</pre>
<p>一応、テーマディレクトリを参照できるかどうかを確認して、できなければ通常のものを使うようにしています。なぜこんな風にしているかというと、wp_dieはその性質上、どこで呼び出されるかわからないんですね。場合によってはWordPressがテーマを取得する前に実行されるかもしれません。それを防ぐために一応チェックしてます。まあfunctions.phpに書いてあるなら大丈夫だとは思いますが、念のため。</p>
<p>さて、あとはmy_wp_dieをfunctions.phpに書けばいいんですが、エラー処理などけっこう書くことが多いです。もともとwp_dieのレンダリングに使われていた関数_default_wp_die_handler（wp-includes/functions.phpに定義されてます）は<a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/functions.php#L2781" target="_blank">こんな感じ</a>です。</p>
<p>長いですね。IE用におまじない（IEはエラーページの容量が小さいとブラウザが勝手に表示を変える）を書いているのが泣けます。これと同じのを書くのはめんどくさいですし、間違ってしまうかもれません。しかし、多くの人が変えたいのは見た目だけだと思いますので、まるまるコピペして、関数名をmy_wp_dieに変更した後、&lt;html&gt;〜&lt;/html&gt;の中だけこんな感じで変えます。</p>
<pre class="brush: php; highlight: [5,6,10,11,12,13,14,15,16,17]; title: ; notranslate">
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &lt;?php if ( function_exists( 'language_attributes' ) &amp;&amp; function_exists( 'is_rtl' ) ) language_attributes(); else echo &quot;dir='$text_direction'&quot;; ?&gt;&gt;
&lt;head&gt;
     &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
     &lt;title&gt;&lt;?php echo $title ?&gt;::&lt;?php bloginfo('name'); ?&gt;&lt;/title&gt;
     &lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;?php bloginfo(&quot;stylesheet_url&quot;); ?&gt;&quot; type=&quot;text/css&quot; /&gt;
     &lt;link rel=&quot;shorcut icon&quot; href=&quot;&lt;?php bloginfo(&quot;template_directory&quot;); ?&gt;/images/favicon.ico&quot; /&gt;
&lt;?php endif; ?&gt;
&lt;/head&gt;
&lt;body id=&quot;error-page&quot;&gt;
     &lt;div class=&quot;head&quot;&gt;
          &lt;h1&gt;
               &lt;a href=&quot;&lt;?php bloginfo('site_url'); ?&gt;&quot;&gt;
                    &lt;img src=&quot;&lt;?php bloginfo(&quot;template_directory&quot;); ?&gt;/images/header-logo.png&quot; alt=&quot;&lt;?php bloginfo(&quot;name&quot;); ?&gt;&quot; /&gt;
               &lt;/a&gt;
          &lt;/h1&gt;
          &lt;p class=&quot;description&quot;&gt;&lt;?php bloginfo('description'); ?&gt;&lt;/p&gt;
     &lt;/div&gt;
&lt;?php endif; ?&gt;
     &lt;div class=&quot;message&quot;&gt;
          &lt;?php echo $message; ?&gt;
     &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>要はCSSのパスだけ自分のテーマのものに変えて、ロゴとかを出しただけですね。ちなみに19行目に謎のendif;がありますが、これは管理画面でヘッダーを出力したあとにwp_dieが呼び出されるケースがあるようなので、消さない方がいいです。もちろん、その場合、headセクションは出力されないので見た目をコントロールすることはできません。ともかく、これでwp_dieがカスタマイズできました。よかったですね。</p>
<div id="attachment_1452" class="wp-caption aligncenter" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/06/wpdb_minicome.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/06/wpdb_minicome-300x249.png" alt="カスタマイズされたwp_die" title="カスタマイズされたwp_die" width="300" height="249" class="size-medium wp-image-1452" /></a><p class="wp-caption-text">カスタマイズされたwp_die</p></div>
<h3>おまけ1: 関数の定義元をどうやって見つけるか</h3>
<p>WordPressや昨今はやりのオブジェクト指向フレームワークは膨大な量のコードがはじめっから書かれているので、どこでなにがどうなっているのか、細かくはわかりません。</p>
<p>そういう場合、関数の定義元を探る必要があります。僕はAptana Studioというのを使っているので、「なんだこの関数は？」と思ったら関数にフォーカスしてF3を押してます。そうすると、定義元に飛べるんですね。ある程度のIDEなら普通は備わっている機能です。他にもフォルダ単位で文字列を検索したりする機能もよく使います。しょぼいテキストエディタや古いDreamWeaverを使っている人はこれができなくて人生を損している可能性があるので、色々と考えなおしてみてください。ちょっと古いですが、参考リンクを挙げておきます。<a href="http://techblog.ecstudio.jp/tech-tips/php/phpeclipse.html" target="_blank">EC Studio 技術ブログ「テキストエディタからPHPEclipseへ移行した決め手」</a></p>
<h3>おまけ2: エラーページのデザイン</h3>
<p>WordPressに限った話ではないのですが、デザイナーさんで何も言わなくてもエラーページを作ってくれる人がいます。これは大変ありがたいのですが、3カラム構成のサイトでメインカラムにエラーメッセージを表示しただけのデザインのときがあります。</p>
<p>エラーにもいろいろあって、404とかは本気のエラーじゃないんでそれでもいいですが、500とかはわりと本気のエラーなので、いろんなコトできないんですね。サイトの他の部分で当たり前に出力されていたもの（グローバルナビとか）が出力できなかったりします。</p>
<p>なので、本気のエラーページをデザインするときは極力シンプル（基本はエラーメッセージだけで、できれば1カラム）で、あきらかにエラーとわかるデザインだと嬉しいですね。Twitterのくじら画面みたいな。</p>
<p>あと、エラーメッセージはプラグラム側でpタグにくるんで出力されることが多いので、「どう考えてもこれvertical-align:middleじゃないと駄目だろjk」みたいなデザインはイヤです。マークアップ上の工夫がいらないシンプルな奴が嬉しいですね。</p>
<p>まあ、500エラーとかまできちんと作りこんでいるサイトはあんまりないですし、IISのエラー画面とかApacheの403 Forbiddenとかはよく見るので別にいいっちゃいいんですが。というわけで、終わり。</p>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/web/design/937/' rel='bookmark' title='WordPressのテーマちょびっとカスタマイズ'>WordPressのテーマちょびっとカスタマイズ</a></li>
<li><a href='http://takahashifumiki.com/web/programing/1348/' rel='bookmark' title='WordPressでbloginfoなくしてもDB負荷は減らないんじゃないかという話'>WordPressでbloginfoなくしてもDB負荷は減らないんじゃないかという話</a></li>
<li><a href='http://takahashifumiki.com/web/design/958/' rel='bookmark' title='WordPressのiPhone用テーマをカスタマイズ'>WordPressのiPhone用テーマをカスタマイズ</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/1450/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPressで携帯サイト作るときの情報源など</title>
		<link>http://takahashifumiki.com/web/design/1370/</link>
		<comments>http://takahashifumiki.com/web/design/1370/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 14:42:08 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[携帯]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=1370</guid>
		<description><![CDATA[WordPressで携帯対応サイトをつくることになったので、そのメモです。他人に教える用です。 基本3キャリア限定です。PCサイトと携帯サイトの両方に対応するような場合を想定しています。あと、基本はDoCoMo902以降 [...]]]></description>
			<content:encoded><![CDATA[<p>WordPressで携帯対応サイトをつくることになったので、そのメモです。他人に教える用です。</p>
<p>基本3キャリア限定です。PCサイトと携帯サイトの両方に対応するような場合を想定しています。あと、基本はDoCoMo902以降の端末で、非公式サイトを想定しています。</p>
<h2>使用するプラグイン＝ktai-style一択</h2>
<p><a href="http://wppluginsj.sourceforge.jp/ktai_style/">http://wppluginsj.sourceforge.jp/ktai_style/</a></p>
<p><a href="http://wppluginsj.sourceforge.jp/ktai_style/">ktai-style</a>をWordPressをガラケー（スマートフォンじゃない携帯電話）に対応させるプラグインです。これ以外の選択肢はほとんどありませんし、なんらかの理由で使わないのであれば、WordPress以外も検討してみたほうがいいです。</p>
<p>ドキュメント（html）がプラグインに同梱されているので、熟読しましょう。フィルターとかフックもかなり用意されているので、プラグイン作成の方法を学ぶにも勉強になります。</p>
<h2>公式情報</h2>
<ol>
<li><a href="http://www.nttdocomo.co.jp/service/imode/make/index.html">作ろうiモードコンテンツ | サービス・機能 | NTTドコモ</a></li>
<li><a href="http://www.au.kddi.com/ezfactory/index.html">KDDI au: EZfactory</a></li>
<li><a href="http://creation.mb.softbank.jp/">Softbank MOBILE CREATION</a></li>
</ol>
<p>各キャリアとも、公式CPの場合だけ見られる素敵なドキュメント群（大量のPDF）がありますが、公式サイトのことは割愛します。NDAとかもあったような気がするので。</p>
<p>アプリの作り方、Flash Liteの仕様などもこちらに載っていますが、公式の情報だけを鵜呑みにせず、ネットを検索しましょう。</p>
<h2>シミュレータ</h2>
<h3><a href="http://firemobilesimulator.org/">FireMobileSimulator</a></h3>
<p>Firefoxのプラグイン。なんとなく画面の雰囲気を掴みたいときはこれ。絵文字とかも再現してくれる。他にも幾つかありますが、これだけで十分だと思います。</p>
<h3><a href="http://www.nttdocomo.co.jp/service/imode/make/content/browser/html/tool2/">iMode simulator Ⅱ</a></h3>
<p>DoCoMoの公式シミュレータ。UAはなしだった気がする。あと、バージョンが古い。</p>
<h3><a href="http://creation.mb.softbank.jp/doc_tool/tool_list.html">Softbank ウェブコンテンツヴューア</a></h3>
<p>発音が難しい、Softbankの公式シミュレータ。いくらなんでもバージョンが古すぎる。</p>
<h3>Openwave SDK6.2K</h3>
<p>au用のシミュレータ。しかし、なぜか<a href="http://www.au.kddi.com/ezfactory/tool/ue/index.html">配布が終了されている</a>ので、インターネットアーカイブからがんばってダウンロードするのが吉。<a href="http://replay.web.archive.org/20070203125821/http://developer.openwave.com/ja/tools_and_sdk/openwave_mobile_sdk/SDK62K/index.html ">このURL</a>なら多分大丈夫。法的にOKかどうかは知らない。</p>
<p>ダウンロードできなかったら、<a href="http://www.archive.org/">Internet Archive</a>で以下のURLを検索してください。2006〜2007年ぐらいまで遡ればまだあります。</p>
<p>http://developer.openwave.com/ja/tools_and_sdk/openwave_mobile_sdk/SDK62K/index.html</p>
<p>公式のシミュレータはどれもバージョンが古いので、「持ってると安心」ぐらいの感覚でいましょう。ちなみに、すべてWin XPじゃないと動かないと思います。MacユーザーはVMwareとかを買いましょう。<del>Combo Box</del>というのは無料らしいです。<ins>Virtual Boxでした</ins>ソフト一個買って足が出るような仕事なら断っちゃって下さい。</p>
<div class="tmkm-amazon-view">
<p class="tmkm-amazon-title"><a href="http://www.amazon.co.jp/%E3%82%A2%E3%82%AF%E3%83%88%E3%83%BB%E3%83%84%E3%83%BC-VMware-Fusion-3/dp/B002TK93ZW%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002TK93ZW" target="_blank">VMware Fusion 3 <small>[ソフトウェア]</small></a></p>
<p><a href="http://www.amazon.co.jp/%E3%82%A2%E3%82%AF%E3%83%88%E3%83%BB%E3%83%84%E3%83%BC-VMware-Fusion-3/dp/B002TK93ZW%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002TK93ZW" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31SPRCtEAYL._SL160_.jpg" border="0" alt="VMware Fusion 3" /></a></p>
<p><em>価格: </em>￥ 10,800</p><p><em>出版社: </em>アクト・ツー</p><p><em>商品カテゴリー: </em>CD-ROM</p>
<hr class="tmkm-amazon-clear" />
</div>
<h2>有用な非公式（？）情報源</h2>
<ul>
<li><a href="http://ke-tai.org/">ke-tai.org ケータイプログラマのためのコミュニティサイト</a></li>
<li><a href="http://mobiledesignarchive.jp/">モバイルサイトデザイン集のモバイルデザインアーカイブ</a></li>
<li><a href="http://www.plusmb.jp/">携帯サイトをつくろう</a>（デザイン変わった？）</li>
<li><a href="http://labs.unoh.net">ウノウラボ</a>（携帯情報源というわけではないですが、良質な携帯関連情報が多いです）</li>
<li><a href="http://blogs.itmedia.co.jp/fukuyuki/">村上福之の「ネットとケータイと俺様」</a>（面白いから）</li>
</ul>
<h2>携帯で制作する上での注意点</h2>
<h3>キャリア間差異の吸収</h3>
<p>携帯はキャリアごとにかなりの差があります。基本的にはktai-styleに備え付けの機能をうまく使った方が楽に開発できますし、アップデートにも対応可能です。</p>
<h4>文書構造</h4>
<p>文書構造が各キャリアで違います。また、WordPressでxhtmlとして動かしたい場合、xmlヘッダーを吐かなければDoCoMoが受け付けてくれないので、その点注意してください。</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
header(&quot;Content-Type: application/xhtml+xml; charset=Shift_JIS&quot;);
?&gt;
</pre>
<p>とか。ktai-styleはそこらへんをよしなにやってくれます。同梱のテーマファイルのheader.phpをよく読みましょう。</p>
<h4>HTMLタグ</h4>
<p>個体識別番号の取得方法やmarqueeタグの属性値が違ったりします。ktai-styleにはコンディショナルタグがあるので、キャリアを判別してくれる関数を書いておくと楽です。Web上にまとまった携帯用HTMLタグ辞典みたいなものがないので（<a href="http://dspt.blog59.fc2.com/blog-entry-21.html">携帯サイトをつくろう</a>さんぐらい）、一冊ぐらいレファレンス持っていた方がいいかもしれません。</p>
<div class="tmkm-amazon-view">
<p class="tmkm-amazon-title"><a href="http://www.amazon.co.jp/%E6%90%BA%E5%B8%AF%E7%AB%AF%E6%9C%AB%E7%94%A8Web%E5%88%B6%E4%BD%9C%E3%83%90%E3%82%A4%E3%83%96%E3%83%AB-%E7%AC%AC2%E7%89%88-ADVANCED-DESIGN-BOOKS/dp/4798111287%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798111287" target="_blank">携帯端末用Web制作バイブル 第2版 (ADVANCED WEB DESIGN BOOKS) <small>[書籍]</small></a></p>
<p><a href="http://www.amazon.co.jp/%E6%90%BA%E5%B8%AF%E7%AB%AF%E6%9C%AB%E7%94%A8Web%E5%88%B6%E4%BD%9C%E3%83%90%E3%82%A4%E3%83%96%E3%83%AB-%E7%AC%AC2%E7%89%88-ADVANCED-DESIGN-BOOKS/dp/4798111287%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798111287" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41GBAT8XQJL._SL160_.jpg" border="0" alt="携帯端末用Web制作バイブル 第2版 (ADVANCED WEB DESIGN BOOKS)" /></a></p>
<p><em>価格: </em>￥ 2,940</p><p><em>著者: </em>八木澤 知彦</p><p><em>出版社: </em>翔泳社</p><p><em>出版日: </em>2006-06-27</p><p><em>商品カテゴリー: </em>大型本</p><p><em>ページ数: </em>304</p><p><em>ISBN: </em>4798111287</p>
<hr class="tmkm-amazon-clear" />
</div>
<h4>CSS</h4>
<p>CSSは事実上インラインCSSしか使えないと思っておいた問題ないです。難しいことはほとんどできないので、文字装飾と背景色ぐらいでしょうか。文字色変えるタグを関数化しておくといいと思います。</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
//functions.phpに記載 cがバッティングしたらごめんなさい。
function c($str, $hex = &quot;ff0000&quot;){
    echo &quot;&lt;span style=\&quot;color:#{$hex};\&quot;&gt;{$str}&lt;/span&gt;&quot;;
}
?&gt;
</pre>
<h4>Javascript</h4>
<p>使えません。iModeブラウザがバージョンアップして使えるようになったとのことですが、<a href="http://neta.ywcafe.net/001039.html">ある事件</a>をきっかけにとんと聞かなくなりました。いま携帯専門Web屋さんたちの間ではどういう扱いになってるのか非常に気になります。</p>
<h4>絵文字</h4>
<p>絵文字は各キャリアで独自の仕様があります。ktai-styleに共通絵文字を出力するタグがあったはずなので、それを使ってください。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;img localsrc=&quot;68&quot; alt=&quot;&quot; /&gt;
&lt;!-- スマイルマークを出力 --&gt;
</pre>
<p>共通の絵文字は<a href="http://code.cside.com/i-mode/emojimode/">ドコモ絵文字コード・タイトル（意味）一覧</a>などの一覧表で把握してください。</p>
<h3>文字コード</h3>
<p>携帯はformのPOST情報がShift_JISで飛んで来たりするので、頑張って変換してください。</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
//無名関数を使っているのでphp5.3限定。
//POST変数のすべてに対してエンコーディング変換してextractする
extract(array_map(function($var){
   return mb_convert_encoding($var, &quot;utf-8&quot;, &quot;sjis-win&quot;);
}, $_POST));
?&gt;
</pre>
<h3>画像形式</h3>
<p>i-modeはpngダメです。テーマの場合はGIFまたはJPEGに固定することで問題ないかと思うのですが、投稿データにpngを入れてしまっている場合は注意してください。一応、ktai-styleには投稿内の画像を自動で変換してくれる機能があります。</p>
<p><strong>携帯端末が1ページあたりうけとれるデータは100kb以内</strong>なので、画像サイズにも注意してください。最大でも1つ25kbというのがauの制限だったような気がします。ちなみにktai-styleは投稿内の画像をすべてリンク文字列に変換します。これが嫌だという場合、画像を縮小する関数を自前で作ったほうがいいでしょう。</p>
<h3>解像度</h3>
<p>携帯の標準的な解像度は横240px（QVGA〜WQVGA）ですが、最近は横幅480pxの高解像度端末も増えており、キャリアから「高解像度にも対応してください」というアナウンスが出ています。ここら辺はクリエイティブと天秤にかけて対応してください。めんどくさかったら、開き直って横240px固定にしちゃうのもアリだと思います。</p>
<p>対応する場合はGDなどの画像操作系関数でサムネイルを作成して対応することになるのですが、問題は解像度の取得。DoCoMo端末はUser Agentなどから解像度を取得することはできません。auおよびSoftbankはUAに画面解像度が入っているんですが、ブラウザなの解像度だったり違ったり、いまいち信用できない値になっています。</p>
<p>PEARに<a href="http://pear.php.net/package/Net_UserAgent_Mobile/">Net_UserAgent_Mobile</a>というのがあるのですが、2009年で更新が止まっており、DoCoMoの最新端末情報が反映されていません。したがって、現実的な方策は以下のとおりです。</p>
<ol>
<li>上述のNet_UserAgent_Mobileを拡張して自分で管理する（DoCoMoの公式サイトに解像度のデータが載っています）</li>
<li><a href="http://ke-tai.org/moblist/">k-tai.orgの携帯電話スペック一覧</a>などのデータをカスタマイズして判別機能を作成する</li>
</ol>
<p>という感じになるでしょうか。携帯はIPアドレスによるホワイトリスト方式とか、常にデータをUpToDateに保たないといけないことが多くてめんどくさいです。</p>
<h3>SSL</h3>
<p>SSLにきちんと対応するためにはVerisignのじゃないとダメだったと思います。Global Signなどのちょっと安めの証明書でも新しい端末ならオーケーです。</p>
<h3>実機での検証について</h3>
<p>実機で検証を行うに越したことはないのですが、SOHOや小さい会社だと難しい場合が多々あります。公式CPなら検証センターというのを使えるので、すべての端末で確認できるのですが、なかなかそうもいかないでしょう。</p>
<p>自分で作ったサービスならアズイズでいいですが、クライアントワークの場合は「動作保証をテーマ開発要件に含めない」方が無難です。普通のWeb制作でも対象ブラウザを限ったりするものですが、携帯もそれと同様です。一応、各端末で検証してくれるサービスもあるので、その費用を「検証費用」として請求すればクライアントも納得するでしょう。</p>
<p>適当に「大体の端末で見れますよ」みたいな感じにしちゃうと、クライアントがディズニー・モバイルなどの特殊な携帯を使っていた場合に悲劇です。僕は前職でクライアントが株を確認できる携帯を使っていたためにヒーヒー言ったことがありました。</p>
<h2>その他、参考書籍や心構えなど</h2>
<p>携帯用の技術本は結構たくさんあるので、どれでもいいと思うんですが、わりと読みやすいのがコレでした。ちと古いかもしれませんが、携帯サイトとは何かがユーザビリティの観点からまとまって書いてあるので、すぐ読み終えられます。</p>
<div class="tmkm-amazon-view">
<p class="tmkm-amazon-title"><a href="http://www.amazon.co.jp/%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3%E3%83%BB%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3-Web%E5%88%B6%E4%BD%9C%E8%80%85%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%91%E3%81%A6%E3%81%8A%E3%81%8F%E3%81%B9%E3%81%8D%E6%96%B0%E3%83%BB100%E3%81%AE%E6%B3%95%E5%89%87%E3%80%82-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%82%86%E3%82%81%E3%81%BF/dp/4844326317%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4844326317" target="_blank">モバイルユーザビリティ・デザイン Web制作者が身につけておくべき新・100の法則。 <small>[書籍]</small></a></p>
<p><a href="http://www.amazon.co.jp/%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3%E3%83%BB%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3-Web%E5%88%B6%E4%BD%9C%E8%80%85%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%91%E3%81%A6%E3%81%8A%E3%81%8F%E3%81%B9%E3%81%8D%E6%96%B0%E3%83%BB100%E3%81%AE%E6%B3%95%E5%89%87%E3%80%82-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%82%86%E3%82%81%E3%81%BF/dp/4844326317%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4844326317" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41POD7JwBlL._SL160_.jpg" border="0" alt="モバイルユーザビリティ・デザイン Web制作者が身につけておくべき新・100の法則。" /></a></p>
<p><em>価格: </em>￥ 2,520</p><p><em>著者: </em>株式会社ゆめみ, 片岡俊行, 有泉雅彦, 大貫 浩, 戸田修輔, 原田 恵</p><p><em>出版社: </em>インプレスジャパン</p><p><em>出版日: </em>2008-12-25</p><p><em>商品カテゴリー: </em>大型本</p><p><em>ページ数: </em>224</p><p><em>ISBN: </em>4844326317</p>
<hr class="tmkm-amazon-clear" />
</div>
<p>PC中心のWeb制作者にありがちなことですが、そもそも自分ではスマートフォン使ってたりして、携帯サイトをあんまり見ないということが往々にしてあります。PCのデザインに慣れたデザイナーも要注意ですね。「なんでアメブロの芸能人はあんなに改行しまくってんだ」と疑問を感じていたり、女の子から来たメールにハートの絵文字が入っていただけで「この娘、俺のこと好きなんじゃないか」と思ってしまうあなたは特にご用心です。あまり自分の感覚を信用しない方がいいでしょう。書籍やWebサイトなどの情報を頼りにして作成していくのがいいかと思います。</p>
<p>そういう意味で、携帯サイト開発は女性に向いているのかもしれませんね。女の人ってデコメ好きだったりしますし。</p>
<p>あと、コンテンツ適正（閲覧に適した文章量、地方の人が閲覧することが多い、対象ユーザーの年齢層がPCと異なる、家でゆっくり見るとは限らないetc）というのもあるので、あまりワンソース・マルチユースを過信しないことも大切です。</p>
<div class="tmkm-amazon-view">
<p class="tmkm-amazon-title"><a href="http://www.amazon.co.jp/%E3%82%B1%E3%83%BC%E3%82%BF%E3%82%A4%E5%B0%8F%E8%AA%AC%E7%9A%84%E3%80%82%E2%80%95%E2%80%95%E2%80%9C%E5%86%8D%E3%83%A4%E3%83%B3%E3%82%AD%E3%83%BC%E5%8C%96%E2%80%9D%E6%99%82%E4%BB%A3%E3%81%AE%E5%B0%91%E5%A5%B3%E3%81%9F%E3%81%A1-%E9%80%9F%E6%B0%B4-%E5%81%A5%E6%9C%97/dp/4562041633%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4562041633" target="_blank">ケータイ小説的。――“再ヤンキー化”時代の少女たち <small>[書籍]</small></a></p>
<p><a href="http://www.amazon.co.jp/%E3%82%B1%E3%83%BC%E3%82%BF%E3%82%A4%E5%B0%8F%E8%AA%AC%E7%9A%84%E3%80%82%E2%80%95%E2%80%95%E2%80%9C%E5%86%8D%E3%83%A4%E3%83%B3%E3%82%AD%E3%83%BC%E5%8C%96%E2%80%9D%E6%99%82%E4%BB%A3%E3%81%AE%E5%B0%91%E5%A5%B3%E3%81%9F%E3%81%A1-%E9%80%9F%E6%B0%B4-%E5%81%A5%E6%9C%97/dp/4562041633%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4562041633" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51U53LqaU3L._SL160_.jpg" border="0" alt="ケータイ小説的。――“再ヤンキー化”時代の少女たち" /></a></p>
<p><em>価格: </em>￥ 1,575</p><p><em>著者: </em>速水 健朗</p><p><em>出版社: </em>原書房</p><p><em>出版日: </em>2008-06-09</p><p><em>商品カテゴリー: </em>単行本</p><p><em>ページ数: </em>224</p><p><em>ISBN: </em>4562041633</p>
<hr class="tmkm-amazon-clear" />
</div>
<h2>おまけ：Macユーザーのための携帯シミュレータ利用法</h2>
<p>Macだと公式キャリアのシミュレータが動かないので、VMWareなどの仮想化ツールでWindows XPをインストールして利用します。持ってない人は買ってください。</p>
<p>WordPressで開発を行っているなら、MampやXamppでlocalhostを立てていることでしょう。できれば、VMWareに入れたWindows XPからもこのホストを参照したいものです。そのための方法をご紹介します。</p>
<h3>1. Macのホストを追加</h3>
<p>普通にApacheをインストールすると、http://localhostが127.0.0.1を向くようになっています。127.0.0.1はループバックアドレスといって、自分自身を示すIPアドレスなのですが、このままだとVMWareのWindowsから参照できません。Windowsのシミュレータにhttp://localhost/と入れると、VMWare上で動いているWindows自身を指すことになってしまいます。</p>
<p>そこで、Macが自分のホストを参照しつつ、Windowsからも参照できるような名前を作ります。</p>
<p>まずはアプリケーション &gt; ユーティリティからターミナルを開いて以下のコマンドをコピペ。</p>
<pre class="brush: bash; title: ; notranslate">
sudo open -t /etc/hosts
</pre>
<p>管理者のパスワードを入れたらテキストエディットが立ち上がります。以下のように追記してください。</p>
<pre class="brush: bash; title: ; notranslate">
127.0.0.1     localhost
127.0.0.1     mac #←追記
</pre>
<p>ブラウザを立ち上げたら、http://macでローカルホストに行くかどうか、確認して下さい。</p>
<h3>2. MacのプライベートIPを取得</h3>
<p>引き続きMacのターミナルで以下のコマンドを入力してください。</p>
<pre class="brush: bash; title: ; notranslate">
ifconfig
</pre>
<p>そうするとズラッと文字列が出てくると思いますが、en0かen1の欄にinetという項目があると思います。192.168.0.*とか、172.16.0.*とかの文字列ですね。これをコピペしてブラウザに入力し、http://macと同じ画面が出たらそれがMacのプライベートIPアドレス確定です。</p>
<p>GUIが良かったら、システム環境設定 &gt; ネットワーク &gt; 表示:内蔵Ethernetで確認できると思います。</p>
<h3>3. Windowsからhttp://macを参照できるようにする</h3>
<p>今度はVMWareにインストールしたWindowsに移動してください。で、C:\WINDOWS\system32\drivers\etc\hostsというファイルをノートパッドで編集して下さい。Macの時と同じく、ホストを追加します。</p>
<pre class="brush: bash; title: ; notranslate">
127.0.0.1       localhost
192.168.0.5    mac #←MacのプライベートIPとホスト名を追記
</pre>
<div id="attachment_1371" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/04/macfromwin.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/04/macfromwin-300x187.png" alt="仮想WindowsマシンからMacのサーバを見る" title="仮想WindowsマシンからMacのサーバを見る" width="300" height="187" class="size-medium wp-image-1371" /></a><p class="wp-caption-text">仮想WindowsマシンからMacのサーバを見る</p></div>
<p>保存したら、ブラウザにhttp://macと打ち込んで、Macの画面が出ることを確認してください。</p>
<p>これでシミュレータでのチェックとMacでの開発を同時に行うことができます。<br class="clearL" /></p>
<ul>
<li>同様の方法でIETesterも使えるので、設定しておくと楽です。</li>
<li>MacのプライベートIPは再起動時などに変わることがあります。固定したい場合は「プライベートIP 固定 mac」でググってください。</li>
<li>当然ですが、これを実現するためにはWordPressのインストール時のアドレスをhttp://localhost/ではなく、http://macにする必要があります。</li>
</ul>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/web/programing/856/' rel='bookmark' title='WordPressのテスト環境と本番環境を同期する時に使えるSQL文'>WordPressのテスト環境と本番環境を同期する時に使えるSQL文</a></li>
<li><a href='http://takahashifumiki.com/web/design/958/' rel='bookmark' title='WordPressのiPhone用テーマをカスタマイズ'>WordPressのiPhone用テーマをカスタマイズ</a></li>
<li><a href='http://takahashifumiki.com/web/design/406/' rel='bookmark' title='WordPressテーマplaintxtBlogの日本語リソース作った'>WordPressテーマplaintxtBlogの日本語リソース作った</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/1370/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>タッチスクリーン時代のドロップダウンメニュー考察</title>
		<link>http://takahashifumiki.com/web/design/1280/</link>
		<comments>http://takahashifumiki.com/web/design/1280/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 03:00:40 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=1280</guid>
		<description><![CDATA[現在受託案件で細々と食いつなぎつつミニコme!開発という絶望街道まっしぐらで気分が塞ぎがちなので、先ほど考えたことを書きます。 一つのWebサイトでどれだけ多くの閲覧環境に対応するかというのはWeb制作業界人がこぞって悩 [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1282" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/02/dropdown.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/02/dropdown-300x138.png" alt="マウスオーバーによるドロップダウン" title="マウスオーバーによるドロップダウン" width="300" height="138" class="size-medium wp-image-1282" /></a><p class="wp-caption-text">マウスオーバーによるドロップダウン</p></div>
<p>現在受託案件で細々と食いつなぎつつミニコme!開発という絶望街道まっしぐらで気分が塞ぎがちなので、先ほど考えたことを書きます。</p>
<p>一つのWebサイトでどれだけ多くの閲覧環境に対応するかというのはWeb制作業界人がこぞって悩んでいるところだと思いますが、今日はグローバルナビゲーションとドロップダウンメニューについて考えてみます。</p>
<h2 class="clrL">iPadのみに対応するということ</h2>
<p>「閲覧環境が様々」とはいえ、無限のパターンに対応するのは現実的ではないなので、基本的に想定されているのはざっくりわけて以下の四つだと思います。</p>
<ol>
<li>PC</li>
<li>タブレット型PC</li>
<li>スマートフォン</li>
<li>ガラケー</li>
</ol>
<p>今回はiPadに代表されるような、「タッチスクリーンを持ったタブレット型PC」に限定して話を進めます。マウスVSタッチスクリーンというわけです。</p>
<p>スマートフォンはスマートフォンで、「画面解像度」という大きな違いがあるので、UI設計の段階から考えていかなければならないと思います。ガラケーはいわずもがな。ガラケーとスマートフォンは多少のコストをかけてでも専用のViewを作って対処すべしと僕は考えています。</p>
<p>さて、iPadは画面解像度が結構高く、960px幅で作られたWebサイトならそのまま表示できます。本文サイズが12pxとかでなければ、ストレスなく閲覧できるでしょう。あとはFlashを使わないとかですかね。</p>
<p>「何もしなくてもタブレット型PCには対応できる」し、別言すれば、「特別なことをしなくてもPCと同じWebサイトを見られる」のがタブレット型なわけです。ただ唯一異なる点が、ホバーアクションがないという点です。</p>
<h3>ホバーアクション不在のUI</h3>
<p>ホバーアクションというのは、マウスがある特定の要素に乗っかっることですね。Javascriptならmouseoverイベントがありますし、CSSでも疑似クラスとして:hoverがサポートされています。</p>
<p>ただし、これはマウスの存在を前提としているため、地点Aから地点Bまで移動するのに必ずしも軌跡を描かないタッチスクリーンの場合はあんまり役に立ちません。ホバーした瞬間にはクリックしている可能性が高いです。</p>
<p>ちょっと話はずれますが、「タブレット型PCに対応する」という前提の元では、たとえばCSSのリンク装飾についても一考の余地ありですね。</p>
<p>まれにインラインリンクのアンダーラインをつけないで:hoverで凝ってみせるデザイナーさんがいますが、これはタッチスクリーンの場合あんまりよろしくないと思います。確実に「これは押せる！」というデザイン（下線がついてる）にした方がよいでしょう。ここら辺は<a href="http://developer.apple.com/jp/devcenter/ios/library/japanese.html">Apple デブセン</a>のiOS ヒューマンインターフェースガイドとかに書いてあるかもしれません。（うろ覚え）</p>
<p>他にも個人的に好きじゃない例を挙げると、はてなダイアリーのキーワードリンク機能ですかね。はてなダイアリーははてなキーワードに登録されている言葉がブログ記事中に存在すると自動でリンクを張る機能を持ってるんですが、iPadやiPhoneで読んでいるときに間違って踏んでしまうことが多いです。これも「スクロールはマウスホイールで行う」ことを暗黙裡に前提としている設計のせいかな、と。</p>
<p>要するに、タッチスクリーンはマウスと違って、「ポインタが画面を動き回ることはないが、クリックされることは多い」ということになりますね。</p>
<h3>タッチスクリーンの鬼門、グローバルナビゲーション＋ドロップダウン</h3>
<p>で、本題です。グローバルナビゲーションをドロップダウンにするというのはよくやる人もいると思います。WordPressのテーマ等でもそのようになっているものは多いです。ただこれ、iPadだと下層メニューの表示ができないんですね。ホバーがないからです。</p>
<p>「フッターにもリンクがある」などの代替手段があれば致命的なことにはならないとは思いますが、そもそもグローバルナビゲーションはそのサイトにとってもっとも重要な要素をまとめたものですので、そのリンクへ移動できないというのは考えものです。では、「PCサイトをiPadにも対応する」ためにはどうすればいいのかという案を3つ挙げてみます。</p>
<h4>1. ドロップダウンを廃止する</h4>
<div id="attachment_1283" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/02/mac.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/02/mac-300x194.png" alt="Appleのナビゲーション" title="Appleのナビゲーション" width="300" height="194" class="size-medium wp-image-1283" /></a><p class="wp-caption-text">Appleのナビゲーション</p></div>
<p>そういやそもそもiPadの製造元であるAppleはどうなってんのかとサイトを見てみたら、そもそもドロップダウンなんか使ってないですね。これはAppleらしいです。</p>
<p>グローバルナビをクリックするとカテゴリーのページへ移動し、サブナビゲーションが表示されます。Mac, iPhone, iPodという強力なブランドを持つAppleならではとも言えますが、サイトの構造をしっかりわけるのがデザイン上でも有効になるパターンですね。</p>
<p>あと、後述しますが、ドロップダウンを自分で作れない人（Javascriptの知識がない人）はこのアプローチを検討してみるとよいかと思います。</p>
<h4 class="clrL">2. タッチスクリーンの場合だけドロップダウンの挙動を変える</h4>
<div id="attachment_1281" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/02/amazon.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/02/amazon-300x230.png" alt="Amazonは地味に挙動を変える" title="Amazonは地味に挙動を変える" width="300" height="230" class="size-medium wp-image-1281" /></a><p class="wp-caption-text">Amazonは地味に挙動を変える</p></div>
<p>これはAmazonが採用しているアプローチなのですが、AmazonはiPadで見た場合、左にあるサイドメニューがホバーアクションではなく、タッチで開くようになります。Javascriptが得意な方はこれでもいいと思います。</p>
<p>ただし、Amazonのサイドバーのプライマリーボタンは元々リンクになってないですね。PCで閲覧した場合、「本・漫画・雑誌」をクリックしてもなにも起きません。ホバーすることで展開される下層メニューである「本」「洋書」「漫画」「雑誌」「古本」をクリックしないと下層に移動しません。これは「ナビゲーションのトップレベルはページへのリンクではない」ことが条件となります。</p>
<p>したがって、「トップレベルもページであり、下層もページ」というパターンには対応できないんですね。要するに、下のようなのは駄目ってことです。</p>
<div class="clrL"><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/fumikito/DtMT3/16/embedded/"></iframe></div>
<h4>3. ドロップダウンじゃなくて、Explorer風にする</h4>
<div id="attachment_1284" class="wp-caption alignleft" style="width: 310px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/02/wordpress.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/02/wordpress-300x228.png" alt="WordPressの管理画面" title="WordPressの管理画面" width="300" height="228" class="size-medium wp-image-1284" /></a><p class="wp-caption-text">WordPressの管理画面</p></div>
<p>こういうメニューをなんと呼ぶのか知りませんが、WordPressの管理画面にあるようなやつだとどっちがきても大丈夫です。</p>
<p>ボタンもあって、リンクでもあるというデザインですね。CSS的にちょっとめんどくさいですが、まあいいものを作ろうと思ったらこれぐらいはしょうがないんですかね。</p>
<h2 class="clrL">ドロップダウンメニュー考察まとめ</h2>
<p>というわけでつらつら書きましたが、要するに「モバイルコンピューティングの時代、ホバーアクションはおまけにすぎない」ってことです。マウスもキーボードと同じで機械に身体を従わせるようなところがあるので、時代に合わせて身体を作り替えていくニュータイプ向けWebサイトならともかく、一般ユーザーに広く使ってもらうためには人間の素直な身体をベースにした方がよさそうですね。</p>
<p>もともとこの記事を書いた発端は、ミニコme用に買ったWordPressテーマが件のドロップダウンだったからイラついたっていうだけなんですけど。</p>
<div class="tmkm-amazon-view">
<p class="tmkm-amazon-title"><a href="http://www.amazon.co.jp/JavaScript-The-Good-Parts-%E2%80%95%E3%80%8C%E8%89%AF%E3%81%84%E3%83%91%E3%83%BC%E3%83%84%E3%80%8D%E3%81%AB%E3%82%88%E3%82%8B%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9/dp/4873113911%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4873113911" target="_blank">JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス <small>[書籍]</small></a></p>
<p><a href="http://www.amazon.co.jp/JavaScript-The-Good-Parts-%E2%80%95%E3%80%8C%E8%89%AF%E3%81%84%E3%83%91%E3%83%BC%E3%83%84%E3%80%8D%E3%81%AB%E3%82%88%E3%82%8B%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9/dp/4873113911%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4873113911" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41H0Dk-K3PL._SL160_.jpg" border="0" alt="JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス" /></a></p>
<p><em>価格: </em>￥ 1,890</p><p><em>著者: </em>Douglas Crockford</p><p><em>クリエーター: </em>水野 貴明</p><p><em>出版社: </em>オライリージャパン</p><p><em>出版日: </em>2008-12-22</p><p><em>商品カテゴリー: </em>大型本</p><p><em>ページ数: </em>198</p><p><em>ISBN: </em>4873113911</p>
<hr class="tmkm-amazon-clear" />
</div>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/web/design/1035/' rel='bookmark' title='iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）'>iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）</a></li>
<li><a href='http://takahashifumiki.com/web/design/1063/' rel='bookmark' title='iBooks用のePub作成覚え書き（text-alignハックと明朝体とか）'>iBooks用のePub作成覚え書き（text-alignハックと明朝体とか）</a></li>
<li><a href='http://takahashifumiki.com/web/design/962/' rel='bookmark' title='【目指せePub出版】Webkitでtext-align:justifyに挑戦する'>【目指せePub出版】Webkitでtext-align:justifyに挑戦する</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/1280/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone対応顛末記</title>
		<link>http://takahashifumiki.com/web/design/1213/</link>
		<comments>http://takahashifumiki.com/web/design/1213/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 08:15:41 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[電子書籍]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=1213</guid>
		<description><![CDATA[スマートフォンで電子書籍買えるようにするまでの顛末 まだ完全に検証を終えたわけではないのですが、スマートフォンで買えるようになったと思います。 特にiPhoneはiOS4.2からePubファイルをSafariで直接ダウン [...]]]></description>
			<content:encoded><![CDATA[<h2>スマートフォンで電子書籍買えるようにするまでの顛末</h2>
<div id="attachment_1215" class="wp-caption alignleft" style="width: 210px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/01/IMG_0417.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/01/IMG_0417-200x300.png" alt="新しいスマートフォン向け画面" title="新しいスマートフォン向け画面" width="200" height="300" class="size-medium wp-image-1215" /></a><p class="wp-caption-text">新しいスマートフォン向け画面</p></div>
<p>まだ完全に検証を終えたわけではないのですが、スマートフォンで買えるようになったと思います。</p>
<p>特にiPhoneはiOS4.2からePubファイルをSafariで直接ダウンロードしてiBooksで開けるようになったので、これまでのようにパソコンからiTunes経由で同期しなくてもよくなりました。これは大きな進歩です。</p>
<p>やはり電子書籍というのは「欲しいと思ったときにすぐ買える」というのがポイントだと思うので。</p>
<h3 class="clrL">WordPressでスマートフォン対応</h3>
<div id="attachment_1214" class="wp-caption alignleft" style="width: 160px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/01/IMG_0416.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/01/IMG_0416-150x100.png" alt="iPhoneっぽいストライプ" title="iPhoneっぽいストライプ" width="150" height="100" class="size-thumbnail wp-image-1214" /></a><p class="wp-caption-text">iPhoneっぽいストライプ</p></div>
<p>今回は見映えもiPhoneっぽくして、パーツなども極力近づけました。かなりめんどくさかったです。</p>
<p>このサイトでは<a href="http://iwphone.contentrobot.com/">iWPhone</a>というプラグインを使っています。これはiPhoneかiPod Touchでサイトを訪れたときにテーマを切り替えるだけなのですが、これをちょっとカスタマイズし、Androidケータイで来たときも切り替えるようにしました。いまのところXperiaを持っている知人に頼んで確認しただけですが、デフォルトブラウザを使っている限りは表示できると思います。</p>
<h3 class="clrL">Androidのローテーション挙動でハマる</h3>
<div id="attachment_1216" class="wp-caption alignleft" style="width: 160px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/01/IMG_0418.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/01/IMG_0418-150x100.png" alt="iPhoneで画面を横にしたとき" title="iPhoneで画面を横にしたとき" width="150" height="100" class="size-thumbnail wp-image-1216" /></a><p class="wp-caption-text">iPhoneは縮尺固定</p></div>
<p>Androidに関してはほぼiPhoneと同じようなレイアウトを実現できた（CSS3をサポートしてるから）のですが、一点だけ困ったことがありました。それは、画面を横にしたときの挙動の違い。</p>
<p>iPhoneでは画面を横にしたとき、そのままの縮尺で拡大されます。また、内部的にも同じ画面幅を保つようです。<br class="clrL"/></p>
<pre class="brush: jscript; title: ; notranslate">
//ローテーションさせたときのイベントリスナー(MooTools)
window.addEvent('resize', function(e){
	console.log(window.innerWidth);
	//縦でも横でも320を出力
});
</pre>
<p>新しいレイアウトでは「目次」ボタンをクリックするとナビゲーションが左からゾロっと出てくるようにしてあるので、これは大変ありがたい仕様でした。</p>
<div id="attachment_1218" class="wp-caption alignleft" style="width: 160px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2011/01/yoko0.jpg"><img src="http://s.takahashifumiki.com/wp-content/uploads/2011/01/yoko0-150x100.jpg" alt="Androidでナビゲーション" title="Androidでナビゲーション" width="150" height="100" class="size-thumbnail wp-image-1218" /></a><p class="wp-caption-text">Androidでナビゲーションがかぶった</p></div>
<p>しかし、Androidの場合は横にしたとき画面のサイズが変わる様子。レイアウトが間延びしてしまうのはしょうがないとして、左に隠れているはずのナビゲーションがコンテンツにかぶってしまうのは困りました。</p>
<p>とりあえず、resizeイベントで一々サイズを調整することでかぶるのは回避。</p>
<p>一応Androidエミュレータはダウンロードしてあるんですが、なぜかネットにつながらないので、デバッグできません。やっぱAndroid端末買わないとダメですかね。</p>
<h3 class="clrL">アプリケーションキャッシュ動かず</h3>
<p>以前のエントリーで偉そうにア<a href="http://takahashifumiki.com/web/design/958/">プリケーションキャッシュのやり方について書きました</a>が、なぜか上手くいかなかったので、外しました。上手く行っているときはメチャクチャ早いので、ぜひ導入したいのですが&#8230;</p>
<h3>スマートフォン対応の雑感</h3>
<p>というわけで、色々試行錯誤することとなりました。疲れました。アメリカではすでにAndroidのシェアがiPhoneを上回っていると聞きますし、結局、ブラウザ戦争と同じことが起きる可能性は100%ですね。僕はもう「早く戦争が起きないかしら」っていう気分ですよ。</p>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/web/design/962/' rel='bookmark' title='【目指せePub出版】Webkitでtext-align:justifyに挑戦する'>【目指せePub出版】Webkitでtext-align:justifyに挑戦する</a></li>
<li><a href='http://takahashifumiki.com/web/design/958/' rel='bookmark' title='WordPressのiPhone用テーマをカスタマイズ'>WordPressのiPhone用テーマをカスタマイズ</a></li>
<li><a href='http://takahashifumiki.com/web/design/1035/' rel='bookmark' title='iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）'>iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/1213/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iBooks用のePub作成覚え書き（text-alignハックと明朝体とか）</title>
		<link>http://takahashifumiki.com/web/design/1063/</link>
		<comments>http://takahashifumiki.com/web/design/1063/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 01:06:18 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[フォント]]></category>
		<category><![CDATA[電子書籍]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=1063</guid>
		<description><![CDATA[以前のエントリーでtext-alignについて云々したと思うんですが、解決できなかった問題が二つほど解決したので、一応書いておきます。 これまでもさんざ検索してきましたが、まだePubのCSSに関する情報は探すのムズいで [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://takahashifumiki.com/web/design/1035/">以前のエントリーでtext-alignについて云々</a>したと思うんですが、解決できなかった問題が二つほど解決したので、一応書いておきます。</p>
<p>これまでもさんざ検索してきましたが、まだePubのCSSに関する情報は探すのムズいですね。</p>
<p>まだ情報が少ないというのもあるのですが、色んなプレイヤーが色んなこと書きまくってる印象です。</p>
<p>これまでのCSSについて何かを書く人なんて、Web制作業についている人か日曜Webクリエイターか情報系の大学生のどれかだと思うんですが、ePubに関してはこれに加えて出版関係の人とブログは嫌いだけど本は出したい人がいりまじっててわけがわかりません。</p>
<p>特にInDesignから云々みたいな話題が多過ぎて、探すのが大変です。これもAdobeのフォーラムが検索結果にほとんど挙がってこない仕様のせいでしょうか&#8230;</p>
<h2>明朝体問題</h2>
<p>さて、「<a href="http://takahashifumiki.com/announcement/984/">ハムスターに水を</a>」のePubは本文をiPadにのみインストールされているヒラギノ明朝にしようと思っていたんですが、挫折していました。</p>
<p>で、これがTwitter上で<a href="http://twitter.com/HowManyFiles">@HowManyFiles</a>さんとやりとりしたおかげで原因判明。</p>
<pre class="brush: css; title: ; notranslate">
/*ダメ*/
body{
	font-family:'HiraMinProN-W3', serif;
}
/*オーケー*/
body{
	font-family:'ヒラギノ明朝 ProN W3', 'HiraMinProN-W3', serif;
}
</pre>
<div id="attachment_1067" class="wp-caption alignright" style="width: 235px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/10/IMG_0029.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/10/IMG_0029-225x300.png" alt="ヒラギノ明朝で表示" title="ヒラギノ明朝で表示" width="225" height="300" class="size-medium wp-image-1067" /></a><p class="wp-caption-text">ヒラギノ明朝で表示</p></div>
<p>この通り、美しい明朝体で表示されるようになりました。</p>
<p>要するに、日本語で指定しなきゃダメってことですね。</p>
<p>なお、<a href="http://twitter.com/HowManyFiles">@HowManyFiles</a>さんははてなダイアリーで<a href="http://d.hatena.ne.jp/HowManyFiles/20101018/1287421871">ePubのテンプレートファイルを公開</a>されています。</p>
<p>他にもルビとかテキスト寄せとか圏点とか色々と追求されているので、一度見てみることをお勧めします。</p>
<h2 class="clrR">テキスト寄せ問題</h2>
<div id="attachment_1065" class="wp-caption alignright" style="width: 235px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/10/IMG_0024.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/10/IMG_0024-225x300.png" alt="中央寄せにならない" title="中央寄せにならない" width="225" height="300" class="size-medium wp-image-1065" /></a><p class="wp-caption-text">中央寄せにならない</p></div>
<p>これは以前書いたテキスト両端揃えができないというのとは別の問題で、「テキスト寄せの指定が無視される」というものです。</p>
<p>「<a href="http://takahashifumiki.com/announcement/984/">ハムスターに水を</a>」のトップページでは名前と扉辞を中央寄せするつもりだったんですが、これがなぜかできませんでした。<br class="clrR" /></p>
<pre class="brush: css; title: ; notranslate">
.author_name{
  text-align:center !important;
}
.author_epigraph{
  text-align:center !important;
  margin-top: 2em;
}
</pre>
<div id="attachment_1066" class="wp-caption alignright" style="width: 235px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/10/IMG_0028.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/10/IMG_0028-225x300.png" alt="iBooksの「両端揃え」設定" title="iBooksの「両端揃え」設定" width="225" height="300" class="size-medium wp-image-1066" /></a><p class="wp-caption-text">iBooksの「両端揃え」設定</p></div>
<p>さんざんググった結果、<a href="http://www.pigsgourdsandwikis.com/2010/06/beating-ibooks-bugs.html">Beating iBooks Bugs</a>という心強いタイトルのブログ記事がヒットし、解決。この人はあれですね、ePubの関係者さんなんですかね。</p>
<p>このブログの要旨は以下の通り。</p>
<ul>
<li>iBooksの設定で「両端揃え」がオンになっていると、すべてのpタグのtext-alignプロパティがjustifyに上書きされる。</li>
<li>とりあえずtext-alignの指定を変えたいpタグの中にspanタグを追加するとcssに書いた指定が適用される</li>
<li>iBooksはdivやpやspanにfont-familyの指定を許していないが、これもpタグの中にciteタグを追加してそこにcssを記入することで解決する</li>
</ul>
<p>おっしゃる通り、以下を追記してみました。</p>
<h3 class="clrR">HTML</h3>
<pre class="brush: xml; title: ; notranslate">
&lt;p class=&quot;author_name&quot;&gt;&lt;span&gt;高橋 文樹&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;author_epigraph&quot;&gt;
    &lt;span&gt;この物語をすべての非正社員と&lt;br /&gt;
    すべてのヤリマンに捧げる。&lt;/span&gt;
&lt;/p&gt;
</pre>
<h3>CSS</h3>
<pre class="brush: css; title: ; notranslate">
.author_name span{
  font-size:1.5em;
}
/*この指定が必要かわかりませんが、一応*/
.author_epigraph span{
	color:#000000;
}
</pre>
<div id="attachment_1064" class="wp-caption alignright" style="width: 235px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/10/IMG_00231.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/10/IMG_00231-225x300.png" alt="spanタグで中央寄せ成功" title="spanタグで中央寄せ成功" width="225" height="300" class="size-medium wp-image-1064" /></a><p class="wp-caption-text">spanタグで中央寄せ成功</p></div>
<p>これで解決。ちゃんとセンター寄せになりました。</p>
<p>興味深いのはePub関係者らしきLizさんがこうした記事を書いたことに異議を唱える人がいたことです。</p>
<p>確かにCSSハックというと、Web制作者の間では悪手の極みみたいな捉え方をされているので、こうしたことを当事者が言っていいのかってのもありますね。</p>
<p>spanはともかく、citeタグは「引用元を示す」という意味があるので、font-familyを適用するため（見栄えを調整するため）に使うのは間違っています。</p>
<p>Web2.0でさんざ言われたように、テキストはセマンティック（意味的である＝適切な意味を持つ）でなければならないはずですからね。</p>
<p>興味のある方は当該記事のコメント欄を読んでみてください。</p>
<p>個人的には<cite title="マルクス・エンゲルス「ルイ・ボナパルトのブリュメール１８日」">歴史は繰り返す、一度目は悲劇として、二度目は喜劇として</cite>という言葉をciteタグ使いつつ思い出します。この言葉便利ですよね〜。</p>
<div class="tmkm-amazon-view">
<p class="tmkm-amazon-title"><a href="http://www.amazon.co.jp/%E3%83%AB%E3%82%A4%E3%83%BB%E3%83%9C%E3%83%8A%E3%83%91%E3%83%AB%E3%83%88%E3%81%AE%E3%83%96%E3%83%AA%E3%83%A5%E3%83%A1%E3%83%BC%E3%83%AB18%E6%97%A5%E2%80%95%E5%88%9D%E7%89%88-%E5%B9%B3%E5%87%A1%E7%A4%BE%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%83%BC-%E3%82%AB%E3%83%BC%E3%83%AB-%E3%83%9E%E3%83%AB%E3%82%AF%E3%82%B9/dp/4582766498%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4582766498" target="_blank">ルイ・ボナパルトのブリュメール18日―初版 (平凡社ライブラリー) <small>[書籍]</small></a></p>
<p><a href="http://www.amazon.co.jp/%E3%83%AB%E3%82%A4%E3%83%BB%E3%83%9C%E3%83%8A%E3%83%91%E3%83%AB%E3%83%88%E3%81%AE%E3%83%96%E3%83%AA%E3%83%A5%E3%83%A1%E3%83%BC%E3%83%AB18%E6%97%A5%E2%80%95%E5%88%9D%E7%89%88-%E5%B9%B3%E5%87%A1%E7%A4%BE%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%83%BC-%E3%82%AB%E3%83%BC%E3%83%AB-%E3%83%9E%E3%83%AB%E3%82%AF%E3%82%B9/dp/4582766498%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4582766498" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51RL8vhmbDL._SL160_.jpg" border="0" alt="ルイ・ボナパルトのブリュメール18日―初版 (平凡社ライブラリー)" /></a></p>
<p><em>価格: </em>￥ 1,575</p><p><em>著者: </em>カール マルクス</p><p><em>クリエーター: </em>Karl Marx, 植村 邦彦</p><p><em>出版社: </em>平凡社</p><p><em>出版日: </em>2008-09</p><p><em>商品カテゴリー: </em>単行本</p><p><em>ページ数: </em>317</p><p><em>ISBN: </em>4582766498</p>
<hr class="tmkm-amazon-clear" />
</div>
<p>というわけで、主に2つのトピックについて書いてみました。</p>
<h2 class="clrR">次回予告：そうはいっても電子出版はやさしい(2)</h2>
<p>前回は次回予告とかいっておきながら、全然違うことを書く結果となりましたが、こうしてePubを出版してみて色々思うところがありました。こんな感じ。</p>
<ul>
<li>PDF作ってみたけど「このまま小説を書くことなく人生が終わっていくのでは？」というぐらい大変だった。一時データがInDesignのままではブレークスルーは訪れないと思う</li>
<li>iBooksの仕様上、アプリみたいなアップデートは行えない？　だったらアプリの方がいいかも</li>
<li>Lulu.comの決済画面が英語というのは厳しすぎるし、ファイルも追加できないので、自前で決済システム作るか？</li>
</ul>
<p>こうした雑感をそのうちどこかでまとめる予定です。</p>
<p><a href="http://hametuha.com/syoko/announcement/hametuha007/">破滅派七号</a>では電子出版奮闘記みたいなものも載りますので、お楽しみに。</p>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/web/design/1035/' rel='bookmark' title='iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）'>iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）</a></li>
<li><a href='http://takahashifumiki.com/web/design/1842/' rel='bookmark' title='iBooks用のePub作成覚え書き（ePub3.0とかフォント指定とか）'>iBooks用のePub作成覚え書き（ePub3.0とかフォント指定とか）</a></li>
<li><a href='http://takahashifumiki.com/web/programing/710/' rel='bookmark' title='TextlayoutFrameworkやFlash.text.engineで埋め込みOpenTypeフォントを使う方法'>TextlayoutFrameworkやFlash.text.engineで埋め込みOpenTypeフォントを使う方法</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/1063/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）</title>
		<link>http://takahashifumiki.com/web/design/1035/</link>
		<comments>http://takahashifumiki.com/web/design/1035/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 15:19:18 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[電子書籍]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=1035</guid>
		<description><![CDATA[すったもんだの末、小説「ハムスターに水を」のオンライン出版にこぎ着けた不詳高橋ですが、ePubファイルを作るのが大変だったのでここのその軌跡を記します。【目指せePub出版】Webkitでtext-align:justi [...]]]></description>
			<content:encoded><![CDATA[<p>すったもんだの末、<a href="http://takahashifumiki.com/announcement/984/">小説「ハムスターに水を」のオンライン出版</a>にこぎ着けた不詳高橋ですが、ePubファイルを作るのが大変だったのでここのその軌跡を記します。<a href="http://takahashifumiki.com/web/design/962/">【目指せePub出版】Webkitでtext-align:justifyに挑戦する</a>の続きです。</p>
<p>結論を短くまとめると以下の通りです。HTML、CSS、JavaScriptおよびePubの知識がないと意味がわからないと思います。</p>
<ol>
<li>縦書きは現時点（2010/10/15）無理</li>
<li>テキスト両端揃えはできないことはないが、メモリが足りないので使い所注意</li>
<li>ルビはまあできないことはない</li>
<li>ルビやテキスト両端揃えに対応した時点で、Adobe Degital EditionsやKindleに対応するのは難しくなる。</li>
<li>圏点はできる</li>
</ol>
<p>というわけで、つらつら書いていきます。</p>
<h2>iBooks向けのePubを作る際に押さえておきたいこと</h2>
<p>まず、iBooksというアプリケーションはWebkitベースで作成されています。iPhone SDKをちょっとでもいじった人はわかると思うのですが、UIWebViewというWebkitベースの巨大なViewクラスがあって、それがベースだと思います。iPhoneに入っているSafariもこれを拡張したものだと思います。</p>
<p>同じ会社が作っているものなので、当然リソースは共有されるでしょうし、基本的な開発順序は以下のようになっているはずです。</p>
<ol>
<li>PC用のSafari</li>
<li>Mobile Safari</li>
<li>iBooks</li>
</ol>
<p>事実、PC用のSafariではすでにWeb-fontやルビがサポートされていますが、iBooksはまだ（<ins>SVGフォントじゃないと駄目</ins>）です。</p>
<p>他の電子書籍リーダーについても同じことがいえます。</p>
<p><a href="http://www.adobe.com/jp/products/digitaleditions/">AdobeのDegital Editions</a>はおそらく<a href="http://www.adobe.com/jp/products/air/">AIR</a> + <a href="http://labs.adobe.com/technologies/textlayout/">TextLayoutFramework</a>でしょうし、開発リソースはAdobe社のものが優先して使われるはずです。</p>
<p>したがって、各社の端末および電子書籍リーダーは様々な実装のレベルを持つため、一つのePubでどの端末でもまともな見栄えを保つというのは、かなり難しいでしょう。</p>
<p>実際、「ハムスターに水を」はルビを表示できるようにしたため、Degital Editionsではルビの部分が消えてしまうことになりました。</p>
<p>小室哲哉がTwitterを始めた電子書籍元年においても、やはり標準化は「届きそうで届かないイチゴ」なのでした。</p>
<h3>1. iBooksで縦書きは無理っぽい</h3>
<p>縦書きですが、現状のCSS3ではサポートされていません。<a href="http://dev.w3.org/csswg/css3-text-layout/#writing-mode">CSS3の仕様にはwriting-modeとして含まれる予定</a>のようですが、CSS3を実装するePub3.0は2011年5月に標準勧告予定なので、実装はまだ先になると思います。上手く行けばAppleが先行実装してくれるかもしれません。</p>
<p>1ページだけ縦書きを実現するのはそんなに難しくない（<a href="https://code.google.com/p/nehan/">涅槃</a>とか<a href="http://taketori.org/js.html">竹取JS</a>を使う）ですが、普通の長編小説や雑誌等はもっと長いので無理だと思います。「くっ、メモリが足りない！」となってあっさり落ちます。</p>
<p>またもっとも致命的なのはiBooksでは「綴じ方向」の概念がないことです。このため、次のページは必ず右側にあります。</p>
<p>これを変えることができれば縦書きでの実装も可能だと思いますが、いつになるかはよくわかりません。もしかしたらもう作ってるのかな。</p>
<p>「Helvetica」という映画に詳しいのですが、スティーブ・ジョブズは大学時代にタイポグラフィの授業に感動して、Mac開発時にライノタイプ社に突撃、Macの豊かなフォント環境を準備したそうです。同じ情熱を日本語に対してもぶつけてくれると嬉しいのですが&#8230;まあ、無理か。</p>
<div class="tmkm-amazon-view">
<p class="tmkm-amazon-title"><a href="http://www.amazon.co.jp/%E3%83%98%E3%83%AB%E3%83%99%E3%83%81%E3%82%AB-%7E%E4%B8%96%E7%95%8C%E3%82%92%E9%AD%85%E4%BA%86%E3%81%99%E3%82%8B%E6%9B%B8-DVD-%E3%82%B2%E3%82%A4%E3%83%AA%E3%83%BC%E3%83%BB%E3%83%8F%E3%82%B9%E3%83%88%E3%82%A6%E3%82%A3%E3%83%83%E3%83%88/dp/B001DCSBYG%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001DCSBYG" target="_blank">ヘルベチカ ~世界を魅了する書 [DVD] <small>[DVD]</small></a></p>
<p><a href="http://www.amazon.co.jp/%E3%83%98%E3%83%AB%E3%83%99%E3%83%81%E3%82%AB-%7E%E4%B8%96%E7%95%8C%E3%82%92%E9%AD%85%E4%BA%86%E3%81%99%E3%82%8B%E6%9B%B8-DVD-%E3%82%B2%E3%82%A4%E3%83%AA%E3%83%BC%E3%83%BB%E3%83%8F%E3%82%B9%E3%83%88%E3%82%A6%E3%82%A3%E3%83%83%E3%83%88/dp/B001DCSBYG%3FSubscriptionId%3D0Q5JKQGKGX1PM5K1CPG2%26tag%3Dtakahashifumiki-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001DCSBYG" target="_blank"><img src="http://ecx.images-amazon.com/images/I/21LrCRS8QlL._SL160_.jpg" border="0" alt="ヘルベチカ ~世界を魅了する書 [DVD]" /></a></p>
<p><em>価格: </em>￥ 4,935</p><p><em>監督: </em>ゲイリー・ハストウィット</p><p><em>出演者: </em>マイケル・ビェルート, ネヴィル・ブロディ, デヴィッド・カーソン, マシュー・カーター, ウィム・クロゥエル</p><p><em>出版社: </em>角川エンタテインメント</p><p><em>商品カテゴリー: </em>DVD</p>
<hr class="tmkm-amazon-clear" />
</div>
<p><del><ins>追記＠2010-10-17　ちなみに、iPadにはヒラギノ明朝がインストールされていますが、CSSで指定しても反映されません。くわしくは<a href="http://novis.jimdo.com/2010/07/24/ibooks-%E3%81%A7%E5%A5%BD%E3%81%8D%E3%81%AA%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B/">novi&#8217;s pageさんの「iBooks で好きなフォントを使用する」</a>をご覧下さい。</ins></del><ins>追記＠2010-10-20 やっぱり<a href="http://takahashifumiki.com/others/1063/">できました</a>。</ins></p>
<h3>2. テキスト両端揃え</h3>
<p><a href="http://takahashifumiki.com/web/design/962/">以前のエントリーで書いた通り</a>、やろうと思えばできます。両端揃えしたい段落のすべての文字の間に幅0かつ半角スペースが入っているspanタグ（<a href="http://www.robundo.com/adana-press-club/glossary/ka.html#ka_fill-space">活版印刷に敬意を表してintelというクラス名がいい</a>と思います）を挟んでやればいいのです。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;p class=&quot;justify&quot;&gt;私は心天をいやらしい意味に捉えていました。&lt;/p&gt;
&lt;!-- ↓こうする--&gt;
&lt;p class=&quot;justify&quot;&gt;私&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;は&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;心&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;天&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;を&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;い&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;や&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;ら&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;し&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;い&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;意&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;味&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;に&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;捉&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;え&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;て&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;い&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;ま&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;し&lt;span class=&quot;intel&quot;&gt; &lt;/span&gt;た。&lt;/p&gt;
</pre>
<p>これはひどいマークアップですね&#8230;</p>
<pre class="brush: css; title: ; notranslate">
/*両端揃えにしたいpタグ*/
.justify{
	text-align:justify;
}

/*挿入用spanタグ*/
.intel{
	width:0;
	font-size:0;
	overflow:hidden;
}
</pre>
<p>理想としては、レイアウト用の余計なタグは入れたくないので、Javascriptによって動的に挿入していくことなのですが&#8230;これがうまくいきません。</p>
<p>1,2ページの文章ならいいのですが、「ハムスターに水を」のような長編小説にJavascriptによるDOM操作をやると、前回書いた通り、iBooksが落ちたり、ページネーションが壊れちゃいます。理由は以下の2つです。</p>
<ol>
<li>iBooksはJavascriptをサポートしているが、JSによってDOMを変更した場合、再描画がうまくいかない。っていうか再描画しようとさえしてなくない？</li>
<li>Javascriptで使えるメモリは凄く少ないので、ものすごく時間がかかるか、落ちる。</li>
</ol>
<p>ちなみにMobile Safariだと上記の問題はおきず、上手くいきました。</p>
<p>これは単なる予想ですが、iBooksはUIWebViewにラッパーかぶせてるだけじゃなくて、UIWebViewを継承して激しくオーバーライドしてるんじゃないですかねー。Objective-Cはぜんぜん詳しくありませんが。</p>
<p>iBooksは最初にファイルを読み込んでからキャッシュを作成するようなので、そこら辺の実装がMobiel Safariよりも動的なレンダリングを苦手とする要因のように思えます。</p>
<p>とにかく、テキスト両端揃えを実現するには、動的にspan.intelを差し込んでいくのではなく、あらかじめファイルに入れておく必要があります。これにより、テキストが奇麗にジャスティファイされます。</p>
<p>これを実現するための<a href="http://gist.github.com/629847">PHPクラスintel-injectorをGistに上げておいた</a>ので、PHPerの方は勝手に使ってください。DOMってるだけです。</p>
<p>ただし、全文に対してspanタグを入れると、フォントサイズ変更時に十中八九メモリを使いきって落ちます。また、起動も死ぬほど遅くなります。</p>
<p>したがって、ピンポイントで使う必要があり、全文をテキスト両端揃えすることはいまのところあきらめた方がよろしいです。</p>
<p>iPadならいけるんですけどねー。</p>
<p>使いどころに関しては次項のルビと併せてご覧下さい。</p>
<h3>3.ルビは実現可能</h3>
<p>ルビは早い話、実現可能です。</p>
<p><a href="http://gist.github.com/582085">gistにソースを上げておきました</a>が、マークアップをこんな風にすれば大丈夫です。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;私は&lt;span class=&quot;ruby&quot;&gt;&lt;span class=&quot;rb&quot;&gt;心天&lt;/span&gt;&lt;span class=&quot;rt&quot;&gt;ところてん&lt;/span&gt;&lt;/span&gt;をいやらしい意味に捉えていました。&lt;/p&gt;
</pre>
<p>なぜrubyタグではなくspanタグを使っているかというと、iBooks自体はrubyタグでもオッケーなんですが、僕がiBookStoreへの出品を申し込んだ<a href="http://www.lulu.com">Lulu.com</a>というサービスのバリデーション（<a href="http://threepress.org/tools/">Threepress Consulting Inc.のバリデータ</a>と同じ）でrubyタグが通らなかったんですね。</p>
<p>一応、<a href="http://www.w3.org/TR/ruby/">xhtml1.1にはrubyタグが拡張モジュールとして入っているはず</a>なんですが、なぜか駄目でした。したがってspanタグにしています。</p>
<p>僕のように出品するのではなく、直接ダウンロードなどで配信するだけならば、以下のようなマークアップでも大丈夫です。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;私は&lt;ruby&gt;&lt;rb&gt;心太&lt;/rb&gt;&lt;rt&gt;ところてん&lt;/rt&gt;&lt;/ruby&gt;をいやらしい意味に捉えていました。&lt;/p&gt;
</pre>
<p>で、肝はCSSです。</p>
<pre class="brush: css; title: ; notranslate">
.ruby{
	overflow:hidden;
	width:auto;
	display:inline-table;
	line-height:2.2em;
	vertical-align:text-bottom;
	border-collapse:collapse;
	border-width:0;
	padding:0;
	margin:0;
	text-indent:0;
}
.rb {
	line-height:1.1em;
	text-align:center;
	vertical-align:baseline;
	display:table-row-group;
	text-indent:0;
	margin:0;
	padding:0;
	border-width:0;
}
.rt {
	font-size:0.5em;
	display:table-header-group;
	text-align:center;
	text-justify:distribute-all-lines;
	line-height:1.1;
	text-indent:0;
}
</pre>
<p>全部が必要な指定というわけではないですが、おまじない的に書いておきました。これでもベースラインより少し下に下がってしまいますが、まあ現状では我慢ですね。</p>
<p>iBooksのキャッシュは相当強力なので、CSSの微調整は絶望的に面倒です。<ins>追記＠2010-10-17 　メタ情報のIDを変更することでキャッシュ関係無しに最新のデータが表示されますが、iTunesに取り込む作業が面倒過ぎて死にます</ins>。</p>
<div id="attachment_1036" class="wp-caption alignright" style="width: 235px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/10/skitched-20101016-235155.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/10/skitched-20101016-235155-225x300.png" alt="rubyの後の1文字の空白" title="rubyの後の1文字の空白" width="225" height="300" class="size-medium wp-image-1036" /></a><p class="wp-caption-text">rubyの後の1文字の空白</p></div>
<p>さて、これでrubyが実現できて嬉しーとなるのですが、衝撃的な問題が発生します。それは、「ルビの後に謎のスペースが出たり出なかったりする」です。</p>
<p>スペースができるのは以下の条件が重なったときです。</p>
<ol>
<li>rubyがその行内に存在する</li>
<li>その行が段落の最後ではない（＝禁則処理が行われる）</li>
</ol>
<p>要するに、最後の行以外にルビがあると謎のスペースが出現するんですね。ePubはリフロー型なので、「ルビが必ず最後の行に来る」ということは確証しづらいですよね。</p>
<p>出現条件はわかりましたが、なぜこうなるかはさっぱりわかりません。やはりinline-tableは高度なのでしょうか。</p>
<p>試行錯誤の末、上記で紹介したテキスト両端揃えを適用すると直るということがわかりましたので、「ハムスターに水を」ではルビの入っている段落だけspan.intelを挿入しています。</p>
<p>幸いというか、あえてそうしたのですが、「ハムスターに水を」は登場人物名ぐらいにしかルビが使われていません。しかし、総ルビの作品なんかはメモリが足りなくなると思います。</p>
<h3 class="clrR">4.ルビや両端揃えを実装すると他の端末で見られないかも</h3>
<p>今回の「ハムスターに水を」はiBooksを利用できるユーザーを想定して作成しました。</p>
<p>ただ、僕が販売先として選んだ<a href="http://www.lulu.com/product/ebook/%E3%83%8F%E3%83%A0%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%AB%E6%B0%B4%E3%82%92/12932265">Lulu.comではなぜかAdobe Degital Editionのマークがでかでかとある</a>ので、それで見るものだと勘違いしてしまう方も多かろうと思います。しかし、実はiBooks専用です。</p>
<p>さんざんiBooksの悪口を行ってきましたが、HTML+CSSのレンダラーとしてはDegital EditonsよりWebkit（Cocoa Touchフレームワーク？）の方がはるかに高度です。</p>
<p>Degital Editionsだとinline-tableが使えないうえ、入れ子になったspanタグもrubyのように認識されないタグも消えます。</p>
<p>これはTextLayoutFrameworkがそういう仕様なので、どうしようもありません。みんな<a href="http://forums.adobe.com/message/2765060#2765060">AdobeのTLFフォーラムで戸惑ってます</a>。</p>
<p>また、ePuber（そんな言葉ある？）の <a href="https://twitter.com/#!/naokisatoname/status/26446267938">@naokisatoname さんが検証してくれた</a>のですが、kindlegenでこのePubを変換しても崩れるようです。</p>
<p>というわけで、iBooksに併せて色々とやると他の端末で見られなくなるというブラウザ戦争の悲劇がここでもまた繰り返されていますね。</p>
<p><a href="https://twitter.com/#!/takahashifumiki/status/27462827717"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/10/a9e545af6cf7c3d607636395c43eb367-300x144.png" title="スクリーンショット（2010-10-16 23.54.19）" width="300" height="144" class="alignleft size-medium wp-image-1037" /></a></p>
<p>どうして世の中から戦争はなくならないの&#8230;?　僕は悲しいです。</p>
<h3 class="clrL">5.圏点はできる</h3>
<p>圏点はけっこう簡単です。こんな感じです。ゴマっぽい画像を用意してください。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;ヘーゲルの本では&lt;strong&gt;世&lt;/strong&gt;&lt;strong&gt;界&lt;/strong&gt;&lt;strong&gt;内&lt;/strong&gt;&lt;strong&gt;存&lt;/strong&gt;&lt;strong&gt;在&lt;/strong&gt;という言葉に圏点がついている&lt;/p&gt;
</pre>
<pre class="brush: css; title: ; notranslate">
strong{
	height:2em;
	display:inline-block;
	vertical-align:baseline;
	padding:0;
	line-height:2em;
	text-indent:0;
	background:url(../Images/dot.png) center top no-repeat;
	font-weight:normal;
}
</pre>
<p>また気持ち悪いマークアップになりましたが、しょうがないですね。</p>
<p>もしiBooksが動的なDOMいじりに対応してくれれば、こんなことにはならないのですが&#8230;</p>
<h2>次回予告：そうはいっても電子出版はやさしい</h2>
<p>というわけで、制作の部分について自分が困ったことを記してみました。</p>
<p>他はあんまり困らなかったというか、ググれば出てくると思います。<a href="http://miriamword.blog48.fc2.com/blog-entry-25.html">Sigli</a>とか使えばDreamWeaverっぽくできますし、InDesignからの書き出し実験をしている方も多いです。</p>
<p>ただ、本を出すだけではしょうがないので、色々と試行錯誤して売ってみたいと思っています。</p>
<p>その結果については<a href="http://bunfree.net">12月の文学フリマで出る破滅派七号</a>やこのブログでの続報をお楽しみに。</p>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/web/design/1063/' rel='bookmark' title='iBooks用のePub作成覚え書き（text-alignハックと明朝体とか）'>iBooks用のePub作成覚え書き（text-alignハックと明朝体とか）</a></li>
<li><a href='http://takahashifumiki.com/web/design/1842/' rel='bookmark' title='iBooks用のePub作成覚え書き（ePub3.0とかフォント指定とか）'>iBooks用のePub作成覚え書き（ePub3.0とかフォント指定とか）</a></li>
<li><a href='http://takahashifumiki.com/web/design/962/' rel='bookmark' title='【目指せePub出版】Webkitでtext-align:justifyに挑戦する'>【目指せePub出版】Webkitでtext-align:justifyに挑戦する</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/1035/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【目指せePub出版】Webkitでtext-align:justifyに挑戦する</title>
		<link>http://takahashifumiki.com/web/design/962/</link>
		<comments>http://takahashifumiki.com/web/design/962/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 16:44:25 +0000</pubDate>
		<dc:creator>高橋文樹</dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[電子書籍]]></category>

		<guid isPermaLink="false">http://takahashifumiki.com/?p=962</guid>
		<description><![CDATA[ずっと黙っていようと思っていたんですが、誰も聞いてくれないので告白します。 近いうちに破滅派からePub長編小説を出版すべく、ISBNを取ったり、ePubの作り方を調べたりしています。 明日には原稿の校正を終え、あとはe [...]]]></description>
			<content:encoded><![CDATA[<p>ずっと黙っていようと思っていたんですが、誰も聞いてくれないので告白します。</p>
<p>近いうちに<a href="http://hametuha.com">破滅派</a>からePub長編小説を出版すべく、ISBNを取ったり、ePubの作り方を調べたりしています。</p>
<p>明日には原稿の校正を終え、あとはePubファイルを作るだけという状況です。</p>
<h2>Appleに無視されてるテキスト両端揃え</h2>
<div id="attachment_965" class="wp-caption alignleft" style="width: 171px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/09/nonjusfied.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/09/nonjusfied-161x300.png" alt="iPhoneだと右端が揃わない" title="iPhoneだと右端が揃わない" width="161" height="300" class="size-medium wp-image-965" /></a><p class="wp-caption-text">iPhoneだと右端が揃わない</p></div>
<p>さて、今回のネタはAppleスタンダードから無視されている日本語Web組版の一助となるような内容のはず。すでに誰かがやっていた場合は無視してください。</p>
<p>HTML5+CSS3日本代表（？）である<a href="http://blog.antenna.co.jp/CSSPage/2010/07/textalign_justify.html">村上真雄さんが書いている</a>通り、「SafariやChromeの元になっているWebkitではtext-align:jutifyが効かないので、両端揃えができない」のですが、これは電子書籍問題としてとてもまずいです。<br class="clrL" /></p>
<div id="attachment_964" class="wp-caption alignleft" style="width: 171px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/09/justified.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/09/justified-161x300.png" alt="Javascriptでjustify" title="Javascriptでjustify" width="161" height="300" class="size-medium wp-image-964" /></a><p class="wp-caption-text">Javascriptでjustify</p></div>
<p>というわけで、今回はJavascriptを用いて強引にそれっぽくしてみました。詳しくは写真をどうぞ。<br class="clrL" /></p>
<p>基本的なアイデアとしては、以下の通りです。</p>
<ol>
<li>Webkitでtext-align:justifyを指定することはできるが、text-jutifyプロパティがないので、半角スペースの部分でしか字間を調整してくれない。</li>
<li>日本語は基本的に半角スペースによる分かち書きをしない（<a href="http://www.geocities.jp/hituzinosanpo/wakatigaki/">してる人</a>も少しいる）ので、Webkitが半角スペース(inter-word)以外でも字間を調整してくれようになるのを待つしかない。</li>
<li>それは嫌なので、とりあえずすべての字間に幅0の半角スペースを突っ込みまくって調整させればよくない？</li>
</ol>
<p>ということです。Javascriptで実装したのは、Webkitがtext-justifyプロパティに対応した場合、すぐ外せるからです。getComputedStyleメソッドとかでプロパティの有無を調べてから実行する形式にするともっといいかもしれません。</p>
<p>ソースはこんな感じです。</p>
<h3>css</h3>
<pre class="brush: css; title: ; notranslate">
.kusabi{
	width:0;
	font-size:0;
	overflow:hidden;
}
</pre>
<h3>Javascript(MooTools利用)</h3>
<pre class="brush: jscript; title: ; notranslate">
window.addEvent(&quot;domready&quot;, function(e){
	//字間を調整しない文字のリスト。要更新。
	var list = /[a-zA-Z0-9／「」〈〉《》￥［］〔〕,.&quot;&quot;ヶッゞ。、・ー]/;
	//時間調整用のspanタグ。半角スペースのみを含む。
	var s = &quot;&lt;span class=\&quot;kusabi\&quot;&gt; &lt;/span&gt;&quot;;
	//対象となるpタグに対して反復処理。
	//ここではpタグが含むテキストに対して処理を行っているが、
	//本来はテキストノードに対して処理を行うべき。
	//xPathとか使うと吉かも。
	$$(&quot;#content p&quot;).each(function(elt, index){
		var text = elt.get(&quot;text&quot;);
		var newText = &quot;&quot;;
		var textArr = text.split(&quot;&quot;);
		textArr.each(function(t, i){
			//ここのアルゴリズムは適当。
			if( textArr[i + 1] &amp;&amp; !t.match(list) &amp;&amp; !textArr[i + 1].match(list) ){
				newText += t + s;
			}else
				newText += t;
		});
		elt.set(&quot;html&quot;, newText);
	});
});
</pre>
<p>ポリシーとしては今のところこんな感じです。</p>
<ul>
<li>句読点、拗音、発音、促音の前にはスペースを入れない</li>
<li>半角英数の単語の間にはスペースを入れない</li>
</ul>
<div id="attachment_966" class="wp-caption alignleft" style="width: 171px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/09/small-letter.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/09/small-letter-161x300.png" alt="文字が小さいと字間が目立つ" title="文字が小さいと字間が目立つ" width="161" height="300" class="size-medium wp-image-966" /></a><p class="wp-caption-text">文字が小さいと字間が目立つ</p></div>
<p>ちょっとやってみたところ、まあいい感じなのですが、最後にわずかなスペースが入ってしまうのと、やはりスペースのサイズが完全に0にはならないので、妙に文字間が間延びしていることでしょうか。</p>
<p>文字サイズが大きい場合はそれほど気になりませんが、文字サイズを小さくするとやけに目立ちます。</p>
<p>とはいえ、Webkit限定ということを考えれば、色々と工夫の余地はあると思いますので、今後も引き続き検証してく予定です。乞うご期待。</p>
<p>一応、現時点でのソースを<a href="http://gist.github.com/579309">gist</a>に上げておきます。iPhoneで見てる人は<a href="http://s.takahashifumiki.com/wp-content/uploads/2010/09/justification.html">デモ</a>で確認してみてください。<br class="clrL" /></p>
<h3>追記＠2010-09-16</h3>
<p>実機に転送してみたところで次の問題発生。</p>
<ul>
<li>iPhoneのJavascript実行時間は10秒だったはずなので、forループでスタック。TimerEventに変更してトライ→SafariではOK。</li>
<li><a href="http://sai-zen-sen.jp/works/reader/style/lib/ruby.ios.css">星海社のサービスからCSSをパクって</a>Rubyを実現。inline-tableを使えばいいらしい。</li>
</ul>
<p>というわけで、ちょっとずつ問題を解決していきましたが、どうしても解決できなかったのがiBooksでの検証。</p>
<div id="attachment_975" class="wp-caption alignleft" style="width: 210px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/09/IMG_0366.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/09/IMG_0366-200x300.png" alt="2ページ目以降が表示されない(iPhone)" title="2ページ目以降が表示されない(iPhone)" width="200" height="300" class="size-medium wp-image-975" /></a><p class="wp-caption-text">2ページ目以降が表示されない(iPhone)</p></div>
<p>iBooksでは一応Javascriptを実行できるはずなのですが、appendChildとかで要素を追加すると、レンダリングがぶっ壊れるみたいです。</p>
<p>今回修正したアルゴリズムでは、setIntervalに応じてジャスティフィケーションをほどこした文字を一個ずつ追加していくというものだったのですが、2ページ名以降がなぜか表示されないんですね。<br class="clrL" /></p>
<div id="attachment_973" class="wp-caption alignleft" style="width: 235px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/09/IMG_0005.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/09/IMG_0005-225x300.png" alt="一回回転すると直る(iPad)" title="一回回転すると直る(iPad)" width="225" height="300" class="size-medium wp-image-973" /></a><p class="wp-caption-text">一回回転すると直る(iPad)</p></div>
<p>で、色々試行錯誤した結果、Javascriptによる処理を終えた後（これが結構時間かかる）に画面をローテーションさせると2ページ目以降も読めるようになるんですが&#8230; ページの一番下にあるページネーターが表示されなくなるんですね&#8230;</p>
<p>これは単なる予測にすぎませんが、Mobile Safariの描画エンジンとiBooksの描画エンジンでは、描画のタイミングがちょっと違うっぽいですね。<br class="clrL" /></p>
<div id="attachment_974" class="wp-caption alignleft" style="width: 235px"><a href="http://s.takahashifumiki.com/wp-content/uploads/2010/09/IMG_0006.png"><img src="http://s.takahashifumiki.com/wp-content/uploads/2010/09/IMG_0006-225x300.png" alt="普通はページの下にページネーターが(iPad)" title="普通はページの下にページネーターが(iPad)" width="225" height="300" class="size-medium wp-image-974" /></a><p class="wp-caption-text">普通はページの下にページネーターが(iPad)</p></div>
<p>Webkit(というか、普通のブラウザ）はJavascriptでなんかやるたびに描画されますが、iBooksはそうではないようです。</p>
<p>パッと見た感じ、通常のDOMの上にもう一個ラッパーみたいなのをかぶせてから制御しているんじゃないでしょうか。</p>
<p>というわけで、結局iBooksでJustificationには挫折した訳ですが、今回やってみて気づいたことが一つ。</p>
<p>iBooksやiPhoneアプリはやはりAppleのためのエコシステムという感じがします。</p>
<p>この軛から逃れるには、Webの世界に逃れていく（つまり、Mobile Safariだけをターゲットにする）という選択肢しかないような気がします。</p>
<p>iBooksの魅力は「ビューアー作らなくていい」と「決済システムいらない」の2点に尽きるわけですが、現状のMobile SafariとiBooksの差を見ていると、iBooksサイコー！って言いづらいですね。</p>
<p>というわけで、愚痴でした。</p>
<p>Related posts:<ol>
<li><a href='http://takahashifumiki.com/web/design/1035/' rel='bookmark' title='iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）'>iBooks用のePub作成覚え書き（ルビ、ジャスティフィケーションetc）</a></li>
<li><a href='http://takahashifumiki.com/web/design/958/' rel='bookmark' title='WordPressのiPhone用テーマをカスタマイズ'>WordPressのiPhone用テーマをカスタマイズ</a></li>
<li><a href='http://takahashifumiki.com/announcement/984/' rel='bookmark' title='長編小説「ハムスターに水を」ePub版販売開始'>長編小説「ハムスターに水を」ePub版販売開始</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://takahashifumiki.com/web/design/962/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

