ソフトウェア開発自動化入門の第1回では「ソフトウェア開発自動化の歴史と今」について解説しました。第2回は「コーディングの自動化」について説明します。

4つの自動化領域

No 対象領域 内容
1 コーディングの自動化 複雑・多様なロジックの自動生成
2 テストの自動化 試験項目の自動生成と自動実行
3 ビルド・リリースの自動化 ビルドやテスト環境へのリリースの自動化
4 システム基盤構築の自動化 システム基盤の自動インストール・設定

「コーディングの自動化」とは?

コーディングの自動化とは、ツールを用いて設計書からソースコードを自動生成することです。

自動化ツールの多くは「テンプレートエンジン」を用いてソースコードを生成します。テンプレートエンジンとは、雛形ファイルに入力データを埋め込むことにより成果物ファイルを出力できるものです。例えば、画面や業務ロジックなどのテンプレートを組み合わせることでWebアプリケーションを生成します。

自動化ツールのイメージ

「コーディングの自動化」の重要性

プログラマーは設計書に記載されている処理をJavaなどのプログラミング言語の仕様に沿って実装します。また、例外処理など設計書に書かれていない内容を補完する場合もあるでしょう。

コーディング時の作業イメージ

コーディングは人的要素に強く依存しており、プログラマーのスキルや人間特性(うっかりミスが多いなど)によってソースコードの品質にばらつきが出ます。

例えば、次表のようなバグで苦労した人もいるのではないでしょうか?

コーディングにおけるバグの原因(人的要素)

項番
1 言語仕様の理解不足で想定外の処理結果となってしまった。
2 設計書の記述を見誤ってしまい、if文の判定条件を間違えてしまった。
3 エラー処理に関する考慮漏れで、異常終了せずに正常終了してしまった。

アメリカ合衆国第26代大統領のセオドア・ルーズベルトは「ミスをしない人間は、何もしない人間だけだ。(The only man who never makes mistakes is the man who never does anything.)」と言っています。たとえスーパープログラマーでも人間である以上何らかのミスをする可能性があり、コーディングにおける人的要素を排除する、「コーディングの自動化」が重要になります。

「コーディングの自動化」のメリット・デメリット

「コーディングの自動化」のメリットは2点あります。

[メリット1] バグ発生の抑止や工数削減

自動化ツールがソースコードを自動生成することにより人的要素が排除され、前表のようなコーディングのバグ発生を抑止できます。また、ソースコードが設計書通りに作られているかの観点に限っては、ソースコードレビューやテストを省略できます。

[メリット2] 設計書とソースコードの整合性が確保されることによる保守性の向上

システム開発・運用の中で、人の怠惰でソースコードを先に修正して設計書の修正を忘れてしまい、設計書とソースコードの情報が乖離して仕様の理解が難しくなることがあります。自動化ツールを導入すると、設計書情報からソースコードが生成されるようになり、同期がとられて情報の乖離を防ぐことができます。

設計書とソースコードの同期

「コーディングの自動化」のデメリットは3点あります。

[デメリット1] 導入コストが必要

自動化ツールが読み込こめる設計書の記述方法を学ぶなどの、自動化ツールを利用するための導入コストが必要になります。

自動化ツールに合わせて設計する必要がある

[デメリット2] 自動化ツールが実現する機能スコープの見極めが必要

自動化ツールによってコーディングできる処理が異なります。そのため、導入の前にFit&Gapを実施し、自動化ツールが実現する機能スコープを見極める必要があります。

自動化ツールにより得意・不得意がある

[デメリット3] 品質担保における落とし穴

コーディングの自動化により設計書通りに動作するソースコードを生成できますが、設計にバグがある場合はソースコードにもそのバグが反映されてしまいます。そのため、設計にバグがないかをレビューなどで確認する必要があります。

また、完全にテストを省略できるわけではありません。

代表的な自働化ツール

以上のメリット・デメリットを踏まえて、自動化ツールの導入が向いているかをプロジェクトごとに判断することが大切です。また、一口に自動化ツールと言っても、ソフトウェア開発の歴史の中でさまざまなものが提案されています。各プロジェクトで最適なものを選ばなければなりません。

ベンダー各社が提供する代表的な自動化ツールを紹介しておきましょう。

代表的な自動化ツール(ツール名アルファベット順)

項番 ツール名 開発ベンダー 紹介サイト
1 GeneXus GeneXus https://www.genexus.com/ja-JP/japan
2 Interdevelop Designer 富士通 http://www.fujitsu.com/jp/solutions/industry/financial/services/mcbg/solutions/purpose/interdevelop-designer/index.html
3 TERASOLUNA ViSC NTTデータ http://www.terasoluna.jp/product/tool/visc.html
4 Wagby ジャスミンソフト https://wagby.com/
5 Web Performer キヤノンITソリューションズ https://www.canon-its.co.jp/products/web_performer/
6 楽々Framework3 住友電工情報システム https://www.sei-info.co.jp/framework/

「コーディングの自動化」のトレンド

ここまで、テンプレートエンジンを利用してコーディングを自動化する例を紹介しましたが、近年は、手書きした画面デザインからソースコードを生成する「Sketch3Code」や、GUIのスクリーンショットからソースコードを生成する「pix2code」など、AI技術を利用したものも登場しています。

従来、自動化ツールに最適化した画面設計からソースコードを生成していましたが、これらの技術を用いると、ホワイトボードのスケッチやデザイナーが作成したJPGなどをインプットにソースコードを生成することができます。

AIによるコーディングの自動化は、まだまだ主流であるとは言えませんが、近い将来当たり前になる時代がくるかもしれませんね。

AI登場によるコーディングの自動化の変化

*  *  *

自動車産業に代表されるような製造業はITよりも長い歴史があり、自動化が進んでいるため、高品質なものを高い生産性で作ることができます。テレビ番組で、生産ラインを人から機械に置き換えて、自動車を大量に作っている映像を見た人も多いと思います。

ITは製造業とは異なり、歴史が浅いことや目に見えないものを作っていることから一概に比較はできませんが、自動化により高品質・高生産性を実現できているところは見習うべきでしょう。

今回はコーディングの自動化について解説しました。次回はテスト自動化について解説していきます。お楽しみに!

著者紹介


島倉 優人(SHIMAKURA Yuto) - NTTデータ 主任

2014年度入社。TERASOLUNA Frameworkの開発や普及展開業務を経て、現在はTERASOLUNA開発ツールを普及展開する部署に所属。ソフトウェアアーキテクトとしてのプロジェクト支援や、ソフトウェア開発自動化の普及展開を中心に活動している。

JavaやSpring Framework、最近はAIやVRなど、さまざまな技術に興味あり。趣味は卓球とゲーム。