2008年6月9日(月曜日)

スタッフBLOG変更しました。

カテゴリー: - Ryuji @ 12時54分28秒

スタッフBLOGをWordpressからd3blogへ変更しました。

新スタッフBLOG

RSSリーダなどでご覧になっている方は、購読URLの変更をお願いいたします。


2008年6月2日(月曜日)

第2回CubeNightまであと2日

カテゴリー: - Ryuji @ 10時57分24秒

直前の告知になってしまってすみませんが、カジュアルなXOOPS Cube勉強会「第2回CubeNight」が6月4日19時より西新橋の長尾ビル8Fにて開催されます。

・Cube Night 6/4 (水)のお知らせ

主催は、XOOPSの初期から普及活動に力を入れられてきたtadashiさんです。

CubeNightは、カスタマイズ事例などを紹介する「技術編」と、カジュアルにXOOPS Cubeについての意見交換をする「懇親会」にわかれています。

「技術編」ですが、第1回のときは、事前にちゃんと準備しなかったせいで、私の発表はボロボロだったんですが、今度は5月29日にLinuxWorldのミニセッションでお話させてもらった内容をもとに、さらに踏み込んで話をしようと思ってますので、前回よりちゃんとしたお話ができると思います(^^;

今回の私の発表テーマは「社内で使うXOOPS Cube」です。

WebサイトにXOOPS2やXOOPS Cubeを使った事例というのは、簡単に見つかると思いますが、社内やイントラで使われているケースだと、どのように使ってるか見えないですよね。

でもけっこう社内やイントラでもXOOPSは使われてますので、そのあたりのお話をしたいと思ってます。

「技術編」の参加は無料!ただし会場の広さの関係で限定12名までとなってます。

20時からの「懇親会」は飲食費として2000円かかります。こちらは立食式で20名まで。

直前の告知になってしまったので、スケジュール調整が大変かもしれませんが、XOOPS Cubeにご興味のあるかたは是非ご参加ください。


2008年5月28日(水曜日)

XOOPS Cubeの公式サイトと、日本ユーザ向けの情報

カテゴリー: - gusagi @ 10時30分54秒

gusagiです。
今日は、XOOPS Cubeの公式サイトと、日本ユーザ向けの情報サイトについて書きます。

日本では、「公式サイト」と言うと、xoopscube.jpを想像する人が多いと思います。
実際は、xoopscube.jpは「公式サイト」ではなく、「日本コミュニティサイトの一つ」なのですが、
これは以外と知られていないようです。
また、本当の「公式サイト」は、xoopscube.sourceforge.netなのですが、これも殆ど知られていません。

この原因は、幾つかあると思うのですが、一つには、xoopscube.jpが昔は
「XOOPSの日本公式サイト」だったことにあります。
昔、xoopscube.jpは閉鎖予定になったこともあるのですが、現在は
数あるコミュニティサイトの一つという位置づけで存在しています。
また、Googleで「xoops」を検索した場合、2008/05/28時点で一番上に表示される日本語サイトが
xoopscube.jpであることも大きな要因です。

この誤解自体は、直接的にはそれほど大きな問題を起こさないように見えます。
しかし、XOOPSについて詳しくない人にとっては、これは大きな問題を引き起こしているのが現状です。
というのも、前述のように、「xoops」で検索をした場合、xoopscube.jpが一番上に表示されるため、
大抵の人はここを訪れます。
しかし、現在のxoopscube.jpは、XOOPS初心者にとって必要な情報が殆どありません。
日本のXOOPS初心者にとっては、XUGJひよこむ文系のためのXOOPS入門の方が
必要な情報を探しやすいはずです。

今の、XOOPS日本コミュニティにとっては、必要な情報サイトを結びつける導線が不足しています。
そこで、XOOPS Cubeのメイン開発者であるminahito氏は、公式サイトのリニューアルに着手を決めたようです。
公式サイトをリニューアルし、公式サイトで必要な情報を入手したり、各国のコミュニティへ導線を張り直すことで、
状況を改善しようと考えています。
他にも、一部の開発者を中心にして、http://xoopscube.sourceforge.net/ へのリンクを貼る動きが出てきています。
これは、のバナーとリンクを自分のサイトに貼るだけですので、
モジュールやテーマを開発出来なくても、協力可能です。
これらの動きは、すぐに効果が出るものではないかも知れません。
しかし、決して無駄にはならないでしょう。
もし、このリンク貼りに興味の有る方がいましたら、上のバナーをダウンロードの上で、自分のサイトでも貼ってみてください。
そして、XOOPS Cubeを盛り上げて行きましょう :mrgreen:


2008年5月20日(火曜日)

日本以外からのPOSTを弾くフィルタpreload

カテゴリー: - gusagi @ 23時52分51秒

gusagiです。
今日は、日本以外からのPOSTを弾くフィルタpreloadを書いてみようと思います。

トラックバックスパムやコメントスパムなどで困っている方は結構いると思います。
簡単な対応方法は、protectorモジュールを入れて対応することなのですが、
日本以外からPOSTされた場合は全て弾きたい、などという場合もあります。
その場合、PEARのNET_GeoIPを利用することで実現が可能になります。

Net_GeoIPでは、MaxMind社が配布しているGeoLite Countryのデータを利用します。
利用するデータは、こちらのファイルで、無料で利用可能です。
このファイルと、前述のPEARパッケージを、サーバの適当なディレクトリにアップロードして下さい。
 ※下記のコードでは、PEARパッケージを{XOOPS_TRUST_PATH}/PEAR、GeoLite Countryのデータを
 {XOOPS_TRUST_PATH}//PEAR/GeoIP/GeoIP.datとしています。
(続き…)


2008年5月12日(月曜日)

piCal用Googleカレンダープラグインの実験(3)

カテゴリー: - gusagi @ 10時10分40秒

大型連休の休みボケがようやく抜けてきたgusagiです。
かなり間が空いてしまいましたが、前回の記事の続きです。

前回のコードで、"example@example.com"というアカウントに共有されているカレンダーのリストを取得しましたので、リストの分だけ処理を繰り返して、カレンダーごとのイベントを取得します。
(続き…)


2008年4月22日(火曜日)

piCal用Googleカレンダープラグインの実験(2)

カテゴリー: - gusagi @ 23時52分08秒

大型連休を目の前に、何をしようか悩み中のgusagiです :-D
今日は、前回の記事の続きです。

前回は、piCalのカレンダー形式に合わせて、何日から何日までのイベントを取得するか、というところまでのサンプルコードを書かせて頂きました。
次にやることは、どのカレンダーのイベントを取得するか、です。
これは、Zend_Gdata_CalendarクラスのgetCalendarListFeedメソッドを利用するのが簡単です。

前回も書いたように、あるアカウントに共有されているカレンダーのイベントを取得したいので、まずはそのアカウントで認証を行うことが必要です。
(続き…)


2008年4月18日(金曜日)

ゲストをuser.phpにリダイレクトさせるpreload “ryusGuestRedirect”

カテゴリー: - Ryuji @ 15時20分35秒

以前、ログインが成功したら特定のページにリダイレクトするpreloadを公開しましたが、今度はゲストのときに必ずuser.phpにリダイレクトするpreloadをつくってみました。

イントラサイトでは最初にかならずログインをすることになってるケースがよくあります。

これをXOOPSで実現するために、サイト閉鎖機能を利用して対応することが結構あるのですが、これはメンテのための機能のため
・パスワード再発行もできない
・新規登録もできない
・見せたいページがあっても見せられない
と何かと不便です。

というわけで、ゲストだったらとりあえず user.php へリダイレクトするという preload を開発してみました。

ryusGuestRedirect.class.php

解凍したら、preload ディレクトリに放り込んでください。
user.php, lostpass.php, register.php だけはリダイレクトしないようにしてあります。
リダイレクトしないページの指定は


if(preg_match('/(user|lostpass|register).php$/', $_SERVER['SCRIPT_NAME'])){
  return ;
}

こんな感じで正規表現でやってますので、他にも見せたいページがあればここを調整してください。

管理画面をつけてモジュールにするともっと使い勝手が増すかもしれませんね。


2008年4月17日(木曜日)

Cube Night に参加しました

カテゴリー: - mik @ 23時04分45秒

昨日開かれた Cube Night に参加してきました。

磯谷商店tadashiさんによるXOOPSの歩みと今の状況、これからのXOOPSについての展望のお話

弊社天野のプリロードを中心とした簡単なカスタマイズ方法について

有名モジュール作者さんによる、モジュール紹介

など。お話の部分は1時間半ほどでしたがその後の懇親会が盛り上がり、結局11時まで会場で多くの人が色々な話題に盛り上がりました。

XOOPSのイベントは久しぶりでしたが、20人程度と少人数ながら熱気あふれる会場でこれからのXOOPSへの期待を感じました。

また意外なことに「うさぎにもできるXOOPS Cube入門♪」を知っている方が多くいらっしゃって、うれしいやら(あまり更新してなくて)面はゆいやらという気持ちになりました。もっとこちらもがんばりたいです。長い目で応援下さい。


2008年4月7日(月曜日)

Smartyのテンプレートの文字列内変数を拡張する

カテゴリー: - sato @ 17時20分49秒

satoです。
XOOPSでは、テンプレートエンジンにSmartyを使うことになります。
このSmartyは便利なのですが、若干使いづらい部分もあったりまします。

まず前提として、Smartyの文字列定数中に変数を混ぜたい場合、バッククォート(`)で囲むとそれが変数として解釈されるようになっています。
例えば、

{"私は`$name`です。"}

として、$nameに"sato"という文字列がassignされていると、

私はsatoです。

と表示されます。

しかし、このバッククォート内にメンバ関数を指定すると、解釈がうまくいかないようです。

例えば、

私は{$my->show('name')}です。

みたいなものは可能なのですが、

{"私は`$my->show('name')`です"}

とすると、

私は`Object id #2->show('name')`です。

のように、$myの部分だけ変数として解釈され、それ以外は普通の文字列として出力されてしまいます。
通常、こういう場合は、

{assign var=name value=$my->show('name')}
{"私は`$name`です"}

のように1段階assignを追加することになり、若干手間がかかります。
今回はこれの簡易的な対応方法を試してみました。

Smartyのassignされた変数というのは、実際にそのスコープに存在するものではなく、Smartyクラスの_tpl_varsメンバ変数に格納されています。このため、テンプレート側で記述した変数は、Smartyの構文解析を通してSmartyクラスのメンバ変数になるように置換処理が入ります。具体的には生成されたテンプレートキャッシュを見ればわかると思います。
そのため、Smartyでは正規表現を利用して構文解析を行っているのですが、この正規表現に手を入れることで、上記の対応が可能になります。

バッククォート内を解釈しているのは、Smarty_Compiler#_expand_quoted_textで、変数の解析をしている正規表現は_obj_ext_regexpに格納されています。
このため、Smarty_Compilerに手を入れればいいのですが、Smarty_CompilerはSmarty#_compile_sourceで生成され、すぐ破棄されるので、途中からアクセスすることはできません。Smarty_Compiler.class.phpを直接書き換えればいいという話もありますが、それでは汚くなってしまいます。
幸い、Smartyクラスが生成するSmarty_Compilerクラスは別のものに変更ができるようになっています。Smartyクラスのcompiler_fileとcompiler_classにそれぞれ読み込むファイルとクラス名が格納されているので、それを自前のものに変更します。

具体的にやってみます。
以下のファイルを作成します。パス等は適宜変更してください。
MySmartyCompiler.class.php


	

require 'Smarty-2.6.19/libs/Smarty_Compiler.class.php';

class MySmartyCompiler extends Smarty_Compiler { function MySmartyCompiler() { parent::Smarty_Compiler();

$this->_obj_ext_regexp = str_replace(’(?:[$?[w.]+])*’, ‘(?:[($?[w.]+)])*(?:(($?[w"’.]+)))*’, $this->_obj_ext_regexp); } }

呼び出し側を作成します。
index.php


	

require 'Smarty-2.6.19/libs/Smarty.class.php';

class myClass {

function show($var) { return 'sato'; }

}

$smarty = new Smarty(); $smarty->compiler_file = ‘MySmartyCompiler.class.php’; $smarty->compiler_class = ‘MySmartyCompiler’;

$smarty->template_dir = ‘templates’; $smarty->compile_dir = ‘templates_c’; $smarty->config_dir = ‘config’; $smarty->cache_dir = ‘cache’; $smarty->plugins_dir = ‘plugins’;

$smarty->assign(’my’, new myClass()); $smarty->display(’index.tpl’);

テンプレートを作成します。
templates/index.tpl

<html>
<body>

{"私は`$my->show('name')`です。"}

</body> </html>

実行すると、

私はsatoです。

のように正常に表示されているのが確認できると思います。
全てのパターンでテストを行っているわけではないので、不具合があったらコメント欄等でよろしくお願いします。

XOOPSからこれを利用する場合は、各RenderSystem内に存在するSmartyオブジェクトを取得して書き換える必要があります。
モジュールの場合は通常はLegacy_RenderSystemなので、

    $root =& XCube_Root::getSingleton();
    $renderSystem = $root->mContext->mModule->getRenderSystem();
    $renderSystem->mXoopsTpl->compiler_file = 'MySmartyCompiler.class.php';
    $renderSystem->mXoopsTpl->compiler_class = 'MySmartyCompiler';

のような感じで対応が可能です。(表示処理の実行前に記述してください)
管理画面はLegacy_AdminRenderSystemなので、mXoopsTplではなくmSmartyを参照することになります。

しかしこの方法でも、

{"私は`$pattern[$foo->bar()]`です"}

のようなパターンには対応できません。このパターンに対応するには_expand_quoted_text自体を大幅に改変する必要がありそうです。興味のある方は挑戦してみてください。


2008年3月25日(火曜日)

XCL2.1.4がリリースされました

カテゴリー: - gusagi @ 18時18分18秒

今週末はプライベートで色々と忙しく、XOOPS関連の情報を追いきれなかったgusagiです。
ということで(?)、今更ながらXCL2.1.4リリースについて書かせて頂きます。

2.1.4の正式版では、2.1.4RCに取り込まれたパッチの一つが未取り込みの状態に戻っています。
このパッチは、存在しなくても動作に支障がないものだったため、RCのリリース後に元に戻すこととなりました。
なお、RCから正式版へのアップデートの際に、該当のファイルが存在しても問題にはなりません。

詳細は、XUGJのニュースをご参照下さい。

なお、この2.1.4で私が開発したWizMobileも単独リリースが可能となりました。
細かい部分の調整を行った上で、リリースするつもりです :-D


2008年3月20日(木曜日)

XOOPS Cube Legacy2.1.4RCにUPしてみました。

カテゴリー: - Ryuji @ 16時37分43秒

minahitoさんが、Let’s test 2.1.4 RCと書かれてたので、このサイトと、以前更新していた http://ryuslabo.jp/ をXOOPS Cube Legacy2.1.4RCにバージョンアップしてみました。

サーバ環境はどちらも
Fedora5
Apache 2.2.2
PHPは5.(えーっといくつだったかな)
MySQL5.(同上)

アップ作業中に気がついたのですが、Ryuslaboは 2.1RC3あたりからのアップでしたが、問題なく動作しています(^^;

RyusLaboには、emailログイン用のpreloadも入ってるんですが、これも問題なし。
使ってるモジュールはweblogとxhldぐらいですが、問題なさそうです。

このサイトでは、
・cubsonで作成したモジュール数点
・pico
・bulletin
・protector
・altsys
・wordpress
・xhld
・myalbum-p
が入ってますが、とりあえず問題ないようです。

このサイトの問い合わせフォームはXoopsMailer使ってますが、これも問題なくメール送信できることを確認しました。(NOTICEの件は、未確認です)

と、いうわけで、バージョンアップしても問題ありませんでしたという報告でした。


“unsigned” にハマりました・・・

カテゴリー: - gusagi @ 09時32分11秒

最近、花粉症でティッシュが手放せないgusagiです。
今日は、つい先日にモジュールを作成している際にハマったことについて書きます。

XOOPSモジューでは、ユーザのIDをDBに保存するケースが結構あります。
フォーラムの書き込みだったら、誰が書き込んだか判るように保存する、という具合にです。
今回、{prefix}_usersテーブルの定義に合わせて、mediumint型で作成で作成したんですが、
発行しているSQLと別の値がDBに保存されていました。
デバッグ用にログを吐かせてみましたが、SQLでは確かにIDとして"10000001″という値を
セットしています。
ところが、DBに保存されている値は"8388607″。
あれこれプログラムを弄ってみたんですが、状況は変わらず。。。
「こりゃ、DB定義を変えてテストしてみるしかないか」なんて思いながら、テーブル作成用のSQLを
見たところ、対象のカラムの定義に"unsigned"が含まれていないことに気づきました・・・。
念のため、{prefix}_usersテーブルを確認してみると、そちらには"unsigned"と書かれています。
もしやと思いながら、テーブル定義を変更してみたところ、不具合は無事に解消されました。
今まで、カラムの最大値を超えた値をセットしたSQLはエラーとなると思いこんでいたため、
エラーではなく、定義の最大値がDB保存されるという動作は想定外でした。

通常のXOOPSの運用の場合、1からauto_incrementで値がセットされていくので、IDが"8388607″を
超えることは無いと思いますが、ちょっとしたハマりどころになりそうなところです。
今後モジュールを作る際には、"unsigned"も忘れないようにしようと思います :razz:


2008年3月17日(月曜日)

MAMP にXOOPS Cube Legacy 2.1.4 RCを入れてみました。

カテゴリー: - Ryuji @ 21時30分26秒

Mac Book Airを購入したので、OS Xにも開発環境を入れてみようと思い、MAMP入れてみました。

MAMP

XAMPP同様にサクッとApache、PHP、MySQLの環境を整えることができます。

MAMPをインストールしただけで、Webアプリの動作テストは何も行っていなかったので、試しにリリースされたばかりの、XOOPS Cube Legacy 2.1.4RCを入れて試してみたんですが、何の文字化けもなく拍子抜けするほどあっさりと動作しちゃいました。

というわけで、ちょくちょく自宅でも趣味でXOOPSいじりを再開してみようかなぁと思ってます。

あ、ちなみにXOOPS Cube Legcy 2.1.4 RC has been released!に書かれていたcreatedatabase_mysql.phpでDB作成時の文字コード指定もちゃんと動作しましたよ。


2008年3月13日(木曜日)

HD同梱の携帯対応(その2)

カテゴリー: - gusagi @ 13時14分45秒

gusagiです。
先週に引き続き、HD同梱の携帯対応モジュールについて書かせて頂きます。

(4) テーマ下テンプレートによる最適化が可能
携帯対応モジュールでは、出力の最適化処理は殆ど実装していません。
将来的にも、テーブル部分の表示組み替えなどは、未実装のつもりです。
では、携帯用に出力を最適化するにはどうすればよいか。
その答えが、テーマ下テンプレートの活用です。
これは、携帯対応モジュールではなく、HD側の機能ですが、テーマ毎のディレクトリの
中に、templatesディレクトリを作り、最適化したいテンプレートを配置します。
例えば、user_block_login.htmlを最適化したい場合は、
自分で最適化したテンプレートを

{XOOPS_ROOT_PATH}/themes/mobile/templates/user_block_login.html
として配置することで、最適化したテンプレートが出力されるようになります。
※パスから「templates/」が抜けていたので、修正しました(2008.03.14 09:45)

(5) お手軽高速化
XOOPSでは、「○○を更新しました」などのメッセージ表示 -> リダイレクトという処理が
一般的です。
この処理は、PCの場合はそれほど大きな問題ではありませんが、携帯の場合
 ・metaタグのrefreshが動作しない端末がある
 ・リダイレクト画面の表示分、パケット代金が掛かる
などの問題が発生します。
そこで、携帯対応モジュールでは、お手軽高速化を標準で装備しています。
これは、XCL本体のコードには手を付けずに実装していますので、XCL本体の
アップデートにより処理が変わるという心配もありません。

以上、先週と今週で携帯対応モジュールの大まかな特徴を書かせて頂きました。
XCL本体も、2.1.4RCのリリース告知が出ましたし、モジュール単体での配布は
それほど遠くないと思います。
HDをお使いでない方も、興味がありましたらご利用下さい :-D


2008年3月5日(水曜日)

HD同梱の携帯対応(その1)

カテゴリー: - gusagi @ 17時19分49秒

gusagiです。
先週の段階では、HD(ホダ塾ディストリビューション)のリリースについて書こうと思っていたんですが、
二日連続で先に書かれてしまったので(笑)、HD同梱の携帯対応モジュールについて書かせて頂きます。
(続き…)


2008年3月4日(火曜日)

ホダ塾新ディストリビューション!

カテゴリー: - mik @ 21時39分49秒

うさぎにもできるXOOPS Cube入門♪ではホダ塾ディストリビューションでXOOPS Cubeをインストールしてすぐに使えるように、とご紹介してきました。

そのホダ塾ディストリビューションが3月3日新バージョンをリリースしました!

http://www.hodajuku.org/modules/bulletin/article.php?storyid=27

うさぎにもできるXOOPS Cube入門♪では、インストールに関する詳しいコンテンツが大変好評で、それが売りでもあるのですが、新バージョンは画面からして全然違ってるようです!

しかし、その分パッケージングされたモジュールもたくさんあって、以前のXOOPSのようにインストールすればすぐに使える、ということになりそうです。

うさぎにもできるXOOPS Cube入門♪ではこれからASAPでインストールの説明ページを作り直すつもりです、と宣言して自分を追い込んでみます。

みなさんも新しいホダ塾ディストリビューションを是非おためし下さい。


2008年3月3日(月曜日)

ホダ塾によるXOOPS Cube ディストリビューション「HD1.0 for XCL2.1」がリリースされました。

カテゴリー: - Ryuji @ 20時51分26秒

ホダ塾によるXOOPS Cubeディストビューション「HD1.0 for XCL2.1」 が本日リリースされました。

ホダ塾ディストリビューション"HD1.0 for XCL2.1"リリース

ホダ塾ディストリビューションは、XOOPS Cube Legacy2.1にモジュールやテーマをあわせただけのパッケージではありません。

インストールウィザードにも手が入っており、XOOPS_TRUST_PATHの指定や、COOKIEパスの指定までインストール中に設定ができるように工夫されています。

さきほど試してみたところ、日本語の文字コードもEUCでなく、UTF-8がデフォルトで選択されるようです。
サクッとUTF-8でXOOPSを使いたかった方は、これで楽になるんじゃないでしょうか。

imageインストーラのデザインや、モジュールアイコンのデザインまでしっかり手を入れられてます。このあたりは、プログラマだけが集まって活動しているわけではないホダ塾ならではという感じでしょうか。

また、同梱されているモジュールもフォーラムにはd3forum、ブログにd3blog、ニュースにBulletinHD、コンテンツ用にpicoなどXOOPSでサイト構築されている方にとっては定番と呼べるモジュールがそろっています。

更に、携帯対応モジュールまで入ってます。開発途中のものを見させてもらいましたが、良くできてますよーこれ。

というわけで、XOOPS Cube Legacy 2.1+定番モジュール+携帯対応 という非常に魅力的なXOOPS Cubeディストリビューション「HD1.0 for XCL2.1」是非試してみてください!!


2008年3月1日(土曜日)

3月1日にXOOPS Cubeホダ塾ディストリビューションのセッション

カテゴリー: - Ryuji @ 00時18分00秒

うさぎにもできるXOOPS Cube入門♪」でも解説しているXOOPS Cubeホダ塾ディストリビューションについてのセッションが3月1日のオープンソースカンファレンス(以下OSC)で行われます!

http://www.xugj.org/modules/d3forum/index.php?post_id=3834

講師は数々の定番モジュールをリリースされている、あのGIJOEさん!

なんとまだ空席がわずかですがあるようです!

「XOOPS2と違って、XOOPS Cubeはモジュールがついてないのが不便でさー」

と思っている方は、是非このセッションに参加しましょう!


2008年2月20日(水曜日)

OSC2008 Tokyo/Springのご案内

カテゴリー: - gusagi @ 17時50分56秒

今月末に行われるオープンソースカンファレンス(以下OSC)の準備に追われているgusagiです。
今日は、このOSCのホダ塾出展に関するご案内をさせて頂きます。

私も所属するホダ塾では、金・土曜日のブース出展と、土曜午前中のセミナーを行います。
内容は、ホダ塾ディストリビューションの紹介などで、セミナーではGIJOEさんによる利用メリットや活用法の紹介を予定しています。
このディストリビューションでは、XCL2.1では行われなくなった複数のモジュールパッケージングや、XOOPS_TRUSTPATH導入の簡易化など、複数のメリットが存在しています。
詳細は、OSCのブースやセッションでご紹介させて頂きますので、もし興味のある方は、一度いらしてみて下さい。
なお、OSCのセミナーに参加される場合は、事前登録が必要になります。
現時点では空きがあるようですが、ギリギリの場合満席となっているかも知れません。ご注意下さい。

OSCはディストリビューション正式リリースの直前に開催されるので、デバッグ真っ最中のホダ塾メンバーを見ることが出来るかも知れません 8)


2008年2月18日(月曜日)

カスタマイズするより新規開発の方が低コストなこともある

カテゴリー: - Ryuji @ 20時22分35秒

お客さんと打ち合わせしているときによく「○○モジュールをちょっとカスタマイズして、こんな感じにできませんかねぇ」と言われることもあるのですが、多機能なモジュールをベースにする場合、「ちょっと」では済まないケースが多々あります。

というのも、仕様を一カ所変えることにより、連鎖的に別の箇所もその仕様にあわせて変更する必要が発生することがあるからです。

そして仕様変更のつじつまをあわせるために、工数が余計にかかってしまうのです。

そのため、多機能モジュールをベースに改造したいというお話をいただいたときは、ほんとうはどんなことを実現したいと思っているのかをお聞ききし、カスタマイズするかわりに、低機能で汎用性はないけどそのニーズにあったモジュールを開発することがあります。

初期の開発コストは、多機能モジュールベースにカスタマイズする場合も、低機能な専用モジュールを開発する場合もそれほど差はないとは思います。

しかし、運用後に差がでてくることになります。

既存モジュールをカスタマイズした場合は、運用開始後に既存モジュールのバージョンアップに追随する作業が発生します。機能追加や機能改善であれば、バージョンアップ見送りという選択もありますが、セキュリティフィックスの場合、放置するのは危険です。そのときに、カスタマイズした部分を新しいバージョンに組み込みなおすという作業が必要になります。過去に何回かやりましたが、これ結構手間かかる作業です。(特に元となったモジュールのコードが大幅に書き換わってる場合、最初のカスタマイズ並みに工数かかることがあります)

新規開発したモジュールの場合、このバージョンアップの問題から離れられるので、後々コスト面で効いてきます。また、元モジュールが存在しないので、元モジュールとの差が大きくなりすぎてしまわないかを気にかける必要もありません。この点も新規開発したほうが楽な点です。

そんなわけで、XOOPSには既存モジュールが多数存在しますが、場合によっては既存モジュールをカスタマイズするより、新規開発した方がトータルで見たときに低コストになることもあるということを覚えておいていただけると良いかなぁと思います。


14 queries. 0.056 sec.
Powered by WordPress Module based on WordPress ME & WordPress

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.