tanikoのぶろぐ

Saori v3のリリース

Saoriのバージョン3をリリースしました. 実際にリリースしたのは5月とかなり前です.
v3での主な変更点は以下のとおりです.

  • github.io以外で使用可能
  • 設定ファイルをJSONからYAMLに変更
  • テーマを外部から追加可能

まず, github.io以外で使用可能になったので, 自分のVPSなどでブログを公開できるようになりました. config/env.ymlpublicにURLを記述します.

設定ファイルをYAMLに変えたのは, JSONの記述が辛かったからです. 括弧とかめんどくさかったのです.

テーマを外部から追加可能というのは, テーマを追加できるようにしたということ(?). コードを見たほうが早い.

<?php
require __DIR__.'/vendor/autoload.php';
$app = new Taniko\Saori\Application(__DIR__);
$app->addTheme('theme-name', __DIR__ . '/theme/append-theme');
$app->run();

今までだとtaniko/saoriに存在するテーマしか使用できなかったのですが, このような感じでテーマを追加して, それを使用できるようにしました.

やっぱり, PHPは最高ですね!

Saori v2.2のリリース

v2.2では主にコマンドの追加をしました.

コマンドの追加

deploy

deployはデプロイを簡単にするためのものです. git add, commit, pushをまとめてやってくれるといった簡単なものです.

php saori deploy (:commit_message)

これで動作します. :commit_messageが存在しなければdate('YmdHi')が入ります.

theme

themeは存在するテーマ一覧の取得と, テーマの設定ファイルの確認に使います

php saori theme
## 以下が表示される
Theme list
sample, saori

php saori theme saori
## 以下が表示される
saori/theme.json
{
    "noapp":5,
    "color" : {
        "header" : "#000033",
        "title" : "#EEEEEE",
        "body"      : "#E9E9E9",
        "article"   : "#FFF1CF",
        "main" : "white",
        "side" : "white"
    },
    "date-format" : "Y-m-d"
}

内部的な話

現在置換え中ですが, PHPの配列からIlluminate\Support\Collectionに変更中です. Laravelで使われているあれです. まだ書き換えられていないところもあるのですが, 徐々に書き換えていきたいと思います.
あと, テーマ作成の面で言うとcss.twigを使えるようにした. これはcss/name.css.twigをcss/name.cssに書き換えると言うもの. theme/saoriではheader, bodyなどの背景色をカスタマイズできるようにするために使用しています.

/* theme/saori/css/article.css.twig */
article {
    background: {{maker.color('article')}};
    margin-bottom: 50px;
    padding: 5px 10px 5px 10px;
}

saoriのv2.1リリース

saori v2.1.0をリリースしました. v2.0の話をしていなかったのでここでまとめて話します.

create-projectからインストール

composer create-project hrgruri/saori-skeleton blogでインストールができるようになりました. これにより

mkdir blog
cd blog
composer require hrgruri

とかしなくてもよくなった. そもそもインストールなので何度もするようなものじゃないですけどね.

使い方の変更

symfony/consoleを使用するように変更しました.

php saori init
php saori draft article_name
php saori post article_name
php saori build
php -S localhost:8000 -t local

このような使い方です. saoriはインストール時に存在していますので, 自分で実行のためのコードを書く必要はないです.

pageコマンドの追加

利用者が記事以外のページを作成したいときに使うコマンドです. php saori page aboutとするとcontents/page/about.mdが作られます. ここに色々と書いてビルドすると/about/index.htmlが生成されます.

httpsのリダイレクト

saori(デフォルトのテーマ)ではhttpでアクセスされた際に, httpsへとリダイレクトするように変更しました.

saori v2.0を開発中

composer create-projectでインストールできるようにして, symfony/consoleを利用してsaoriを使用できるようにしました. あとnamespaceを修正.

v2.0-devをインストール

composer create-project hrgruri/saori:v2.0.x-dev blogで開発途中のv2.0をインストールして始めることができます. 最後のblogはディレクトリ名なので別のものに変えても構いません.

使用方法

composer create-project hrgruri/saori:v2.0.x-dev blog
cd blog
php saori

#初期化
php saori init

#下書きファイルを生成 (いきなりpostを使ってもいい)
php saori draft first_article

#記事の投稿
php saori post first_article

#静的サイトを生成
php saori build

現在のところ,init, draft, post, buildが使用できます. -h使えば簡単な説明が出ると思うのでそちらを参考に.

php saori draftは別に使用しないでいきなりphp saori postしても利用できるのですが, draftを使ったほうがいいかと.

今後

draftした時にはconfig.jsonが作られず, postした時に作られるのですが, これだとpostした後じゃないとconfig.jsonがさわれない. config.jsonをdraftでも生成しておき, timestampをpostした時に追加させようと思います.

Saoriの下書きとキャッシュ

saori v1.1の開発

現在saori v1.1の開発を行っています.

  • 下書き機能
  • 記事のキャッシュ

に関することを行いました.

下書き機能

下書き機能はphp main.php draft :nameとするとcontents/draft/:name/article.mdが作成されてここで記事の下書きができるよになるものです. 投稿したい場合はphp main.php post :nameとするとcontents/article/yyyy/mm/:nameにコピーされます. 記事のconfigファイルはpostした時に作成されます.

記事のキャッシュ

今まではarticle.mdの画像パスを書き換えたものをcache/に作成しておき, article.html()でarticle.mdを読み込んでパースをしていました.
これを予めパースしておきarticle.htmlをcache/に作成しておき, article.html()でarticle.htmlを読み込むというものに変更しました.

時間計測

500回ループさせて時間を計測しました. 変更前後で2回計測.

変更前変更後
1回目60.1553.39
2回目59.7754.78
平均59.9654.085

記事の数やブログのテンプレートによって前後するとは思いますが, 方式を変えたことで5.875秒削減できました. 現在のところブログを生成する際には誤差かもしれませんが, 記事数が増えれば差が大きくなっていくかもしれません.