Index: /branches/comu-ver2/data/class/db/SC_DB_MasterData.php
===================================================================
--- /branches/comu-ver2/data/class/db/SC_DB_MasterData.php	(revision 18507)
+++ /branches/comu-ver2/data/class/db/SC_DB_MasterData.php	(revision 18571)
@@ -59,9 +59,7 @@
      *
      * 以下の順序でマスタデータを取得する.
-     * 1. MASTER_DATA_DIR のマスタデータキャッシュを include() で読み込む
-     * 2. 1 で読み込んだ値をチェックし, 値が変数定義されていれば値を返す.
-     *    されていなければ, 次の処理を行う.
-     * 3. 値が未定義の場合は, DBからマスタデータを取得する.
-     * 4. 取得した後, マスタデータのキャッシュを生成し, 値を返す.
+     * 1. MASTER_DATA_DIR にマスタデータキャッシュが存在しない場合、
+     *    DBからマスタデータを取得して、マスタデータキャッシュを生成する。
+     * 2. マスタデータキャッシュを読み込み、変数に格納し返す。
      *
      * 返り値は, key => value 形式の配列である.
@@ -76,17 +74,14 @@
         $columns = $this->getDefaultColumnName($columns);
 
-        // 可変変数を定義
-        $valiable = "_" . $name . "_master";
+        $filepath = MASTER_DATA_DIR . $name . '.serial';
+
+        if (!file_exists($filepath)) {
+            // キャッシュ生成
+            $this->createCache($name, $columns);
+        }
+
         // キャッシュを読み込み
-        @include(MASTER_DATA_DIR . $name . ".php");
-
-        // キャッシュがあれば, キャッシュの値を返す.
-        if (!empty($$valiable)) {
-            return $$valiable;
-        }
-        // マスタデータを取得
-        $masterData = $this->getDbMasterData($name, $columns);
-        // キャッシュ生成
-        $this->createCache($name, $masterData);
+        $masterData = unserialize(file_get_contents($filepath));
+
         return $masterData;
     }
@@ -253,12 +248,16 @@
      * @return bool キャッシュの生成に成功した場合 true
      */
-    function createCache($name, $masterData, $isDefine = false,
+    function createCache($name, $columns = array(), $isDefine = false,
                          $commentColumn = array()) {
 
+        // マスタデータを取得
+        $masterData = $this->getDbMasterData($name, $columns);
+
         // マスタデータを文字列にする
-        $data = "<?php\n";
         // 定数を生成する場合
         if ($isDefine) {
-
+            $path = MASTER_DATA_DIR . $name . '.php';
+
+            $data = "<?php\n";
             // 定数コメントを生成する場合
             if (!empty($commentColumn)) {
@@ -268,13 +267,13 @@
                 $data .= $this->getMasterDataAsDefine($masterData);
             }
+            $data .=  "?>\n";
 
         // 配列を生成する場合
         } else {
-            $data .= $this->getMasterDataAsString($name, $masterData);
-        }
-        $data .=  "?>\n";
+            $path = MASTER_DATA_DIR . $name . '.serial';
+            $data = serialize($masterData);
+        }
 
         // ファイルを書き出しモードで開く
-        $path = MASTER_DATA_DIR . $name . ".php";
         $handle = fopen($path, "w");
         if (!$handle) {
@@ -305,5 +304,7 @@
 
         $this->objQuery = new SC_Query();
-        $this->objQuery->setorder($columns[2]);
+        if (isset($columns[2]) && strlen($columns[2]) >= 1) {
+            $this->objQuery->setorder($columns[2]);
+        }
         $results = $this->objQuery->select($columns[0] . ", " . $columns[1], $name);
 
@@ -337,26 +338,4 @@
             return $this->columns;
         }
-    }
-
-    /**
-     * マスタデータの配列を配列定義の文字列として出力する.
-     *
-     * @access private
-     * @param string $name マスタデータ名
-     * @param array $masterData マスタデータの配列
-     * @return string 配列定義の文字列
-     */
-    function getMasterDataAsString($name, $masterData) {
-        $data = "\$_" . $name . "_master = array(\n";
-        $i = count($masterData);
-        foreach ($masterData as $key => $val) {
-            $data .= "'" . $key . "' => '" . $val . "'";
-            if ($i > 1) {
-                $data .= ",\n";
-            }
-            $i--;
-        }
-        $data .= ");\n";
-        return $data;
     }
 
Index: /branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php
===================================================================
--- /branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php	(revision 18234)
+++ /branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php	(revision 18571)
@@ -228,19 +228,18 @@
 	}
 
-	/**
-	 * 使用するテンプレートをDBへ登録する
-	 */
-	function lfRegisterTemplate($template_code) {
-	    $objQuery = new SC_Query();
-	    $sqlval['name'] = "\"" . $template_code . "\"";
-		$objQuery->update("mtb_constants", $sqlval, "id = ?", array('TEMPLATE_NAME'));
-		// キャッシュを生成
-		$masterData = new SC_DB_MasterData_Ex();
-		// 更新したデータを取得
-        $mtb_constants = $masterData->getDBMasterData("mtb_constants");
-        $masterData->clearCache("mtb_constants");
-        $masterData->createCache("mtb_constants", $mtb_constants, true,
-                                 array("id", "remarks", "rank"));
-	}
+    /**
+     * 使用するテンプレートをDBへ登録する
+     */
+    function lfRegisterTemplate($template_code) {
+        $masterData = new SC_DB_MasterData_Ex();
+
+        $data = array('TEMPLATE_NAME' => var_export($template_code, TRUE));
+
+        // DBのデータを更新
+        $masterData->updateMasterData('mtb_constants', array(), $data);
+
+        // キャッシュを生成
+        $masterData->createCache('mtb_constants', array(), true, array('id', 'remarks'));
+    }
 
 	/**
Index: /branches/comu-ver2/data/class/pages/admin/system/LC_Page_Admin_System_Parameter.php
===================================================================
--- /branches/comu-ver2/data/class/pages/admin/system/LC_Page_Admin_System_Parameter.php	(revision 17571)
+++ /branches/comu-ver2/data/class/pages/admin/system/LC_Page_Admin_System_Parameter.php	(revision 18571)
@@ -135,13 +135,8 @@
 
         // DBのデータを更新
-        $masterData->updateMasterData("mtb_constants", array(), $data);
-
-        // 更新したデータを取得
-        $mtb_constants = $masterData->getDBMasterData("mtb_constants");
+        $masterData->updateMasterData('mtb_constants', array(), $data);
 
         // キャッシュを生成
-        $masterData->clearCache("mtb_constants");
-        $masterData->createCache("mtb_constants", $mtb_constants, true,
-                                 array("id", "remarks", "rank"));
+        $masterData->createCache('mtb_constants', array(), true, array('id', 'remarks'));
     }
 
