あっという間に1ヵ月経っちゃった...早いな。時間過ぎるの。
WebRelease 2.4 でテンプレート開発始めましたって言ってたのが、とりあえずちょっと前に、ひととおり落ち着きました(クライアントフィードバック待ちなう)。
ということで今のうちに件のWebRelease 2.4について、もぞもぞいじってまた覚えたところ書いときます。タイトルの通り「時間」のことです。
年月日/時分/秒 の要素 & 時間を参照する関数 で、時系列に強くなった!!
WebReleaseで、これまでちょっと残念だったところのひとつが、日付、時間の処理です。そこがパワーアップしていましたよ!の感想文はじまりー。
これまで:入力/出力において本質的な時間の概念がなかった
一行テキストでルールに沿った文字列(yyyymmdd半角数字8桁で!等)として入力して、それを元にソートするという基本的なことは出来ていたのですが、如何せんどうあがいたところでただの文字列以上でも以下でもなく、本質的に時間としての意味を持つことが出来なかったのです。 もちろん曜日もわざわざ入力するか別のプログラム噛ませないと出せないし。月や日は必ず2桁で入れる(1月1日ではなく、01月01日)か桁を見て分岐するような処理を入れないと、正しく順番のソートも出来なかったし。そうするとね、正直、時系列のアーカイブ処理をするのであれば、MT等の他のツールの方がずっと楽に処理出来るし、それなら時系列アーカイブがメインのサイト(ニュースリリースやお知らせが多くてあとはあまり更新しない...とか)であれば、当然MT等を使った方が良いなと思ってたわけですよ...。
2.4になって:「時間」として色々操れるようになった!
まずは要素として。 「年月日/時分/秒」の要素が出来ました。入力した時間を「文字列」でなく、きちんと「時間」として格納/取り出し出来る要素!ありがたいです。yyyymmddみたいに8桁数字として入力するとか、yyyy、mm、ddみたいに別々の要素として入れるとか(それぞれ1行テキストなのでUIとして画面が長くなってちょっとやりづらい)、少し「運用頼み」でがんばるしかできなかったのが、見た目にも分かりやすくなったし、きちんと「時間」(ミリ秒 ※1)で保存されるようになりました!続いて、入力した時間を取り出したり、比較・参照する関数。上記のように要素として入力したもの以外に、WebReleae内からは以下のような時間の値を取得出来ます。
- 現在時刻(プレビュー時点での時間、もしくはFTPする時間)
- そのページの最終更新時刻
- ページの公開開始時刻
- ページの公開終了時刻
また、取り出した日付を任意のフォーマットに変換する関数もあります。もちろん、ただの文字列として入っているものでも、ルールに則っていればこれらの関数を使って任意のフォーマットに変換出来ます。
各国語に対応していたり、RFC2822形式(RSS2.0で使うフォーマット)やW3CDTF形式(RSS1.0やAtomで使うフォーマット)に変換出来たり。フォーマットに則っている文字列なら逆にミリ秒にパース(してさらに任意のフォーマットに変換し直し)することも可能です。タイムゾーンももちろん選べます。
そしたら、何が便利か
とりあえず3つほど。- RSS2.0など、曜日が必要なフォーマットの日付を簡単に出力
どうしても必要な場合、これまで手入力でやってたんですけどね。要素も減るし、処理も減るし、オペレーションのミスも減るし。いい感じですね。 - 時間の比較が簡単に出来る。
たとえば公開から一定期間内の記事だけNEWマークを出すとか。JavaScriptで入れていたものがWebRleaseのテンプレートで仕込めるようになります。 - 月、日付の桁合わせが要らなくなる
01月01日みたいな。あの事務的な十の桁の0を仕方なく表示させたままにしていたり、あるいは表示させないために、条件分岐の処理を入れたり...っていうもどかしいことをせずに済むようになります(これまでだと1文字目が0 or not?っていう条件判定を入れて消したりの処理が必要だった)。それだけでなく、任意の表示形式にするのには、関数にフォーマット指定を入れるだけで一発です。
まだ他にもあると思いますが...。awayukiとしては今のところこんな感じ。
今回のお仕事でも上記の便利3点は全て使いました。普通にサイト作るならよく出てきますよね、この辺。
...さて、
そんなことゆっても、もともと他のCMSでこれくらいできているものもあったし...今さら何そんなこと力説してんの?ていうのもあるかもしれないんですが...。でもこれが「WebReleaseで」出来るようになったということが大きいと思います。
これまで、この機能がなかったとしても選ばれて使われることがたくさんあったものですから。残念だったところが補われたということであれば、それはなかなか心強いことじゃないですかね。
その他についてはまた今度ー。
----------
※1:時間の値
1970/01/01 00:00:00 からの経過時間を msec (ミリ秒) 単位で表した整数値になります(WR2.4マニュアルより)。
