4.0の新機能と修正内容
WIKIPLUS Enterprise 4.0は、リリース10周年を経て、1.0、2.0、3.0と続いてきた進化の中で、取り残されてきた様々な問題解決のために、大規模な再構築、新機能実装が行われています。
「かつてない最高のWIKIPLUS」をテーマに、昨今のクラウド化されたインフラストラクチャに最適化しながら、さらなる高速化と、高収容化、安定化の為の修正が行われた大型アップデートとなっています。
今回のリリース対象は、オンプレミス・エディッション、クラウド・カスタマイズド・エディッション(CE)のみであり、インスタンス毎の制限機能が付く、データセンター用エディッション、OEMエディッションは、4.1からの対応となります。
アップデートはWIKIPLUS Ver.2、Ver.3から可能です。ライセンス体系に関しては、Ver3.0と同じです。各ディストリビュータにお問い合わせください。また、Ver1からのコマンドラインによるデータ・コンバータ・ツール(コンテンツデータのみ)も用意されております。
また、従来からセマンティック・バージョンが採用されていましたが、余り厳密には採番されていなかったため、今回より徹底されることとなりました。次の新機能追加バージョンは4.1(或いは通常のアップデート手法で互換性に懸念がでるレベルのバージョンアップである場合5.0)となり、機能追加が伴わないパッチバージョンは、4.0.1となります。
4.0の特徴
- クラウドインフラに最適化
- CPUとメモリのリソース利用率を下げるだけでなく、リソース解放時間も短縮し、全体の収容効率の向上をしました。
- ストレージに対するIOを下げる最適化を行いました。
- 多量のリクエストサイトに対応
- 秒間数百セッション〜数千セッションを捌くための最適化。大規模サイトへの対応のため、ロードバランサーと組み合わせ、スケールアウトができるように強化されました。
- 拡張性の向上
高速化
- 全く新しいbootstrapエンジン
- WIKIPLUSリクエスト毎に起動するbootstrapコードを全く新しく再実装を行いました。この改変は、Handler型プラグイン(URL型で稼働するプラグイン)や、4.1で搭載予定のPageCache機構をより効率的に動作させるためです。リクエスト毎に必要最低限のモジュールをローディングするため、モジュール毎の依存関係を自動的に解決し、依存注入(DI)が容易になるように、リエントラントで軽量・高速化されたフレームワークになりました。(※注、コンピュータ一般用語としてのbootstrapであり、フロント・エンド・フレームワークのbootstrapとは全く関係がありません)
- PaneCacheの実装
- Pane(WIKIPLUSにおける編集可能領域)の単位で出力データをキャッシュする、PaneCacheが実装されました。これにより、ブラウザのリロード時からのリレンダリング時間、あるいは4.1にて実装予定のPageCacheのフォールト時のデータ補填が効率的になります(CacheObjectにはMemcachedの利用を推奨)。
- sendfileへの対応を強化
- ページ添付ファイルのsendfile転送に対応。添付されたファイルや、スタティックなhtmlファイル、css、JSの転送時にphpのインスタンスを解放し、sendfileによる転送を行うようになりました。これにより、大きなメモリを利用するphpサーバのインスタンスが効率良く解放され、クラウドインフラの集約率が向上しました。
- 対応PHPバージョンが、5.5/5.6となり、opcacheに対応して、より高速な動作が可能となりました。
- リクエストに必要なPaneの相関関係を生成するエンジンが搭載。これにより、再帰的なHTTP呼び出しを無くし、HTTP/PHPの待ち受けインスタンスを消費を大きく減らしました。
- マルチ・レイヤー・キャッシュ・システムの最適化
- レイヤー毎のキャッシュ・アーキテクチャの再構築・再実装を行い、ヒット率を高め、上位キャッシュのフォールト時になるべく下位キャッシュに影響を与えにくくなるように、再実装されました。
- SmartyCacheへの対応。
- ストレージに対するライト・アクセスを徹底的に削減しました。
- Smartyのコンパイルデータをmemfs/tmpfsなどのメモリ上のファイルシステムに移動、SmartyCacheをWIKIPLUSのCacheObjectに保持(Memcachedの利用を推奨)など、様々な一時ファイルをmemfs/tmpfsなどのメモリ上のファイルシステムか、WIKIPLUSのCacheObjectに格納するようになりました。これにより、利用するメモリ量は増加しますが、http/phpのインスタンス単位での重複確保はないため、増加率は小さな範囲です。ベアメタル環境のように専用ストレージがある場合は、そちらに格納することもできます。
- ユーザのデータの保存回数が多すぎたため、これを最適化して低減させました。
全般的に、リクエスト単位の利用メモリを減らし、解放時間を短くすることで収容効率を向上、キャッシュのフォールト処理を最適化し、マルチレイヤーのキャッシュを採用することで、キャッシュフォールト時のペナルティを軽減しました。
デザイナー向けの機能
- retinaディスプレイ、4kディスプレイに対する対応を強化。
- 従来よりWIKIPLUSでは、画像を添付するときは原寸のままサーバにデータを保持しています。対象のディスプレイがretinaや4kモニタの場合、自動的に表示に大きな解像度の画像を出力するようにしました(srcsetによる対応)。
- DTDの改変。WIKIPLUSが自動的に書き換えていたDTD変更を取りやめ、デザイン・テンプレートで宣言していたものをそのまま使うようにして、WEBコーディングの自由度を高めました。DTDが完全ではないデザインテンプレートを作っていてWIKIPLUSが自動的に書き換え(或いは追加)していたものに頼ったデザインコーディングをしていた場合、デザインの見直しが必要となります。
- レスポンシブ・デザインが行いやすいように、自動出力するタグの最適化を行いました。
- デザインの自由度を高めるために、様々なプラグインの出力をSmartyで記述できるように拡張し、またCSSで調整が容易になるように、classやidの調整を行いました。
- 新しいブラウザに対応しました。(Chrome/Safari/Firefox等、EDGE/IE11は一部動作ができません)
サーバ管理者向けの機能
- wpadmin/wpentryが廃止され、より直感的なインタフェイスを持つWHM(WIKIPLUS Hosting Manager)が実装されました。
- コマンドライン用のツールの充実化が行われました。インスタンスの追加・削除・変更、DBのアップグレード、yamlファイルの参照、インスタンス単位の設定が、コマンドラインから可能となりました。
- パッケージが分割されました。これにより様々な環境に合わせたインストールが可能になりました。オンプレミス環境では不要な、インスタンス制限系のモジュールや、承認プロセスなどが別パッケージとなっています。これらのパッケージはRedhat Enterprise Linux 6ではyum、Solaris 11ではpkgコマンドを利用します。
- 全てのメール・テンプレートがSmarty化されました。以前はphpから発行されるメールがSmartyで、Perlから発行されるメールがTemplate.pmでした。Template.pm用のメールテンプレートをカスタマイズしていた場合、この修正が必要です。
- いくつかのシステム・フォールト用のエラー画面テンプレートの差し替えが可能となりました。
- 管理者による事後変更が多い一部のapache/proftpd用のconfigは、自動では作らず、参考表示するだけに変更されました。
- 対応PHPバージョンが5.5/5.6となりました。
- Memcachedが無くても動くようになりました。ただし、Memcachedが無い場合、新しく作られた様々なキャッシュが有効にならないため、インストールを推奨します。
- Apache 2.4への対応をしました。対応バージョンは2.2、2.4です(ただしパッケージでの配布は、OSに添付される2.2を対象に作られています)。
- オンプレミス版等、制作ナビが無効になる環境で、エラーログがでないようにしました。
運用担当者向け機能
- パスワード・リマインダーの強化。
- パスワード変更ダイアログの分離。機能メニューからパスワードの変更が可能になりました。
- 一般ユーザ権限で、サイトプロパティが開けなくなりました。
- エディタ内で画像ファイルのドラッグ・アンド・ドロップによるアップロードが可能になりました(一部ブラウザでの対応)。
- エディタ内で多段リストに対応しました。
- 新規作成時のデフォルト・パーマリンクが、ランダム文字列から日付+時分秒+αの数値になりました。
- 親グループが無効になったときのグループ継承でエラー処理がおかしい問題が修正されました。
- グループが「上位継承」である場合、下位ページの作成ができない問題を修正しました。
- RSSReader機能が追加されました。RSSからITEMを追加し、タイムライン上に織り交ぜて表示することができます。
- レジストリ編集機能が機能メニューに追加されました。
- 承認プロセスの設定ウインドウ等が、設定しやすく大きくなりました。
- タイムラインでUIに時刻を追加できるようにしました。
- タイムラインで新規作成ボタンをクリックする際に、元となる雛形ページを指定できるようにしました。
- 様々な最適化とUIのチューニングが行われました。
プラグイン開発関係
- bootstrapエンジンが書き換えられ、DI(Dependency Injection)が大規模に導入。機能強化やモジュールの独立性、リエントラントなコードになり、テストが容易になりました。
- 各種define、global変数の廃止をし、Singletonのクラスへと実装替えが行われました。
- 存在しないプラグインが呼び出した場合、UnimplementedPluginのオブジェクトが返るようになりました。
- 存在しないプラグインを呼び出した場合、デバッグモードでは存在しないプラグインとしてエラーを出すことにしました。
- プラグインのクラス名において、WPPluginAuthから始めた場合、編集用の認証済みのページでしかシステム的にバインドされない様に修正されました。これにより編集用の認証済みページでしか稼働させたくないプラグインを、安全に隔離させることができます。
- ディレクトリ構造の変更が行われました。
- /opt/JPC/wikiplus/libexec/program/wikisettings/libs等が、/opt/JPC/wikiplus/libexec/program/libsになりました。
- 外部ライブラリが/opt/JPC/wikiplus/libexec以下に設置されるようになりました。一部pearライブラリがその場所に設置されます。
- VirtualPageという概念が追加され、タイムライン上に自由にインジェクションできるようになりました。
- プラグインからツールバーにメニューを追加できるようになりました。
- プラグインからX-FRAME-OPTIONの制御ができるようになりました。
- プラグインから自分が含まれたWIKIコンテンツのキャッシュ可能時間を制御できるようになりました。
- システムのI18N対応(ただし現在、多国語用リソースは配布されておりません)
- 新DB接続用クラス群が実装されました。
- プラグイン置き場やPrefixの追加がやりやすくなりました。
- AutoLoaderが採用され、所定のディレクトリにクラスファイルを設置した場合、特にrequire/includeせずに呼び出せるようになりました。
- テストシステムが、SimpleTestからPHPUnitに変更になりました。
- phpdocに対応しました。
その他
- 様々な処理の安定化を行いました。
- 様々な高速化を行いました。
- 様々なバグの修正を行いました。