1 post tagged “hack-a-thon”
(普段は仕事のことはあまりvoxに書きませんが、なんといってもSixApartさんのイベントのことなので、ここに書いてみますね)
2007年8月25日、Movable Type 4 Hack-a-thonという催しに参加してきました。Movable Type開発チームのエンジニア・Brad Choateさんが来日なさるということで、それに合わせてプログラマが一堂に会し、黙々とハックしようぜ!という集まりです。
いやいや、ちょっと待て。あんたはプログラマじゃなくてデザイナーだろ?と思われてしまうのは必至なのですが。
Hack-a-thonのお知らせエントリに、「テンプレートタグを使い倒して思い通りの出力を得たいデザイナの方」も歓迎しますという一行があったものですから、日ごろMovable Typeのテンプレートを覗き込んでうんうん唸ったりMTタグをこねくり回して悦に入ったりしている者として、これは絶対に参加すべきだと感じてしまったのです。ずうずうしくてスミマセン(汗)。
SixApartさんに到着して会場に入ってみると、goyaさんがにこやかに出迎えてくださり、Hack-a-thonのTシャツをくださいました。わーい!嬉しい!
お次は、自分のノートPCを起動しつつ、壁のホワイトボードに本日のお題を記入します。私のお題は、「企業サイトで使いやすいメニューを作る」というもの。Movable Typeのデフォルトテンプレートではできない動作をぜひ実現するぞ、という意気込みです。
一つのテーブルを6人で囲んで作業開始となったのですが、同じテーブルにはcheebowさん、Junnamaさん、藤本さん、purprinさんが!どんだけ豪華な環境ですか、これって!!
とドキドキしつつ、作業開始。
私がやりたかったことの一番目は、「ブログ記事(MT3.x風にいうと個別エントリーアーカイブ)内で、同一カテゴリーに属するエントリ一覧のリストを出力する」ってことです。
これって、MT3.xではMTTagInvokeなどのプラグインを使わないと実現できなかったんですよね。
でもMT4には、MTSetVarBlockとかMTIfなどの新しいタグがあるので、それらを使ってなんとかできるんじゃないの?とか思ったわけです。
ということで書いてみたのが、これ▼
<mt:SetVarBlock name="this_category">
<mt:CategoryLabel />
</mt:SetVarBlock>
<mt:Entries category="$this_category">
<li><a href="<$MTEntryLink$>"><mt:EntryTitle /></a></li>
</mt:Entries>
</ul>
ですが!何度見直しても正しそうなのに、これが上手く動作しないんですよ!
分かんない分かんないと悩みつつ、「教えてちゃん」になるのはダメ!と思っていたので、小一時間悶々と…。
その間に、cheebowさんやjunnamaさんは次々と、「お、できた!」とか軽やかに成果を出していらっしゃるので、ますます、うぅーっと恥ずかしさに苦しんでおりました、私。
このまま今日は何も成果を残せないとまずいよ、自分!と思い、意を決して藤本さんにどこが悪いかを見ていただくことに。
すると藤本さんは優しく、「SetVarBlockのところを改行すると、値に改行も含まれてしまうからだと思うよ」と教えてくださったのでした(感謝!)。
おいおい、そんなレベルでHack-a-thonに参加してんじゃねーよ、という声が聞こえてきそうですがorz ほんっと、ごめんなさい!
で、書き直したものが、これ。これはちゃんと動作しますだよ。
ブログ記事内で、同一カテゴリーに属するエントリ一覧のリストを出力する
次に、これを使って一歩複雑な動作をさせてみたい、と。<mt:SetVarBlock name="this_category"><mt:CategoryLabel /></mt:SetVarBlock>
<mt:Entries category="$this_category">
<li><a href="<$MTEntryLink$>"><mt:EntryTitle /></a></li>
</mt:Entries>
</ul>
求めたイメージはこんな感じ。
1)「お魚」「お肉」「野菜」「果物」というカテゴリが4つある。
2)それぞれのカテゴリ内に、複数のブログ記事がある。
3)「お魚」カテゴリに含まれるブログ記事を見ると、サイドメニューがこうなっている。
■お魚
○いわし
○さんま
■お肉
■野菜
■果物
4)「お肉」に行ったときは、こんな感じ。
■お魚
■お肉
○鶏肉
○牛肉
■野菜
■果物
5)要するに、そのブログ記事が属しているカテゴリーの記事は全部メニューとして開いて見えるけれど、それ以外のカテゴリーは閉じていて記事一覧は見えない。というのを、MTタグだけで自動で何とかしたい。
図々しい私は、この豪華テーブルの皆さまに「こういうのをやりたいんです!」とアピールするする。
特にpurprinさんには色々相談に乗っていただいて、「だからー、いわしエントリを見てるときの、お魚カテゴリのメニューが…」とか「ここの鶏肉と牛肉が」などと、やたら美味しそうな会話を交わしてました(笑)。午前中ちょっとお腹が空いていたので、食べ物の名前のダミー記事を黙々と投稿していたのが、アダとなりましたね(汗)。
皆さんにヒントをいただきつつも、あと一歩のところで煮詰まってしまい、時間切れにて終了…だったのですが。
帰宅後に夫に見てもらいながら、完成できました(多分)!
ブログ記事が属するカテゴリだけ記事一覧を出力し、それ以外はカテゴリ名だけを表示する。
<mt:SetVarBlock name="this_category"><mt:CategoryLabel /></mt:SetVarBlock>
<ul>
<mt:categories>
<mt:SetVarBlock name="label"><mt:CategoryLabel /></mt:SetVarBlock>
<li>
<mt:CategoryLabel />
<mt:if name="this_category" eq="$label">
<ul>
<mt:Entries category="$label">
<li><a href="<$MTEntryLink$>"><mt:EntryTitle /></a></li>
</mt:Entries>
</ul>
</mt:if>
</li>
</mt:categories>
</ul>
各カテゴリ名のリンク先が設定されていなかったりと、諸々不完全ではありますが。骨組みは出来たような気がするので、これをいじってもう少しマシにしちゃるぞ!と思っております。
しかし、MT4には新しいタグがたくさん増えたので、今までプラグインを入れないと実現しなかった動作もタグだけで出来ることが増えましたね!プログラムが書けない私にとっては、可能性が広がったのぅ!と感じました!(もちろん、素晴らしいプラグイン作者の方々の作品を使わせていただいて、MTのパワー一万倍!というのも素敵な素敵なことだと思ってます♪)
17:00からは皆さんの成果発表会で、缶ビール片手にプロジェクタで素晴らしいプラグインの数々を見せていただき、感動しまくり!あぁ、ハッカーって素敵!!と溜息をついていました。
その後は、居酒屋で飲み会!コードをつまみに三杯飲む、ってな感じの濃密な会話に酔いしれ、堪能させていただきましたです。
USのエンジニア、Bradさんとdjchallさんと名刺交換もさせていただいちゃいましたよっ!!思えば、昔コツコツMTをいじっているときに、/extlib/bradchoate/というディレクトリを作成していたよなぁと、非常に感慨深いものがございました。
最後になりましたが、今回のような素敵なイベントを開催してくださったSixApartの皆さまには、本当に感謝しております!!素晴らしいホスピタリティを感じ、幸せな一日を過ごさせていただきました。
また今日からMT4でゴニョゴニョする日々を送ろうと思いますです。