chatGPTでノーコードプログラミング②コード生成の話
はじめに
さて、前回は大枠の話をさせていただきました。
今回はchatGPTでコードを生成してもらうコツと簡単な読み方の話をします。
いい感じに生成してもらうコツ
なるべく精度の高いコードを生成してもらうにはいくつかコツがあって、
①なるべく具体的に
②機能はなるべく単機能に絞る
の2つです。
①なるべく具体的に
例えば、
○「google apps scriptで、Slackのoutgoingwebhookから送られたデータを受け取るコードを生成して」
×「Slackから送られたデータを受け取るコードを生成して」
という感じで、少なくとも言語は必須でしょう。outgoingwebhookについては、APIが導入された時期によってchatGPTが知らないというリスクはありますが、入れてみましょう。
②単機能に絞る
単純に長いコードほど生成の精度が下がる可能性があるのと、動きをテストする時も少しずつした方が確実なこと、そして、大事なのは単機能を"関数"という形で利用する為です。
今回はまずは単純に受け取るだけのコードを作ってもらいましょう。
そして出てきたものがこちらです。
function doPost(e) {
// Slackからのデータを取得
var slackData = JSON.parse(e.postData.contents);
// Slackデータの解析
var userName = slackData.user_name;
var text = slackData.text;
// ここで受け取ったデータに対する処理を追加します
// 例: 特定のキーワードに応じて返信を生成するなど
// Slackへのレスポンスを返す(必要に応じて)
return ContentService.createTextOutput("Received data from Slack: " + text);
}
さて、何やら動きそうだけどこれは何のこっちゃ?ですよね。プログラミング経験がなければ当たり前です。全くの未経験者でもとりあえず動きそうなコードが手に入るのが生成AIの良いところですが、やはりある程度はコードを読めて、検証できる必要があります(書ける必要はないです)。そこで、このコードをもとに最低限知っておきたいことを覚えましょう。
最低限のコードの読み方
まず知っておきたいのは、
関数(function)とは、いくつかの処理が集まったもの
変数とは、データの入れ物に名前をつけたもの
関数はプログラム中に複数用意して、お互いに呼び出すことができる
関数、引数、戻り値
まず1行目、
function doPost(e){
これは関数(function)を表していて、言い換えると
これはdoPostという名前の関数で、受け取ったデータはeという名前をつけて保存しています。{ }の中に書かれた処理を実行します。
という意味です。
"{"の相手を見ていくと、一番下の行で閉じているのがわかります。関数というのはいくつかの処理を集めたもので自由に名前をつけて1つのかたまりにすることができます。
ただし、doPostはあらかじめ名前が決まっていて、このプログラムがPOSTデータを受け取ったら起動する関数として定められています。POSTについてはSlackのAPIを調べる過程で出てきますが、とりあえず知らなくても大丈夫です。
関数は受け取るデータがあるもの、ないもの、返すデータがあるもの、ないもののそれぞれ2×2の4通りあります。
受け取るデータのことを引数
返すデータのことを戻り値
といいます。
先に最後の5行を見ると、return content〜なんちゃらと書いてありますね。この、returnの後に来るのが戻り値です。コメントで必要に応じてとあるように、実は今回はいりません。content〜の意味も気にしなくて大丈夫です。
先にネタばらしをしてしまうと、このdoPost関数の{ }の後に続いて、また
function 〇〇と、違う関数を記述することができます。そして、その関数は、doPost関数の中で呼び出して利用することができます。
function doPost(e){
...
sendmail(message)
...
}
function sendmail(text){
...
}
つまり、chatGPTに単機能のコードを生成してもらえば、あとはそれを組み合わせるだけで、複雑な機能をもつコードも生成できそうですね!
このやり方は冒頭で言った通り、少しずつ動きが試せる他にも、他のプログラムで「この機能だけ欲しい!」といった時に再利用が簡単になったり、メインの関数のコードがすっきりするメリットがあります。半面、コードが冗長になったりすることもありますが、そこはトレードオフです。
変数、宣言
冒頭のコード中の処理の中にある
var ~
というコードですが、これは「変数の宣言」をしています。
「宣言」=「今から〇〇という名前の入れ物を用意するよ」という風に言ってあげないとコンピュータには理解できません。言語によっていろいろですが、GASでは
var text = "Hello,World!"
は、「今からtextという名前の入れ物(変数)を用意して、その中にHello,World!というデータを入れるよ」という風に同時に入れ物の中身も与えられます。
変数の名前は基本的に自由で、textという変数に数字を入れても、numberという変数に文字列を入れてもいいですが、通常はわかりやすい名前をつけます。
ちなみに、GAS(≒JavaScript)の宣言方法にはvar,const,letなどの方法があって、とりあえず全部同じと思っていて大丈夫ですが、最近はconstが主流らしいです。
おわりに
第1回、第2回と生成AIでプログラミンをするための事前準備をしてきました。「思ったより楽じゃない!」と思ったかもしれませんが、ここからさらに色んな構文やオブジェクトが何やらと覚えていくよりは、生成AIはずっとプログラミングを楽にしてくれます。次回は当初の目的のプログラムを書いてみましょう。