chatGPTでノーコードプログラミング①大枠の話
はじめに
chatGPT等の生成AIを活用してプログラムのコード作成時間を削減する…そんな話を聞いたことがあると思います。
当初は「それでちゃんと動くの?」と賛否両論だった気がしますが、最近ではLINEヤフーで生成AIを導入しコード記述時間を削減するといったニュースもあり、プログラミングに生成AIを活用していくのは今後必須になると思います。
では、「プログラミング経験まったくのゼロ」の人が生成AIだけで一応「アプリ」といえるようなプログラムを書けるようになるか?というと、それはまた別の話だと思います(現状では)。やはり、「必要最低限の前提知識/知識があれば開発が捗ること」というのはあると思いますので、整理していきたいと思います。
私の参加しているBBT/デジタルファーストキャンプではSlackの特定のチャンネルに投稿があった場合にgoogle spreadsheetに入力、chatGPTへ送信し回答を受領、結果をspreadsheetに保存、メールで送信、Slackへ投稿するというアプリを作りましたので、こちらを例に進めます。(普通に目的を果たすだけならSlackにchatGPTプラグインがあるのでそちらを使うほうが早いと思います。あくまで演習です。)
なお、この記事では「大枠の考え方」「どういう方向で検索、質問すればよいか?」という説明にとどめ、各ツールの詳細な使い方等は他に有用な記事がたくさんありますのでそちらをご参考に願います。
先に結論
chatGPTはコード生成の精度は結構高い。けど、それ以外のところはわからないか適当。
コード以外の周辺知識、最低限のコードの読み方を覚えて、機能ごとにコードだけ生成してもらい組み合わせれば結構いろいろ出来そう。
①実行環境:どうやって実行する?
ためしにchatGPTに「Slackの特定のチャンネルに投稿があった場合にgoogle spreadsheetに入力、chatGPTへ送信し回答を受領、結果をspreadsheetに保存、メールで送信、Slackへ投稿するコードを生成してください」とそのまま聞いてみましょう。
そうすると以下のようにコードがずらーっとでてきます。
さて、これをどうすればいいの?という話になりますね。
「コードをどうすれば実行できるか」これが必要な知識①です。
さらに言うと、コードには”言語”という種類があるので「コードが何の言語なのか?何の言語を使うべきか?」という知識が同時に必要です。
ここまで知っていればあとは「プログラミング言語 一覧」で検索し、上の画像にもある「Python」で書こう、と思ったら「Python 実行するには」等で検索すれば実行までたどりつけると思います。
ちなみに講義中では①「Google Colab」でブラウザ上でPythonコードを実行する②「Google Apps Script(GAS)」でブラウザ上で実行する方法の2通りを試しました。GASは実行環境であり、言語の種類(≒Java script)でもあります。特徴は調べてもらえたらと思いますが、「GASは”デプロイ”することで簡単にWEBアプリを立ち上げることができる」という点は次に出てくるので覚えておいてください。
②だれが実行する?
さて、ではコードは生成してもらえて、実行する方法についてもなんとなくわかったとしましょう。次に知らなければいけないことは②だれが実行するか?(を、決める必要があるということ)です。これは言い換えると、「手動で実行するか、自動で実行するか?」です。
例えばpythonでWEBスクレイピングをしたい!となれば手動でいいでしょう。実行もボタンを押せばいいだけです。(ただし、毎日決まった時間に行わせたければ自動にするべきです。)
では自動とはどうするのか?自動の場合は常に実行を繰り返すわけにもいかないので、何らかの1)「トリガー(自動で実行する条件)」を設定する、2)トリガーを待機し続けるプログラムにする必要があります。
今回は「Slackで投稿があったら」という条件があるので、待機してSlackの投稿があったら自動実行するプログラムにします。
また、待機は自分のPCの中でしていても意味がないので、WEB上で待機する必要があります。これがWEBアプリです。そうすると、今回はコードの特徴からGASでプログラムを書くのがよさそうだな、となり、「Slack GAS 投稿」で検索したり、「Google apps scriptでSlackの投稿を受信するコードを生成してください」と聞いてみるかと、進めていくことができます。(ただし、実際にchatGPTに質問するとincomingwebhookを使えと言われますが、outgoingwebhookを使うべきです。chatGPTには”コードだけ”の質問にして、方法論はgoogle検索したほうが無難です。)
③データの受け渡しはどうする?
次に知っておくべきことは、「アプリ同士の連携はどうやるの?」ということです。待機して自動で動くプログラムを作れても、トリガーの発生を待つだけの受け身のプログラムです。Slackのチャンネルを常時監視するようなプログラムは作れません。プログラムでできるのは基本的に「データを受け取ったら加工して、返す」だけです。(GASはGmailと連携してメールを送信したり、Google spreadsheetと連携することが出来ますが、最初からそういう機能が用意されているからです。)
なので、「Slackで投稿があったら」の部分は、Slack側で教えてもらわないといけません。最後の「Slackに投稿する」の部分も同じで、このようにプログラム間でデータを連携する仕組みをAPIといいます。
これを知っていれば、「Slack 投稿 API」等の検索で、Slackとのデータのやり取り方法を探せると思います。ちなみにSlackからの送信はoutgoingwebhook、Slackへの送信はincomingwebhookを Slack側に導入します。
APIはSlack等のアプリ側で用意してくれるもので、これがないアプリはプログラムで操作できないと思った方がいいと思います。(余談ですが旧TwitterにはNow playingというAPIを利用してiTunesで聴いている曲を自動で投稿するアプリがありましたが、Twitterで API利用を不可としたため使えなくなりました。好きだったのに…)
さて、ここまでの知識が前提にあると、まず「こんなプログラムを組みたい」と考えた時に、「どんな言語が適していてどうすれば実行できるのか」
「手動にするかWEBアプリ形式にするのか」「動かしたい対象のアプリのAPIはどういう仕組みか」を"調べなければいけない"ということがわかると思います。知っている必要はありません。調べなければいけないことがわかれば、大抵の情報はネットで見つかります。
「Slackに投稿があったらLINEに転送する」ようなときも、「まずはLINEのAPIを調べよう」となるはずです。
では、次回はchatGPTへの依頼のコツと最低限のコードの読み方を説明したいと思います。