AIをどう活用すればよいか教えてくれるAI
別にAIを否定しているわけではないのだが、仕事にどう活用してよいかわかっていない。でも、上司がいろいろなAIをもってきて、使えそうか?と迫られる状況。
業務内容は、パッケージシステムを開発して、売って、カスタマイズして、導入して、保守して、問合せ対応する、という恐らく普通な仕事。
すこし特殊かもしれないことは、商品がERPなのでシステムのキャバレッジが広い事。パッケージをベースに顧客毎にカスタマイズして業務にあわせる事。開発はアジャイルで行う事。
課題と認識していることは、人手不足。協力会社を含めプロジェクトに参画する技術者がキャッチアップに時間がかかる。顧客毎にカスタマイズするため技術、知識の属人化。設計や品質の個人差。開発から保守、サポートへの引継時に際に発生する継承知識の歩留まり。ERPのため多くの機能が関係していることによる品質確保の難しさ。ユーザーサポートの顧客満足度。等々。深刻度の大小はあれ、どのベンダーも抱える課題ではないだろうか。
実際のAIの活用状況では、開発者がアルゴリズムを考える際にAIと壁打ちするくらい。
では、AI活用のアイディアはどういう物があるか考えてみると大きく二つの領域があり、一つはシステムに組込んで商品の付加価値をあげる使い方。例えばシステム入力の自動化や入力内容のチェック、操作支援など。ユーザ要件で作った集計表だが、ユーザも人が代わりこの数字はどうやって算出しているのか、などと聞かれることもある。ロジックをAIが回答したりと、AIでサポートレベルを充実させることも考えられる
もう一つは、我々サービスを提供する側の課題解決。属人化を排するために、ナレッジの共有や、品質向上のためのテスト仕様書の作成や自動テスト。納品物(客先から求めらるものは変わるが、設計書や試験報告書、操作マニュアル)の自動作成。問合せ管理システムに組込むことも考えられる。電話対応した際の文字おこしや、回答事例の共有化など。
問題は、これらアイディアをどうやって実現するか、どの品質で実現できるか。
いろいろAIソリューションを調べて(押し付けられて)、話を聞いてみると、いわゆるピュアな生成AIサービスとは別に、システム開発に特化したソリューションとして三つほどのパターンがあるようだ。一つはリバースエンジニアリング型。ソースコードを学習させ、AIが設計書等を作成するソリューション。もう一つは要件定義ソリューション。客先との打合せ議事録から、現状業務フローなどを自動作成してくれる、というもの。
リバースエンジニアリング型は納品物作成の効率化には使えそうであるが、ソースを学習させて設計書を作成するのでプログラム設計や詳細設計レベルでは精度が高いが、上流の設計書になればなるほど推論が多くなる。おそらく納品物としてユーザの役に立つドキュメントは詳細ではなく上流のドキュメントであることを考えると、恐らく効率化にはつながらない。では要件定義ソリューションはどうかというと、スクラッチ開発のみ対応とのこと。商品であるERPは基本的な業務処理はパッケージとして提供し、基本処理は業務をシステムにあわせてもらう。基本処理の上に個社固有の業務をカスタマイズするわけだから、その要件定義をAIにさせようとするとパッケージとしての基本処理から学習してもらう必要があるとおもわれるが、このソリューションではそれはできないらしい。
最後の一つが、某メジャー外資企業が提供する、AI駆動開発ソリューション。その企業が持っていたW/F開発手法をAIに学習させ、会話をしながら設計書やドキュメントを作成(ソースを学習させるのではない)。そのドキュメントからソースの生成。それら開発から、RAG、AIによるアプリケーション操作。リバースエンジニアリングも、システムに関わる開発から、操作までをAIで行うアーキテクチャ群。その企業では自社パッケージシステム開発の半分ほどを、このAI駆動開発で実現しているらしい。営業トークだけだが、さすがに迫力がある。
恐らく高額過ぎてソリューションを導入することは難しいだろうが、でもAIで実現したいこと、という意味ではこれが一番近いと思う。例えば、納品物作成の効率化という観点では、ドキュメントがユーザにとって価値あるかどうかはおいといて納品物として揃えばよいのであれば、リバースエンジニアリング導入で効率化が実現できるかもしれない。ただ個人的にはユーザや自分達にとって価値の無いものを労力をかけて作っている、ことが無駄なのであって、価値あるものであるならば無駄にはならない、という考える。別の課題である、ナレッジの共有や品質の向上なども踏まえると、設計段階でドキュメントを作成(ドキュメントでなくてもナレッジとして表出化)し、それが試験仕様やマニュアルにつながり、そしてそれらが必要に応じて納品物になれば、そちらの方がユーザと自分達、双方にとって充分有益なるはずだ。まさにAI駆動開発。
恐らくこれを実現させるためには、この企業がもともとW/Fでの開発方法を学習させた、というように、我々もシステムの開発手法(工法)を確立しないといけない。また、システムのアーキテクチャもその工法を前提としたアーキテクチャに見直さないといけない。そして、それらの基礎ができたうえでAIが強力なツールとなるのだと思う。
AIの真の活用とはこのようなイメージになるのだが、実際に実現するとなると結構な時間と金がかかることは、想像に難しくない。
どうすればよいのか。この問に答えてくれるAIはないものだろうか。