<p>CMS作成一人合宿最終日。</p>
<p>cssを書いてないので全然出来てないように見えるが機能的には最低限の機能が出来つつある。あと2日ぐらい作業すればこのブログを移行することが出来そうだ。</p>
<p>検索機能、ページング機能とWordPressでいうところのコンディショナルタグ機能を作った。
コンディショナルタグとは、テンプレート中で今どのページにいるのかを判断するために使う関数。</p>
<p>PyhaもWordPressの影響を受けて、複数のコンテキストを持つが全てに対応するテンプレートを用意する必要は無い。(対応するテンプレートが存在すればそちらを使う)</p>
<p>コンテキストとは、トップページだとかカテゴリーアーカイブとか個別ページとかそいう文脈のこと。</p>
<p>それぞれにテンプレートを用意するのは大変なので、最低限のテンプレートは、インデックスやアーカイブのように、複数のテキストを表示するdocumentsと、個別エントリーのように一つのテキストを表示するdocumentの2つだけだ。</p>
<ul>
<li>documents.erb --- 複数のテキストを表示するテンプレート</li>
<li>document.erb --- 一つのテキストを表示するテンプレート</li>
</ul>
<p>テンプレートをまるごと切り替える必要はないが、例えば一つのテンプレート内でタイトルだけはコンテキストに応じて変更したいという場合にコンディショナルタグを使う。</p>
<pre class="prettyprint"><code><% if category? %>
<h2>カテゴリーページ</h2>
<% else %>
<h2>トップページ</h2>
<% end %></code></pre>
<p>のように使う。</p>
<p>現状あるコンテキストにあわせて下記のコンディショナルタグを用意した。</p>
<ul>
<li>index?</li>
<li>search?</li>
<li>category?</li>
<li>yearly?</li>
<li>monthly?</li>
<li>dialy?</li>
<li>document?</li>
<li>documents?</li>
</ul>
<p>最後の2つはコンテキストではなく、テンプレートの種類を表すものなので、どれか一つのみがtrueを返すわけではない。例えばindex?とdocuments?は両立する。</p>
<p>(もちろんリリース後に書くドキュメントはこんな小難しい書き方はしない。今は自分の考えをまとめるためにメモする)</p>
<p>現状、例えばWebから投稿するインターフェースは無い。それはすぐ作れるが、テーマ作成者向けAPIが固まらないうちに細部をつくりはじめると、管理画面の実装上の都合などが無意識にAPIに影響を与えてしまうので、先にWordPressのブログを移行するのに十分なAPIを固めた上で作りたい。</p>
<p>先が見えてきたので残りタスクをリストアップしてみた。最初のバージョンは少ない機能でリリースしたい。</p>
<h3>5日間一人合宿の感想</h3>
<p>5日間かけた割には平均的なRubyistに比べて進みが遅いと思うが、正直、予想以上でも以下でもなく、まあこのぐらい進むだろうなと思っていた通りな感じだった。プログラムを作る方法としては結構はかどるやり方だと感じた。でも途中で@jishihaさんと作っているものについて話したのが非常に良かった。丸5日誰とも合わずに作っていたら機能は増えたかもしれないが、ソフトが良くない方向に進んでいたように思う。勉強会やカンファレンスも楽しいが、自分の作っているプロダクトに関するディスカッション程有益なプログラマー同士のコミュニケーションは無いと強く感じました。</p>
<p>タスク:<a href="http://github.com/komagata/pyha/issues">Issues - komagata/pyha - GitHub</a>
<p>ソース:<a href="http://github.com/komagata/pyha">komagata's pyha at master - GitHub</a>