beta

メインのCMSをDirectusに移行した話

ブログなどの記事管理(CMS)を新しくDirectusというOSSに移行しました。なぜ、Directusにしたのか、他のCMSは何が合わなかったのかをまとめます。

公開日:2022年9月15日

これまでのCMS体制

もともと筆者は、CMSとしてはWordPressが入り口だったんですが、度重なるバグと、記事データが吹っ飛ぶなどのトラブルに遭遇して、1年ほどでやめたという経緯があります。WordPressは本当に合いませんでした。

その頃がちょうど静的サイトジェネレータが盛り上がり始めた時期で、その段階から5年間くらいは「マークダウンファイル + Github」で管理する方式でした。CMSというか、ローカル保存ですね。

マークダウン式の良いところはローカルで気軽に編集ができるところなんですが、ここ数年で単純にマークダウンだけでは処理が辛い、かといってAPIを建てるほどでもないという、微妙な案件をいくつかやるようになってきて、マークダウンの限界を感じていました。

それなら、この機会に別のCMSに移行してみようか、ということが今回の取り組みです。

試したCMS

CMSを選定するにあたって、大事にしたポイントは、

  1. セルフホストが出来る
  2. サーバーの移転に柔軟に対応出来る
  3. API機能が豊富

という3つの点。

まず最初に懲りもせずWordPressで出来るかをテストしました。結果は惨敗で、とにかく制約が多いし、使いづらい。サーバー移転もバックアップの信頼性も低いし、複数サイトのデータ管理も手間。ということで、1日で見切りをつけました。まあ、そもそもブログシステムですし仕方ありません。

次に試したのが、PHP製のCockpit CMS。これはかなり使いやすくて動作もレンタルサーバーで動かしても軽快。これで行こうかなと思っていたんですが、データベースがSQLiteということで、規模が大きくなるとボトルネックになりそうな気がする点、そしてOSSの開発がやや停滞している雰囲気があったので一旦保留にしました。

次に試したのがNode.js系のStrapi。今風のUIと手軽に立ち上げられるCMSで、使い勝手は抜群。1ヶ月ほどテストサイトで使ってみたんですが、サーバースペックがある程度ないと動作が重いという点と、どうしてもAPIのデータ構造が好きではない(無駄に深い)ので、断念しました。

Strapi

最後に辿り着いたのが同じくNode.js系のDirectus。こちらはクラウドでも展開していますが、使っているのはセルフホストのOSS版です。

Directus

マシンスペックはそこそこあればOKで、GUIも使いやすく、APIもシンプル。そして何よりもほぼほぼやっていることはMySQLベースのAPI構築なのに、GUIでほとんどの作業が完結してしまうという便利さ。MySQLベースなので、リレーションという考え方もあって、APIとしても開発しやすいCMSです。

もちろん一からAPIを組む方が良いに決まってるんですが、サクッと作ってしまいたい場合とか、「API建てるほどじゃないだけど、普通のCMSとかCSVとかJSONとかだと辛い」という場合に活躍してくれてます。

ところどころバギーなところはありますが、概ね安定して動作してくれていて、使い勝手も良いので、最近はブログであろうがWebサイトであろうが、APIであろうが、全てDirectusに突っ込んでいくスタイルに落ち着きました。

何よりも、一箇所で全てのデータや記事を管理できるのは非常に便利。落ちた時も、MySQLバックアップから瞬時に復旧できます。

デメリットがあるとしたら、Node.jsサーバー必要なところですが、筆者はHerokuで問題なく運用出来ています。

改めて感じたCMSの大切さ

今回、CMSを移行してみて思ったのは、記事やデータという財産をいかにしっかりと管理するのかということも難しさ、大切さです。

データが点在すると規模が大きくなると管理が大変ですし、無駄に突っ込みすぎると重くなったりデータが飛んだ時のリスクがある。このバランスが意外と難しいと感じました。

一方で、Web系のお仕事の場合、データというのは財産ですから、しっかりと思って管理しておくことが重要です。その意味で、Webサイトを管理するならCMSは慎重に選ぶべきだなと思いました。

Author

Koji Kadoma
Member of codit.work

新着ノート

新着コード