<?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>Styleguide &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/styleguide/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Mon, 07 Jan 2013 01:31:35 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>スタイルガイドを生成する「StyleDocco」の使用感</title>
		<link>https://blog.mach3.jp/2013/01/07/styledocco.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Mon, 07 Jan 2013 01:31:35 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Grunt.js]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[Styledocco]]></category>
		<category><![CDATA[Styleguide]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=2944</guid>

					<description><![CDATA[先日スタイルガイドを制作する機会がありまして、 せっかくなので、スタイルガイドの生成に利用したStyleDoccoの使用感などをまとめておきます。 スタイルガイドについて ざっくり言うとスタイルシートのドキュメントです。 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日スタイルガイドを制作する機会がありまして、 せっかくなので、スタイルガイドの生成に利用したStyleDoccoの使用感などをまとめておきます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-n9KiTBJByMY/UOlgq5P3IrI/AAAAAAAAB5s/Lnug37hl7KA/s400/20120106-00.png" alt="スタイルガイドを生成する「StyleDocco」の使用感"/></figure>



<p></p>



<span id="more-2944"></span>



<h2 class="wp-block-heading">スタイルガイドについて</h2>



<p>ざっくり言うとスタイルシートのドキュメントです。</p>



<p>自分一人で完結するその場限りのページなら良いのですが、 複数人のチームで組み込んでいたり、メンテナンス担当が他の方だったりする場合、 プロジェクトのCSSをドキュメント化しておく必要が出てきますね。例えば、</p>



<ul class="wp-block-list">
<li>どのような命名規則や方針で書かれていて</li>



<li>どこになにがあり</li>



<li>どのようなモジュールがどこで使えて</li>



<li>そのモジュールはどうするとどのような挙動を起こすのか</li>
</ul>



<p>等をまとめておく文書になると思います。 規模によってはかなり骨な作業になりそうです。</p>



<h2 class="wp-block-heading">StyleDoccoとは</h2>



<ul class="wp-block-list">
<li><a href="http://jacobrask.github.com/styledocco/">StyleDocco</a></li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>StyleDocco generates documentation and style guide documents from your stylesheets.</p>
</blockquote>



<p>スタイルシートを読み込んで、自動的にドキュメンテーションを生成してくれるツールです。</p>



<p>その為の記法に従う必要がありますが、 基本的にはCSSの記述の前に、コメント（ /* */ )で、概要文とプレビュー用のHTMLを書くだけです。 もちろんそのままCSSとしても機能します。</p>



<h2 class="wp-block-heading">インストール</h2>



<p>早速インストールをしてみます。 node.jsで動作するので、先に導入しておきましょう。</p>



<p>node.jsが入ったら、npmコマンドを叩くだけです。<br />
※環境によってはsudoや管理者権限が必要だったりします。</p>


<pre class="wp-block-code"><span><code class="hljs">$ npm install -g styledocco
</code></span></pre>


<h2 class="wp-block-heading">使い方</h2>



<h3 class="wp-block-heading">CSSの書き方</h3>



<p>前述の通り、ドキュメントの生成にはその為の記法に従う必要があります。</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-comment">/*
# ボタン

基本的なボタンスタイル。

    &lt;button class="button"&gt;ボタン&lt;/button&gt;

*/</span>

<span class="hljs-selector-class">.button</span> {
    <span class="hljs-attribute">border-radius</span>:<span class="hljs-number">4px</span>;
    <span class="hljs-attribute">border</span>:<span class="hljs-number">1px</span> solid <span class="hljs-number">#ccc</span>;
    <span class="hljs-attribute">background-color</span>:<span class="hljs-number">#f9f9f9</span>;
}
</code></span></pre>


<ul class="wp-block-list">
<li>概要文はMarkdown記法に対応しています。</li>



<li>プレビュー用のHTMLにはインデントが必要です。<br /><br />（タブでもいけましたが、一応公式によれば4スペースとの事です。）</li>
</ul>



<h3 class="wp-block-heading">生成コマンド</h3>



<p>インストールすると <code>styledocco</code> コマンドが使用出来るようになります。 以下は、「css」ディレクトリの中のファイルを元にドキュメントを生成する例。 出力先はデフォルトで「docs」ディレクトリになります。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$ styledocco -n <span class="hljs-string">"My Project"</span> css
</code></span></pre>


<p>使いそうな引数オプションはここらへんでしょうか。</p>



<ul class="wp-block-list">
<li>&#8211;name -n プロジェクト名（ドキュメントタイトルになります）</li>



<li>&#8211;out -o 出力ディレクトリ（デフォルトはdocs）</li>



<li>&#8211;preprocessor 使用するプリプロセッサ（Sassとかlessのコマンドを渡します）</li>
</ul>



<p>例えば以下は「My Project」というタイトルで、「styles」フォルダのソースを元に「mydocs」へ出力をし、 プリプロセッサには「lessc」コマンドを使用する事になります。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">styledocco -n <span class="hljs-string">"My Project"</span> -o mydocs --preprocessor <span class="hljs-string">"lessc"</span> styles
</code></span></pre>


<p>cf) <a href="http://jacobrask.github.com/styledocco/index.html#usage">StyleDocco &#8211; Usage</a></p>



<h3 class="wp-block-heading">gruntで自動化など</h3>



<p>gruntでwatchして自動化したい場合は、<a href="https://github.com/indieisaconcept/grunt-styleguide">grunt-styleguide</a>等を利用します。 （諸事情により私は使いませんでした）</p>



<ul class="wp-block-list">
<li><a href="https://github.com/indieisaconcept/grunt-styleguide">indieisaconcept/grunt-styleguide · GitHub</a></li>
</ul>



<p>あるいは <a href="https://github.com/sindresorhus/grunt-shell">grunt-shell</a> でシェルコマンドを書いたり、 自分でタスクを書くなどして、うまいこと楽をすると良いでしょう。</p>



<h2 class="wp-block-heading">その他、細かい使用感など</h2>



<h3 class="wp-block-heading">ページのはじめに謎の空白のボックスが？</h3>



<p>ちょっとハマった箇所ですが、ページの一番はじめのセクションで謎の空白ボックスが生まれてしまいました。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-R7TDcIMjxHs/UOlgq8NnCHI/AAAAAAAAB5s/8bVqDgymdjw/s500/20120106-01.png" alt="ページのはじめに謎の空白のボックスが"/></figure>



<p></p>



<p>概要文のコメントの先頭に改行を挟んでしまうとこうなります。</p>


<pre class="wp-block-code"><span><code class="hljs">/*

# これはダメ



/*
# こうしましょう
</code></span></pre>


<h3 class="wp-block-heading">プレビューHTML前の改行</h3>



<p>概要文とHTMLの間は基本的に1行空いていればいいのですが、 概要文がMarkdownのリスト等になっている様な場合は2行以上あけないとプレビューが正常に表示されません。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">/*
# ボタン

* リスト
* リスト


    <span class="hljs-comment">&lt;!--こういったケースは2行あけましょう。--&gt;</span>
</code></span></pre>


<h3 class="wp-block-heading">プリコンパイラも併せて使うと重たい？</h3>



<p>私の携わったプロジェクトではSass+bootstrapで実装をしていた為、 Sassの重さとbootstrapのボリュームが相まってcss自体のジェネレートに少々時間を要しました。 それに加えて、StyleDoccoのドキュメント生成もある程度時間がかかるため、合わせ技で相当遅くなります。 gruntで自動化をしなかったのはその為です。</p>



<p>ただ、ファイル数やボリュームにも因る所が大きいので一概には言えません。 また、逆に最適化をする機会にも繋がるとも言えますね。</p>



<h3 class="wp-block-heading">ナビゲーションの生成について</h3>



<p>ドキュメントのヘッダナビゲーションには、 スタイルシートのファイル毎にメニューが生成されます。 また、フォルダでファイルを分けている場合は、プルダウンメニューになります。</p>



<p>例えばこのような構造にしてあった場合</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><pre class="wp-block-code"><span><code class="hljs">css/
  ├ common/
  │   ├ foo.css
  │   ├ bar.css
  │   └ baz.css
  ├ components/
  ├ widgets/
  └ README.md
</code></span></pre></blockquote>



<p>このような感じに出力されます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/--AxdiR0u-y0/UOlgq8-MQ6I/AAAAAAAAB5s/esRZQKbgp-s/s500/20120106-02.png" alt="ナビゲーションの生成"/></figure>



<p></p>



<p>ただし、Macでは問題なかったのですが、当方のWindows環境ではサブフォルダを全て無視されてしまいました。 Issueに投げてみたので、何か反応があったらお伝えします。</p>



<h3 class="wp-block-heading">ドキュメントページのパフォーマンス</h3>



<p>生成されたドキュメントページで動作がもたつくな、と感じたので中身をみてみました。</p>



<p>StyleDoccoのドキュメントページは、ページ毎にひとつのHTMLになっています。 CSSやJavaScriptなどの外部リソースはありません。完全にひとつのファイルです。</p>



<p>プレビューの出力はどうやっているのかというと</p>



<ol class="wp-block-list">
<li>iframeを動的に生成して、そこに自分自身を読み込む</li>



<li>読まれたHTMLでプレビューを生成し、描画する</li>
</ol>



<p>という処理をHTMLファイルに記述されたJavaScriptで行なっているようです。</p>



<p>JSで動的に生成している関係上、物とボリュームによっては描画や目次の生成などの動作がもたつく場合があります。 が、「単一ファイルでいきたい！！」というポリシーがひしひしと伝わってくるので、これはこういう物だと思って割り切りました。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>自前のテンプレートでスタイルガイドを書く手もありますが、 うまく用途にマッチするのであれば、こういうツールを使って楽をしていきたいですね。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
