オープンソースと業務アプリ

仕事では業務アプリを作ってるんだけど,顧客ごとにどうしてもカスタマイズが発生してしまって,ソースツリーが枝分かれだらけになったり,パラメタが増えまくったりしてしまうんで困ってる。

他の人たちはどうしてるんかなぁと思って,「オープンソース 業務アプリ」とかで検索すると,「そろそろ普及か?」みたいな記事ばっかりで,なんつーか「普及しまくってます」というのが意外と少ない。
普及しつつある分野はCRMとSFAらしいんだけど(これも良くは分からんのだけど),その辺りの分野と,例えば受発注や在庫管理,生産管理なんかはやはりというか普及度が異なる。

受発注とか在庫管理とかっていうのは,ほんとに会社ごとに(というのは大げさか。業種ごとに,というほうが正しいかも)やり方やモデルが異なるので,例えばあるERPパッケージを導入する,といってもどの業種にも同じパッケージで済む,という可能性は低いのね。

もっとも有名な商用ERPパッケージ(と思われる)SAP社のR/3なんかは,パラメータが死ぬほど存在し,特定業種向けのパラメータセットを「テンプレート」として販売しているベンダもあるぐらいだし,それでなお,ほとんどの顧客企業はなにがしか手を加えて使っているのではないかと思われる。
つまり業務アプリにパッケージを使うというのはそんだけ難しいってことだと思うのね。

つーことは,例えば,あるオープンソースのERPパッケージがあったとしても,ほとんどの場合は,なにがしか手を入れないと自社のモデルに合わない,という可能性が高い。

そのうえで,何とか(手を入れてでも)使いたいという場合,どういう方法が採れるかというと

  • 自社で手を入れて,今後の改善はすべて自社で行なう(外注先に頼む場合も含む)
  • 自社で手を入れたものを,本家の方に(パラメータか何かで切り分ける形で)取り込んでもらう
  • 自社で手を入れて,本家からフォークしたプロジェクトを始める

などが考えられる。

まず,すべて自社でメンテしていく(つまりはほとんど自社開発と同じ)場合は,よほど自社の開発能力が低いのでない限り,自社で最初から開発した方が自社によりマッチする可能性が高いんじゃなかろうか。開発能力が低いのであれば,自社でメンテしていくという選択肢はないような気がする。いずれにしても自社だけでメンテするとなれば,コストは相当にかかりそう。

つぎに,本家が取り込む案だけど,この辺の業務アプリでは,データの主キー自体が企業や業種によって違うことが多いので,なかなか汎用的なデータモデルを作ることが難しい。キーをパラメータで切り替えるというのも,ソフトウェアの構造上はあまりいい感じにはならんと思う。ワタシが本家のメンテナだったら,そういう得体の知れない拡張は取り込みたくない。
ただ,もし本家の作りが,プラグイン多用型になっている場合は,もしかしたらcontribみたいな感じで,本体とは別に,検証対象外だけど使いたい人が使う,みたいな寄せ集め方ができるかも知れない。
そうなると,どっちかというと本家はフレームワークで,contribが業種別サンプルアプリのようなイメージに近くなる。

最後の,フォークしたプロジェクトを始める,っつーのは,なかなか大変。なので,おそらくは,そういうフォークしたプロジェクトをやっている(やってくれる)会社にお願いするしかないのではないかと思うのね。
複数社でメンテコストが分担できれば,メリットも出やすいし。
ただ,こういうふうにフォークしてしまう場合は,どうしても「由来が一緒なだけの別プロジェクト」となってしまうのは仕方がないんだろね。


で,ここまではどっちかというと,既存の業務アプリパッケージのイメージに基づいた想定。

だけど実際には,どんなにデータモデルが異なったり,手順が異なったりしても,例えば「在庫管理」の本質が変わったりはしないし,おそらくは「在庫管理」の機能も大きく異なることはないはず。

ということは,何がキーで,どの順で何をするかさえはっきりすれば,おそらくは在庫管理システムは自動生成できるんじゃないかという気もするわけなのね。ソフトウェアファクトリじゃないけど。
すでに自動生成ツールっていうのは数多く存在するし,珍しい話ではないんだけど,オープンソースで特定業務向けシステムを自動生成するツールっていうのはあまり見たことがないので,もしかするとそういうのが今後増えてくるという可能性はある。もしそんなのが増えたら,ワタシは何をしてメシを食っていこうかね。

そんな感じで色々考えたことを改めてまとめると,業務アプリのパッケージというのは,

  • 特定の業種に特化し,他の業種のことは考えない。別の業種向けにフォークしたら別プロジェクトとして進化する
  • 業務アプリ開発フレームワーク/プラットフォームとして進化する
  • 在庫管理システム生成ウィザードパッケージみたいなウィザードソフトウェアとして進化する

というあたりで落ち着くんだろう,と思う。

フォークは,ある程度ユーザ数がいないと維持できないと思われるので,業種ごとの差が少なかったり,あるいは逆に特定業種へのヒット率がやたら高かったりしたらそれで落ち着きそう。
フレームワークとかプラットフォームとかっていうと,最終的にはR/3のようになってしまう気もするんで,その形態にとどまるのは難しくて,いずれはフォークしていくんじゃないかと想定。
本命は「ウィザード」だとにらんでるんだけど。

まあいずれにしてもオープンソース業務アプリの広範な普及にはまだ少しかかりそうな気がするのね。