2009年6月30日火曜日

独自開発

当方は、XoopsCubeというCMSをベースにした
WEBシステム開発を行っています。

このXoopsCubeは、ブログ・掲示板などの各機能を
「モジュール」という形でプラグインできる仕組みに
なっています。
※いわゆる昔ながらの「モジュール」という意味ではなく、
 ひとつの機能単位、という程度の意味です。

そのため、当方は、ご要望いただいた機能を
このXoopsCubeの「モジュール」という形で
ご提供しています。

実際に開発を行う場合、XoopsCubeに関連した
別のプロジェクトで開発されているコードジェネレータを
使用して、まず雛形を作ってから、そこに手を入れていく
スタイルで開発を行っています。

このとき、コードジェネレータが吐き出すコードに
私は大いに不満を持っています。
このコードジェネレータの機能を大幅に改良していくことで、
実際の開発にかかる時間をもっともっともっともっと短縮
できます。

およそ全ての事業に言えることだと思いますが、
定型業務を極限まで効率化することは、
必須命題だと私は考えています。

WEBシステムで言えば、「WEBシステムというもの」を
俯瞰的に、かつ抽象的に、その根源を辿るなら、
『ある決まった形』というものがありまして、
その最もプリミティブな形を現在のコードジェネレータは
自動的に吐き出してくれる、と。
それはそれでありがたいのですが、これはまだまだ
極限までには至っていない、と私は考えているワケです。
※上記の『ある決まった形』というものは、
 人によって、その技量や価値観などによって
 見え方が違うものなので、その捉え方自体が
 各個人の才覚だとも思っていますが、
 それはまた別の話。


・・・ということで、現在、当方では、
XoopsCube向けのコードジェネレータを
独自に開発を始めています。

開発作業の中で、定型的な部分を極限まで効率化することで
開発期間を短縮し、開発費用を抑える努力を続けていると
いうわけです。

実際の案件に時間を取られて、中々独自開発の方には
時間を割けられないわけですが、毎日少しずつ
開発を進めています。

目標としては、XoopsCubeだけでなく、
・MovableTypeプラグイン
・WordPressプラグイン
・Joomla!モジュール
・Drupalモジュール
など、様々なCMSやブログにも対応する予定です。

かつ、これを一般公開すると共に、
誰でも簡単にサイトを作れる仕組み(*1)すら
構築しようと考えています。
(*1)それ自体はいますぐにでも作れるのですが、
  それよりももっと人が聞いて驚くような
  「目玉」が欲しくなり、それを開発している
  といった側面もあります。

これを、当方では、「サイトを作るサイト」と
呼んでいます。

「サイトを作るサイト」自体は、既存のCMSではなく、
これも独自開発したCMSに載せる予定です。



・・・と、夢は広がるばかりです。(笑

ただ、夢を形にする過程は、苦しいですが、楽しいです。

頑張りますので、遠巻きにでも眺めて応援してくださったら
これに優る幸せはありません。

徐々に、多忙

ありがたいことですが、少しずつ、お見積依頼をいただく機会が増えてきました。ただ、忙しく開発してる時に限ってお見積依頼が立て込んでくるのが、少し気掛かりです。。。


◆時間がある時だったら即やれるのに
仕掛中のものがあると、どうしても、
新しい案件に取り掛かる開始時期を
その分だけ遅く設定しなくてはいけません。

折角お見積依頼をいただいたのに、
「すぐやりますっ!全力でやりますっ!」
という熱意を見せれないのが、
本当に申し訳なく感じてしまいます。。。

かといって、現在やっていることを中途半端にしたまま
次のものに手を出すなんて、
私には到底出来ないのであります。

solutionとしては、「開発人員を雇う」という程の
売上に達していないので「外注に出す」ということに
なるのですが、中々「これはっ!」と思う外注さんに
出会えないものですね。。。


◆将来設計(?)
事業とは、目先のお金を追い掛けることばかりだと
行き詰ってしまうと、私は考えています。

そのため、5年後・10年後に向けた活動というものも必要で、
しかも日々そういった活動を積み上げておかないと、
いざという時に対応できないとすら考えています。

が、立て続けに開発依頼をいただいて開発に入っていると、
朝8時9時から夜中12時とか1時とかまで作業することが多くなり、
どうしてもこの「将来に向けての活動」というものが
疎かになってしまいがちなのです。

現在、XoopsCube向けのコードジェネレータを独自に開発中
なのですが、これは世間一般的な言い方で言うならば
自社業務の範囲内での作業となるワケでして、
該当作業はその日その日の作業をガッツリ完了し切った後に
行うことになります。

が、夜中まで実際の案件での開発に没頭していると、
その日その日の作業をガッツリ完了させた頃には
もう夜中0時を回っていることも珍しくなく、
そうするとそこから自社開発といっても、
やってることはやってるんですが、
思うような進捗が得られるハズもなく。。。


【まとめ】
まだまだ精進が必要のようです。。。
頑張ります。

2009年6月16日火曜日

[PHP]SQL文からテーブル名を取得する

言語は、PHPです。

元ネタは、コチラ


$tables = array();
if (preg_match_all("/(.*\s+from\s+(\w+(\.\w+)?).*)|(.*\s+join\s+(\w+(\.\w+)?).*)/i", $sqlstr, $matches)) {
  foreach($matches as $varry) {
    if (is_array($varry)) {
      foreach($varry as $v) {
        if (!empty($v)
          && !preg_match("/^(\.)|(\s*)(SELECT|JOIN|FROM).*/i", $v)) {
          $tables[] = $v;
        }
      }
    } else {
      if (!empty($varry)
        && !preg_match("/^(\.)|(\s*)(SELECT|JOIN|FROM).*/i", $varry)) {
        $tables[] = $varry;
      }
    }
  }
}


正規表現一発でテーブル名を取得しようと思っても、
サブクエリ使ってたりJOIN使ってたりしたら、
なかなか上手くいかないですよね。。。

正規表現一発ではうまくいかなくても
何とか取って来れないかと試行錯誤しました。

なんとか取得できてるっぽいです。
↓こんなSQLでもちゃんとテーブル名だけを返してくれます。

SELECT
a.usage_amount -- test1
,b.charge #test2
,c.* /*
test3
*/
from (
SELECT shop_id, sum(usage_amount) as usage_amount
FROM v0.usagex
GROUP BY (shop_id)
) a
LEFT OUTER JOIN (
SELECT shop_id, sum(charge) as charge
FROM v0.history
GROUP BY (shop_id)
)b on a.shop_id = b.shop_id
INNER JOIN v0.contract c on c.shop_id = a.shop_id


※↑この例の場合、先のコーディングで、$tablesには
  ・v0.usagex
  ・v0.history
  ・v0.contract
 が返されます。

2009年6月15日月曜日

ふと・・・

キスにも似た握手を交わし、

寂しいから付き合い始め、

寂しいから別れる、

悲しい生き物。。。

いま、映画を観ていて、

ふと、寂しくなってしまいました。。。

2009年6月7日日曜日

Framework願望

複数テーブルからJOINしてデータ取得して画面表示するような、
画面データを更新かけるときに複数テーブルにかけるような、
Transactionを使うべくして使うような、
そんな、ある程度以上の規模の開発で必ず必要になるようなFrameworkを、
M-V-Cに渡ってTotalに考え尽くしたい衝動に駆られている。

しかも、該当M-V-C部分すらも「snipet」扱いし、
複数の「snipet」を自在に組み合わせられるような
そんなFrameworkを考案したい。

そして、そんなFrameworkを軸としたCMSを構築したい。

かつ、そんなFrameworkに向けたCodeGeneratorをも併せて開発したい。



要するに、開発に割く時間を最小化してしまい、
余った時間を他の事に使いたいのだ。

自社サービスの考案とか、構築とか。
営業とか、気になる人に会いに行ったりだとか。

今年の残りの時間では、これを弊社課題として、全力で取り組みます。

『水曜日には空を見よう、土曜日に笑うために。』

2009年6月2日火曜日

道を聞かれる

昨日、韓国人の方に道を聞かれました。日本語はほとんど知らなそうでしたが、英語はペラペラで、実に流暢で聞き取りやすい発音の英語でしたが、私には早過ぎて、何言ってるかキャッチするのが大変でした。。。

いま休暇中なので月曜と火曜は日本にきて水曜にはオーストラリアに行くんだそうです。34歳っておっしゃってました。何ていうか・・パワーを感じました。日本人でも、しょっちゅう海外に行ったり、いっそ海外に住んだり、そういった方々はとてもパワーがあるように感じます。

やはり、どんなことでも、「垣根」を超える時にはパワーが必要だと思います。海外に行ってそこに住む現地の人達とコミュニケーションする、とか。今まで技術者を標榜していたけど思い切って独立するとか会社起こしちゃうとか。今まで事業を続けていたけど新規事業に乗り出すとか。

私には、私が勝手に「師匠」と思ってる人達が何人か居ます。その人達の中の一人が使うキーワードの中に、「トンガってる人」というのがあります。その人はどうやら「トンガってる人」との付き合いを好むらしく、私にもそういうことを期待しますし、本人もそうあろうとしているように見えます。が、要するに、「トンガってる人」というのは「パワーのある人」とか「自力で自分の垣根をサクサクと越えていく人」とかそういうことを意味するのだろうと思います。

確かに、私もそういうパワーを持った人が好きです。そして、そういう人達と付き合うには、自分自身がそうあらねばならないので、大変ですが、面白いです。

目先の事で精一杯な状態になることもあります。納期や開発規模によっては、一時期、目先のことで精一杯にならざるを得ない状態に自分で自分を叩き落す必要が出てくる場面があるのです。そんな時は、「垣根を越えるパワー」も何もあったもんじゃなく、日がな目先のことに集中してやっつけることに終始して日々を送ることになります。

でも、「トンガってる人」というのは、そういう状態にはやがて終わりが訪れることを知っていますし、終わりが来れば次の現実がやって来ることも知っていますので、終わりが近づく頃には次の現実に向けての準備を始めているものです。しかも、次の現実って言ったって、大抵はそれが何なのかは見えてない(見えてる場合には大抵それは大したことないものだし)ので、情報収集は常にやってるものです。

こんな風に、自分をトンガってる状態にしておくためには、やらなくちゃいけないことも多かったりするので大変ですが、「トンガってる人」と出会った時に交わす会話が半端じゃなく面白いので、ついついそういう方向を目指してしまうのです。

・・・結局、大変だけど、面白いから、やってる。そういうことだと思います。