🔖

Gartner評価のエンタープライズ級!オープンソースの万能CMS「PIMCORE」を実際に触ってみた

に公開
2025/12/28

Gartner評価のエンタープライズ級!オープンソースの万能CMS「PIMCORE」を実際に触ってみた

はじめに

みなさんは「PIMCORE」というシステムをご存知でしょうか?
Gartnerの評価でAdobeやSAPと並んで選出されるほど、世界的には非常に評価の高いオープンソースのCMSです。

CMS機能はもちろん、デジタル資産管理(DAM)、さらには GDPRに対応した個人情報管理(CDP) まで標準で備わっているまさに「全部入り」のすごいシステムなのです。
世界的な評価機関のGartnerでもここ数年ランクインしているにも関わらず、なぜか日本ではほぼ無名です。

しかし今回、案件で実際に開発してみて感じたのは、「なんでこんなにわかりにくくするの??」というマニュアルと、「あぁ、これ見て何を学べ?」というサイトサンプル。。。ああ、これは参入障壁高いわ。。と感じました。。

本連載ではその障壁を下げ、気軽にPIMCOREを使ってもらえるようにするため、こちらで開発した「サイトテンプレート」をベースにしたクイックスタートガイドをお届けします。

第1回目は「多言語Blogテンプレート」をお届けします!


PIMCOREとは何か?

通常、以下のような機能を実現しようとすると、複数のツールを組み合わせる必要があります。

  • CMS(Webサイト管理)
  • PIM(製品情報管理)
  • DAM(画像や動画などのデジタル資産管理)
  • CDP(顧客データプラットフォーム)
  • E-Commerce(EC機能)

PIMCOREは、これらの機能をオールインワンでPHPのSymfonyベースで構築できます。
ホント、これだけの機能がオープンソースというのには頭がさがります。。。

今回作ったもの:多言語ブログテンプレート

「触ってみるのが一番早い」ということで、PIMCOREの最大の特徴である**「強力な多言語機能」**を活かした、ブログサイトのテンプレートを開発しました。
裏側のControllerは構築済み、Gitで公開しているので、すぐにPIMCOREの挙動を確認できます。

このテンプレートの特徴

  • 構築済みのController:Controllerは実装済みなので、ほとんどPIMCOREの管理画面だけで作れます。
  • 多言語対応:日本語・英語などの切り替えが管理画面から直感的に行えます。
  • GitHubで公開:クローンしてすぐにローカルで動かせます。

サイトサンプル
https://blog.pimcorejp.com/ja/index

実際に自分のPCでPIMCOREを動かしてみましょう!

PIMCOREはDockerでの構築を推奨しています。なので、ローカル環境で手軽に体験することができます。

公式のGitHubにも手順は載っていますが、実はそのまま実行すると権限エラーで止まったり、ライセンスキーの発行で迷ったりするポイントがいくつかあります。

この記事では、私がハマったポイントを回避しながら、最短で「動く環境」を作る手順をまとめました。後半では、今回開発した 「多言語Blogテンプレート」の組みこみ まで一気に進めます!


1. 事前準備:Docker環境の確認

Windowsユーザーの方

WSL2(Windows Subsystem for Linux)とDocker Desktopが必要です。
PIMCOREはLinuxで動作するので普通にWindows環境で構築するとモッサモサな動作になります。
WSLを導入してLinux環境で構築してください!

  • Docker Desktopの設定で「Use the WSL 2 based engine」が有効になっていることを必ず確認してください。
  • 以降のコマンドは、PowerShellではなくWSL2(Ubuntuなど)のターミナルで実行します。

Macユーザーの方

Docker Desktop for MacをインストールしていればOKです。


2. プロジェクトの作成(権限エラーを回避!)

まずはPIMCOREのプロジェクトを作成します。公式コマンドだとファイルの所有権(Permission)でハマることが多いため、以下の手順が確実です。

mkdir ~/pimcore && cd ~/pimcore

# 現在のユーザーID/グループIDを変数に保存(権限エラー防止)
export MY_UID=$(id -u)
export MY_GID=$(id -g)

# Composerでプロジェクト作成(PHP 8.3イメージを使用)
docker run -u ${MY_UID}:${MY_GID} --rm -v `pwd`:/var/www/html \
  pimcore/pimcore:php8.3-latest \
  composer create-project pimcore/skeleton test01

これで test01 フォルダにPIMCOREのコアファイルが展開されます。
※別のフォルダにしたい場合test01を変更してください。


3. Dockerの環境設定とコンテナ起動

プロジェクトフォルダに移動してください。

cd test01

ユーザー権限の設定

docker-compose.yaml を開き、php と supervisord セクションにある user 行のコメントアウトを外し、環境変数を参照するように書き換えます。

# user: '1000:1000'  2か所あります!
       ↓
user: '${MY_UID:-1000}:${MY_GID:-1000}'

コンテナの起動

# 環境変数を.envに書き出し
cat > .env << EOF
MY_UID=1000
MY_GID=1000
EOF

docker compose up -d

4. PIMCOREのインストールとライセンス登録

コンテナが立ち上がったら、インストールコマンドを実行します。

docker compose exec php vendor/bin/pimcore-install

ここがポイント:無料のCommunity Edition登録

  1. ターミナルで管理者ユーザー名/パスワードを決めると、ライセンス発行URLが表示されます。

  1. ブラウザで開き、**「Community Edition(無料)」**を選択して登録します。


  1. 届いたメールのリンクから Product Key をコピーし、ターミナルに貼り付けます。

おすすめのBundle選択

次に導入するBundle(拡張機能)を聞かれますが、なぜかディフォルトに「No」が・・・
ここでNoにすると拡張機能がインストールされません。Log出力が拡張機能なのでYes で進めるのがおすすめです。

デバッグや開発をスムーズにするために 0, 1, 3, 5 あたりを選択しとくのが無難です。

Install内容が決まったらInstallが開始します。2~3分お待ちください!
※Cacheフォルダの権限で、最後にエラーがでることありますが、その前にInstall Completedが表示されていれば問題ありません。

http://localhost/adminで管理画面をひらきましょう!

これでPIMCORE自体のInstallは完了です。http://localhost/adminを開いて下記が表示
されていれば構築完了です!

※docker-compose.yamlでPort番号を変更した方はhttp://localhost:8080/admin のようにポート番号をつけてください。


5. 多言語Blogテンプレートの導入

環境が整ったら**「多言語Blogテンプレート」**を導入しましょう。これで多言語Blogサイトが構築できます!

テンプレートのクローンと配置

以下のコマンドは、先ほど作成したプロジェクトのルートディレクトリ(test01 フォルダの中)で実行してください

# 1. テンプレートを一時フォルダにクローン
git clone https://github.com/pimcorejp/pimcore-blog-template.git /tmp/template

# 2. プロジェクトのルート(test01)にいることを確認
# cd ~/pimcore/test01

# 3. 各ファイルをプロジェクト内にコピー

# Controllerを配置
cp /tmp/template/src/Controller/BlogController.php src/Controller/

# テンプレートファイルを一括配置
cp -r /tmp/template/templates/* templates/

# 設定ファイルを配置
cp /tmp/template/config/packages/blog.yaml config/packages/

config/routes.yaml に下記を追記してください!


# プロジェクトのルート(test01)で以下のコマンドをそのまま貼り付けて実行してください。
# config/routes.yaml がなければ作成し、あれば末尾に追記されます。

cat << 'EOF' >> config/routes.yaml

# Blog Routes - 動的ロケール対応
blog_root:
    path: /
    controller: App\Controller\BlogController::rootAction
    methods: ['GET']

blog_index:
    path: /{_locale}/index
    controller: App\Controller\BlogController::indexAction
    requirements:
        _locale: '[a-z]{2}(?:_[a-zA-Z]{2})?'
    methods: ['GET']

blog_category:
    path: /{_locale}/blog/category/{category}
    controller: App\Controller\BlogController::categoryAction
    requirements:
        _locale: '[a-z]{2}(?:_[a-zA-Z]{2})?'
        category: '[a-z-]+'
    methods: ['GET']

blog_detail:
    path: /{_locale}/blog/detail/{id}
    controller: App\Controller\BlogController::detailAction
    requirements:
        _locale: '[a-z]{2}(?:_[a-zA-Z]{2})?'
        id: '\d+'
    methods: ['GET']
EOF

管理画面にログインしてみましょう!

http://localhost/admin/

ログインするとPIMCOREの管理画面が開きます。
左側の「Documents」がWebサイトのページフォルダ、「Assets」が画像などメディアファイル置き場、「Data Objects」がDBとなっています。


今回はここまで

お疲れ様でした!これでPIMCOREの初期設定が完了しました!
しかし、まだ管理画面でのDBの設定や、多言語設定がされていないので、これだけではサイトは動きません。

次回の第2回では、PIMCOREの肝である 「Object(データ構造)の定義」 について解説します。ブラウザだけでデータベース設計が完結する、PIMCOREならではの機能をお試しいただけます!


連載予定

本連載では、このテンプレートを以下の4ステップで動かすまでを解説していきます。

  • 第1回:PIMCOREの紹介(本記事)
  • 第2回:ブラウザ上でDB設計(Object Class)定義の作成
  • 第3回:サムネイルと翻訳(Translation)設定
  • 第4回:Sites機能で複数のサイト管理も簡単(Sites)設定

今後提供予定のサイトテンプレート

「WordPressでは物足りないが、AdobeのAEMを入れる予算はない」
そんなプロジェクトにとって、PIMCOREは最強の選択肢になります。

次回から、実際に手を動かしてこの「モンスターシステム」を使いこなしていきましょう!


参考リンク


Discussion