SugarCRM

第3回 ソースコードを読む前に知っておきたい基本動作


河村 嘉之
オープンソースCRM株式会社
2008/11/7


SugarCRMのディレクトリ構成

 次に、ソースコードを読む前に、全体のディレクトリおよびファイル構成を俯瞰(ふかん)してみましょう。

 まず、先ほど説明したSugarCRMのメインのエンドポイントとなるindex.phpは、SugarCRMを展開したディレクトリ(トップディレクトリ)にあります。また、SugarCRMのサイトごとの設定を記載するconfig.phpもトップディレクトリにあり、このファイルはインストーラによって自動生成されます。インストーラを起動するinstall.phpも、同じくトップディレクトリにあります。トップディレクトリ直下にはこれ以外に、index.php以外のルートで呼び出される処理を行うためのエンドポイントなどが置かれています。

 次に、トップディレクトリ以下のディレクトリを見ていきましょう。主なディレクトリの役割は以下のようになります。

ディレクトリ 説明
cache
データベースアクセスを減らすためにシステムによって生成されるファイルや、生成されたユーザーインターフェイスのテンプレートが置かれるディレクトリ。また、SugarCRM上にアップロードしたファイルもここに置かれるため、このディレクトリ以下のファイルはすべて消していいものとは限らない。
custom
カスタマイズした際のインターフェイスの定義やロジックなどを置くディレクトリ。このディレクトリに関しては、この連載の後ほどの記事にて説明する。
data
SugarBean(SugarCRMのすべてのビジネスオブジェクトの大本となるクラスの実装)など、SugarCRMのシステムの中心となるファイルが置かれるディレクトリ。
include
SugarCRMのユーティリティや外部のライブラリなどSugarCRM全体から利用される機能の実装が置かれるディレクトリ。
metadata
ビジネスオブジェクト間の多対多の関連に関するメタデータが置かれるディレクトリ。
modules
システムで利用されるすべてのモジュールが置かれるディレクトリ。各モジュールの実装は、モジュールの名前と同じ名前で作成されたこのディレクトリのサブディレクトリに置かれる。
表2 SugarCRMのディレクトリ

 以上が、SugarCRMのフレームワークを理解するうえで知っておいた方がいいファイルおよびディレクトリです。

SugarCRMの基本動作

 ユーザーへ何らかのインターフェイスを提供するようなアプリケーションでは、アプリケーションの構成要素を「モデル(M)」「ビュー(V)」「コントローラ(C)」という3つの要素に分類する、「MVCパターン」といわれる設計モデルを用いることがよくあります。モデルはアプリケーションのデータとロジックの部分を担当し、ビューは表示、コントローラはモデルとビューを結び付ける役割を担当します。

 SugarCRMでもバージョン5.0から、このMVCパターンに従ってアプリケーションが設計されるようになりました。以下、SugarCRMにおけるMVCの構成について説明します。

■モデル:SugarBean

 データベースへのアクセスおよびそれに関連する処理を担当します。モデルの基盤となるクラスはSugarBeanで、この実装のソースコードはdata/SugarBean.phpにあります。

 モジュールごとにSugarBeanを継承したクラスを作成し、そのモジュールに対応するプロパティやメソッドを実装します。実装ファイルは通常、単数形にしたモジュール名.phpというファイル名でそのモジュールのディレクトリに置かれています。例えば、取引先(Accounts)モジュールであれば、module/Accounts/Account.phpがそのファイルになります。

■ビュー:SugarView

 モデルから取得したデータを表示する処理を担当します。SugarCRMではテンプレートエンジン(Smarty)を利用してページを作成します。

 ビューの基盤となるクラスはSugarViewクラスで、この実装のソースコードはinclude/MVC/View/SugarView.phpにあります。そして、一覧(list)、詳細(detail)、編集(edit)などページのタイプによってこのクラスを継承したサブクラスが用意されていて、その実装のソースコードはinclude/MVC/View/viewsディレクトリの中にview.<ビューのタイプ>.phpという名前で置かれています。

 特定のモジュールでデフォルトの実装とは異なる処理を行いたい場合は、モジュールのディレクトリ以下のviewsディレクトリに、「view.<ビューのタイプ>.php」という名前のファイルを作成すると、このファイルが読み込まれます。例えば、Accountsモジュールに特化した詳細ビューは、modules/Accounts/views/view.detail.phpになります。

■コントローラ:SugarController

 リクエストとして送られたパラメータを基に、モデルとビューを制御します。

 デフォルトのコントローラは、include/MVC/Controller/SugarController.phpですが、特定のモジュールでデフォルトとは異なる処理を行いたい場合は、モジュールのディレクトリの直下にcontoller.phpというファイルを置いておくと、そのファイルが読み込まれます。例えばNotesモジュールは、そのモジュール用のコントローラを持っていますので、modules/Notes/controller.phpがこのモジュールのコントローラになります。ここで定義されるコントローラは、SugarContollerクラスを継承したクラスになります。

2/3

Index
徹底解剖、SugarCRM(3)
 ソースコードを読む前に知っておきたい基本動作
  Page 1
 SugarCRMの「エンドポイント」
  Page 2
 SugarCRMのディレクトリ構成
 SugarCRMの基本動作
  Page 3
 ソースコードに見るSugarCRMの動作
 応用の前に動作の骨子を把握しよう
 コラム Sugar 5.0.0h日本語版リリース

Linux Square全記事インデックス


 Linux Squareフォーラム 仮想化技術関連記事
連載:実践! Xenで実現するサーバ統合
有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します
特集:サーバの仮想化技術とビジネス展開の可能性
jailからUML/VMwareまで
1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった
特集:仮想化技術のアプローチと実装
VMwareから要注目技術Xenまで

1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう
特集:仮想OS「User Mode Linux」活用法
技術解説からカーネルカスタマイズまで
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
特集:仮想化技術の大本命「Xen」を使ってみよう
インストール & Debian環境構築編

高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう
特集:仮想化技術の大本命「Xen」を使ってみよう
Xen対応カスタムカーネル構築編

Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる
特集:IPv6、UML、セキュリティ機能の統合
全貌を現したLinuxカーネル2.6[第4章]

今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう
Linux Squareプロダクトレビュー VMware Workstation 4
PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう
古くて新しい「サーバ仮想化技術」の行方
サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する
Linux Squareフォーラム全記事インデックス


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間