見出し画像

プログラムの自動生成の手法まとめ

こんにちは、株式会社Pentagon代表の山本です。

最近は、自動生成について研究をしています。

そこで、プログラムの構成要素と自動化について整理してみました。

プログラムの構成要素

プログラムの構成要素を考えた時に以下の要素にわけることができます。

・UIデザイン
・コード(1行1行)
・メソッド
・クラス
・ファイル
・ディレクトリ

プログラムの自動化

どの粒度での自動化を実現するのかで自動化の手法も異なってきます。

自動化プログラムの多くが、ソースコードの生成またはファイルの生成の手法をとっているかと思います。

ソースコードレベルでの自動化

GitHub Copilotは、コメント文からメソッドを自動生成しています。

ソースコードレベルでの自動化は、エンジニアの稼働コスト削減につながります。

ファイルレベルでの自動生成

設定ファイルやアノテーションから自動生成するというものです。

例えば、dartのfreezedというパッケージでは、以下のように宣言することで

@freezed
class Person with _$Person {
 factory Person({ String? name, int? age }) = _Person;
}

person.freezed.dartというファイルが生成されます。これによりJSONのマッピングなどをクラス毎に記述しなくて済みます。

ファイルの自動生成では、エンジニアがボイラープレートを何度も書かなくて済むように設計されていることがわかります。

デザインからの自動生成

いわゆるNoCodeツールがデザインからプログラムを自動生成するシステムに値します。

多くのNoCodeツールがエンジニアが不在でも誰でもシステムの構築ができるということを目指しています。

デザインや設定から裏側ではソースコードを生成しているものと思われます。

インフラ構築の自動化

AWSのCloud Formationでは、jsonまたはyamlファイルを元にインフラの構築を自動化することができます。


AWSTemplateFormatVersion: "2010-09-09"
Description: A sample template
Resources:
 MyEC2Instance: #An inline comment
   Type: "AWS::EC2::Instance"
   Properties: 
     ImageId: "ami-0ff8a91507f77f867" #Another comment -- This is a Linux AMI
     InstanceType: t2.micro
     KeyName: testkey
     BlockDeviceMappings:
       -
         DeviceName: /dev/sdm
         Ebs:
           VolumeType: io1
           Iops: 200
           DeleteOnTermination: false
           VolumeSize: 20

自動化まとめ

こうして比較してみると次の4つの生成方法が考えられます。

・コメントから自動生成
・アノテーションから自動生成
・デザインデータから自動生成
・設定ファイルから自動生成

他にも自動化の方法があればコメントにて教えていただけると嬉しいです。

では、今回のnoteは以上です。

この記事が気に入ったらサポートをしてみませんか?