a-blog cms Ver. 3.0.0 をリリースしました!
2021年12月24日にメジャーバージョンアップである Ver. 3.0.0 がリリースされました!
ここでは、Ver. 3.0.0 で新しく追加された主な機能や変更点などを紹介させていただきます。
主な新機能・変更点
- PHP7.2.5 - PHP8.0対応
- ionCube PHP Encoder による暗号化を廃止
- Webhook機能を追加
- API 機能を追加
- エントリーのエクスポート・インポート機能を追加
- テンプレートのキャッシュ機能を追加
- Redis、Opcache、APCuやファイルキャッシュなどをキャッシュオプションを用意しパフォーマンスを向上
- 新テーマUTSUWA の追加
※最後に変更点一覧を掲載しています。
PHP7.2.5 - PHP8.0対応
お待たせいたしました。Ver. 3.0.0 で「PHP8.0」 の対応をいたしました。PHP8.0 を使う事でよりパフォーマンスよくご利用いただけます。
また、Ver. 2.11.x までは PHP5.3.3 から対応しておりましたが、対応PHPを 「PHP7.2.5」 以上へ変更いたしました。これはセキュリティや今後のCMS開発を考え、対応するPHPの範囲をPHP7.2.5以上とさせていただきました。
PHP 7.2.5 未満の環境で動作させたい場合は、引き続き Ver. 2.11 系をメンテナンスしておりますので、Ver.2.11の利用をご検討ください。
ionCube PHP Encoder による暗号化を廃止
今後より早く新しいPHPのバージョンに対応したパッケージを提供するため、ionCube PHP Encoder による暗号化を廃止いたしました。
ionCube から最新のPHPバージョンに対応したものがリリースされず、新しいPHPバージョンへの対応が遅れてしまうことが以前より問題として上がっておりました。この問題に対処するためにVer.3.0.0 にて暗号化を廃止いたしました。
暗号化がされていない分、従来よりもセキュリティレベルがやや下がる部分はありますが、コアプログラムについては引き続き通常では読めない難読化を行っています。引き続き安心してご利用いただけるように、素のPHPのコードよりも攻撃しづらい仕組みを提供いたします。
そのほかの暗号化を廃止することのメリットは、以下になります。
- インストール時に、ionCube Loaderのインストール作業が不要になる
- インストール時に、インストールできるサーバー環境が増える
- サーバー側で強制的にPHPバージョンが変更されても、サイトが停止しない
- PHPのバージョンを変更する際に、パッケージを変える必要がなくなる
- ionCube Loaderの開発状況に左右されないため、新しいPHPバージョンに対応したパッケージがより早く提供される
ライセンスファイルの仕様変更
ionCube PHP Encoderの廃止によりライセンスファイルの仕様が変更されたため、以前のライセンスファイルとの互換性がなくなりました。 大変お手数ですがVer.3.0.0以上へのアップデートの際には、ライセンスファイルをマイページから再度ダウンロードしてライセンスを適用してください。
ダウンロード方法
- マイページの所有ライセンス一覧に移動する
- ダウンロードボタンから「Ver. 3.0 以上」を選択し、ダウンロードする
Webhook 機能を追加
新しい機能「Webhook」が追加されました。
Webhookを使うと、a-blog cmsでのイベント(エントリー更新やフォームでの送信)をフックして、外部サービスと連携できるようになります。
例えば以下のような事ができるようになります。
- 記事が更新されたら Slackなどのチャットツールに通知
- IFTTTなどのWebサービスを経由してTwitterやFacebookなどのSNSに自動で投稿
カスタマイズが柔軟にできるようになっているので、さまざまなサービスと連携することが可能です。
詳細はドキュメントをご覧ください。
API 機能を追加
新しい機能「API」が追加されました。
モジュールIDが出力する変数をAPI(JSON)で取得できる機能です。
従来ではJSONデータを取得する時に、JSON形式のテンプレートをわざわざ作って対応していましたが、その必要がなくなります。
JavaScriptなどで、JSONデータを用意して対応していた方には朗報ではないでしょうか。
例えば以下のようなURLで「summary_index」のモジュールIDが呼び出せるようになります。
https://example.com/api/summary_index/
またURLコンテキストに対応しているので、柔軟にコンテンツを出力できます。
https://example.com/field/price/60000/page/2/api/summary_index/
詳細はドキュメントをご覧ください。
エントリーのエクスポート・インポート機能を追加
従来では、ブログ毎のエクスポートや、サイト全体のエクスポートはできましたが、エントリー単位でのエクスポート・インポートはできませんでした。
これが、Ver. 3.0.0 の「エントリーのエクスポート・インポート機能」を使う事で可能となりました。
例えば以下のような場合に便利な機能です
- サイトリニューアル案件でリリース直前に現行サイトと開発サイトのエントリー差分をうめる
- ステージ環境でチェックしたエントリーを本番環境へ移す
エクスポート・インポート方法
いずれも、管理ページのエントリー一覧から操作できます。
エクスポート
- 管理ページのエントリー一覧へ移動する
- エクスポートしたいエントリーにチェックをつける
- セレクトメニューでエクスポートを選択し、実行する
インポート
- 管理ページのエントリー一覧へ移動する
- ページ上部にある「インポート」ボタンをクリックしてインポート画面に移動する
- エクスポートデータを選択してインポートする
Redis、Opcache、APCuやファイルキャッシュなどのキャッシュオプションを用意しパフォーマンスを向上
Ver. 2.11 まではデータベースによるページキャッシュのみを提供しておりましたが、Ver. 3.0.0 で複数のキャッシュを新しく用意しました。キャッシュの方法が複数用意されたため、環境に合わせて設定できます。
キャッシュの種類
- ページキャッシュ
- テンプレートキャッシュ
- コンフィグキャッシュ
- カスタムフィールドキャッシュ
- 一時的なキャッシュ
キャッシュの方法
- APCuによるキャッシュ
- PHPファイルによるキャッシュ
- ファイルによるキャッシュ
- メモリーによる一時キャッシュ
- Redisによるキャッシュ
これにより、キャッシュ方法によっては大幅なパフォーマンスアップが望めます。特に「OPcache」や「APCu」が利用できるサーバーだと効果が感じられると思います。
詳細はドキュメントをご覧ください。
ページキャッシュの仕様変更
ページキャッシュがより細かく設定できるようになりました。これにより環境やサイト特性に合わせたキャッシュ戦略を立てられるようになりました。
- POST時(エントリー保存時など)に、キャッシュをクリアしないオプションを用意
- エントリーのキャッシュ有効期限の設定を追加
- キャッシュクリア範囲(ターゲットブログ)の設定を分かりやすくなるよう変更
更新頻度が低い場合のページキャッシュ設定例
1週間に一回程度の更新頻度が少ないサイトであれば、キャッシュ有効時間を伸ばしPOST時にキャッシュをクリアをします。 更新頻度が少ないので、POST時のキャッシュクリアも頻繁に発生せず、キャッシュの有効時間も長いので、キャッシュヒット率もあがります。
ページキャッシュ: 有効
POST時のキャッシュクリア: 有効
キャッシュ有効時間: 2592000秒(30日間)
エントリーキャッシュ有効時間: 2592000秒(30日間)
キャッシュクリアの対象ブログ: サイト構成に沿って適切に設定
クライアントキャッシュ設定: 120秒
更新頻度が高く、アクセス数の多い場合のページキャッシュの設定例
更新頻度が高く、アクセス数の多いサイトの場合、POST時のキャッシュクリアはしないようにします。 更新頻度が高いので、その都度キャッシュをクリアしてしまうと、キャッシュのヒット率が下がってしまうからです。
またキャッシュクリアをPOST時にしてしまうと、キャッシュが一気に消え、瞬間的にキャッシュヒット率が極端に下がり、サーバーの負荷も上がってしまいます。 そこでキャッシュの有効時間を短くし有効時間切れで、ばらばらにキャッシュがクリアされていくようにしています。
ページキャッシュ: 有効
POST時のキャッシュクリア: 無効
キャッシュ有効時間: 300秒(5分間)
エントリーキャッシュ有効時間: 2592000秒(30日間)
キャッシュクリアの対象ブログ: サイト構成に沿って適切に設定
クライアントキャッシュ設定: 120秒
テンプレートのキャッシュ機能を追加
新しい機能として「テンプレートのキャッシュ機能」ができました。
Ver. 2.11 までは、ページキャッシュが利用できないログイン時やキャッシュがない状況では、
テンプレートの組み立て(パスの書き換えやインクルードの処理など)を毎回処理していました。
これがテンプレートキャッシュを利用することで、テンプレート組み立てを毎回しなくて済み、パフォーマンスが向上します。
ただし テンプレートキャッシュを利用するには制限事項 があります。
テンプレートキャッシュが使える条件(制限事項)
テンプレートの作り方に制限があります。インクルード文の中に使用できるグローバル変数が限定されます。
<!-- 以下のようなインクルード文で使用するグローバル変数が限定されます。 -->
@include("/admin/entry/bcd/%{BCD}.html")
使用できるグローバル変数
%{ECD}
%{BCD}
%{PBCD}
%{RBCD}
%{CCD}
%{PCCD}
%{RCCD}
%{ALIAS_CODE}
%{IS_ADMIN}
%{MODULE_NAME}
%{MODULE_ID}
%{ADMIN_PATH}
%{ADMIN_PATH_MID}
テンプレートのカスタマイズに制限はありますが、テンプレートキャッシュを有効にできると、ログインしている時や管理画面、キャッシュがない時などで、 パフォーマンス向上が望めますのでぜひお試しください。
詳細はドキュメントをご覧ください。
新テーマUTSUWA の追加
「UTSUWA」は今までの公式テーマと異なり、デザインの品質を保ち、運用しやすい構造を提供するテーマです。
Webサイト制作のビジュアル設計に関わるコストを抑えるため、豊富なユニットのスタイルでコンテンツをどんどん作成していくことが可能なスタートアップに最適なテーマです。
今までの公式テーマは a-blog cms を学習していただくことに比重を置いていましたが、実際のユーザーの方々にヒアリングし、すぐに実務で使えるテーマとして開発されました。
テーマ全体では1カラムのレイアウトを採用しています。
採用情報や、企業情報の一覧ページは、一覧ページでもエントリーで更新できるようになっています。
使用方法
UTSUWAテーマはVer.3.0から公式テーマになりました。インストール時にUTSUWAを選択すると、使用することができます。
リリースノート
新機能
- CMS-5440 エントリーのエクスポート・インポート機能を追加
- CMS-5602 Webhooks 機能を追加
- CMS-5603 API機能(モジュールIDのGET API)を追加
- CMS-5779 テンプレートのキャッシュ機能を追加
- CMS-5767 Radis、OPcache、APCuやファイルキャッシュなどのキャッシュオプションを用意しパフォーマンスを向上
- CMS-5786 レスポンス直前のHook(beforeResponse)を用意(キャッシュ時も対応)
- CMS-5672 新しい校正オプション(substring)を追加
変更点
- CMS-5770 対応PHPバージョンを 7.2.5 - 8.0.x に変更
- CMS-5768 「ionCube PHP Encoder」による暗号化を廃止
- CMS-5774 ログインセッションを独自ではなくPHP標準機能を利用するように改修
- CMS-5778 ページキャッシュをデータベースキャッシュをやめ、ファイルキャッシュ、または Redisキャッシュを選択できるように改良
- CMS-5620 ゴミ箱で削除日時と削除ユーザーが分かるように修正
- CMS-5730 管理画面の空データ状態の表示を調整
- CMS-5780 開発環境の不可視ファイルの見直し
- CMS-5766 承認依頼の「却下」の文言を「差し戻し」へ変更
- CMS-5731 承認機能の 承認依頼と承認するときのボタンのラベルを変更
- CMS-5616 js-lazy-load にアニメーションを付与
- CMS-5784 Yahoo地図機能を削除
- CMS-5785 Instagram連携機能を削除
- CMS-5781 キャッシュ生成リスト機能を削除
テーマ変更点
- CMS-5777 UTSUWAテーマを追加
- CMS-5720 各テーマのDart Sass対応
- CMS-5792 bootstrapテーマを削除
- CMS-5775 サイトテーマ: 印刷時のスタイル修正とremからpxへの変更
- CMS-5642 developテーマによく使う組み込みJSと同じものをバンドル
バグフィックス
- CMS-5776 画像ユニットで「そのまま」の中央寄せにした時に画像が幅いっぱいになる問題を修正
ダウンロードについて
ご利用いただくには、ダウンロードページからVer.3.0をダウンロードしてください。
- 対応してるPHPバージョン:PHP7.2.5〜PHP8.0
- Ver.3.0用のlicense.phpをマイページから新しくダウンロードして再度適用必要があります
- 現在は新規インストールパッケージのみ(アップデートパッケージの配布は1月中旬を予定)
本件に関するお問い合わせ先
有限会社アップルップル
メールアドレス:info@appleple.com
お問い合わせフォーム:https://www.a-blogcms.jp/contact/
日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。
Ver.2.11.42 リリースのお知らせ
この記事では、2021年12月21日にリリースした Ver.2.11.42 の修正内容について紹介いたします。
現在お困りの問題に該当する項目がありましたら、お早めにバージョンアップのご検討をお願いいたします。
Ver.2.11.42 リリースノート
- CMS-5796 ログインページのテンプレートで@section("block-auth")と@section("block-reset")の囲み方がずれている問題を修正
- CMS-5797 acms.jsをログアウト時読み込まないような設定をしている場合、プレビューが正しく表示できない問題を修正
主なリリースノートの詳細な内容
CMS-5796 ログインページのテンプレートで@section("block-auth")と@section("block-reset")の囲み方がずれている問題を修正
themes/system/_layouts/login.html の @sectionブロックの囲み方を修正しました。
ログインページをこのテンプレートを継承してカスタマイズしている場合、Ver. 2.11.42 にアップデートすると、ログインページのスタイルが崩れる可能性がございます。 お手数ですが、継承テンプレートで <!-- END auth --> や <!-- END reset --> を削除していただくようにお願いいたします。
修正前
<!-- BEGIN auth -->
@section("block-auth")
...
<!-- END auth -->
@endsection
<!-- BEGIN reset -->
@section("block-reset")
...
<!-- END reset -->
@endsection
修正後
<!-- BEGIN auth -->
@section("block-auth")
...
@endsection
<!-- END auth -->
<!-- BEGIN reset -->
@section("block-reset")
...
@endsection
<!-- END reset -->
CMS-5797 acms.jsをログアウト時読み込まないような設定をしている場合、プレビューが正しく表示できない問題を修正
ログアウトした時に組み込みJS(acms.js)を読み込まないようなカスタマイズをしている場合、プレビュー機能が正しく動作していませんでした。 これを修正し、組み込みJSを読み込んでなくてもプレビュー機能が動作するように修正いたしました。
この度は、ご不便をおかけしてしまい申し訳ございません。
現在お困りの問題に該当する項目がありましたらご対応のほどよろしくお願いいたします。
今後とも a-blog cms をよろしくお願いいたします。
Ver. 3.0 の パフォーマンスを検証!
2021年12月24日 にメジャーバージョンアップである Ver. 3.0 がリリースされました!
ionCube PHP Encoder の廃止
やはり Ver. 3.0 で大きな変更点は、ionCube PHP Encoderの廃止ではないでしょうか。 もちろん 暗号化がなくなったので、セキュリティ対策としては若干落ちますが、コアプログラムは難読化されていますしメリットも多くあるため、より便利に a-blog cmsを利用できるようになったと思います。
ionCube PHP Encoder 廃止によるメリット
- インストール時に、ionCube Loaderのインストール作業が不要になる
- インストール時に、インストールできるサーバー環境が増える
- サーバー側で強制的にPHPバージョンが変更されても、サイトが停止しない
- PHPのバージョンを変更する際に、パッケージを変える必要がない
- ionCube Loaderの開発状況に左右されないため、新しいPHPバージョンに対応したパッケージがより早く提供される
Ver. 3.0 のパフォーマンス検証
Ver. 3.0 の特徴として、パフォーマンス周りの改善がみられます。
- PHP8.0 対応
- テンプレートキャッシュを導入
- その他キャッシュ機能を強化(キャッシュ対象の増加、APCu対応など)
そこで今回は、Ver. 2.11.42 と Ver. 3.0 のパフォーマンスを計測し、Ver. 3.0 のパフォーマンスを検証していきたいと思います。
前提条件
計測するサーバーは、a-blog cms の設置サーバーとしてよく選ばれる、Xserver スタンダードを選択しました。
- Xserver スタンダード(旧X10)
- siteテーマの初期状態で計測
- トップページ、一覧(お知らせ一覧)、詳細ページ(ユニットによる要素の掲載例)を計測
- 計測はApache Benchを使用(10ユーザーが合計100アクセスするのにかかった秒数を計測)
Ver. 2.11.42 の測定結果
設定内容
- PHP 7.425
- MySQL 5.7.x
- Xアクセラレータ Ver.1 有効
ページ | CMSのページキャッシュなし | CMSのページキャッシュあり |
---|---|---|
トップページ | 5.214 秒(19.18 #/s) | 3.020 秒(33.11 #/s) |
一覧ページ | 5.610 秒(17.83 #s) | 3.073 秒(32.53 #/s) |
詳細ページ | 6.001 秒(16.66 #s) | 3.281 秒(30.48 #/s) |
Ver 3.0.0 の測定結果
設定内容(Ver. 2.11 と同じ条件で計測)
- PHP 7.425
- MySQL 5.7.x
- Xアクセラレータ Ver.1 有効
- テンプレートキャッシュオフ
ページ | CMSのページキャッシュなし | CMSのページキャッシュあり |
---|---|---|
トップページ | 3.908 秒(27.21 #/s) | 3.054 秒(32.74 #/s) |
一覧ページ | 3.802 秒(26.30 #s) | 2.776 秒(36.02 #/s) |
詳細ページ | 3.940 秒(25.38 #s) | 2.980 秒(33.55 #/s) |
設定内容(テンプレートキャッシュON)
- PHP 7.425
- MySQL 5.7.x
- Xアクセラレータ Ver.1 有効
- テンプレートキャッシュON
ページ | CMSのページキャッシュなし | CMSのページキャッシュあり |
---|---|---|
トップページ | 3.565 秒(28.05 #/s) | 2.884 秒(34.67 #s) |
一覧ページ | 3.679 秒(27.18 #s) | 2.715 秒(36.83 #s) |
詳細ページ | 3.751 秒(26.66 #s) | 3.006 秒(33.27 #s) |
設定内容(PHP8.0, テンプレートキャッシュON)
- PHP 8.0.12
- MySQL 5.7.x
- Xアクセラレータ Ver.1 有効
- テンプレートキャッシュON
ページ | CMSのページキャッシュなし | CMSのページキャッシュあり |
---|---|---|
トップページ | 3.604 秒(27.75 #/s) | 2.709 秒(36.91 #/s) |
一覧ページ | 3.793 秒(26.36 #s) | 2.786 秒(35.89 #/s) |
詳細ページ | 4.027 秒(24.83 #s) | 3.091 秒(32.36 #/s) |
設定内容(Xアクセラレータ Ver.2 有効, PHP8.0, テンプレートキャッシュON)
- PHP 8.0.12
- MySQL 5.7.x
- Xアクセラレータ Ver.2 有効
- テンプレートキャッシュON
ページ | CMSのページキャッシュなし | CMSのページキャッシュあり |
---|---|---|
トップページ | 3.615 秒(27.66 #/s) | 2.732 秒(36.60 #/s) |
一覧ページ | 3.759 秒(26.61 #s) | 2.634 秒(37.96 #/s) |
詳細ページ | 4.022 秒(24.87 #s) | 2.775 秒(36.03 #/s) |
以上が計測結果になります。いかがでしたでしょうか。
Ver. 2.11.42 と比べると Ver. 3.0.0 は ページキャッシュ未使用時のパフォーマンスが良くなっている事がわかります。 会員サイトや、編集時などログインしている状況でのパフォーマンスが良くなっていそうです。
CMSのページキャッシュが有効時は、Ver. 2.11 も Ver. 3.0 もそこまで大差はないかと思います。
PHP8.0 や Xアクセラレータ Ver.2 は、今回のテストでは思ったより改善は見られませんでした。 若干キャッシュあり時のパフォーマンスが良くなった程度でしょうか。
もちろん今回の検証は限られた設定やテーマでの検証ですので、サーバー環境やテーマの作り方が変わると結果も変わってくると思います。 ただログインしている時やキャッシュオフの状態のパフォーマンスは体感できるぐらい違いを感じますので、ぜひ一度 Ver. 3.0 を試してみてください。 特にあまりパフォーマンスがよくない環境だと、差が顕著になると思います。
以上、Ver. 3.0 のパフォーマンス検証でした。
追加情報
XSERVER の 新サーバー簡単移行 のサービスを利用すると 最新サーバー環境(sv13001.xserver.jp~) へ引っ越しをすることができます。 上記の計測後にサーバーを引っ越ししましたので、そのデータも共有しておきます。
設定内容(サーバーID sv13xxx, Xアクセラレータ Ver.2 有効, PHP8.0, テンプレートキャッシュON)
- PHP 8.0.12
- MySQL 5.7.x
- Xアクセラレータ Ver.2 有効
- テンプレートキャッシュON
ページ | CMSのページキャッシュなし | CMSのページキャッシュあり |
---|---|---|
トップページ | 2.561 秒(39.05 #/s) | 1.935 秒(51.68 #/s) |
一覧ページ | 2.785 秒(35.91 #s) | 1.977 秒(50.58 #/s) |
詳細ページ | 2.876 秒(34.77 #s) | 1.963 秒(50.94 #/s) |