🕶️

OSSのヘッドレスCMS「strapi」を紹介

2024/07/30に公開

はじめに

今回はOSSのヘッドレスCMS「strapi」をヘッドレスCMSの概要とともに紹介します。

ヘッドレスCMSとは

ヘッドレスCMS(Headless Content Management System)とは、
従来のCMS(コンテンツ管理システム)とは異なり、
コンテンツ管理とプレゼンテーション(表示部分)が分離されたCMSのことです。
具体的には、ヘッドレスCMSはコンテンツの管理と提供に特化しており、
コンテンツの表示やレイアウトを制御するフロントエンド部分(ヘッド)がないため「ヘッドレス」と呼ばれます。

特徴と利点

  1. APIベースのアーキテクチャ

    • ヘッドレスCMSは主にAPIを通じてコンテンツを提供します。これにより、RESTful APIやGraphQLを使用して、コンテンツをあらゆるデバイスやプラットフォームに配信できます。
  2. フロントエンドの自由度

    • フロントエンド部分は完全に独立しているため、開発者はReact、Vue.js、Angularなどのフロントエンドフレームワークや、ネイティブモバイルアプリ、静的サイトジェネレータ(Gatsby、Next.jsなど)を自由に選択して使用できます。
  3. 複数チャネル対応

    • コンテンツを一度作成すれば、Webサイト、モバイルアプリ、スマートデバイス、IoTデバイス、デジタルサイネージなど、複数のチャネルで再利用できます。
  4. スケーラビリティとパフォーマンス

    • ヘッドレスCMSは、コンテンツとプレゼンテーションの分離により、バックエンドのパフォーマンスとスケーラビリティが向上します。これにより、大量のトラフィックを処理することが容易になります。
  5. セキュリティ

    • フロントエンドとバックエンドが分離されているため、セキュリティリスクが低減されます。フロントエンドはパブリックに公開されても、バックエンドは保護された状態でコンテンツを管理します。

動作原理

  1. コンテンツの作成と管理

    • 管理者やエディターは、ヘッドレスCMSの管理パネルを使用してコンテンツを作成、編集、管理します。ここで作成されたコンテンツは、CMSのデータベースに保存されます。
  2. APIを介したコンテンツ提供

    • ヘッドレスCMSは、RESTful APIまたはGraphQL APIを通じてコンテンツを提供します。フロントエンドアプリケーションは、このAPIを使用して必要なコンテンツを取得します。
  3. フロントエンドのレンダリング

    • フロントエンドアプリケーションは、取得したコンテンツをユーザーインターフェースとしてレンダリングします。これにより、コンテンツがユーザーに表示されます。

活用例

  1. 多チャネルコンテンツ配信

    • 企業がWebサイト、モバイルアプリ、スマートデバイスなど複数のチャネルで一貫したコンテンツを提供する。
  2. eコマースサイト

    • 製品情報やプロモーションコンテンツを管理し、ReactやVue.jsで構築されたフロントエンドアプリケーションに提供する。
  3. 企業内ポータル

    • 社内のドキュメント、ニュース、イベント情報などを管理し、社員が利用するWebアプリやモバイルアプリに提供する。
  4. マーケティングキャンペーン

    • マーケティングチームがキャンペーンコンテンツを管理し、それを専用のランディングページやプロモーションサイトに配信する。

従来のCMSからヘッドレスCMSにすると何がいいのか?

従来のCMS(コンテンツ管理システム)からヘッドレスCMSへの移行は、
一見大変そうに感じられるかもしれません。
しかし、WEB開発とコンテンツ管理のアプローチを劇的に改善する可能性があります。。
私が見てきた案件をモデルケースとして、なぜヘッドレスCMSへの移行が
一つのゲームチェンジャーであったのかをお伝えしたいと思います。

課題:従来のCMSの限界

最初に、チームは従来のCMSを使用していました。
従来のCMSは一見便利で、全てが一つの場所に集約されているので簡単に思えました。
しかし、次第に以下の問題が明らかになってきました:

  1. フロントエンドの制約

    • デザインや機能の変更がCMSの制約に縛られ、思い通りのカスタマイズが難しかった。
    • フロントエンド開発者は、CMSのテンプレート言語に慣れる必要があり、最新の技術(ReactやVue.jsなど)を使えなかった。
  2. スケーラビリティの問題

    • トラフィックが増加すると、サイトのパフォーマンスが低下し、ユーザー体験が損なわれることがあった。
    • 新しいデバイスやプラットフォームへの対応が難しく、コンテンツの再利用性が低かった。
  3. 開発速度の低下

    • 新機能の追加や変更が煩雑で、開発サイクルが遅くなっていた。
    • 複数のチームが同時に作業する際に、調整や管理が困難だった。

移行の決断と実行

これらの問題に直面した時、思い切ってヘッドレスCMSへの移行を決断しました。
StrapiのようなオープンソースのヘッドレスCMSを選び、段階的に移行を進めました。
プロジェクトチームは情熱を持って取り組み、以下のような利点を実感しました。

  1. フロントエンドの自由度

    • ReactやVue.jsなどの最新技術を自由に使えるようになり、フロントエンドの開発が非常に楽しくなった。
      • 新しいアイデアやデザインをすぐに実装できるようになった。
    • ユーザーインターフェースが洗練され、ユーザー体験が大幅に向上した。
      • 特にモバイルフレンドリーなデザインが簡単に実現でた。
  2. スケーラビリティとパフォーマンス

    • ヘッドレスCMSはAPIを通じてコンテンツを提供するため、スケーラビリティが格段に向上した。
      • 大量のトラフィックにも耐えうる強固なシステムを構築できた。
    • コンテンツを一度作成すれば、Webサイト、モバイルアプリ、スマートデバイスなど、あらゆるチャネルで再利用できるようになった。
  3. 迅速な開発サイクル

    • フロントエンドとバックエンドが分離されているため、異なるチームが独立して作業できるようになり、開発スピードが飛躍的に向上した。
    • 新機能の追加や改善が迅速に行えるようになり、ユーザーからのフィードバックに迅速に対応できた。

結果と感想

ヘッドレスCMSへの移行は非常に有益な体験でした。
移行後の効果を実感するにつれ、その選択が正しかったことを確信しました。
サイトはより動的で反応が良く、ユーザーからの評価も非常に高くなりました。
また、開発チーム全体が新しい技術に触れる機会が増え、モチベーションが大いに高まりました。

ヘッドレスCMSへの移行は単なる技術的なアップグレードではなく、
コンテンツ管理と開発の文化を一新するものとなりました。
この経験を通じて、より柔軟で強力なシステムを手に入れるだけでなく、
チーム全体が新しい挑戦に対して前向きに取り組む姿勢を持つようになりました。

strapiとは

ここからは「strapi」について紹介していきます。

Node.jsで構築されたオープンソースのヘッドレスCMS(コンテンツ管理システム)です。
開発者は柔軟で拡張性のあるAPIを迅速に構築し、
データを簡単に管理することができます。

https://strapi.io/

主要な機能

1. ヘッドレスCMS

ヘッドレスCMSとして機能し、バックエンドとフロントエンドを分離します。
さまざまなフロントエンドフレームワーク(React、Vue、Angularなど)や
モバイルアプリと簡単に統合できます。

2. API生成

RESTfulおよびGraphQL APIを自動的に生成します。
開発者は簡単にデータを取得、作成、更新、および削除することができます。

3. プラグインシステム

Strapiには多くのプラグインがあり、ユーザー認証、ロールベースのアクセス制御、
ファイルアップロード、メール送信などの機能を簡単に追加できます。

4. アドミンパネル

直感的で使いやすい管理パネルを提供しており、
コンテンツの作成、編集、管理を簡単に行えます。

5. カスタマイズ可能

高度にカスタマイズ可能であり、ビジネスの特定のニーズに合わせて拡張できます。
モデル、コントローラー、サービス、ポリシーなどを簡単にカスタマイズできます。

6. データベース対応

StrapiはSQL(SQLite、MySQL、PostgreSQLなど)
およびNoSQL(MongoDB)データベースをサポートしています。

利点

1. 迅速な開発

StrapiはAPIを自動生成するため、手動でコードを書く必要がなく、開発時間を大幅に短縮します。

2. オープンソース

Strapiはオープンソースプロジェクトであり、
コミュニティによって積極的に開発され、サポートされています。
開発者は自由にコードを変更し、独自のニーズに合わせてカスタマイズできます。

3. 拡張性

Strapiのプラグインシステムにより、必要に応じて機能を簡単に追加できます。
これにより、ビジネスの成長に合わせてシステムを拡張できます。

4. セキュリティ

Strapiはセキュリティを重視して設計されており、
デフォルトで多くのセキュリティ機能を提供しています。
また、必要に応じてセキュリティポリシーをカスタマイズできます。

5. 多言語対応

Strapiは多言語対応しており、複数の言語でコンテンツを管理することができます。

使用例

  • ブログやニュースサイト
    • Strapiを使用して、動的なブログやニュースサイトを構築し、コンテンツの管理と配信を効率化できます。
  • Eコマースサイト
    • 商品情報、在庫、注文管理などをStrapiで管理し、カスタムフロントエンドと統合してEコマースサイトを構築できます。
  • モバイルアプリ
    • Strapiをバックエンドとして使用し、モバイルアプリからAPIを通じてデータを取得し、ユーザーにリアルタイムで情報を提供できます。

おわりに:〜構築を試してみるススメ〜

Strapiはその柔軟性と強力な機能により、注目されています。
以下でローカル環境での構築方法を記載していますので
よければご参考にしてください。
https://zenn.dev/persona/articles/bc9ce7c86dd78c

合同会社カメレオンミーム Tech Blog

Discussion