MiddlemanでTumblrテーマ開発出来るじゃんよ
— RYO・ᴗ・NAKAE (@ryo_dg) 2014, 11月 4
以前Tumblrのテーマ開発がローカルで出来るとか言ってたけど、結局1枚のhtmlで全てを管理しないといけなかったりして辛い感じだった。Tumblrのテーマカスタマイズ画面にHTML貼り付ける行為はもう仕方ないものと諦めているけど、せめてローカル開発くらいは快適にやりたい。
という願望駆動でググってたらTumblarghというのを見つけた。Ruby Gemで、こいつを使うとMiddlemanでTumblrテーマ開発ができるらしい。なにそれ最高!!!!!!!!!!
LT middleman で tumblr テーマ が開発してみた件 - SlideShare
ということで試した。
セットアップなど
ちなみにbundler経由でインストールします。Tumblarghのページでもbundler使えやと書いてあるし、古事記にもそう書かれている。
Middleman + Tumblargh のインストールとか
Gemfile作成
$ bundle init
Gemfile編集
source 'http://rubygems.org'
gem "middleman"
gem "tumblargh"
インストール
$ bundle install --path vendor/bundle
config.rb編集
Tumblargh、自分のTumblrの記事を取ってこれるとかいう最高の機能があるんだけど、Tumblr APIが必要。ここから取得する。
# tumblargh
require 'tumblargh'
activate :tumblargh,
api_key: 'APIKEY', # OAuth consumer keyを入れて、どうぞ
blog: 'blog.tumblr.com' # `memo.brdr.jp` みたいにhttp://を抜いたURLを入れる
Middleman起動
$ bundle exec middleman server
無事起動。
とりあえずサイトのタイトルと記事タイトルだけ表示してみた。
うおおおおおおおお!
これで、Tumblrの独自タグをMiddlemanで使えます!!!マジです!!!
テーマの書き方
さて、もうテーマ書いて下さいとしか言いようがないけど、ちなみに言語的にはERBとHamlで書けることを確認しました。Slimだとどう設定してもエラーが出てダメだった。
Hamlではインデントに気をつける
HamlはSlimみたいにインデントでタグ構造を表現する言語だけど、Tumblrの独自タグも一緒にインデントしてはいけない。どういうことかというと、
ダメな書き方
%div.main
%div.l-container
{block:Posts}
{block:Text}
{block:Title}
%h1.entry-title
%a(href="{Permalink}") {Title}
{/block:Title}
{/block:Text}
{/block:Posts}
これはダメ。%h1.entry-title
のインデントが深すぎると言われる。
OKな書き方
%div.main
%div.l-container
{block:Posts}
{block:Text}
{block:Title}
%h1.entry-title
%a(href="{Permalink}") {Title}
{/block:Title}
{/block:Text}
{/block:Posts}
これならいける。Tumblarghによって解釈されているTumblr独自タグはHamlだとタグだと認識されてないっぽい。なのでインデントさせないように書く必要がある。
正直見づらいにも程があるので、おとなしくErbで書くのが一番良さそう。
パーシャルも使える
問題なくパーシャルも使えるので、ヘッダー/フッター/各投稿タイプ、などというようにファイルを分割できて最高っぽい。
!!! 5
%html
%head
%meta(charset="utf-8")
%title {Title}
= stylesheet_link_tag "style"
%body
/ header
= partial 'layouts/_header'
/ main
%div.main
%div.l-container
{block:Posts}
{block:Text}
{block:Title}
%h1.entry-title
%a(href="{Permalink}") {Title}
{/block:Title}
{/block:Text}
{/block:Posts}
/ footer
= partial 'layouts/_footer'
/ script
= javascript_include_tag "script"
例えばこういうのとかも出来るので、ほんとMiddleman使ってる感じがあって良い。
もちろんLiveReloadもできる
普通にMiddleman使ってるようなものなので、もちろんLiveReloadもいける。他の機能拡張系Gemとかももちろん使えるので、CoffeeScript使ったり画像圧縮したりいろいろできます。
ローカル開発時にリロードしまくるとAPIの上限ヤバそう
テンション上がって小刻みにLiveReloadしまくってたら、Tumblr APIの使用回数の制限に引っかかりそうな気がする。が、Tumblr APIの上限っていくつなのかググっても分からなかった。多分あんまり調子に乗らなければ大丈夫っぽい。
CSSやJSどこに置くか問題
Tumblrは外部ファイルは基本自前ホストするしかないので、外部ファイルの扱いはめんどくさい。参考にしたスライドではGulp使ってビルド時にインライン化するとかあるけど、確かに良いかもしれない。ライブラリはCDNから読みこめばなんとかいけそう。(実案件じゃダメそうだけど)
ということでMiddlemanでTumblrテーマ開発できる感じになった。
前試したFumblrもこのTumblarghも、1年以上前から更新止まってたりするので、最近実装されたTumblr独自タグなんかは表示されない可能性が高い。まぁそれでもこうしてローカルでTumblrテーマ開発できるのはアツい。
まだ試したばっかりなので、トラブルなどが出てきたらまたメモります