<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~files/feed.xsl"?>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedpress="https://feed.press/xmlns" version="2.0">
  <channel>
    <feedpress:locale>en</feedpress:locale>
    <atom:link rel="hub" href="http://feedpress.superfeedr.com/"/>
    <title>[ FLAT ] Feed</title>
    <atom:link href="http://feedpress.me/flat" rel="self" type="application/rss+xml"/>
    <link>https://flat.onotakehiko.com</link>
    <description>Smooth and Even.</description>
    <lastBuildDate>Sat, 16 Apr 2016 07:07:39 +0000</lastBuildDate>
    <language>ja</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <generator>https://wordpress.org/?v=4.7.15</generator>
    <item>
      <title>Inside Japan Kokura Stripe :: [ FLAT ] Develop</title>
      <link>https://flat.onotakehiko.com/develop/2016/04/inside-japan-kokura-stripe/</link>
      <pubDate>Thu, 14 Apr 2016 10:16:16 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="develop"><![CDATA[Develop]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/develop/2016/04/inside-japan-kokura-stripe/</guid>
      <description><![CDATA[仕事のプロジェクトで “Japan Kokura Stripe” という Web コンテンツのアートディレクション / デザイン / フロントエンド周りを担当しました。 北九州に伝わる「小倉織」という古くからの織物があり...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/04/A0001-79_eyecatch-medium.jpg" alt="" style="max-width: 640px;"></p><p>仕事のプロジェクトで “<a href="http://japankokurastripe.com/" title="Japan Kokura Stripe – 縞縞の縞コレクション" rel="external"><strong>Japan Kokura Stripe</strong></a>” という Web コンテンツのアートディレクション / デザイン / フロントエンド周りを担当しました。</p>

[sc-figure url="http://japankokurastripe.com/" src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/04/devices.png" class="c-figure--wide"][/sc-figure]

<p>北九州に伝わる「小倉織」という古くからの織物があり、残念なことに昭和の初期にその伝統は一時途絶えてしまったのですが、染織家である築城 則子さんの手により現在は「<a href="http://shima-shima.jp/" title="小倉織 縞縞 | SHIMA-SHIMA" rel="external"><strong>縞縞 SHIMA-SHIMA</strong></a>」のブランド名の下、現代的なセンスも取り入れ新時代の小倉織として見事に復活を遂げています。</p>

<p>その縞縞さんのクリエイティブ パートナーを務めている HULS Inc. さんからお誘いいただき、縞縞さんの縞デザインをより広く認知させる目的で Web らしい表現でコンテンツに落とし込むことができないかと考える機会をいただいたのが発端でした。また、縞縞さんが今月開かれるミラーノ・サローネへ出展されるため、その会場で見ていただく展示物のひとつとしての意味合いも含んでおります。</p>

<p>今回の技術面でのスコープは SVG / CSS3 / Webfonts / Device Motion / 縦書き で、さほど技術的な目新しさはないものの SVG をここまで扱ったのは自分にとって初めての経験でしたし、実現にあたりその他にも細々とノウハウなども溜まったので書いておくことにしました。</p>

<hr>

<h2>縞デザインと遷移エフェクト</h2>

<p>縞デザインをどうやって Web らしく見せるか悩んだ結果、あえて写真は使わず縞のデザインをグラフィック的に解釈し、繰り返しパターンとして見せるシンプルな落としどころとなりました。写真を使わないというのはかなりチャレンジングですが、縞のデザインそのものにフィーチャーするという点をクライアント様にご納得いただけたことが大きいのではないかと思います。</p>

<p>そして、生地のデザインを切り替えて見せる際にただフェードイン・アウトさせるだけでなく、せっかくなら少し動きが欲しいよねというところで検討したのが今回の動きで、織物を織る際の糸の動きにインスパイアされたものです。実際に小倉織を織り上げる工程がこのような動きをすることはありませんが、小倉織の特徴である「縦縞」が徐々に出揃って模様が浮かびあがる様子を少しでも表現に取り入れたかった。</p>

</div>

<figure class="c-figure c-figure--wide">
<div id="iframe-wrapper"><div id="iframe-content">
<iframe src="http://japankokurastripe.com/" width="100%" height="100%"></iframe>
</div></div>
</figure >

<div class="p-entry__body">

<p>で、これをやるのに利用を検討したのが canvas / SVG / CSS3 だったわけですが、生地の縞デザインが「パターン」の繰り返しであることを踏まえつつ、</p>

<ul>
<li><strong>canvas:</strong> 速いだろうし表現力も高いが、一定パターンの繰り返し描画の仕組み自体から自分で実装する手間がかかる。レスポンシブ以前に、ウィンドウサイズが変わった時の描画の再計算の仕組み作りも面倒なことになりそう。そして個人的に苦手意識。</li>
<li><strong>SVG:</strong> 調べてみたら柔軟に繰り返しパターンの定義ができる、よっしゃ。CSSとの親和性が高くアクセスできるプロパティも多い、よっしゃ。工数も他2つより手軽、よっしゃ。ただ、canvas と比べると遅くなるのかも。</li>
<li><strong>CSS3:</strong> 背景画像の扱いはお手のもの。ただ、背景画像を動かしてアニメーションを実現させることを考えると工数がおぞましいことになりそうだし動作の負荷が高そうでまともな動作速度を得られるかが不安。また、背景画像ではなく &lt;div&gt; で構成することも考えたが前述する SVG のようなパターン定義の仕組みはなく、それならば CSS 単独で実装するメリットがない。</li>
</ul>

<p>上記の理由から SVG が最善と結論づけた。canvas の速度と表現力には最後まで迷いましたが、縞縞のブランドやテキスタイル デザインの持つ雰囲気や佇まいにド派手な演出はそぐわないため SVG でいけると判断したわけです。</p>

<h2>実装の基本デザインを検討する</h2>

<p>さあ SVG でやるぞと決め、バックエンドも含めた構成は次のようにすることを考えた。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/04/160413_1.png" bgcolor="#D2D2D2"][/sc-figure]

<p>生地の名称・説明文・サムネイル画像・アイキャッチおよび OG 画像など各生地に付随するデータのうち、縞デザイン以外のデータを管理する CMS として WordPress を利用しました。管理画面構築の手間がかからないほか、各生地のページをテンプレート化できた方がやはり便利ですし、簡単な修正ならお客さんでも対応できるメリットが大きかったからです。</p>

<p>一方、生地のデザインデータも可能なら WordPress で一元管理したかったのですが <ruby><rb><a href="https://www.advancedcustomfields.com" title="ACF | Advanced Custom Fields Plugin for WordPress" rel="external">Advance Custom Fields</a></rb><rp>（</rp><rt>ACF</rt><rp>）</rp></ruby> の環境下では管理画面が混沌としすぎるほか ACF の構造上、データの読み出しにコストがかかりすぎるという判断で、デザインデータについては独自で生のテーブル (= Textile Table) を利用するのみとした。生地データの追加は基本こちらで請け負う前提なので CMS は特に入れないことにしました。</p>

<p>また図中には書きませんでしたが、SVG を都度生成したり API を毎回呼ぶ必要はないのでキャッシュの仕組みも入れてバックエンドの負荷を軽くする工夫も施しています。</p>

<h2>CSS からアクセシブルな SVG の属性にはブラウザ間相違がある</h2>

<p>大枠の実装デザインが固まったのでここから SVG の実装に入っていく。縞縞さんからは Web コンテンツに掲載する実際の生地のサンプルをご提供いただいたので、それを元にして</p>

<ol>
<li>生地を一枚ずつスキャンする。</li>
<li>スキャンした生地を元に Photoshop のシェイプツールを使って描き起こす。色調整はスポイトツールで機械的に拾うほか、一定のホワイトバランスの照明の下、目視で確認しつつ調整した。</li>
<li>Photoshop から CSS として書き出し。</li>
<li>CSS を SVG の描画に必要な値のみ残して整形。</li>
<li>上図の “Textile Table” に示す DB のテーブルにインポートするため、CSS を CSV データに変換する。この作業は手作業では面倒なほかミスを起こす可能性が高いので変換用のプログラムを書いて行った。</li>
<li>CMS として仕込んだ WordPress から SVG を出力するテンプレートや、Ajax アクセス用の API を作成。</li>
</ol>

<p>というプロセスを経て画面上に描画できた画像がこちら。</p>

<figure class="codepen">
<p data-height="268" data-theme-id="0" data-slug-hash="yOpjoL" data-default-tab="result" data-user="onopko" class="codepen">See the Pen <a href="http://codepen.io/onopko/pen/yOpjoL/">Indigo Rondo</a> by Takehiko Ono (<a href="http://codepen.io/onopko">@onopko</a>) on <a href="http://codepen.io">CodePen</a>.</p>
<figcaption>x, y, width, height を XML 属性として定義したもの</figcaption>
</figure>

<figure class="codepen">
<p data-height="268" data-theme-id="0" data-slug-hash="RaxyxJ" data-default-tab="result" data-user="onopko" class="codepen">See the Pen <a href="http://codepen.io/onopko/pen/RaxyxJ/">Indigo Rondo (with CSS)</a> by Takehiko Ono (<a href="http://codepen.io/onopko">@onopko</a>) on <a href="http://codepen.io">CodePen</a>.</p>
<figcaption>x, y, width, height を CSS で定義したもの</figcaption>
</figure>

<script async src="//assets.codepen.io/assets/embed/ei.js"></script>

<p>さて。ここで上下同じ画像が見えているという人が使っているブラウザは Safari か Chrome の WebKit ブラウザでしょう。そして下の方は見えないという人は Edge / IE11 / Firefox のいずれかその他のブラウザだと思います。両者の違いは明確で、上の SVG 画像はパターンの各要素に関連する x, y, width, height の値を XML 属性として定義しているのに対し、下の SVG 画像は CSS で定義してます。</p>

<p>最初自分は下の方法で進めていて WebKit 以外でまともに表示されないことに気づき、これは地雷を踏んでしまったかもしれないやはり canvas でやっておけば... と絶望を味わったのですが、これは WebKit が優秀すぎるというか余計な実装をしているからであって、他のブラウザが悪いというわけではありませんでした。</p>

<p>W3C の <a href="https://www.w3.org/TR/SVG/styling.html" title="Styling – SVG 1.1 (Second Edition)" rel="external"><strong>SVG styling</strong></a> の項目を見ると、CSS からアクセス可能なプロパティがちゃんと定義されているんですね。その中には x, y, width, height どれもありません。ソースとスタイリングを厳密に分けることができないのは残念ですが、アクセシブルでないプロパティについては XML 中で定義してあげる必要があります。</p>

<hr>

<h2>Velocity.js is Justice</h2>

<p>現在表示している生地から次の生地へデザインをトランシジョンさせるには、まず次の生地のデザインを構成する各縞のデータを API から読み込み、<a href="http://julian.com/research/velocity/" rel="external">Velocity.js</a> を用いてアニメーションさせました。この時、毎回同じアニメーションとならないよう各縞の動き始めの時間をコントロールして順序をランダマイズしています。</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
$('#stripe1').velocity({
translateZ: 0,
x         : 100,
width     : 5,
fillRed   : 128,
fillGreen : 32,
fillBlue  : 64
}, {
duration  : 300,
delay     : 100
});
[/cc]

<p>のような形で各縞にアニメーション効果を当てていきます。x や width は SVG の XML 属性であり CSS からアクセシブルではないことを書きましたが、他の CSS プロパティのアニメーションと同列に扱えてしまうところが Velocity.js の強力なところ。Velocity.js 同様に CSS アニメーション ライブラリとしてそこそこ使われているものとして <a href="http://ricostacruz.com/jquery.transit/" rel="external" title="Transit - CSS transitions and transformations for jQuery">Transit</a> が挙げられると思いますが、こちらは SVG の XML 属性にはまるで対応していません（CSS のアニメーション ライブラリなのでそこを求めるのが酷というものですが）。</p>

<p>なお “translateZ” の指定は本来実現したい動き上は不要なのですが、指定をしておくとPC・スマートフォンとも CSS アニメーションに強制的にハードウェア アクセラレーションが働きますので動きが高速になるほか CPU の負荷も下げられます。なんでもかんでも指定してしまうとブラウザの使用メモリが増大するほか描画のバグが出てしまうデメリットもあるようなのですが、滑らかな動きが欲しい時には必須と言えます。</p>

<h2>Forcefeeding</h2>

<p>概ね大満足な Velocity.js なんですが、時たまどうも不思議な挙動をして困る。アニメーションをさせたい要素に対し、CSS 内であらかじめ別のアニメーションが定義されている時などに起こりがちです。</p>

<p>期待されるアニメーションを確実に実行するには、[] を用いてアニメーションを開始する時の初期値も合わせて指定するのが無難です。アニメーションを強制するという意味合いで Forcefeeding と呼んでいるようです。</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
$('#stripe1').velocity({
translateZ: 0,
translateX: [目標値, 初期値]
}, {
duration  : 300
}
);
[/cc]

<p>なお要素の現在の translate の値を得るのは vender prefix の影響もあり実は結構厄介なので、関数化しておくと便利でした。</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
function getTranslates ($_obj) {
var transformMatrix = $_obj.css("-webkit-transform") ||
$_obj.css("-moz-transform") ||
$_obj.css("-ms-transform") ||
$_obj.css("-o-transform") ||
$_obj.css("transform");

var matrix = transformMatrix.replace(/[^0-9\-.,]/g, '').split(',');

var x = matrix[12] || matrix[4];  // translateX
var y = matrix[13] || matrix[5];  // translateY

transformMatrix = matrix = void 0;

return [x, y];
};

var translates = getTranslates($('#id'));
var translateX = translates[0];
var translateY = translates[1];
[/cc]

<hr>

<h2>画像のブレンドをしたいなら canvas</h2>

<p>生成した SVG に生地の質感を与えるため、当初はテクスチャ画像を SVG Filter を用い全体に「乗算」する形でブレンドしたのですが、これでアニメーションを行うと CPU 負荷が跳ね上がりコマ送り状態の非常に厳しい処理結果となりました。</p>

<p>動かす要素がベクターであっても、そこに画像をブレンドした瞬間に内部的にはラスタライズしているのと同じとなり、アニメーションの毎フレームごとに全体を画像としてレンダリングする形となるようです。今回はテクスチャを SVG 全域にわたってかぶせる必要がありましたし、また SVG の表示領域も大きかったことから「使える」動作速度にはなりませんでした。</p>

<div class="two-col">
<figure class="default" style="background-color: rgb(255, 255, 255); margin: 0; padding: 0;"><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/04/2b19b56e746bfd998cf00130e9d58e1b.png"><figcaption><span>元のテスクチャ画像（白色部分の透過処理をしていない）</span></figcaption></figure>
<div style="-webkit-column-break-before: always; break-before: column; margin: 0; padding: 0; height: 0;"></div>
<figure class="default" style="background-color: rgb(255, 0, 0); margin: 0; padding: 0;"><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/04/2b19b56e746bfd998cf00130e9d58e1b.png"><figcaption><span>テクスチャ部分を残し透過処理した画像（透過部分が赤色）</span></figcaption></figure>
</div>

</div>
<div class="p-entry__body">

<p>今回はテスクチャ画像の白地部分を抜いて透過処理することで、SVG Filter を使用することなく目的とする
描画を実現できたので難を逃れましたが、描画するものに乗算やオーバーレイなどのブレンドを扱ったアニメーションを行うなら確実に canvas を使った方が良いです。</p>

<hr>

</div>
<div class="c-column--expanded">
<p data-height="364" data-theme-id="0" data-slug-hash="bpvVjr" data-default-tab="result" data-user="onopko" class="codepen">See the Pen <a href="http://codepen.io/onopko/pen/bpvVjr/">bpvVjr</a> by Takehiko Ono (<a href="http://codepen.io/onopko">@onopko</a>) on <a href="http://codepen.io">CodePen</a>.</p>
</div>
<div class="p-entry__body">

<h2>横スクロールの初期位置を右端にする</h2>

<p>上のように、一定のブロック要素が横並びになったようなリスト表示でしか使えないテクニックとなりますが、ページを開いた時に、横スクロールの初期位置を右端にしたい場合。リストを overflow:hidden で内包するブロック要素 (.p-cn__container) を180度回転させ、かつ中のリストの子要素 (.p-textile-link) を180度回転させることで可能です。ポイントは、</p>

<blockquote><strong>.p-cn__container</strong> &gt; .p-textile-links &gt; <strong>.p-textile-link</strong></blockquote>

<p>と構成されている要素のうち、180度の回転を行うべき要素はそれぞれ「<strong>親</strong>」と「<strong>孫</strong>」の関係にある点です。実際に試してみればすぐに分かりますが、「親」と「子」の関係では左端のままとなりうまくいきません。</p>

<h2>Scroll Snapping</h2>

<p>現在のところ Safari • Chrome といった WebKit 系のブラウザでしかサポートされていませんが、スクロールを行った際にあらかじめ決めていたグリッド位置へスクロール後の位置をピタッと合わせることが可能です。</p>

<p>上のサンプルにおいてもスクロールが水平方向に 95px 移動するごとに吸いつくように止まる実装をしています。※ただし、特殊な事例ですが上のように iframe でコンテンツを読み込んでいる場合には<a href="https://bugs.webkit.org/show_bug.cgi?id=142582" title="Bug 142582 &ndash; Scroll snap points are not supported on iframe content" rel="external">バグがあり、正常に動作しない</a>場合があるようです。</p>

<p>また、上のような細かな間隔で scroll-snap を設定してしまうと、PC ではかえってスクロールがしにくいと感じると思いますので、タッチデバイスにのみ適用されるように CSS を調整すべきです。</p>

<blockquote>FYI: <a href="https://webkit.org/demos/scroll-snap/" rel="external">Scroll Snapping Examples</a> (WebKit.org)</blockquote>

<p>1画面ごとにスクロールを止めたいような場合、現状では JavaScript に頼らざるを得ない状況ですので他のブラウザにもサポートされると良いなと思います。細かい部分では Scroll Snapping してもしなくても大した印象の変化は生まれないかもしれませんが、ちょっと小粋な動きではありますね。</p>

<hr>

<h2>favicon を動的に変更する</h2>

<p>Japan Kokura Stripe では favicon に生地の一部をクロップした画像を設定しています。縞デザインごとに favicon を作るだけでも結構面倒な作業ではありますが、favicon と縞デザインが一致してないとなんだか気持ちわるいでしょう。というだけのこだわりからなのですが。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/04/160407-1.png" class="c-figure--wide"][/sc-figure]

<p>生地の切り替え時、ページ全体を読み込むのではなく非同期にページの一部分を動的に書き換えることによって切り替えの速度を向上させています。この時当然 favicon の切り替えも必要になるのですが、</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
<link id="favicon" rel="shortcut icon" href="http://japankokurastripe.com/favicon.ico">
[/cc]

<p>favicon の指定部分が上記の link 要素の通りだとして、一見 href の値を書き換えれば良いだけのように思えますが実はそれではうまくいきませんので、一旦 link 要素を削除して新しく link 要素を追加する対応が必要でした。</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
$('head #favicon').remove();
$('head meta:last')
.after(
$(document.createElement('link')).attr({
id  : 'favicon',
rel : 'shortcut icon',
href: '切り替え先の favicon のファイル名'
})
)
;
[/cc]

<p>favicon の書き換えを行う事例として上記はちょっと特殊で、通常は Gmail などのように新規メッセージなどの「通知」の数を知らせる場合に小粋な演出として使われることが多いと思います。</p>

<p>そうした通知の際にもし favicon をアニメーションさせられたら？と考えると、視覚的に訴える効果も出せそうでナイス アイデアと思えるものの、実際に実装するとなるとコマ送りの要領でアニメーションに必要な分の favicon を作る必要があり作業的になかなかシビアです。しかしモダンブラウザに限れば [canvasに描画] → [pngに変換] → [faviconへ書き出し] という芸当も可能になっており、世の中そうしたニーズに応える奇特なライブラリというものが探せばあるもので、<a href="http://lab.ejci.net/favico.js/" title="favico.js - Make use of your favicon" rel="external">favico.js</a> がガッツリと応えてくれることでしょう。</p>

<h2>setAnimationFrameTimeout</h2>

<p>モダンブラウザでの繰り返し実行によるアニメーションの実装には、setTimeout / setInterbal ではなく requestAnimationFrame を使え。と言われて久しいですが、少なくとも setTimeout を使う機会は定期的な処理の実行時ではなく、複数の処理を並列で実行する場合に一部の処理をあえて遅らせて負荷を軽減する「遅延実行」時に多くはないでしょうか。</p>

<p>また setTimeout は指定された遅延のタイミングで何が何でも渡された処理を実行しようとするのに対し、requestAnimationFrame はウィンドウがアクティブではない時には FPS を落とすなど柔軟性を持っています。そのため、requestAnimationFrame で処理を実行中に setTimeout で別の処理を実行すると、ユーザーの行動によっては両者の実行タイミングの辻褄が合わなくなることも考えられます。</p>

<p>Japan Kokura Stripe でもモバイル端末での devicemotion イベントの処理時に同じような状況に置かれたため、setTimeout が実現する機能をモダンブラウザが持つ requestAnimationFrame と performance.now で代替する jQuery プラグインを書いた。</p>

<p>こちらは<a href="https://flat.onotakehiko.com/develop/2016/04/setrequestanimationframetimeout/" title="setRequestAnimationFrameTimeout">別エントリー</a>にて。</p>

<h2>Webfont の読み込み後に処理を実行する</h2>

<p>Webfont の表示はフォントベンダーから配信されるか、自サーバーに設置した Webfont ファイルの読み込み後に行われ、ブラウザにキャッシュされていない場合にはそれなりに時間がかかります。そして Web サイトを実装していると、中には Webfont の読み込みを待たずに実行されてしまうと困る場合や、並列に処理している内容が多く負荷がかかるので、部分的に実行を遅らせたいという場合が出てきます。</p>

<p>そんな時に使えるイベント処理として $.onLoadWebfonts を用意しました。元ネタは Stack Overflow にあった<a href="http://stackoverflow.com/questions/5680013/how-to-be-notified-once-a-web-font-has-loaded" title="javascript - How to be notified once a web font has loaded - Stack Overflow" rel="external">こちらの記事</a>なのですが、フォントの読み込みごとにコールバック関数が実行されてしまう不具合があったので修正した上で jQuery プラグイン化した。Japan Kokura Stripe でも上記の setAnimationFrameTimeout と同様に負荷分散の目的で使用しました。</p>

<script src="https://gist.github.com/onopko/adce375695c08b2b2b46c0176f5635be.js"></script>

<p>使い方は以下の通りで $.onLoadWebfonts に対し、Webfonts の CSS 上での名前リストと読み込み後の処理を引数として渡してあげるのみです。リストに書く Webfont の名前をコントロールすれば、特定の Webfont の読み込みのみを監視することも可能です。</p>

<p>ただし 1 つ問題はあって日本語等のマルチバイト フォントにおいて、その Webfont にページ中で使われている文字のみをロードするダイナミック ロードの機能が備わっている場合（ほとんどのケースだと思いますが...）には監視が困難です。基本的には欧文フォントのように全ての文字を一気にダウンロードするタイプの Webfont の場合に有効な手段かと思います。</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
$.onLoadWebfonts(['webfont1', 'webfont2', ...], function() {

    // do something;

});
[/cc]

<p>そしてここまで書いてナンですが、ブラウザが <a href="https://developer.mozilla.org/en-US/docs/Web/API/CSS_Font_Loading_API" title="CSS Font Loading API - Web APIs | MDN" rel="external"><strong>CSS Font Loading API</strong></a> をサポートしているならこんなことをする必要はありませんのでそちらを使いましょう。</p>

<hr>

<h2>devicemotion</h2>

<figure><div class="embed-container"><iframe src="https://www.youtube.com/embed/5Sd9nNd3J90?rel=0" frameborder="0" allowfullscreen></iframe></div></figure>

<p>制作も終盤になって演出として、スマートフォン等加速度センサーに対応したデバイスに限りますが、端末の傾きにより生地がゆったりと流れるような演出を加えました。</p>

<p>PC についてはマウスで横にスクロールできるようなギミックを持たせてもよかったのですが、デバイスを制限したのには理由があり、「生地をマウスでスクロールする行動は実際には有りえない」という判断からでした。何を言っているんだ...？という話ですが、人が着物やその生地を手にとって眺めようと思う時には、両手に抱えた生地を左右に傾けたり、見たい場所へとゆっくりと滑らせるように生地を移動させるという行動を取ると思います。</p>

<p>Japan Kokura Stripe で扱っているのは生地のテキスタイル デザインですが、そのデザインが反映されているのは現実世界にある生地という「物」になります。その物を扱う時にする動作と演出はリンクすべきと考え、対応端末を制限する結論に至りました。もちろんスマートフォンやタブレットで行う手の動きが生地を眺める時の動きと全く同じという訳でもありませんが。</p>

<p>前述した通り、このサイトにド派手な演出は不要という前提があります。が、気づくか気づかないかの細々とした仕掛けを施すことで、サイトにリッチな印象を積み重ねていくことができれば良いなと思います。</p>

<hr>

<h2>TypeKit から特定の文字が配信されない</h2>

<p>これはもう完全に TypeKit 側のバグとなりますが、WebFont として使用している「A-OTF 太ミンA101 Pr6N」のうち何故かカタカナの「キ」と「ク」だけ配信されない。すごく地味に辛いので直してください。<span class="endmark"></span></p></div>]]></content:encoded>
    </item>
    <item>
      <title>setAnimationFrameTimeout :: [ FLAT ] Develop</title>
      <link>https://flat.onotakehiko.com/develop/2016/04/setanimationframetimeout/</link>
      <pubDate>Thu, 14 Apr 2016 05:59:48 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="develop"><![CDATA[Develop]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/develop/2016/04/setanimationframetimeout/</guid>
      <description><![CDATA[モダンブラウザでの繰り返し実行によるアニメーションの実装には、setTimeout / setInterbal ではなく requestAnimationFrame を使え。と言われて久しいですが、少なくとも setTi...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/04/eyecatch_160414_2-medium.png" alt="" style="max-width: 640px;"></p><p>モダンブラウザでの繰り返し実行によるアニメーションの実装には、setTimeout / setInterbal ではなく requestAnimationFrame を使え。と言われて久しいですが、少なくとも setTimeout を使う機会は定期的な処理の実行時ではなく、複数の処理を並列で実行する場合に一部の処理をあえて遅らせて負荷分散を図る「遅延実行」時に多くはないでしょうか。</p>

<p>また setTimeout は指定された遅延のタイミングで何が何でも渡された処理を実行しようとするのに対し、requestAnimationFrame はウィンドウがアクティブではない時には FPS を落とすなど柔軟性を持っています。そのため、requestAnimationFrame で処理を実行中に setTimeout で別の処理を実行すると、ユーザーの行動によっては両者の実行タイミングの辻褄が合わなくなることも考えられます。</p>

<p>そこで setTimeout が実現する機能を、モダンブラウザが持つ requestAnimationFrame と performance.now で代替する jQuery プラグインを書いた。</p>

<script src="http://gist-it.appspot.com/http://github.com/onopko/setAnimationFrameTimeout/blob/master/dist/setAnimationFrameTimeout.js"></script>

<p>使い方は setTimeout とほぼ同じで</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
$(function () {

    // make the timer.
    var timer = $.setAnimationFrameTimeout(function () {
        console.log('timeout');
    }, 1000);

    // cancel the timer.
    timer.clearAnimationFrameTimeout();

});
[/cc]

<p>などとしてもらえば OK で、一度セットしたタイマーを途中でキャンセルしたければ clearAnimationFrameTimeout してください。一応レガシーブラウザ向けの polyfill も実装していますが確認はしてません。ｷﾘｯ<span class="endmark"></span></p></div>]]></content:encoded>
    </item>
    <item>
      <title>川崎臨海工業地帯のプラント群が美しい :: [ FLAT ] Log</title>
      <link>https://flat.onotakehiko.com/log/2016/02/kawasaki-bayside-industrial-area/</link>
      <pubDate>Fri, 12 Feb 2016 10:40:18 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="log"><![CDATA[Log]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/log/2016/02/kawasaki-bayside-industrial-area/</guid>
      <description><![CDATA[富士フイルムの “X-T10” というミッド レンジ クラスのミラーレス カメラと、“FUJINON XF35mmF1.4 R” という銘玉単焦点レンズを買った。その話はまた今度として。何か撮影してみたいなあと思ったら、...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1587-medium.jpg" alt="" style="max-width: 640px;"></p><p>富士フイルムの “<a href="http://fujifilm.jp/personal/digitalcamera/x/fujifilm_x_t10/" title="FUJIFILM X-T10 | 富士フイルム" rel="external">X-T10</a>” というミッド レンジ クラスのミラーレス カメラと、“<a href="http://fujifilm.jp/personal/digitalcamera/x/fujinon_lens_xf35mmf14_r/" title="フジノンレンズ XF35mmF1.4 R | 富士フイルム" rel="external">FUJINON XF35mmF1.4 R</a>” という銘玉単焦点レンズを買った。その話はまた今度として。何か撮影してみたいなあと思ったら、その日はちょうど空気のキリッと澄んだ冬の晴れ日だったこともあり、以前から気になっていた川崎の臨海工業地帯のプラント群を観にドライブがてら出かけてきた。</p>

<p>川崎の臨海地域は、北九州・室蘭・四日市に並ぶ関東の一大工業地帯だ。夜中には照明が点灯し、複雑に金属の絡みあうプラント群の造形が暗闇の中に浮かび上がる。その光は「ライトアップ」という訪れた人たちを楽しませるためのものではなく、狙いのない実用的な機能のためのものと言えるだろう。だが、研ぎ澄まされた機能は確かに美しい。</p>

<hr>

<h2>浮島エリア</h3>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1588.jpg" class="c-figure--wide"]東燃ゼネラル石油 / 石油精製プラント / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1587.jpg" class="c-figure--expanded"]東燃ゼネラル石油 / 石油精製プラント / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1592.jpg" class="c-figure--wide"]JX日鉱日石エネルギーの精製プラントへ向かう道路 / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1593.jpg" class="c-figure--wide"]東燃ゼネラル石油 / 石油精製プラント / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1594.jpg" class="c-figure--expanded"]東燃ゼネラル石油 / 石油精製プラント / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1597.jpg" class="c-figure--wide"]JX日鉱日石エネルギー / 精製プラント / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1602.jpg" class="c-figure--expanded"]JX日鉱日石エネルギー / 精製プラント / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1603.jpg" class="c-figure--wide"]JX日鉱日石エネルギー / 精製プラント / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]

<h2>千鳥町エリア</h3>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1618.jpg" class="c-figure--wide"]日本触媒 / 化学精製プラント / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/IMG_1621.jpg" class="c-figure--expanded"]日本触媒 / 化学精製プラント / FUJIFILM X-T10 + FUJINON XF35mmF1.4 R[/sc-figure]

<p>思っていたよりも見所が多く撮影にどれだけ時間を割くかにもよるが、1・2時間では数箇所回るのが限度だろう。今回は東側エリアばかりになってしまったので、冬の間に水江町や扇町エリアなど西側も掘り下げていきたい。馴染みのない業種なので普段はあまり足を踏み入れることがない地域であるし、ましてや夜ともなるとなかなか訪れる機会もない。車もないと不便な場所なので、大人だからこそできる社会見学として楽しい。<span class="endmark"></span></p></div>]]></content:encoded>
    </item>
    <item>
      <title>Chrome の最新バージョンでページロードがフリーズする :: [ FLAT ] Develop</title>
      <link>https://flat.onotakehiko.com/develop/2016/02/chrome-freezes/</link>
      <pubDate>Fri, 05 Feb 2016 05:49:21 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="develop"><![CDATA[Develop]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/develop/2016/02/chrome-freezes/</guid>
      <description><![CDATA[Chrome の最新バージョン (ver.48.0.2564.103) で、特定のサイトのページ読み込みが愕然とするほど重くなる現象が発生した。重くなるどころかほぼブラウザがフリーズしたかのごとく、通常であれば体感的に5...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/cover_160204-medium.png" alt="" style="max-width: 640px;"></p><p>Chrome の最新バージョン (ver.48.0.2564.103) で、特定のサイトのページ読み込みが愕然とするほど重くなる現象が発生した。重くなるどころかほぼブラウザがフリーズしたかのごとく、通常であれば体感的に5秒も待てば読み込みが完了するようなページが、同期・非同期の読み込みに関わらず猛烈に遅くなり読み込み完了に2〜3分近く待たされる。ちなみに Windows 版にはなく Mac 版にのみ発生する症状。</p>

<p>問題のページを Developer Tools を起動した状態でロードし、ネットワーク ペインを確認したところ画像・JavaScript・Web Font など数多くのファイルの読み込みで “<strong>pending</strong>” 状態が長く続いてしまう。ブラウザとサーバー間のリクエスト処理に何らかの問題が発生しているらしい。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2016/02/ss1-minishadow.png" class="c-figure--wide"][/sc-figure]

<p>初めは Chrome 内部の問題（バグ）としてアップデートまでの辛抱と匙を投げかけたが、そうもいかないので。</p>

<ol>
<li>画像や WebFont を一旦サーバーから削除して読み込み確認。<br>
→ 改善なし</li>
<li>HTML ソースから外部ファイルの読み込みを行う記述を1つ1つ削除しながら検証。<br>
→ 特定の CSS ファイルを読み込み対象から外すと現象が治る事を確認</li>
<li>展開した状態で14,000行あまりになる該当の CSS ファイルの記述から、あやしそう（勘）な記述を削除してみては検証を繰り返す。</li>
</ol>

<p>という涙ぐましいローラー作戦の元、ついに原因を突き止めた。いやぁ、BGM でアルマゲドン鳴ったね。ﾄﾞｳｫﾅｸﾛｰｽﾏｲｱｰｲｽﾞだったね、おれやった。</p>

<figure><div class='embed-container'><iframe src='https://www.youtube.com/embed/qdX6XrDOOrM' frameborder='0' allowfullscreen></iframe></div></figure>

<hr>

<p>というわけでまさか（IEでなくて）Chrome が？という非常に珍しいと思われるバグに苛まれたわけですが、この無益な時間を他の人も味わう必要はないので以下解答です。</p>

[cc lang="css" escaped="true" line_numbers="off" noborder="1"]
text-rendering: optimizeLegibility;
font-feature-settings: 'kern';
-webkit-font-feature-settings: 'kern';
-moz-font-feature-settings: 'kern';
-moz-font-feature-settings: 'kern=1';
[/cc]

<p>CSS に text-rendering: <strong>optimizeLegibility</strong> や font-feature-settings: <strong>'kern'</strong> など、フォント レンダリングに関して「合字」や「カーニング」の指定を行うと問題の現象が起こります。</p>

<p>Chrome と特定のフォントとの相性が原因という可能性もありますが、Web Font を削除しても治らなかったため Mac 内のデバイスフォントが起因する問題かもしれません。また、CSS のフォントのレンダリングに関する設定がネットワーク リクエストに問題を引き起こす理由もただただ謎。私のタイム リソースを返してください。<span class="endmark"></span></p></div>]]></content:encoded>
    </item>
    <item>
      <title>RightFont for Mac :: [ FLAT ] Develop</title>
      <link>https://flat.onotakehiko.com/develop/2015/12/rightfont-for-mac/</link>
      <pubDate>Fri, 25 Dec 2015 08:14:32 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="develop"><![CDATA[Develop]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/develop/2015/12/rightfont-for-mac/</guid>
      <description><![CDATA[Mac 内のフォント管理にながらく FontExplorer X Pro を使ってきたが、あらゆる面で機能を凌駕する “RightFont” というフォント マネージャが登場していたので閃光の様に乗り換えた。トライアルの...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/12/eyecatch-medium.jpg" alt="" style="max-width: 640px;"></p><p>Mac 内のフォント管理にながらく <a href="https://www.fontexplorerx.com" title="FontExplorer&#174; X Pro - Font Management Software &amp; Free Trial" rel="external">FontExplorer X Pro</a> を使ってきたが、あらゆる面で機能を凌駕する “<a href="http://rightfontapp.com" rel="external" title="RightFont - The future of font manager software for Mac OS X">RightFont</a>” というフォント マネージャが登場していたので閃光の様に乗り換えた。トライアルのダウンロードができないところがやや心配だったものの、ウェブサイトからしてしっかりしている感が伝わったので Team License で購入してもらった。</p>

<p>結果、購入して本当に良かったと思える。太陽系に住んでいる全ての Mac ユーザーが使えばいい。それはまあ言い過ぎだとしても、ウェブなり DTP なりデザイン業で大量のフォントを扱われている方には導入をおすすめせざるを得ない。</p>

[sc-figure url="http://rightfontapp.com" src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/12/ss8.jpg"]RightFont - The future of font manager software for Mac OS X[/sc-figure]

<hr>

<h2>Sync! Sync! Sync!</h2>

<p>RightFont はライブラリをフォルダで管理する仕組みとなっており Dropbox と Google Drive 内へのライブラリ設置をサポートしています。つまり複数の Mac 間でのフォントの同期が可能になります。</p>

<p>フォントファイルそのものは Dropbox 等を使えば、同じく単一フォルダでのライブラリ管理をする FontExplorer でも可能ではありました。しかし FontExplorer は別の Mac から同期されライブラリフォルダ内に新しく加わったフォントを認識することができず、インストール作業はそれぞれの Mac でしてあげる必要がありました。そうしなければ、新しくフォントファイルが加わったところでシステムが認識をしていないのでインストールされていない状況と変わりません。せっかくフォントファイルが同期しても、「今どのフォントがシステムに存在するか」については同期することが出来ないところが FontExplorer の残念なところでした。</p>

[sc-figure class="c-figure--wide" src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/12/ss7.jpg" class="c-figure--wide"]Dropbox で Live List を同期[/sc-figure]

<p>RightFont が特筆すべきなのは、あらかじめ “<strong>Live List</strong>” （後述）と呼ぶ専用フォルダを作っておけば、その中に新たなフォントファイルが追加された時に、それを「検知」し即座にフォントとして利用可能な状態にセットアップしてくれる点にあります。この Live List を Dropbox 内に設置すれば自宅と事務所にある2台以上の Mac でフォントファイルがスムーズに同期され、夜中に自宅の Mac にインストールしたフォントが翌朝事務所に到着すれば直ぐに使える状態になっているという利便性が生まれます。</p>

<h3>Team! Team! Team!</h3>

<p>もしかするとラップトップの Mac を使っており自宅と事務所で常に持ち運びをしているという人もいるかもしれません。僕もそうなのですが、フリーランサーの方々なんて特にそうかも知れませんね。すると個人で持っている Mac は一台しかないので一見同期に関してはメリットがないように思えてしまうのですがそれは違います。</p>

[sc-figure class="c-figure--wide" src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/12/sc1.png" class="c-figure--wide"]Dropbox による Live List の共有[/sc-figure]

<p>ポイントは、Dropbox や Google Drive の「共有」機能にあります。ご存知のようにこうしたサービスでは設定を行うことでアカウント間でファイルの同期が可能です。つまり RightFont の Live List フォルダに共有設定をかければ別のアカウントのユーザーとフォントの同期が可能になることになります。</p>

<p>RightFont は複数の Live List を作成することが可能なので、プロジェクト用の Live List フォルダを作成し共有すれば、プロジェクトごとに扱うフォントをチームで共有・同期をすることが可能ということになります。Dropbox を使ったフォントサーバーが実現できるわけですね。これは非常に熱い。</p>

<h3>やさしさライセンスとフォントライセンス</h3>

<p>というわけで RightFont を使えば複数 Mac 間やチーム内での強力なフォント同期・共有の環境構築ができるようになるわけですが。一応釘を刺しておくと、<strong>フォントにはライセンスがあります。そしてそれはとても大切なものです。</strong>そもそも複数の Mac やユーザー間で共有を行うことができるかについてはライセンスの確認を怠らないようにしましょう。やさしさライセンスを持っているデザイナーさんたちはきっとフォントにもやさしいはず。</p>

<h2>List と Live List</h2>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/12/ss2.jpg"]List と Live List で目的にあったフォントの分類が可能[/sc-figure]

<p>RightFont には “List” と “Live List” という管理の仕組みがあり名称が似ているので混乱しがちですがそれぞれ性格が異なります。</p>

<h3>List</h3>

<p>まず “List” に関しては iTunes でいう音楽のプレイリストのようなものを想像してもらえるとわかりやすいでしょう。RightFont で管理しているフォントを、例えばあるプロジェクトで使用しているフォントのみを集めたリストに分類するとか、「ガーリー」など独自の視点でフォントを分類することが可能です。</p>

<p>同じフォントを2つ以上のリストに登録している場合、あるリストからフォントを削除しても別のリストからそのフォントが削除されることはありません。</p>

<h3>Live List</h3>

<p>一方、“Live List” は作成しようとすると外部のフォルダの指定を求められます。この Live List を作ると、以降 RightFont はそのフォルダを監視し、フォントファイルが設置されると即座にライブラリに取り込みシステムで使えるように設定してくれます。逆にフォントファイルが取り除かれれば RightFont の管理下から外されます。リストというより別個のライブラリとしての性格が強いですね。</p>

<p>Live List に含まれるフォントは List にも登録することが可能ですが、もし Live List からフォントを削除した場合にはライブラリからフォントが削除されることと同意ですので、それを登録していた List からもフォントの登録が解除されることを覚えておいたほうが良いです。</p>

<p>前述した Dropbox による複数 Mac 間やチームでの同期はまさにこの機能を使うことになるわけです。</p>

<h2>超高速かつシンプルなインターフェース</h2>

<p>OS X デフォルトの Font Book に比べ超高速で動作するのがウリで、30,000個のフォントのロードに0.9秒かからない。</p>

<p>...らしいのですが、そんなベンチマーク的な要素はよくわからないので置いておくとして。体感としてめっちゃ速いです。フォントの検索はキーを押すたびに検索結果の更新されるインクリメンタル サーチなのですが、鬼のように速い。そして、全フォントがそのフォント自身でプレビューされるのですがその生成やスクロールもストレスを感じさせません。日本語フォントがややもたつく程度です。自分の Mac は MacBook Air 11" (Mid 2013) で今となってはさほど高速なマシンではありませんが、充分な速度で動作しています。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/12/ss3.jpg"]文字タイプ・ウェイト・文字幅によるフィルタリング[/sc-figure]

<h3>文字タイプ・ウェイト・幅によるフィルタリングと Font Family によるグルーピング</h3>

<p>セリフ・サンセリフ・スクリプトという基本構造の違いによる絞り込みのほか、ウェイトや文字幅による絞り込みも可能で、こちらについても当然インクリメンタルに結果を表示してくれます。</p>

<p>また各フォントをウェイト別に個別にリストに表示させることも、Font Family としてグルーピングして1件のみ表示させることも可能です。またこの表示は <kbd class="u-dark">⌘</kbd> + <kbd class="u-dark">G</kbd> キーで即座に切り替えることができる。</p>

<h3>日本語フォントにおける不自由さ</h3>

<p>基本的にはベタ褒めしたい RightFont なのですが、日本語フォントの扱いについてはやや不満が。まずインクリメンタル検索は「和名」での検索に対応していません。</p>

<p>例えば「ヒラギノ角ゴシック」フォントを検索したいときには通常 “ヒラギノ” などと入力して検索をかけると思いますが、RightFont では英文名に含まれる “hiragino” と入力しなければヒットしません。また、上述した文字タイプ・ウェイト・幅によるフィルタリングも日本語フォントのデータにそのメタ情報が含まれていない（？）ために機能しない。</p>

<p>これらについては少々不満の残るところですが、和名を知っていればなんとなく英文名も想像がつくのでなんとかなる点ではあります。でも正直なところ和名検索くらいには対応して欲しいところですね。</p>

<h2>自動アクティベート</h2>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/12/sc4.jpg"]デザインデータ中のフォントを自動アクティベート[/sc-figure]

<p>PSD等のデザインデータを開く際、システムにはインストールされているが有効化（アクティベート）されていないフォントを RightFont が自動検出しアクティベートするか尋ねてくれます。そして編集を終えファイルを閉じる際にはまた無効化（ディアクティベート）してくれます。</p>

<p>大量のフォントを常にアクティベートした状態にすると各アプリケーションのフォントリストが非常に長く閲覧しにくい状態になるほか、システムにも相応の負担をかけるため動作が緩慢になる原因にもなります。使用頻度があまり多くないフォントはディアクティベートしておきたいところですが、上記のようなシチュエーションで面倒なのでこの機能はとてもありがたい。</p>

<h2>アイコンフォントとの蜜月関係</h2>

<p>各種 SNS のアイコンや、メニュー・ボタン等のインターフェースなどで <a href="https://fortawesome.github.io/Font-Awesome/" title="Font Awesome, the iconic font and CSS toolkit" rel="external">FontAwesome</a> 等のいわゆる「アイコンフォント」を利用する機会が非常に増えています。ですがこのアイコンフォント、検索が非常に困難です。

<p>アイコンフォントは基本的に文字に対しアイコンを割り当てているので、どのキーを押したらどのアイコンが表示されるかの想像がつかず使いたいアイコンをすぐに呼び出すことのできない点が大きな効率ロスを招きます。また、FontAwesome には無いがもしかしたら <a href="https://design.google.com/icons/" title="Material icons - Google Design" rel="external">Material Icons</a> や <a href="http://www.entypo.com" title="Entypo" rel="external">Entypo+</a> にはあるかもしれない。そうしたアイコンフォント別のアイコンの有無もまた調べにくくて困りものです。</p>

<p>しかし私は今日、神を目撃しました。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/12/ss9.jpg" class="c-figure--expanded"]アイコンフォントをドラッグ &amp; ドロップでベクターオブジェクトに[/sc-figure]

<p>RightFont にはアイコンフォント専用の検索ペインがあります。「Facebook」のアイコンを見つけたければただ “facebook” と打ちましょう。すると、FontAwesome をはじめ<a href="http://rightfontapp.com/iconfonts/" title="RightFont - Icon Fonts Directory" rel="external"><strong>9つのアイコンフォント</strong></a>の中から該当するアイコンを横断ピックアップして検索結果に表示してくれるのです。</p>

<p>しかも検索結果のアイコンは Photoshop 等へドラッグ &amp; ドロップが可能になっており、<strong>「ベクターオブジェクト」として取り込むことが可能</strong>です。どうですか。こみ上げてくるニヤニヤとした薄ら笑いを抑えきれますか。</p>

<p>たとえこの機能だけであったとしても、僕は RightFont を購入していたことでしょう。しかも今後新しいアイコンフォントが追加される前提の仕様となっています。</p>

<hr>

<p>というわけで、最近ではめずらしい震えのくるアプリケーションとしてご紹介しました。アプリを起動したところ普通に1週間のフリートライアル期間が設けられているのでお試し可能なはずなのですが、サイト上にはトライアルのダウンロード ボタンが無く購入ボタンだけですので意向を汲んで URL は伏せておきます。2015年が終わろうとしていますが、個人的に今年のベスト・オブ・ベストなアプリとなりました。メリークリスマス。<span class="endmark"></span></p>

</div>
<div class='embed-container'><iframe src='http://www.youtube.com/embed/8caPhZqcFfU' frameborder='0' allowfullscreen></iframe></div>
<div class="p-entry__body"></div>]]></content:encoded>
    </item>
    <item>
      <title>スタンド ワーキングを導入した :: [ FLAT ] Log</title>
      <link>https://flat.onotakehiko.com/log/2015/11/stand-working/</link>
      <pubDate>Fri, 20 Nov 2015 08:13:00 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="log"><![CDATA[Log]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/log/2015/11/stand-working/</guid>
      <description><![CDATA[やばい、肩こりが。 この仕事に限らずデスクワーカーは肩や腰、目や首などに多かれ少なかれ凝りや痛みを感じている人が多いのではないでしょうか。自分の場合肩が酷いらしく、酷い割にはあまり痛みなどは感じていなかったのですが、ある...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/IMG_0855_DxOVP1-medium.jpg" alt="" style="max-width: 640px;"></p><p>やばい、肩こりが。</p>

<p>この仕事に限らずデスクワーカーは肩や腰、目や首などに多かれ少なかれ凝りや痛みを感じている人が多いのではないでしょうか。自分の場合肩が酷いらしく、酷い割にはあまり痛みなどは感じていなかったのですが、ある日髪を切りにヘアサロンへ行ったら、カット後のマッサージ サービスで触れられた瞬間、スタイリストに（え...）と凍りつかれた。「おのさん、、なんか鉄板みたいなんですけど。」なにが？「いや、だから、肩があるはずの場所に鉄板があるみたいなんですけど...。」と。</p>

<p>曰く、それまでも結構凝ってるなーと内心思い続けてきたのだが、その時は想像以上でびっくりして声が出てしまったらしい。いやまあ自分でも凝ってるなーとは思ってましたけど。そう言われるとなんだかやばい気がして整体とかも行ったは行ったのだけど、あれって単発で行く程度ではその場しのぎになってあんまり解決にならんのですよね。</p>

<p>じゃあどうしようかな、と思って行き着いた先が自分でも極端だとは思いますが、以前から気になっていたスタンド ワーキングを取り入れることでした。もう読んだままですが、「立って仕事をする」ただそれだけのことです。スタンド ワーキングは欧米でトレンドになりつつあるようですが、得られるメリットや効能については以下の記事を参考にしていただければ。</p>

<blockquote>
<ul>
<li><a href="http://www.kotubankyosei-iyashiya.com/health/standingdesk-2/" rel="external">日本のIKEAでも発売？スタンディングデスクの効果についての考察</a></li>
<li><a href="http://matome.naver.jp/odai/2138957661186210301" rel="external">“立ったまま”のデスクワークが実は効率が良いらしい - NAVER まとめ</a></li>
<li><a href="http://careerpark.jp/39101" rel="external">【美容と健康の為に】オフィスで立って仕事をする「スタンディングデスク」が大ブーム | ニュース・話題のことならキャリアパーク</a></li>
<li><a href="http://www.sankei.com/life/news/150908/lif1509080009-n1.html" rel="external">【ＳＴＯＰ！メタボリックシンドローム】オフィスで「立ち仕事」…腹囲減少、生活習慣病予防に効果（1/3ページ） - 産経ニュース</a></li>
</ul>
</blockquote>

<h2>無印良品の「組み合わせて使える木製収納」が有能</h2>

<p>とはいえ、立って仕事をするとなるとそれまで使っていたデスクは使い物にならなくなる。デスク・オン・デスクな形も考えてみたけれど、27インチの Thunderbolt ディスプレイを支えるとなると相応のしっかりしたものが必要になるし、その前にとりあえずダサい。そういうわけで「スタンディング デスク」と呼ばれるスタンド ワーキング用の机を探してみると、なるほど結構な種類が出回り始めてる。その中から自分の食指が動いたのが “<a href="http://www.refold.co/" rel="external">Refold</a>” だったわけなんですが。</p>

[sc-figure class="c-figure--expanded" src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/hero.jpg" url="http://www.refold.co/"]&copy; Refold[/sc-figure]

<p>うん、ええ感じ。なのだけれど BUY NOW してしまう寸前で、ダンボールに 250ドル... ない、ないないっ。と我に返った。で、自宅に何か代替物がないかなと見回してみると、あるじゃないですか。数年前に買った無印良品の「<a href="http://www.muji.net/store/pc/user/homewares/combinable/thin.html" title="組み合わせて使える木製収納 | 無印良品の収納 | 生活雑貨特集 | 無印良品ネットストア" rel="nofollow">組み合わせて使える木製収納</a>」のハイタイプ本棚が。</p>

<p>試しに棚板を何枚か外して高さを調整したら、横幅・奥行きともディスプレイとキーボードやトラックパッドを並べてまあ使えなくはないなという状態で見事に収まった。細かいことを言うと、ディスプレイの電源や入力ケーブルなどの引き回しで棚板の隅に「穴」を開けなければならなかったのですが、あまり見えない部分だしノコギリで必要なだけ切り落として仕上げた。へたなことをしても後から追加でパーツを買って現状復帰したり違う目的への転用が利く、無印良品の「組み合わせて使える木製収納」や「スタッキング シェルフ」はひじょうに有能。</p>

<p>そんな感じでスタンディング デスク代わりに使い始めましたが、副次的な効果としてディスプレイが棚の奥まった位置にいくので横からの光の影響を受けにくくなり、ディスプレイ自体の光量をこれまでより落としても問題なくなった。目に優しそう。</p>

<h2>さよならアーロンチェア</h2>

<p>この仕事はとにかく座っている時間が長い。そういう仕事の仕方が良いかは別として、繁忙期には睡眠と食事の時以外ほとんどデスクで過ごすこともある。なので身体のために「いい椅子（といいベッド）を買うことに出し惜しみをするな」という不特定多数の先人からの教えもあって、7年前に奮発してハーマンミラーのアーロンチェアしかもフル装備を15万円ほど出して買った。当時引っ越しと重なって飛ぶようにお金がなくなっていたので財政的に非常にきつかったし無駄に大きいし重いが、ただ座り心地だけは本当に良かったし、この椅子に座って、元を取るにはあまりある分は稼いだので良かったと思う。</p>

<p>それが突然、主人の浅はかかもしれない思い立ちによって座られない椅子に役ばらいされてしまった。そうなるとこれまで使っていたデスクとともに場所を取るだけの代物なのでだいぶ迷うところはあったがリサイクルショップに買い取ってもらうことで処分した。</p>

<p>7年も使って2万5千円だったので少し得はした気分なのだけど、売ったそばから若干の後悔に襲われていることは言うまでもない。</p>

<h2>2週間経った</h2>

<p>自分の場合、週の2日ほどは代々木の事務所に通っているので実質週3日スタンド ワーキングという状態で、とりあえず2週間が経った。この2週間は立ち続けるのが苦痛でしかなかったけれど、だんだん慣れてきた自分がいる。今のところ、</p>

<hr>

<ul>
<li><p>デスクに向かっている間、SNSの閲覧など余計なことをあまりせず集中しやすくなった。はよ座って休憩したい（苦笑）と思うので、今やっている作業（をとっとと終わらせての1ブレイク）へのモチベーションが上がった。</p>
<p>スタンド ワーキングを続けると立つ苦痛はなくなってくるそうなので、その時にまた何か変化が起こるのかもしれない。</p></li>
<li><p>肩や首の凝りが軽減されたほか、腰痛については全く起こらなくなった。代わりに、足の裏・ふくらはぎ・腿と、下半身に筋肉痛が起きたのには驚いた。普段からランニングなどで多少は動いているつもりでいたけれど、そもそも走るのと立つのとでは使う部位が異なるのかもしれない。自分の場合には今は足裏の痛みが一番厳しいので、部屋履きでニューバランスあたりのソールのクッション性が高いスニーカーが欲しいかも。</p>
<p>スタンド ワーキングの場合続ければ多くの人に体型に良い方向の変化が起こるらしいので半年後を楽しみに続けてみようと思う。</p></li>
<li><p>食後の14時前後、胃に血流が集中して途方もない睡魔に襲われて何も出来ないことが多くなっていたが、スタンド ワーキングにしてからはそれがだいぶ軽減された。どうしても眠い場合には15分ほど横になって寝てから戻ると、立つことの相乗効果もあって驚くほど頭がすっきりすることに気づいた。</p></li>
<li><p>デスクから少し離れた場所にある物や資料を取りに行くのが億劫でなくなり、後回しにせず直ぐに取りに行けるようになった。</p></li>
<li><p>デスクとアーロンチェアを置いていたスペースが空いて部屋が広くなった。</p></li>
<li><p>デザインの構成やプログラムのロジックに煮詰まったとき、体をストレッチして心地よい刺激を与えつつ気分転換できるようになった。デスクで悶々と考え続けるよりも、ちょっと散歩に出てみたらすんなりと解決策が出てきたというような経験ってあると思いますが、それと似た効果が出ないか期待。</p></li>
<li><p>あまり立ちながら物を食べる習慣がないからか、お菓子など間食が減った。</p></li>
</ul>

<hr>

<p>という感じです。デスクと椅子を処分して引くに引けない状況に追い込まれたこともありますが、やってみると意外にも続けられそうな気がする。ただ、あまり長時間立ち続けるのもまた良くないし繁忙期の徹夜仕事にはさすがに耐えられそうにないので、疲れたけれどデスクを離れられない時のために古家具屋にバースツールでも物色してこようかと思ってます。気にいる物があればええなあ。<span class="endmark"></span></p></div>]]></content:encoded>
    </item>
    <item>
      <title>首都圏外郭放水路潜入レポート :: [ FLAT ] Log</title>
      <link>https://flat.onotakehiko.com/log/2015/11/metropolitan-area-outer-underground-discharge-channel/</link>
      <pubDate>Tue, 17 Nov 2015 06:53:20 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="log"><![CDATA[Log]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/log/2015/11/metropolitan-area-outer-underground-discharge-channel/</guid>
      <description><![CDATA[10年前に完成して以来、一度は見学したいなと思い続けていた「首都圏外郭放水路」にようやく訪れることが出来た。 首都圏外郭放水路は埼玉県春日部市にある、中小河川から溢れた水を取り入れる流入施設です。地下で貯水したり江戸川へ...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/IMG_0727_DxOVP-medium.jpg" alt="" style="max-width: 640px;"></p><p>10年前に完成して以来、一度は見学したいなと思い続けていた「<a href="http://www.ktr.mlit.go.jp/edogawa/gaikaku/index.html" rel="external">首都圏外郭放水路</a>」にようやく訪れることが出来た。</p>

<p>首都圏外郭放水路は埼玉県春日部市にある、中小河川から溢れた水を取り入れる流入施設です。地下で貯水したり江戸川へと放水を行うことで周辺地域を水害から守る施設で、それそのものが一級河川の指定をされている。中でも「調圧水槽」はこの施設を象徴する構造物となっておりその様子から「地下神殿」と呼ばれることもある。</p>

<p>湛水時以外は予約を行えば見学をすることが可能ですが穴場の観光スポットとしての人気が高く、応募して当選して初めて予約が可能となっており、見学できる時間も1時間限定となかなかハードルが高い。ところが、11月14日の土曜日に年に一度（？）開催されるという「特別見学会」というイベントがあることを知ったので早起きして行ってきた。開催時間内にさえ行けば予約無しで、しかも時間の制限も特に無く好きなだけ滞在でき、普段は見学することの出来ないエリアまでオープンにするというまさに特別な日。</p>

<h2>庄和排水機場</h2>
<p>目指すは調圧水槽の出入り口が存在する春日部の庄和排水機場。10時からの開場より少し早い9時半頃に周辺に来られたが、特別見学会開催時に限り会場に駐車スペースは無いとのことで近くの庄和総合公園の駐車場（無料）に停めさせてもらい、徒歩で向かった。同じ目的と思われる人たちの列が出来かけていたのでそれに従って歩き、迷うことなく15分程度で到着。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/IMG_0805_DxO.jpg"]庄和排水機場。特別見学会のみで見ることができるポンプ室は建物内にある。 (Shot on DSC-RX100M3)[/sc-figure]

<p>会場には既に多くの人が詰め掛けており、列に並んで待たされることになった。10時から開場の予定だったところ人が溢れそうになったため20分早く開場をしたらしいが、自分が行ったタイミングでは列が庄和排水機場の建物をぐるっと一周取り囲み、結局40分近く待たされることになった。自分が見学を終えた時には最後尾がどこにあるのか分からないほどの大盛況で、少なくとも2時間半〜3時間待ちというアナウンスで、イベントの開催時間自体は15時までだったが待ち時間の都合で13時以降に並んだ人は入場が出来なかったそうです。開場時刻に合わせて向かうのがおすすめ。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/7DBE1E90-32A7-4054-9BEE-22FA27DA8726_DxO.jpg" class="c-figure--wide"]学校の屋上にあるような階段への出入り口をくぐると、すぐに広がる大きな螺旋階段。 (Shot on DSC-RX100M3)[/sc-figure]

<p>入り口は「えっ、これですか」というほどあっさりしており地下に巨大空間が広がっているとは思えないが、ドアをくぐって一歩入るとすぐにそれに相応しい螺旋階段が待ち構えていた。段数にして116段。皆はやる気持ちを抑えつつ地下18mの世界へと降りていく。階段を下りきった先、コンクリートの低いゲートを抜けるとそれはあった。</p>

<h2>調圧水槽</h2>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/IMG_0793.jpg" class="c-figure--expanded"]調整水槽の中央から眺めた様子。巨大な人工の柱が立ち並ぶ様子は、サグラダ・ファミリアの内部の印象に少し通じるものがある。 (Shot on DSC-RX100M3)[/sc-figure]

<p>圧倒的という言葉が相応しい。</p>

<p>長さ177m × 幅78m。調圧水槽のちょうど真上にはサッカーのフルコートが広がっているが、それを大きく上回る空間に59本もの巨大なコンクリート柱が林立し、その1本あたりの大きさは幅2m × 奥行き7m × 高さ18mで重量は500トンにもなる。</p>

<p>その様相はバルセロナの<a href="https://www.flickr.com/photos/onopko/8718479994/in/album-72157633443068016/" title="TAKEHIKO ONO’s albums | Flickr - Photo Sharing!" rel="external">サグラダ・ファミリア</a>内部を想起させる面あり、イスタンブールの<a href="https://www.flickr.com/photos/onopko/275887438/in/album-72157594339688375/" title="TAKEHIKO ONO’s albums | Flickr - Photo Sharing!" rel="external">地下宮殿</a>を思い出させる面もありましたが、それらをはるかに上回るスケールに遠近感が狂うような感覚を味わいました。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/IMG_0800.jpg" class="c-figure--wide"]調圧水槽の長辺を端から眺めた眺め。 (Shot on DSC-RX100M3)[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/5D53D535-A2DB-4639-A942-4BE6008FE612.jpg" class="c-figure--wide"]柱は円柱ではなく角丸の直方体の形状。 (Shot on DSC-RX100M3)[/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/IMG_0725.jpg" class="c-figure--wide"]奥まで見通せない闇。Impeller が配置される空間へと続く。 (Shot on DSC-RX100M3)[/sc-figure]

<p>しかしこの巨大な水槽も外郭放水路全体から見ればその一部の空間でしかありません。これよりさらに深い地下50mには全長6.3kmにも及ぶ直径10mの<a href="http://www.ktr.mlit.go.jp/edogawa/gaikaku/intro/02shuyou/shu-04.html" title="トンネル | 主要設備 | 施設紹介 | 首都圏外郭放水路" rel="external">トンネル</a>が存在し、溢れた水を取り込む深さ70mの<a href="http://www.ktr.mlit.go.jp/edogawa/gaikaku/intro/02shuyou/shu-05.html" title="立坑 | 主要設備 | 施設紹介 | 首都圏外郭放水路" rel="external">立坑</a>にはスペースシャトルを発射台ごと収めることができるそうなのですが、これが5本も存在します。</p>

<p>1本目の立抗は調圧水槽に隣接しているため穴の手前まで近づくことができるのですが、マトリックスのザイオンさながらの迫力が感じられた。外郭放水路全体を流れる水量を考えると途方もない。ロボット、怪獣、なんでも収められそうな秘密基地みたいな巨大な空間はですね、男子にとって正義です。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/5AAFC40E-EDDE-42B6-B6E1-6C7F3DF008A3_DxO.jpg" class="c-figure--expanded"]地上から貫いてきた立抗と調圧水槽の接合部。写真では見難いが直径30mの大穴がぽっかりと空いている様には恐怖を覚える。 (Shot on DSC-RX100M3)[/sc-figure]

<h2>Impeller</h2>

<p>通常時の見学会では見られない施設として、<ruby><rb>Impeller</rb><rp>（</rp><rt>インペラ</rt><rp>） </rp></ruby> が公開されていた。調圧水槽に計4台が設置されており、これで溜まった水を巻き上げ江戸川へと放水する。視界の範囲内に収まるものが見られて若干落ち着くが、これでも大人7〜8人が肩を組んで円陣を組んだ程度の大きさはある。この Impeller は航空機用のガスタービンを改造したモーターで回され、一台で毎秒50立方メートルの水を巻き上げるそうな。凄いですね（棒）。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/85E404F4-C9C4-4969-81DD-D27CECA919C8_DxO.jpg" class="c-figure--wide"]毎秒50立方メートルの排水が可能な巨大な Impeller。 (Shot on DSC-RX100M3)[/sc-figure]

<hr>

<p>というわけで、巨大建造物に胸が踊る方には社会科見学として本当におすすめ。特別見学会に参加すれば、予約や時間の制限なく見学することが可能ですが、その一方で係員の方の説明はあまりじっくり聞くことは出来ず、また撮影目的の場合には人物が映らない写真の撮影等は極めて困難です。特別見学会はかなりの混雑を見越してはいましたが、内部が巨大なこともあり渋谷の交差点ほどの混雑は感じずに割と落ち着いて見ることが可能でした。</p>

<p>ちなみに長い階段の上り下りや一部内部に滑りやすい場所があるという安全上の配慮から、階段の上り下りが困難な年配の方や、小学生未満のお子さんは見学不可となっています。また、中学生以下の場合には保護者の同伴が必要なことから大人の社会科見学に向いてそうな代物と言えます。<span class="endmark"></span></p></div>]]></content:encoded>
    </item>
    <item>
      <title>OS X El Capitan で Fireworks CS6 が起動しないときの対応 :: [ FLAT ] Develop</title>
      <link>https://flat.onotakehiko.com/develop/2015/10/os-x-el-capitan-fireworks-cs6/</link>
      <pubDate>Fri, 23 Oct 2015 05:56:03 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="develop"><![CDATA[Develop]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/develop/2015/10/os-x-el-capitan-fireworks-cs6/</guid>
      <description><![CDATA[OS X El Capitan へアップデートしたところ、互換性に概ね問題はない印象ですがそれでも古いバージョンのソフトウェアにはぽろぽろと不具合が見つかった。その中でも大きめなのが Adobe Fireworks CS...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/10/Adobe_Fireworks_CS6_Icon.png" alt="" style="max-width: 640px;"></p><p>OS X El Capitan へアップデートしたところ、互換性に概ね問題はない印象ですがそれでも古いバージョンのソフトウェアにはぽろぽろと不具合が見つかった。その中でも大きめなのが Adobe <a href="http://www.adobe.com/jp/products/fireworks.html" title="ビットマップおよびベクトル画像ソフト | Adobe Fireworks CS6無償体験版をダウンロード" rel="external">Fireworks CS6</a> が起動しないまたは起動しても即ダウンしてしまうという件。</p>

<p>デザインの制作環境は概ね Photoshop と <a href="https://geo.itunes.apple.com/jp/app/sketch-3/id852320343?mt=12&at=10l4xA" title="Sketch 3 を Mac App Store で" rel="external">Sketch</a> に移行しつつあるので大打撃ということはないのですが、過去案件で作業が発生した場合に困るので対応した。</p>

<hr>

<h2>レガシーソフトウェア用の Java 6 ランタイムをインストールする</h2>

<p>レガシーソフトウェア用の最新の、というよく分からない言い回しになってしまうのですが、Apple が公式に古いソフトウェア用の <a href="https://support.apple.com/kb/DL1572?locale=ja_JP&viewlocale=ja_JP" title="Java for OS X 2015-001" rel="nofollow">Java 6 ランタイム</a>の最新版を提供しています。Fireworks の動作にはこれが必須ですのでダウンロードしてインストールしてあげる必要があります。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/10/java6.png" url="https://support.apple.com/kb/DL1572?locale=ja_JP&viewlocale=ja_JP" bgcolor="#fff"]Java for OS X 2015-001[/sc-figure]

<h2>アプリケーションのフォント キャッシュをクリアする</h2>

<p>OS X Yosemite 以前のフォント キャッシュが溜まっている状況だと、Fireworks の起動に問題が生じる模様。Adobe 公式サイトにある方法でフォント キャッシュを再構築することで一旦初期化されるそうですので試してみてください。</p>

<blockquote cite="https://helpx.adobe.com/jp/x-productkb/global/cpsid_93578.html"><a href="https://helpx.adobe.com/jp/x-productkb/global/cpsid_93578.html" rel="external">フォントキャッシュを再構築する方法</a></blockquote>

<p>なお、フォントの管理に <a href="https://www.fontexplorerx.com/" title="FontExplorer&#174; X Pro - Font Management Software &amp; Free Trial" rel="external">FontExplorer X Pro</a> を使っている場合にはメニューバーから <span class="u-key">Tools</span> - <span class="u-key"><strong>Clean Application Font Caches</strong></span> を選択することで フォント キャッシュを削除可能です。</p>

<p>念のため同じ <span class="u-key">Tools</span> メニューにある <span class="u-key">Clean System Font Caches</span> も実行して OS X 自体のフォント キャシュの初期化とシステム再起動をしても良いかもしれません。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/10/ss_151023_2.png" class="c-figure--wide"][/sc-figure]

<p>以上行った上で Fireworks を起動したところ自分の環境では問題なく動作するようになった。ただし一部ではフォント キャッシュだけが問題でなく、インストールされている（アクティベートされている）フォントによっても引き起こされるという報告もあるので、フォント キャッシュのみが原因とは断定しきれない。</p>

<blockquote>
<h3>FYI:</h3> 
<ul>
<li><a href="http://nplll.com/archives/2015/10/macos_x_el_capitanfireworks_cs6.php" rel="external">【メモ】Macを「OS X El Capitan‎」にしたら「Fireworks CS6」が動かなくなった件 | mutter</a></li>
<li><a href="http://nplll.com/archives/2015/10/macos_x_el_capitanfireworks_cs6_1.php" rel="external">【解決】Macを「OS X El Capitan‎」にしたら「Fireworks CS6」が動かなくなった件 → フォントだった | mutter</a></li>
<li><a href="http://biznot.xsrv.jp/ei-capitan-fireworkscs6-how-to-launch-3340" rel="external">MacOS X「El Capitan」でFireworksCS6を起動させる方法  |  こくまろトレンディ</a></li>
</ul>
</blockquote>

<hr>

<p>ちなみに、Apple が Java 6 ランタイムをサポートするのは <a href="http://applech2.com/archives/45349646.html" title="Apple、OS X 10.11 El CapitanでJava 6のサポートを終了することを示唆。" rel="nofollow">El Capitan で最後</a>となる模様。ということで Fireworks には完全な死刑宣告が下されました。メインのデザイン環境が移った今でも、Fireworks は非常に優秀で深遠で敬愛すべきソフトウェアだと思っているので、マクロメディアから買収後ろくなケアもせずただディスコンに追いやった Adobe にはひたすら残念な感情が湧き上がるばかりですが、これも時代の流れなので仕方がないですね。</p>

<p>個人的には操作性・快適性・描画の観点から Photoshop でデザイン作業するのはできる限り避けたいと思っているので、<a href="https://geo.itunes.apple.com/jp/app/sketch-3/id852320343?mt=12&at=10l4xA" title="Sketch 3 を Mac App Store で" rel="external">Sketch</a> の次期バージョンにはものっそ期待せざるを得ない。<span class="endmark"></span></p></div>]]></content:encoded>
    </item>
    <item>
      <title>Contact Form 7 / Validation Engine / iCheck を併用時のノウハウ :: [ FLAT ] Develop</title>
      <link>https://flat.onotakehiko.com/develop/2015/10/contactform7-validationengine-icheck/</link>
      <pubDate>Mon, 19 Oct 2015 05:46:42 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="develop"><![CDATA[Develop]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/develop/2015/10/contactform7-validationengine-icheck/</guid>
      <description><![CDATA[タイトルそのままの内容ですが WordPress で問い合わせフォームを作る際かなり使われているだろう Contact Form 7 に、リアルタイムなバリデーション チェックを加える jQuery Validation...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/10/151019_1-medium.jpg" alt="" style="max-width: 640px;"></p><p>タイトルそのままの内容ですが WordPress で問い合わせフォームを作る際かなり使われているだろう <a href="http://contactform7.com/ja/" rel="external" title="Contact Form 7 | Just another contact form plugin for WordPress. Simple but flexible. [日本語]">Contact Form 7</a> に、リアルタイムなバリデーション チェックを加える <a href="http://posabsolute.github.io/jQuery-Validation-Engine/" rel="external" title="jQuery.validationEngine Plugin">jQuery Validation Engine</a>、チェックボックス・ラジオボタンをカスタムデザインに差し替える <a href="http://fronteed.com/iCheck/" rel="external" title="Checkboxes and radio buttons customization (jQuery and Zepto) plugin">iCheck</a> プラグインを併用した場合に、それぞれが元々持つ実装時の独特なクセが相まってかなりややこしいことになったので次回迷わないようにメモしておく。</p>

<hr>

<h2>Validation Engine の attach 先</h2>

<p>これは Validation Engine 単体の注意点だが、Validation Engine を起動する際の validationEngine(&#39;attach&#39;) メソッドは form 要素に対して行わなければならない。</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
$('form').validationEngine('attach');
[/cc]

<p>ドキュメントに “the plugin can only be instanciated on <strong>form</strong> elements” って書いてあるので当たり前なのだが、どの親要素でも大丈夫だろうという勝手な思い込みで form 要素以外に attach してしまい、うまく動作せず無駄に時間を費やすことになった。忙しい時ほどドキュメントはよく読みましょうの典型例。</p>

<h2>バリデーション チェックは Validation Engine に一任する</h2>

<p>Contact Form 7 にも Ajax で行うそこそこ機能的なバリデーション チェックの仕組みが備わっていますが、Validation Engine も使うのであれば、バリデーション チェックは Validation Engine に一任し、Contact Form 7 側の機能は一切使わない。使ってもいいけどただ複雑になるだけなのでおすすめできません。</p>

<ul>
<li>フィールドが入力必須か</li>
<li>メールアドレス・URL・電話番号のフォーマットが正しいか</li>
<li>数値が指定範囲に収まっているか</li>
</ul>

<p>Contact Form 7 で可能なこうしたバリデーション チェックは Validation Engine でも行えますし、より柔軟に対応が可能です。</p>

<p>ただし。Contact Form 7 のバリデーション時のエラーメッセージは WordPress の管理画面から変更が可能なのですが、この方法を採るとそれが意味をなさなくなることはデメリットとなるかもしれません。</p>

<h2>フィールドへの data 属性追加は JavaScript で行う</h2>

<p>Contact Form 7 は独自のショートコードによってフォームの各フィールドを定義する仕様になっています。例えば <strong>&lt;input type=&quot;text&quot; name=&quot;your-name&quot; class=&quot;required&quot;&gt;</strong> というソースのテキストフィールドを作成する際には</p>

[cc lang="php" escaped="true" line_numbers="off" noborder="1"]
/*

"your-name" という name 属性でかつ
"required" という class 名の付いたテキストフィールドを作りたい場合

*/

[text your-name class:required]
[/cc]

<p>と入力する必要があり、<a href="http://contactform7.com/ja/text-fields/" rel="external" title="テキスト項目 | Contact Form 7 [日本語]">ドキュメント</a>に従えば class や placeholder など出力されるソースの多少のコントロールは可能になっています。一方 Validation Engine ではテキストフィードのバリデーション チェックのコントロールをしようと思うと</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
/*

入力必須のテキストフィールドで かつ
エラーメッセージをインラインで id="your-name-error" の要素に出力したい場合

*/

<input type="text" name="your-name" class="validate[required]" data-prompt-position="inline" data-prompt-target="your-name-error">
[/cc]

<p>といった具合に、行いたい処理によって class だけでなく data 属性も付加する必要があります。</p>

<p>Contact Form 7 と Validation Engine を組み合わせることを考えると、Contact Form 7 のショートコードから Validation Engine が必要とするソースコードを出力させなければなりませんが、Contact Form 7 にはそもそも data 属性を自由に付加するためのオプションがありません。</p>

<p>なので先ず Contact Form 7 で最低限のソースを出力してから、JavaScript で Validation Engine 用の data 属性を動的に加え、その後 Validation Engine を起動するという方法を使う。</p>

[cc lang="php" escaped="true" line_numbers="off" noborder="1"]
// Contact Form 7 でテキストフィールドを出力
[text your-name]
[/cc]

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
// JavaScript で上記の出力フィールドに対し class や data 属性を追加する
$('input[name="your-name"]')
.addClass('validate[required]')
.attr({
'data-prompt-position' : 'inline',
'data-prompt-target'   : 'your-name-error'
})
;
[/cc]

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
// バリデーション チェックに必要なオプションが付加されたら Validation Engine を起動
$('form').validation('attach');
[/cc]

<p>バリデーション チェックの内容を Contact Form 7 (WordPress) と JavaScript に分ける形となり一箇所にまとめられないところが非常にややこしいのですがプラグイン自体を改変するという禁じ手を使わないのであればこうする以外にありません。</p>

<h2>iCheck 利用時に必要なこと</h2>

<p>iCheck を使うことにより、チェックボックスやラジオボタンのデフォルトの UI デザインをオリジナルのものにカスタマイズ可能です。が、iCheck を起動するとそのままでは Validation Engine のリアルタイムなバリデーション チェックが動作しなくなってしまいます。これは iCheck がチェックボックスやラジオボタンの本来のヒット領域を完全に隠してしまい独自のUI・イベントに差し替えてしまうことに起因します。</p>

<p>iCheck によってカスタム化されたチェックボックスやラジオボタンで Validation Engine を利用するには</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
$('input[type="checkbox"]')
.on('ifChanged', function() {
$('form').validationEngine('validate');
})
;
[/cc]

<p>という具合に iCheck の “ifChanged” イベントに Validation Engine をキックする処理をバインドしてあげれば OK です。</p>

<h2>iCheck ラジオボタンと Validation Engine の相性問題</h2>

<p>また iCheck のラジオボタンに Validation Engine を適用する際にはさらに注意が必要。同じラジオボタンのグループで現在選択している選択肢から別の選択肢に変更しようとクリックした際に、Validation Engine が一瞬「選択してください」とエラーメッセージを表示させてしまいます。一瞬のことで、別の選択肢のラジオボタンが checked 状態に変わった後はすぐにエラーメッセージは消えてしまうのですが、視覚的にはとても気になる。</p>

<p>どうやら iCheck の内部処理で【現在の選択肢 checked: FALSE】→【クリックした選択肢 checked: TRUE】と状態を変化させる際に一瞬「未選択」の状態が出来るらしく、その一瞬に Validation Engine が反応をしてしまうようです。結論として以下の様にして同じグループのラジオボタンが選択されているかどうか判別式を挿入することで回避可能でした。</p>

[cc lang="javascript" escaped="true" line_numbers="off" noborder="1"]
$('form').find('input[type="radio"]')
.on('ifChanged', function() {
if ($('input[name="' + $(this).attr('name') + '"]:checked').length !== 0) {
$(this).validationEngine('validate');
}
})
;
[/cc]

<h2>Validation Engine と iCheck の起動順序</h2>

<p>この点についてはこの限りではないかも知れませんが、正常な動作が確認できた順序として</p>

<ol>
<li>Contact Form 7 にフィールドを定義</li>
<li>Contact Form 7 が出力したフィールドに対し、Validation Engine で行いたいチェックに必要な class や data 属性を JavaScript で動的に付加</li>
<li>$('form').validationEngine('attach') で Validation Engine を起動</li>
<li>チェックボックス・ラジオボタンに対し iCheck を実行し、デザインのカスタム化を行う</li>
<li>iCheck のチェックボックス・ラジオボタンの “ifChanged” イベントに $('form').validationEngine('validate') をバインド</li>
</ol>

<p>とすることで良さそうです。<span class="endmark"></span></p></div>]]></content:encoded>
    </item>
    <item>
      <title>FICC | デジタルエージェンシー :: [ FLAT ] Work</title>
      <link>https://flat.onotakehiko.com/portfolio/work/2015/10/ficc/</link>
      <pubDate>Tue, 13 Oct 2015 01:00:27 +0000</pubDate>
      <dc:creator>Takehiko Ono</dc:creator>
      <category domain="work"><![CDATA[Work]]></category>
      <guid isPermaLink="true">https://flat.onotakehiko.com/portfolio/work/2015/10/ficc/</guid>
      <description><![CDATA[デジタルエージェンシー FICC inc. 様のコーポレートサイトのデザインおよび実装を担当させていただきました。 デザインは様々なデバイスでの閲覧を考慮したレスポンシブ仕様とし、ページ読み込み時の負荷と表示演出のバラン...]]></description>
      <author>ONO TAKEHIKO</author>
      <content:encoded><![CDATA[<div class="p-entry__body"><p><img src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/ficc_thumb-medium.jpg" alt="" style="max-width: 640px;"></p><p>デジタルエージェンシー FICC inc. 様のコーポレートサイトのデザインおよび実装を担当させていただきました。</p>

<p>デザインは様々なデバイスでの閲覧を考慮したレスポンシブ仕様とし、ページ読み込み時の負荷と表示演出のバランス・タイミングに配慮したフロントエンド実装の工夫をしました。また、CMS には全面的に WordPress を採用し独自のカスタマイズを加えつつも、コンテンツの編集はもちろん、将来的な機能拡張の自由度を残した設計を実現しています。</p>

[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/ficc_top.jpg" url="https://www.ficc.jp/" title="FICC | デジタルエージェンシー"][/sc-figure]

<div class="two-col">
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/sc_1447641802176.jpg"][/sc-figure]
[sc-figure src="https://flat.onotakehiko.com/wp/wp-content/uploads/2015/11/sc_1447641802703.jpg"][/sc-figure]
</div></div>]]></content:encoded>
    </item>
  </channel>
</rss>
