10年後のSIを占うヒント - NTTデータの取り組みから見えてくること

株式会社エヌ・ティ・ティ・データ(以下、NTTデータと記述します)は国内トップのSIerであり、国家プロジェクト級の受託開発を行うことで知られています。そのトップ企業の向かう方向性を知れば、10年後のSIの姿が見えるだろうという発想で、この本を読みました。

革新を続けるソフトウェア生産技術
NTTデータ 技術開発本部 著

http://itpro.nikkeibp.co.jp/article/COLUMN/20131204/522545/

ここに紹介する内容は、一部の特殊な事例だろうと思われるかも知れません。しかし私は、この取り組みは全社的なものであり、国内のSIの未来像を現していると考えています。

トップの方針

本書の冒頭、まず岩本社長の言葉を抜粋します。

製造業における生産技術は、自動車を代表例として次々と自動化が進み、生産性が上がっていった。一方、ソフトウェア開発でもコンピュータを使った生産技術は改良を重ね進歩してきたが、今もなお手作業が主流となっており、膨大な労働力に依存した産業から脱却できていない。(中略)この豊富なコンピュータパワーを利用し、システム開発の分野で生産革命を起こすことが、私たちに与えられている使命のひとつであると私は考えている。

もともとNTTデータという会社は以前からメディアのインタビューに対して "自動化を推進している" と公言していました。本書における岩本社長のメッセージも、その方針を踏襲しています。

続いて、木谷執行役員(技術開発本部長)の言葉を抜粋します。

(中略)短期開発かつ高品質の要求が強い。この相反する要求を実現するためにはソフトウェア生産技術の革新が必須である。その革新のコンセプトは、「豊富になった計算機パワーを最大限に活用し、機械化できる部分はコンピュータに実行させ、人間は要件定義などの考える部分に注力する」というものである。
(中略)例えば、製造(コーディング)の自動化技術は、設計からソースコードの自動生成を可能にしている。さらに、テストの自動化や過去の資産を活用・再利用する技術、クラウド開発環境など、開発を "IT化する" 様々な技術を組み合わせることで、短期かつ高品質な開発が実現できる。

お二人のメッセージからわかることは、労働力を投入することで開発を乗り切る形では顧客ニーズに対応できないという強い危機感であり、そのような現状は決して容認していないということです。そして開発の "IT化" とはすなわち自動化のことであり、これは不可避であるがゆえに、業界トップ企業として率先していく使命感です。

それでは具体的な自動化対象領域とはどういうものか。本書で明らかにしています。

8つの自動化領域

No 対象領域 内容
1 現行解析の自動化 レガシーコードからの正確な仕様解析
2 設計の自動化 設計段階での自動検証による整合性確保
3 コーディングの自動化 複雑・多様なロジックの完全自動生成
4 テストの自動化 試験項目の自動生成と自動実行
5 プロジェクト管理の自動化 プロジェクト管理情報の集計・可視化
6 構成管理の自動化 ビルドやテスト環境へのリリースの自動化
7 運用の自動化 システム運用作業の自動化
8 システム基盤構築の自動化 システム基盤の自動インストール・設定

最近は多くの技術系コミュニティで、自動化を意識しようというメッセージが打ち出されていますが、それは主に4から6に相当するテーマに集中しているようです。また、ハードウェアベンダーやクラウドベンダーがアピールする自動化は7と8にあたります。

しかし、もっともインパクトがあるのは3のコーディング自動化です。これを避けて通ることはできません。

コーディング自動化

本書ではコーディング自動化は新しいテーマではなく、これまでもCASEツールや4GL、MDAで脚光を浴びた時期があったにもかかわらず、普及していないと論じています。では、これまでの問題点は何だったのか。一部を抜粋してみます。

しかし残念ながら、これらの技術は必ずしも、理想とされる高い生産性を実現できているわけではありません。その原因の1つとして、過度な"汎用化の模索"が挙げられます。
(中略)
前述の状況を受け、コーディング技術の発展は抽象性と汎用性を両立するアプローチから脱却する方向にあります。つまり、最近のコーディングの自動化の傾向として、プログラム言語技術のように完全な言語体系を整備して、抽象度の高いプログラムから抽象度の低いプログラムを自動的に生成するのではなく、特定の目的に役立つように役割を特化し、少ない情報で多くのプログラムを生成可能とすることを目指しているのです。

同書ではさらに、自動化ツールは「(コードの)自動生成型」「(コードを生成しない)EUC型」「(ビジネスロジックに特化した)BRエンジン型」の3種類に区分し、SIのニーズを満たすのはコード自動生成型であるとしています。そして自動生成型ではDSLの位置づけが重要になるが、DSLの開発にはある程度の初期投資が必要であると解説しています。

NTTデータのコーディング自動化はどこまで進んでいるのか

残念ながら本書ではコーディング自動化における同社の具体的な成果までは書かれていません。それでも注意深く読むことで、いくつかのヒントに気付きます。私が注目したのは次の一行です。

一方で(同社の自動生成ツールである)TERASOLUNA ViSCでは、開発対象のソフトウェアに合わせてカスタマイズすることを前提としています。

つまりNTTデータとしては、自動生成ツールそのものを販売するビジネスではなく、あくまでもプロジェクトの生産性を上げるために、プロジェクト毎に、カスタマイズされた自動生成ツールを抱えるということです。

これはジェネレーティブ・プログラミングの思想そのものです。プロジェクト固有のDSLを設計・維持し、自動生成されるコードと個別開発コードを分離するとともに自動化対象を拡げることで開発工数を減らす。労働集約的な開発を自動化によって削減しつつ、人間が書くべきコード開発は少数精鋭で臨むという方針です。

同書には8つの自動化領域それぞれにおける同社の取り組みが紹介されています。さらりと書いてあるので一読すると一般論のように見えるのですが、よく読むといろいろなヒントが見えてきます。長くなるので他の部分は割愛します。

エンタープライズアプリケーション開発分野は自動化技術の採用が広がる

私は「超高速開発コミュニティ」の幹事も勤めているため、自動化に関する各社の取り組みを良く伺います。NTTデータだけではなく、大手SIerはいずれも自社の自動化ツールを持っており、実践されているようです。ただしお客様に言わずに内部で使っている例もあるでしょうから、自動化率は明らかになっていません。それでもこの取り組みが持続され、経験の積み重ねで自動化率が高まることは自明です。このようにして、これまでの労働集約を前提とした下請けピラミッドはトップから、つまり大規模プロジェクトから崩れていくと感じています。

大手SIerの自動化ツールは当面、販売されることはなく、自社SIの武器として使われることになるようです。一方で、このような自動化ツールを自社で抱えていないSIerは、市販の自動化ツールを使いこなすことを検討するでしょう。自動化ツールの使い勝手の向上に比例して、ユーザー企業自身による内製比率もますます高まると考えられます。

横並びの SI の終焉

以上は、あくまでも実装技術という視点からの変化です。SI を取り巻く状況は大きく変わろうとしていますが、IT Pro 連載中の木村 岳史氏の記事もまた、SI の変革を迫るものです。

最近の記事「ITベンダーの憂愁、料金アップは絶望」
http://itpro.nikkeibp.co.jp/article/COLUMN/20140310/542467/

における、記事中の次の文章:

ユーザー企業は最近“何でも作るIT”から作らないITに急速にシフトし始めている。クラウドやパッケージソフトなどを組み合わせて利用することが普通になりつつあり、スクラッチ開発へのこだわりは過去のものになりつつある。


「高いSI料金を払って作ってもらうぐらいなら、ありものを利用しよう」とユーザー企業は考えるだろうし、ライバル企業がそんな提案をするかもしれないのだ。

は、自動化ツールの普及を後押しすることにつながるだろうと感じています。そういう視点でみれば、やはりNTTデータの取り組みは決して一部の特殊例などと扱って無視できるものではありません。大手ベンダーのこのような動向は、業界全体へ波及していくでしょう。それは10年かからないかも知れません。