゜フトりェア開発の䞖界では、蚭蚈者やプログラマなど非垞に倚くの゚ンゞニアが関わり、非垞に倚くの時間を費やしたす。䟋えば、金融機関の基幹系システムなどは、10MStepを優に超える芏暡の゜フトりェアを生産したす。仮にこの内の半分でも゜ヌスコヌドを自動生成できれば  そう考える゚ンゞニアも倚いはずです。

ただし、実はコヌディングにかかる時間は゜フトりェア開発党䜓の1/41/5です。効率化を図るのであれば、コヌディング䜜業のみではなく、テストや基盀を含め゜フトりェア開発党䜓に枡っお探る必芁がありたす。

゜フトりェア開発自動化ずは、読んで字のごずく゜フトりェア開発に関わる䜜業を自動化し、高生産性を実珟するためのものです。蚭蚈曞を入力に゜ヌスコヌドを生成するなどは䞀䟋にすぎず、他にも自動化できるシヌンがありたす。

本連茉では゜フトりェア開発自動化に぀いお4぀の領域を䞭心に解説しおいきたす。

4぀の自動化領域

No 察象領域 内容
1 コヌディングの自動化 耇雑・倚様なロゞックの自動生成
2 テストの自動化 詊隓項目の自動生成ず自動実行
3 ビルド・リリヌスの自動化 ビルドやテスト環境ぞのリリヌスの自動化
4 システム基盀構築の自動化 システム基盀の自動むンストヌル・蚭定

デヌタから芋る生産性の重芁性

独立行政法人情報凊理掚進機構(IPA)から提䟛されおいる「゜フトりェア開発デヌタ癜曞」をみるず、囜内䌁業 31 瀟から収集した、4,067件のプロゞェクトデヌタが登録されおいたす。

基本蚭蚈からシステムテストたでの開発5工皋の生産性の䞭倮倀が、新芏開発で0.87KStep/人月 、改良開発で0.53KStep/人月ずなっおおり、10MStepの゜フトりェアを生産するのに新芏開発で11,494人月、改良開発で18,863人月かかる蚈算になりたす。芁件定矩工皋の工数も加味するずさらに倚くの工数がかかりたす。

゜フトりェア開発自動化により10%生産性を向䞊できたずすれば、倧きな䟡倀を産むこずがわかるでしょう。

゜フトりェア開発の「抜象化」ず「汎甚化」の歎史

アゞャむル、クラりド、DevOps、マむクロサヌビス、コンテナオヌケストレヌション――。

「今床こそ決定打では?」ず思われる技術が続々ず出おきおいたす。

補造業ず比范するず、゜フトりェア開発の歎史は浅く、革新的な生産性を誇る技術ずしお期埅されるものが次々ず珟れおは消え、技術の進化の速床も爆発的ずは蚀い難いものがありたす。

゜フトりェア開発自動化の歎史を振り返っおみるず、CASEツヌルでお絵描きによる開発、4GLが目指した蚀語のさらなる高玚蚀語化、UMLやMDAずいったモデル蚘述などさたざたなものが存圚したした。

いずれも゜フトりェア開発の「抜象床」を高め、特定領域の䜜業を高速化するこずを目指す、いわゆるDSL(ドメむン蚘述蚀語)ずも蚀えたす。ちなみに、DSLの䞀䟋ずしおは、RDB向けのク゚リ蚀語であるSQLや、特定業務の効率化を狙ったパッケヌゞ補品がありたす。

たた、補造業の長所を暡した、郚品の組み合わせにより開発を行う゜フトりェアファクトリに぀いおは、郚品の「汎甚性」の課題などがあり、必ずしも成功したずは蚀い切れたせん。

぀たり、過床に汎甚的な郚品も䜜っおも、倧した生産性を確保できず、特定領域に特化し抜象床を䞊げすぎおも適甚領域が極端に狭たっおしたうずいうトレヌドオフの関係にありたす。

システム開発のコヌド化の朮流

旧来、コヌディングず蚀えばアプリケヌションの゜ヌスコヌドを曞くこずを指しおいたした。システムを小さな単䜍で構築し、高頻床でシステムのリリヌスサむクルを回すマむクロサヌビス時代においお、コヌディング範囲がシステムのラむフサむクル党䜓に広がっおきおいたす。

テスト領域を芋るず、JUnitコヌドのコヌディングによる単䜓テストはもちろん、Seleniumコヌドによる機胜テストの自動化にもコヌディング領域は広がっおおり、RPAの登堎からもPC操䜜の自動化が普及しおきおいたす。

ビルド・デプロむメント領域は、これたで、ラむブラリ管理担圓者が手動で゜ヌスコヌドをビルド・デプロむしおきた領域においおも、ビルド自動化が圓たり前になっおきおおり、CI/CD(継続的むンテグレヌション/継続的デリバリ)ずしお地䜍を確立しおいたす。

基盀領域に぀いおは、これたではオンプレミスが䞭心でしたが、クラりドが圓たり前の時代ずなっおいたす。ChefやPuppetなどのサヌバ構築自動化に加えお、DockerやKubernetesずいったコンテナ技術の登堎により、基盀領域にたで自動化が広がっおきおおり、Infrastructure as Code(むンフラのコヌディング)ずしお普及しおきおいたす。

マむクロサヌビス時代のコヌディング範囲ず自動化察象

次のトレンドは?

Low Code Platform(ロヌコヌド開発、以降LCP)ずは゜フトりェア開発におけるコヌディング量を極限たで枛らし、高生産性を実珟するためのプラットホヌムです。クラりドやDevOps環境を前提ずし、開発者はアプリケヌション開発に泚力できたす。

LCPの領域におGartnerやForresterからLeaderに䜍眮付けられおいるポルトガル発祥のOutSystemsが、2018幎6月5日KKR瀟ずゎヌルドマン・サックス瀟から玄400億円の資金調達 、ナニコヌン化したした。たた、OutSystemsず䞊びLeaderに䜍眮付けられるMendixを2018幎8月6日Siemensが玄830億円にお買収 したした。巚額の資金が動いおおり、ビゞネス面からも泚目床が高いこずがわかりたす。

クラりドベンダヌの動きを芋おも、2018幎6月14日にGoogleがAppMakerの䞀般提䟛を発衚 し、Microsoft瀟もPowerAppsを提䟛しおおり、泚目床が高たっおいたす。

*  *  *

今回、歎史や皮類、䞖の䞭の生産性デヌタなど゜フトりェア開発自動化の抂芁ず党䜓像を説明したした。システム開発のコヌディング範囲の広がりに応じお、゜フトりェア開発自動化の重芁性が増しおきおいたす。

次回以降はコヌディングの自動化、テスト自動化、ビルド・リリヌス自動化、システム基盀構築自動化それぞれに぀いお説明しおいきたす。

著者玹介


正野 勇嗣 (SHONO Yuji ) - NTTデヌタ 課長

2011幎たで開発自動化技術のRDに埓事。その埌、開発プロゞェクト支揎やトラブルシュヌティング等に䞻戊堎を移す。「゜ヌスコヌド自動生成」に加えお、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、倚様化する開発自動化技術動向に興味。

最近は第四の自動化であるInfrastructure as Code等の「基盀自動化」の魅力に惹かれおいる。開発自動化技術に関する雑誌・蚘事執筆も行う。2児のパパ。