開発者にとってのメリット

Craft CMS をつかって構築する開発者にとってのメリットをまとめてみます。

柔軟なコンテンツ管理

要件に合わせてどのようにコンテンツを管理すべきかは毎回頭を悩ませるところかと思います。 正解はないのかもしれませんが、管理したいコンテンツにあわせてセクション、入力タイプ、フィールドを定義することで、拡張性も高く柔軟に入力画面を定義することができます。

また、セクション・入力タイプ・フィールドの設計と、Webサイトで利用するときのURL等はそれぞれ設定することができ、依存しない関係になっています。

グローバルというセクションに依存しない、サイト個別の設定などを管理する事ができます。 グローバルについても管理する内容のフィールドなどを自由に定義できるため、共通設定的なものをまとめて管理できるようになります。

テンプレート(Twig)

Craft CMS をつかって Webサイトを作る場合はテンプレートは Twig を使って構築されます。

いろいろなCMSで利用されているため使うハードルも低く、セキュリティも担保された形でのテンプレート実装が可能となります。

Craft CMS はフレームワークとして Yii2 が利用されています。

Headless CMS

Craft CMS は Twig でテンプレートを書くことで動的なCMSとしての利用が可能ですが、 Headless CMS としての利用も可能です。

APIとしてはデフォルトで GraphQL がサポートされており、1st party plugin として、 Rest API を提供するプラグイン(Element API)もあります。 これらを利用することで、 Craft CMS をつかった Jamstack な構成も可能ですし、 Headless mode の設定をすることで、完全に Headless CMS として機能させることができます。

現時点では、Sassとしての Craft CMS はありませんが、 Craft Cloud の話もありますし、インストールして Headless CMS として利用するだけであれば、セキュリティを担保しながら構築することも可能です。

拡張性

Craft CMS は Yii2 のフレームワークを利用しています。

Craft CMS Plugin Store には多くのプラグインが提供されていますが、要件にあわせて独自のプラグイン、モジュールを作ってカスタマイズすることが可能です。

Plugin Store は CraftID でのライセンス認証なども管理されていて、プラグインを開発・配布するエンジニアにとっても使いやすいエコシステムが提供されています。

充実したドキュメンテーション

Craft CMS のドキュメントは英語がメインにはなりますが、細かいドキュメンテーションが公開されています。 ドキュメントは GitHub にて公開されているので、修正依頼等も随時依頼することができる状態になっています。

その他、英語にはなりますがナレッジも公式から公開されているので、色々と参考になります。

Knowledge Base Home | Craft CMS
https://craftcms.com/knowledge-base

開発元のサポート

Craft CMS の Pro 版を購入すると、メールによる開発元のサポートが受けられます。
日本語を理解しているスタッフもいて、安心してサポートに問い合わせすることができます。

ベストエフォートでの対応とはなっていますが、レスポンスはよく、細かくサポートしてもらえます。

海外製のCMSということではありますが、サポートしてくれるメンバーは世界中にいて、複数のメンバーが最短で対応していただける安心感はエンジニアにとってはありがたいことだと思います。

アセットの外部管理

Craft CMS はアセットを管理する単位をボリュームとして設定して、エントリから登録・連携するためのフィールドをコンテンツに定義してアセットを管理します。 アセットに直接ファイル類をアップすることもできます。

このアセットは CMS をインストールしているサーバーにあるフォルダを指定するのがデフォルトですが、1st party プラグインを使うことで、Amazon S3, Rackspace Cloud Files, Google Cloud Storage など外部のストレージサービスを利用することもできます。

CMSを利用する上では、内部のストレージか外部のストレージかを意識すること無くスムーズに使えるメリットがあります。

インポート・エクスポートのしやすさ

CMS をつかううえで避けられないのがデータのインポート、エクスポートになります。

Craft CMS のデータエクスポートは、CSV, XML などが標準で用意されていて、データのポータビリティが高い状態になっています。 インポートについては、 Feed Me プラグインが 1st party プラグインとして提供されており、 CSV, XML, RSS, Google Spreadsheet などの形式からのインポートが可能で、カラムとフィールドの結びつけが簡単に設定可能です。

また、 cron を利用した定期実行なども可能になっています。

エクスポートも標準で CSV, JSON, XML 形式でのエクスポートが可能です。

設定の同期(Project Config)

CMS を使うと管理画面からいろいろな設定ができて便利ですが、その設定をコードとして管理できる機能として、 Project Config があります。 Project Config を利用することで、環境を超えて設定を同期したりすることができ、エンジニアフレンドリーな作りになっています。

また、細かいフィールド周りの定義などをフォローしてくれるプラグインもあるので、そういった機能を利用することで、複数環境を用意して、安定したサイト運用が可能になります。

環境ごとの設定(.env)

CMSの設定は config/general.php で設定ができますが、各環境ごとの設定は .env ファイルに定義することができます。 これにより、本番環境、ステージング環境、開発環境など開発体制にあわせて、それぞれの環境ごとに設定ファイルを持たせることが可能です。

デバッグツールバー

Craft CMS が提供している管理画面でのデバッグ機能や、ログイン状態で確認できるフロント側でのデバック機能があります。

セキュリティ・アップデート

Craft CMS もソフトウェアですので、アップデート、脆弱性対応などは必ずあります。 Craft CMS のアップデートの頻度は多い方かと思いますが、セキュリティについては優先的に対応していて、何かあればすぐアップデートが提供されます。

アップデートはエンジニアにとっては大変な一面もありますが、CLI をつかうことでスムーズに適用することが可能となっています。

また、管理画面からリンクをクリックしてアップデートすることもできます。 本番環境ではこの機能を閉じておくことで、不要な事故を防ぐこともできます。

アップデートのしやすさ(CLI)

Craft CMS のインストールには Composer を利用すると快適にインストールすることができます。

一度インストールすると craft コマンドを使うことができ、このコマンドをつかうことで、アップデート、バックアップ、プラグインのインストールなどが CLI ベースで対応できます。

コマンドベースで実行できるため、自動化などもしやすい状態になっています。

インストールのしやすさ(PHPベース)

アップデートのところでも話題になりましたが、 Craft CMS は PHP ベースのCMSであり、 Composer を使ってインストールをすることが可能です。

composer create-project craftcms/craft my/project/path

AWSなどのクラウドサービスで独自に環境を構築しても、レンタルサーバーを使ったとしても、 Coposer を利用することはできるので、インフラの制限なく簡単に設定、インストールが可能です。

サーバーが Craft CMS のサーバー要件を満たしているかのチェックツールも用意されているので、インフラを用意したら、まずこのチェックツールを走らせてみるのがよいでしょう。

craftcms/server-check: Craft CMS server requirements checker.
https://github.com/craftcms/server-check

Craft Commerce もある

コンテンツを管理する機能として色々と解説しましたが、 Commerce 機能も提供されています。

Commerce | Craft CMS
https://craftcms.com/commerce

位置づけとしては有料の拡張となりますが、海外では多く利用されています。

無料からはじめられる

Craft CMS は基本的には有償のCMSとなっています。

ただ、ライセンス数や一部機能を制限した、 Free 版も提供されています。 この機能を使うことで、開発者としてはお試しで使うこともできます。

また、特定のURL(.test, .dev など)では、 Pro 版をトライアルとして利用することができます。 これにより、技術検証をあらかじめすることができ、本番環境への適用前に安心して検証することができます。

また、このトライアル版では有償のプラグインも検証することができます。

本番リリース時にミスを起こさないためにもこの機能は使って検証しておくべきでしょうし、エンジニアとして気になるところは、いくらでも検証することができるので、利用しない手はないでしょう。

DDEV(ローカル開発環境)

Craft CMS のローカル開発環境は Docker ベースの DDEV を使った方法が公式に推奨されています。

DDEV を使うことでローカルでの開発がスムーズに進められます。