最近のお気に入りCMS 「Grav GMS」

Yoshikawa Takeshi
2024-01-24
2024-01-24

業務では、MovableType / Wordpress の利用が多いのですが、個人的に作成するサイトには Grav CMS を利用することが多くなってきました。だいぶ、魅入られています。

https://getgrav.org/

まず、Grav CMS の特徴について書いてみようと思います。


## 特徴

■ フラットファイル

サイトのページ情報は、テキストファイルとして保存されます。テキストエディッタで、ページをどんどん追加できます。
※管理画面も用意されているので、通常のCMSのようにブラウザからページ操作もできます。
※サイト階層は、フォルダー階層と一致してます。

■ Markdown が標準でサポート

Markdown で記述できます。Markdown の Paraser には、parsedown が利用されているようです。
https://github.com/erusev/parsedown

■ テーマ

デザインも結構配布されてます。Learn2 という名前のテーマは、技術系のドキュメントサイトで、たまに見かけますね。
https://getgrav.org/downloads/themes

■ プラグイン

公式サイトで、いろんな種類が用意されてます。ぱんくずとか、sitemap.xml 出力のプラグインとか、便利に使ってます。
https://getgrav.org/downloads/plugins


■ 認証機能

ログインしてないと見れないページとか、編集者を制限したりするページを作れます。


こんな特徴があるので、テキストエディッタを使って、Markdown でページを、追加していくようなコンテンツ、FAQや技術ドキュメント系のサイトで使うにはとても、相性がいいのではないかと思って使っています。


## 特に便利かもと思うところ


■ Twig がテンプレートエンジンとして利用されている

プラグインもTwig Extension として書かれているものもあるので、非常に効率よく機能が追加できます。(元々、Twig ユーザーだったので、学習コストが低かった)
ページ情報の Markdown テキスト内にも、Twig 構文が書けたりします。
※サイト単位、ページ単位で、Markdown/Twig の有効・無効も設定できるので、ユーザー使わせたくない場合は、無効にすることもできました。

■ 動的で出力されるところ

テキストファイルでコンテンツを作成しているんで、静的に出力されるのかと思ってたら、きっちり動的に出力され、ページ情報は Pagesインスタンスとして PHP (Twig) 内で参照できたりする
https://learn.getgrav.org/16/content/content-pages


■ 設定ファイルがYAML

ページだけじゃなくて、設定もYAMLで書かれてるので、これも、テキストエディッタで修正できてしまいます。
※これも、管理者画面からも編集できます。

インストールが超絶簡単。

ダウンロードしてきて解凍したファイルを、サーバーのドキュメントルートに置くだけ。DB使わないんで、DBの設定とかも不要。

## あれ?っと思ったところ?

■ 検索など、サイト全体に関わる操作は、データベースへのアクセスと異なり遅いかも?

検索プラグインなどはテキストファイルを、全ページ読み込みながら一致するものを探してたりするようなので、ページ数が多くなると検索が重たくなってきます。
外部の検索サービス(Open Search とか?)使うか、定期的にDBに取り込んで、検索するようなプラグイン作るかもありですかね?

■ プラグインとかテーマとか、老舗の CMS より薄いかも。


足りない?に遭遇することもあるかも?見つけられてないだけかもしれないですが。
フォームとかは、弊社の FormMailer (https://www.form-mailer.jp/) とかで作ってもらえるといいかも?

## 全体的には、お気に入り

とりあえず、情報系サイト作りたいときには、とても便利使ってます。