we hub IT, we lab IT! つなげる、つながる、ビジネスへ 株式会社オーク
  • HOME
  • 採用情報
  • 相談・お問い合わせ
  • ホームページ基礎講座(初心者向け)
  • ニュース
  • ケーススタディ
  • ラインナップ
  • 事例紹介
  • コラム
  • 会社情報
トップページ > コラム > オークの開発現場レポート
文字サイズ
小
中
大

コラム

オークの開発現場レポート

オークCMSエンジン「Capt.Lucy(キャプトルーシー)」開発秘話

プラグインの仕組み

オークCMSは、サイトの目的や用途に合わせて、さまざまな機能を必要なときにアドオンしていけるプラグインを備えています。
プラグイン機構は、オークCMSエンジンの技術的な核とも言える部分であり、今回はその仕組みについてご紹介いたします。

コンテンツ開発部 片山

オークのCMSエンジンである「Capt.Lucy(キャプトルーシー)」の開発を担当している片山です。 Capt.Lucy の技術的な部分についてご紹介させていただきます。今回は、その中で Capt.Lucy の技術的な核となるプラグイン機構について、ご説明させていただきたいと思います。

プラグインというと、ブラウザのFirefoxの拡張機能などが代表的ですが、CMSなどのWEBツールでも、プラグイン機構を備え、プラグラムソースを変更することなく、さまざまな機能を追加できるよう設計されたものが数多く存在します。たとえば、MovableTypeでは、独自のテンプレートタグの追加ができたり、管理画面上で、プラグインの設定などが行えるようになっていたりします。

プラグイン機構の設計

CMSなどのWEBツールを設計する上で、このプラグイン機構の設計はなかなか難しく、以下のような問題があげられます。

  • 拡張できる部分が限られてしまう。
  • プラグイン機構の仕様を変えないまま、拡張できる部分を増やすことが難しい。
  • パフォーマンス(管理画面の表示速度など)を低下させてしまう。
  • プラグインの作成方法が一般的なプログラムと異なって開発効率を下げてしまう。

また、弊社では、CMSツールを単体で販売するのではなく、webサイトの企画から、デザイン、HTMLコーディング、CMS組み込み、CMS以外の会員管 理機能などのシステム開発など、総合的に手がけているという事情もあり、CMSとそれ以外で開発したシステム機能と連動で、苦労するといったこともよくあ りました。

Eclipseのプラグイン機構

そこで、注目したのが、Eclipseという、ソフトウェアの統合開発環境(IDE)アプリケーションのプラグイン機構でした。Eclipseは、開発者の方は、よくご存知の方もおられるかと思いますが、もともとIBMによって開発され、高機能ながらオープンソースであり、Javaをはじめとする多くのプロ グラム言語に対応しています。

非常に拡張性が高く、もともとの主要機能である、Java開発環境をはじめ、コア以外のほとんどの機能が、プラグインとして実装されています。また、追加のプラグインをインストールすることで、C/C++, Perl, PHP, Rubyなどといった、さまざまな言語の開発を行ったり、設計ツール、Subversion, CVSなどのバージョン管理クライアントなど、さまざまな機能を利用することが可能です。そのため、よく「Eclipseは、プラグインのかたまり」などといわれています。

このEclipseのプラグイン機構では、拡張ポイントという、機能拡張が行えるように定義された場所が、あらかじめ定義されていて、その拡張ポイントを指定して、プラグインで拡張する機能を実装します。

わかりやすくいうと、プラグインは、文字通り、プラグで、拡張ポイントは、プラグを差し込む差込口のようなものをイメージしていただければいいかと思います。そして、Eclipseのプラグイン機構の特に優れているところは、その拡張ポイント(差込口)自体を、プラグイン側で新たに作成可能なことです。

このような、プラグイン機構を、なんとかwebツールに組み込めないか!これができれば、CMSとしても拡張性が高く、お客様の用途に合わせた追加開発システムも、スムーズに開発できるのではないかと考えたわけです。

実装、そして、完成

さて、実際の実装です。先のEclipseほど、完全にプラグインのかたまりにするのは、なかなか難しいので、メインの機能である、CMS機能を、プラグイ ンとして実装することにしました。CMS機能がプラグインとして実装できれば、ほぼ、どんな機能でも、プラグインとして実装できそうだったからです。

この方法で、

  • 拡張できる部分が限られてしまう
  • プラグイン機構の仕様を変えないまま、拡張できる部分を増やすことが難しい

という問題は、解決することが出来そうです。また、

  • プラグインの作成方法が一般的なプログラムと異なって開発効率を下げてしまう。

という問題も、開発する機会が多い管理画面での画面を制御するプログラムロジックは、通常のWEBアプリケーションと、ほぼ同じ作り方が出来るようにしました。

 

そこで、実際のプラグインは、どのようになっているかというと、わかりやすいところでは、たとえば、こんな感じです。

上のように、XMLの設定ファイルで記述することで、管理画面上で、下のようにメニューとして表示されたりします。また、メニューの項目ごとに、必要な権限を設定し、表示・非表示を切り換えたりしています。


最後に残った問題、

  • パフォーマンス(管理画面の表示速度など)を低下させてしまう。

ですが、実装の際、それが一番気がかりでした。WEBのツールでは、あまりに複雑な仕組みだと、管理画面の表示速度に、もろに影響が出てしまいます。

完成してみると、、決して速いとは、いえませんが、、まあ、実用範囲内には収まっているのではないでしょうか。。。

 

次回は、CMSの機能について、紹介させていただく予定です。


相談・お問い合わせ


PAGE TOP
  • プライバシーポリシー
  • サイトマップ
Copyright © 2008 OAK Co., Ltd. All Rights reserved.