Momo Uta 309 - Home

戯曲をEPUB3化する道(5) – scssphpを導入してみた

戯曲をEPUB3にするぞー、おー!

って気合いを入れることもなく、EPUB Validator をきれいに通過するEPUB3を自動でつくるもの、ほとんどできている。動作テストと改善のため、自作戯曲をいくつかEPUB化したりもしている。あとはインターフェイスを使いやすくしたり、機能を増やしたり、とか、かなぁ。

正直EPUB3戯曲をどこかで売ってみること、余裕で視野に入ってきた。ここ数年で書いた大量の短編戯曲の一部を、試しに電子書籍化してみるかも。

反響なくてもコツコツがんばるよー。まぁ記事内容的に反響あるわけないんだけれども。

そういえば最近、scssphp というものを導入し、開発に使っているフレームワークのfuelPHP用のパッケージにして使い始めた。

SCSS Compiler in PHP – scssphp
GitHub上のscssphp ※こっちが最新。上のリンク先にあるのはちょい古いバージョン。

今日びの自力でサイトを作っている人なら、CSSを書くのにSASSとかLESSとかを使っていると思うんだけど、scssphp はSCSS記法で書いたCSSのPHP用コンパイラ。パッケージにしたので、fuelPHPだと、例えばこんな書き方で呼び出して、コンパイルできちゃう。
下のソースは、今直書きしたテキトーなものだからね。

public function action_css()
{
    \Package::load('scss');

    $scss = \Scss::forge();

    // importで使うscssファイルのpathを指定
    $scss->setImportPaths(DOCROOT."assets/thespis/css/scss/");

    // 出力するCSSのフォーマットを指定。ここではCOMPRESSED
    $scss->setFormatter('scss_formatter_compressed');

    // ここで設定を読み込む
    $css_string  = $this->get_config_scss(); // 変数設定のためのscss文字列を取得する

    // cssにコンパイルして出力
    echo $scss->compile($css_string.'@import "main.scss";');
}

SASSというかSCSSではCSSの記述に変数を使える。例えばだけど、題名の文字の大きさや、台詞は何文字インデントするかとかを戯曲によって変えたい場合は、CSS中の該当箇所を変数にしてしまうと管理が楽。例えば台詞のインデントは8em、ト書きのインデントは9em(つまり8em + 1)にしたい場合、変数を一箇所いじれば良いだけになる。(もちろんこんな程度のことは、SASSを使うメリットのごく一部に過ぎないが。)

この変数指定諸々を、14行目でSCSS記法で取得し、本体のmain.scssと合体させて、欲しいCSSを得ようという作戦。

なんでこんなことをするかというと……。

戯曲は、登場人物名があって、スペースがあいて、台詞がある、という文字組みになるんだけど、台詞がインデントで揃っているようにしたい。何文字のインデントにするかは、登場人物名として使われる文字列の字数による。いま作っているコンバータでは8文字で固定。そういうCSSを書いた。

でも戯曲によっては、登場人物名の最大が2文字とか、1文字とかのもある。

なので、インデントをオプション的に変えて、EPUB3を出力できるようにしたい。

というわけ。

PHPからSCSSをコンパイルできると、EPUB3出力前にブラウザから確認するとき用のCSSをはき出したり、EPUB3用のCSSを書き出したりなどが、一つのSCSSから無駄なくできる……はず。このあとつくる。

以上、横文字の多い謎記事でした。

あ、管理の都合上、このコンバーターに名前付けたよ。「Θέσπης」って名前にした。超有名人だよ。文献上の最初の劇作家(?)かも、とか、最初の俳優(?)かも、とか言われている人の名前だよ。

過去のEPUB道関連記事:

関連記事:

シェアする

  • このエントリーをはてなブックマークに追加

フォローする