開発技術
業務アプリケーションの調達には、作る・買う・借りるという選択肢があると言ったが、そのうちの作るという場合はその形態にバリエーションがある。すなわち、純粋に自社要員(情報子会社も含めて)と自社技術で開発する場合とSIerに作らせる場合がある。またその中間のような常駐外注に委託するようなものもある。
やはり、情報システムの重要性を感じているのなら、自社で開発できる技術とリソースを確保すべきであろう。なかには、持たざる経営とか言ってアウトソーシングに走る会社もあるが、経営とITの狭間がますます拡がるように思える。
しかしながら、IS部門や外販を志向しない情報子会社(こうした子会社の問題はあとで議論する)が、IT専門会社のように開発技術を深く突っ込む必要はない。基本的には、プログラムレスで開発する技術を追求すべきであるから、設計寄りのスキルを保有し、プログラミングは外部へというのがめざす方向性となる。ここは多少気になるところで、プログラミングができないで設計ができるのかという声が聞こえてくる。理想的には、ほんの少数の優秀なプログラマーを抱えておければいいのだが。
プログラムレスの開発ということになると、フレームワーク、コンポーネント、テンプレートを使った開発ということになる。すなわち、これらフレームワークなどはスーパークリエーターにプログラミングしてもらい、それを道具としてプログラムをあまり書かないで済む開発方法である。
「ビジネスコンポーネント指向開発」とはまさにこの開発方法論である。詳しくは、既に書いてあるが、簡単に言うと、ビジネスコンポーネントを書類のライフと見立て、その機能をオープンCMSで実現し、そのコンポーネントをBPMで組み合わせて業務プロセスを作り上げることにある。
従来の開発方法と違ういくつかのポイントがあるが、それも「ビジネスコンポーネント指向開発」に詳述しているが、書き忘れたことがあるので補足的に述べる。CMSを使ってあるタスク(書類の作成-承認)を遂行するというのが大きな特徴なのだが、それは昔のある経験から思いついた。
もうかれこれ10年くらい前になるが、工場の生産管理システムを開発したときのことである。当時筆者は情報システム部門に来たばかりであったが、立場上プロジェクトマネジャのような役割であった。システムは、営業・製造・品質保証・物流が関係するけっこう大きなものであったが、初めてということもあって、この開発プロジェクトではさまざまな貴重な経験をした。
開発対象となったなかである重要な業務プロセスに、製造部門がバッチで生産された製品を入庫し、品質保証部門が引き当てて、物流部門がローリーで出荷するというのがあった。これをシステム化するのだが、多くの例外処理や戻り処理が発生し大変なことになる。
例えば、出荷規格あるいはユーザ規格から先入れ先出しで自動で引当するなんてロジックを組むのだが、いざ運用すると、規格内に収まっていてもあるユーザにはもっといい品質でないとだめだとか、つぎの出荷に大事なユーザが控えているので引当てたものはとっておくといったふうになり自動で運用できないとか、最低在庫を割ってしまうからそのサイロから出庫できないはずが、いやその程度なら経験的に量は確保できるからだいじょうぶだとかになる。
要するに担当者の頭の中で決められてしまうことがけっこうあり、しかも製造、品質保証、物流の三者が別々の場所にいて、主に電話でやりとりするわけで、このコミュニケーションがうまくいかないと手違いが起きたり、戻って処理するようなことが起きる。
そのとき、プロジェクトのメンバーに言ったことをいまだによく覚えている。「この問題のもっとも効果的な解決策は何かわかるか? それは、3つの部門の担当者を一つの建屋に集め机を並べて仕事をさせることだ」。
で、もちろんそれはできなかったのだが、業務を安定化させるあるいはデータを確定させる作業は非常に不安定なふるまいだから、不定形な会話を繰り返しながら徐々に確かなものにするのがいちばん早いように思えたのだ。ですからここをシステムに乗せるというかプログラムで書くことはしょせん無理なのではないかとずっと思っていた。
しかし、いまや机を並べて会話しながら仕事を進めることと同じように双方向コミュニケーションがシステム的に可能となったのだ。すなわち、CMSを使った情報共有的作業である。ここに「ビジネスコンポーネント指向開発」のヒントがあったのだ。
また、開発技術というと言語レベルのような実装ITを考えがちだが、企業のIS部門にとっては、業務プロセスをデザインするスキルこそ最も重要かつ必須なものである。何回も繰り返すが、事業に役立つ業務プロセスがデザインできてこそ、ITが使えるわけで、先にITありきではないというのが基本です。
ただ、全くそうかというと逆のアプローチも必要なことももちろんある。Web技術のCMSから情報共有プロセスを考えつくなんてはこうしたアプローチに近い。今後は、RESTとかRSS、Wikiとかいった技術から新しい知的生産作業プロセスが生まれてくるだろう。
企業のなかには、業務プロセスのデザインを外部のベンダーやSIerにまかせているところもあるが、それは間違っています。そこのスキルは死守しなければなりません。それがここでいう開発技術ということになります。