コーディングの自動化

【連載】

ソフトウェア開発自動化入門

【第2回】コーディングの自動化

[2018/12/28 10:10] ブックマーク ブックマーク

開発ソフトウェア

ソフトウェア開発自動化入門の第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など、さまざまな技術に興味あり。趣味は卓球とゲーム。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】RPA入門 - ツールで学ぶ活用シーン

【連載】RPA入門 - ツールで学ぶ活用シーン

AIには、ルールベース、機械学習、深層学習(ディープラーニング)の3つのレベルがあり、レベルが上がるに連れてより高度な人工知能を実現しますが、AIのスピンオフという位置付けで、Digital Labor(仮想知的労働者)によるホワイトカラー業務の自動化を実現するRPAが注目されています。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
知りたい! カナコさん 皆で話そうAIのコト
教えてカナコさん! これならわかるAI入門
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
ソフトウェア開発自動化入門
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る