Hi WRITE(Rust Headless CMS)に入門したぞー
Headless CMSとは?
Headless CMSは、ウェブサイトやアプリケーションのフロントエンドと、コンテンツを管理するバックエンドを切り離すように設計されたコンテンツ管理システムです。Headless CMSは、コンテンツを直接Webページにレンダリングする代わりに、APIを通じてコンテンツを公開し、あらゆる種類のフロントエンドやアプリケーションで表示することができます。
このアーキテクチャにより、ウェブサイト、モバイルアプリなど、異なるコンテキストで同じコンテンツを再利用することができ、それぞれのプラットフォームでコンテンツを再作成する必要がありません。また、サイトやアプリケーションのフロントエンドをバックエンドから独立して更新できるため、コンテンツをより柔軟に管理することができます。
人気のあるヘッドレスCMSとしては、Contentful、GraphCMS、Directusなどがあります。 これらのCMSは、コンテンツを管理するためのWebベースのインターフェイスと、コンテンツにアクセスし操作するためのAPIを提供します。
Headless CMSの利点は?
・バックエンド(コンテンツの管理場所)とフロントエンド(コンテンツの表示方法)の分離されたアーキテクチャにより、サイトやアプリケーションのフロントエンドをバックエンドから独立して更新できるため、コンテンツの柔軟性と制御性が高くなっています。
内容の更新のたびにエンジニアに頼んでHTMLの編集をしてもらう必要がなく、誰でも管理画面からWebサイトの内容を書き換えることができます。
・再利用可能なコンテンツ。 ヘッドレスCMSは、APIを通じてコンテンツを公開するので、ウェブサイト、モバイルアプリなどあらゆるコンテキストでそのコンテンツを再利用することができます。
・フロントエンドが選択可能。 ヘッドレスCMSは、HTTPリクエストを行い、JSONやXMLのレスポンスをパースできるフロントエンドやアプリケーションであれば、Rust、JavaScript、Pythonなど、あらゆるプログラミング言語やフレームワークで使用することができます。
・パフォーマンスの向上。 ヘッドレスCMSは、レンダリングする必要がないため、従来のCMSよりも高速かつ効率的に動作することがあります。これは特にトラフィックの多いサイトやアプリケーションで有効です。
なぜRust製を選んだの?
TECHFUND社のプレスリリースからRust製のメリットを抜粋します。
・Rust言語の特徴である並列処理性能により、少ないサーバー構成でより多くのコンテンツを並列処理・管理することができるため、費用対効果が高い運用を可能。
・導入が非常に簡単。 バイナリファイルをダウンロードし、実行するだけでCMSの運用開始できる。
・他のNode.jsやPHPベースのCMSよりも高速なレスポンスタイムを提供することが可能。
なぜHi WRITEを選んだの?
そこにHi WRITEがあったから(キリッ)。
たまたまみつけたから。
オープンソースだから。おそらく他にないのでは?
さあ、入門しますよー
ちなみに、私の環境は AppleのM1 MacBook Pro(2020)です。
事前準備
「Hi WRITE」Githubリポジトリからクローン
git clone https://github.com/TECHFUND/hiwrite
Rustのインストール
Homebrewを使う場合
brew install rust
rustupを使う場合
curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh
インストーラのダウンロードを行い、最新の安定版のRustがインストールされます。
RustのVersion確認
ターミナルを再起動して下記コマンドを発行する
rustc –version
このようにVersion名が出てくればインストール成功
rustc 1.66.0 (69f9c33d7 2022-12-12)
Postgresのインストール
公式ページから使用環境に応じた安定版をダウンロードし、インストールする。
diesel_cliのインストール
dieselというのはRustのObject Relational Mapping(ORM, データベースを扱うためのライブラリ)であり、diesel_cliというのはそのコマンドラインツールである。
cargo install diesel_cli –no-default-features –features postgres
以下のエラーが出た場合、
= note: ld: library not found for -lpq
clang: error: linker command failed with exit code 1 (use -v to see invocation)
libpqをインストールする。
brew install libpq
diesel –version でDieselとdiesel_cliのVersionが一致することを確認する
#diesel_cliのインスロール時のログ(後半のみ)
Compiling heck v0.4.0
Compiling migrations_internals v2.0.0
Compiling migrations_macros v2.0.0
Compiling diesel_migrations v2.0.0
Compiling diesel_cli v2.0.1
Finished release [optimized] target(s) in 22.14s
Installing /Users/ikkun/.cargo/bin/diesel
Installed package `diesel_cli v2.0.1` (executable `diesel`)
#dieselのバージョン確認
% diesel --version
diesel 2.0.1
hiwriteデータベースを作成する
psql -U postgresでPostgresSQLへ接続し、create database hiwriteでデータベースを作成する。
% psql -U postgres
psql (15.1)
Type "help" for help.
postgres=# create database hiwrite;
CREATE DATABASE
postgres=# \qで接続を解除する。
.envファイルの作成
リポジトリの.env.sampleを参考に.envファイルを作成する。
Hi WRITE起動
% cargo run — migrateと% cargo run — serverでHi WRITEが起動する。
Finished dev [unoptimized + debuginfo] target(s) in 0.28s
Running `target/debug/hiwrite migrate`
Running migration 2022-11-1-101223_init
Ran migrations.
HiWrite Up!
コンテンツ管理
RESTful APIを使用してコンテンツの管理をします。
仕様はhttp://localhost:8000/api/docsを参照ください。
まとめ
Headless CMSからRust製のHi WRITEを取り上げて入門してみました。これから遊んでみます。