マイクロインスタンスでも動く!JavaベースのCMS - Magnolia CMS

Magnolia

弊社で利用している JavaベースのオープンソースCMSである Magnolia CMSの紹介です。
EC2 の t1.micro でも動作します。
弊社では実際プロジェクトでも活用しています。

はじめに

こんにちは。
先日アジャイル株式会社の"アジャイル"が、"アジャイル開発"等で利用される"アジャイル"ではなく、社長の飼っている犬の名前だった事に少なからぬショックを受けた須田です。

余談はさておき、弊社ではこれまでもオープンソースのCMSを利用したサイト開発を行ってきました。
これまでは JoomlaやWordpressを利用する事が多かったのですが、今回サイトリニューアルにあたって以下要件でCMSを選定する事になりました。

要件

  1. PHPではなくJavaが開発言語のもの
    弊社にはPHPのエンジニアが多く、Javaに精通したエンジニアが少ないため、CMSのカスタマイズ等をきっかけにスキルトランスファーを行う(今のところは ”できればいいなー” レベル)。
     
  2. AWS ( できればマイクロインスタンス上 ) で稼働するもの
    何人かのメンバーはクラウド上でシステム運用を行うプロジェクトの経験があるが、全社的に得意と言えるまでには至っていないため、自社サイトをクラウド上で運用する事でスキルの獲得・蓄積を行う。
    マイクロインスタンスなのは、AWSの無料枠を活用できるため

候補

上記要件を満たすCMSという点でいくつかのCMSを候補に挙げました。まずJavaで開発されているという点を考慮してWebで比較検討した結果、候補に挙がったのが以下のものでした。

機能や日本語化の状況をみて、最初はLiferayにしようと決めたのですが、システム要件が厳しくEC2のマイクロインスタンス(メモリ613MB)では、使えませんでした(動いているようではあるが激重)。
JavaのCMSはPHPのものと比べるとシステム要件が厳しいものが多いと思いますが、Magnolia CMSはEC2のマイクロインスタンスでも十分なパフォーマンスが得られるものでした。OpenCMSも512MBで十分なパフォーマンスを発揮していましたが、管理画面の作りが今一つなじめずに Magnolia が第一候補となりました。

Magnolia CMSの特徴

Magnolia ページ管理画面
Zoom
Magnolia ページ管理画面

Magnolia CMSの特徴としては、以下のようなものがあります。

  • インストールが簡単
    Tomcatバンドル版が用意されており、動作させるのは簡単です。
    コンテンツ管理にデータベースを利用していない(後述のJCRを利用)ため、Tomcatバンドル版をダウンロードして、実行するだけで動作させる事が可能です。
    war での配布もあり、既にTomcat環境がある場合には、warをデプロイするだけで試す事ができます。
  • 複数のチャネルに対応
    PC向け以外に、スマートフォン、及び、タブレットに対応しています。
    管理画面では、これら3つのチャネルに対するプレビュー機能も用意されています。
  • Ajaxを利用した管理画面
    vaadin を利用した管理画面は、他のJavaベースのCMSとは一線を画しているという印象です。コンテンツの移動等はドラッグ&ドロップ操作で行えます。
    参考 : Content Authoring with Magnolia
  • コンテンツの管理にJCR ( Java Content Repository ) を利用
    私はこれまで利用した事がなかったのですが、JSR-170として標準化が行われている JCRをコンテンツ管理に利用しています。
    JCRの参照実装である Apache Jackrabbit を利用してクラスタリング/ロードバランシングを行う事も可能です。
  • 詳細な権限管理が可能
    ユーザー/グループ/権限を定義する事でアクセス制御が行えます。
  • 編集用インスタンスと公開用インスタンス
    編集は編集用インスタンスで行い、ここでの変更内容を公開用インスタンスに公開するといった事が可能です。下書きは編集用インスタンスで行い、コンテンツ内容を確認した後で公開するといった運用が可能になります。
    弊社でも社内に編集用インスタンスを用意し、ここで編集作業を行ってから公開するという形にしています。
    コンテンツは公開だけでなく、非公開 ( 編集用インスタンスにだけ存在する状態 ) にする事も可能です。
  • Springとのインテグレーション
    Spring とインテグレーションするための機能がある。
    参考 : Spring Framework Integration for Magnolia CMS

問題点

WYSIWYGエディタ画面
Zoom
WYSIWYGエディタ画面
テキストと画像編集におけるWYSIWYGエディタ(CKEditor)です。利用できる機能がかなり制限されている印象です。 ver.5.2.1時点

Magnoliaにしようかと思って実際にEC2上に構築を行い、コンテンツ移行等をおこなってみて個人的に感じた現状の問題点は以下になります。

  1. 現状日本語の情報は殆どない
  2. 日本語コンテンツを扱う上では(一部機能を除き)ほぼ問題ないが、UI等は現バージョンでは日本語化されていない
  3. WYSIWYG エディタの機能が制限されていて、WYSIWYG エディタで編集した場合、コンテンツの表現が制限される。
    → 5.2.2 でリッチテキストエディタの設定が行えるようになりました

1 の問題に関しては、英語の技術文書の読み書きはある程度なんとかなるので、個人的には大丈夫。
2 の問題に関しては、日本語化が必要な部分は自分で翻訳すればよいだろうという事にしました。
3 は"テキストと画像(Text and Image)"というフォーマットのコンテンツを作成する場合に利用するWYSIWYGエディタの制限です。HTMLを直接記述する形式のコンテンツもあるため、こちらで記述すればよいわけですが、だれでも表現力豊かなコンテンツを作成するには、WYSIWYGエディタで利用できる機能(設定)も変更できるようにしてほしいものです。(CKEditorを利用しているので設定変更は可能にできると思いますが、現状はconfigは変更不可になっている)

※既に日本語化したプロパティファイルはコミュニティにcontributeしてあります。5.2.2で取り込まれるとの事。日本語環境で使う場合でもある程度使えるものになっているかと思われ..(どこで使うか判らない文言や、意味がよくわからない文言は翻訳してないけど)。

使ってみる

いくつか問題はありますが、AWS上で動作するJavaベースのCMSとしてMagnoliaを選択する事になりました。
日本語訳を contribute するにあたって、開発チームともコンタクトを取ってみたのですが、開発も活発に行われているようです。

日本語を利用する上で幾つか問題がありましたが、何れも代替手段で回避する事が可能で、今のところクリティカルな問題は発生していません。

日本語環境で利用する場合の設定等はまた別記事で書こうと思っています。