NTTデータ、現行ITシステムの設計図を自動復元する技術開発へ:日刊工業新聞これができたらすごい。設計、アーキテクチャ、何より意図を可視化しようとしてる。ほとんど夢物語だけど、だからこそやる価値はあると思います。現時点では属人性を排除しようとする方向性には疑問があります。それは今までずっと成功してないし、今までと同じようにソフトウェア開発を無理矢理誰でもできる仕事にして品質を下げる結果になるんじゃないかなと思います。現在の一般的なソフトウェア開発技術で、最も抽象度が高くてもJava、C#、Ruby等の高級言語と各種フレームワークやライブラリの組み合わせまでです。ビジネス要求まではまだまだギャップが大きくて、その間には膨大な人間の判断や選択、非論理的な都合が入り込みます。記述できる何らかの言語やBRMS(ビジネスルール管理システム)の発達で開発側の抽象度が上がる方が早い気がします。開発技術が高度化するということは、今より更に選択肢が増え、人の手による、判断、選択が必要となるということだと思っています。開発技術が高度化し抽象度が上がれば、COBOLやC言語等を用いた構造化手法からオブジェクト指向言語・フレームワークでの開発へと変化した時のように開発時の選択の幅が爆発的に増え、判断が難しくなります。オブジェクト指向言語とフレームワークが登場した時に、人の手による判断と選択が必要という点を無視して、属人性を排除し、誰でもできる仕事という建前を崩さなかった結果が現在のSIが抱える問題と大量の変更できないソフトウェア資産に繋がってる気がします。ソフトウェア開発を抽象化したり自動化するということは、それらの技術が何らかのルールやアルゴリズムを内包するということであり、そのルールや特性により必ず用途や適用範囲は狭くなります。ソフトウェアの価値は様々な人達の様々で細かい要求に応えることができ後から変更できる点にあってなおかつ技術が高度化に伴って狭い範囲をカバーする技術が多数発生するのならば、今後も知識を持った人による判断、選択の場面は必要になってくると思います。ソフトウェアは用途が限定されていて考慮すべき範囲や部品、オプションが決まっているテレビや自動車とは違うのですから。自動化できる可能性があるとすればAIによる判断、選択ですが、AIが一体どこまでできるかというのは興味があります。AIは近い将来ソフトウェア開発に限らず、あらゆる職種の人達の強力なライバルになると思いますので。可視化はどうやれるかということには興味があります。高めるのか、経営者や発注者等の技術に詳しくない人が直観的に判断することも彼らにアピールすることもとても難しいんだと思います。経営者や発注者が直感的にソフトウェアの内部構造とその品質、効果が分かるようになれば、そこから組織としての品質や良い設計に対するモチベーションが生まれるんじゃないかなと思っています。良いクルマは直感的に理解できても、良いソフトウェアは直感的に理解できないところに今の問題の根っこがある気がします。技術屋さんなのに、目の前のコストと納期と分かり易い機能以外は直感的にしか理解しようとしない人達もいるのでそこは問題だとは思うんですけど、そうも言ってられないので有効な説明の方法を考えないといけないんだと思います。経営者や発注者がソフトウェアの価値を直接判断できない状況が続くと、エンジニアの価格が下げどまって、保守コストと変更コスト、変更のスピードがビジネス追いつかなくなった時に、初めてさぁどーするとなってしまいます。現行システムの保守・変更コスト、スピードがシステム刷新のコストを上回るのは割と近い気がするのでその時にどれだけ最適なソリューションを提示できるかが勝負なのかなとも思います。みにマッチする形で新しく整理していくか。なんとなく候補はあるので腰を据えて勉強してみようかなーと思っています。