2023/07/27

就活ー生成系AI

 

①GASについて

キャリタス就活『就活における生成系AI活用術』のセミナーを受けて、夏休み課題として提示されていたGASアプリ(企業研究シートの作成や作業の自動化)を完成させるため、まずはそもそもGASとは何なのかを勉強しようと思った。

学習内容
・GASとは?
「Google Apps Script」の略称。Googleが提供する各種サービスの自動化/連携を行うためのローコード開発(※1)ツール
※1:ローコード開発:可能な限りソースコードを書かずにアプリケーションを開発する手法

・GASの4つの特徴
1)Gmailアカウントがあれば誰でも無料
2)開発環境のセットアップが不要
3)JavaScript互換で覚えやすい(=JavaScriptで用いられている言語と似ている)
4)マクロ機能でノンコード開発ができる(=Officeと同じマクロ機能搭載)

・活用例
1)Googleドライブ上のファイルが更新されたことをGmailで通知する
2)Googleスプレッドシートの内容を元にGmailからメールを送信する
3)Googleカレンダーの予定を自動で登録・編集する
4)Googleフォームを自動で作成する
5)Googleフォーム上で指定したアドレスにフォームの入力内容を自動送信する
6)スクレイピング(※3)により収集した情報をGoogleスプレッドシートに登録

・GASを利用する上での注意点
1)ローカルファイルの操作は行えない
GASで参照・編集したいファイルはGoogleドライブ上に保存する必要がある
2)実行時間の制限がある
スクリプトの実行時間は一回当たり最大6分、カスタム関数の実行時間は1処理あたり最大30秒

感想
GASとはGoogleが提供しているサービスを自動化/連携するためのローコード開発ツールだと言うことがわかった。従来だとプログラミング言語を習得する必要があるが、これもChatGPTに丸投げすればコードを考えてくれるのではないだろうか?

【入門】GASとは?できること&活用法を解説(サンプルコード付き)

 

②ChatGPT×Googleスプレッドシート
具体的にChatGPTとGASを連携して何ができるのか気になったので調べてみた。

学習内容
・ChatGPTには正式なログ機能がない(※2)ので、GoogleスプレッドシートにChatGPTのAPI(※3)を組み込んで、質問した回答を取得・保存できるようにしてみた
※2 2023年3月21日の記事なので2023年7月現在はどうなっているかわからん
※3 APIとは「Application Programming Interface」の略称。インターフェースとはコンピューター用語で言うと「何か」と「何か」をつなぐもの、なので、APIとは「アプリケーション」と「プログラム」をつなぐもの。らしい

ステップ① OpenAIのアカウントを作成する

ステップ② Google スプレッドシートにアドオンを追加する

失敗。

おそらくOpenAIのアカウントを作ってすぐ(30分以内)だったことが原因だと考えられる。

感想
てっきりChatGPTにサンプルコードを書いてもらう記事かと思ったらそうではなかった。Googleで「gas chatgpt」とだけ検索すると以下のような記事が多くヒットした。どうやらAPIを使ってGASとChatGPTを連携することを目的にした記事が上位にヒットするみたい。

https://dev.classmethod.jp/articles/aws-services-explained-for-kids-chatgpt-spreadsheet/#note-1043383-1

 

③ChatGPTにGASを作ってもらってみたら
ChatGPTにサンプルコードを書いてる記事を探した。

そうすると、記事内でたしかにChatGPTにサンプルコードを書いてもらっているものを見つけたがそれよりも以下の文章が心に刺さった。

特にコード生成してもらうことに関しては検索でもググり力というか、検索スキルとか言われるものが必要だと感じました。
つまり、検索が下手な人と上手な人とではChatGPTのようなチャット型AIを使うのにも技量差が出てくるということです。

②に対するブーメランだった。

https://taibonn.com/gsuite/gas/how-i-tried-out-chatgpt/

 

④ChatGPTに直接聞いてみる
ここまで調べてみて、とりあえずGoogleで検索するよりも自分でChatGPTに聞いてみたほうが早いのではないかと思い以下の質問を投げかけてみた。

「GASアプリを使って企業研究シートを作成するコードを書いてください」
回答・・・コードを教えてくれたが、どのようにコードを使えばいいのか分からず

次に、もう少しわかりやすく説明してもらうために以下のように質問を変更した

「GASアプリを使って企業研究シートを作成するコードを書いて、小学生にもわかるようにステップバイステップでその使い方を教えてください」
回答・・・ステップごとに分けて操作手順を教えてくれた。ChatGPTに質問を投げかける時は『小学生にもわかるように』『ステップバイステップで』というプロンプトを打ち込むことで、かなり丁寧に説明してくれるようになることがわかった。

感想
自分がChatGPTとGASアプリを使って作ってみたいコードがイメージできた。

このアイデアを形にするために情報収集に取り組もう。

 

⑤良いプロンプトの入力方法
実際にChatGPTを使って、良いプロンプトを書くことができれば、良い結果が返ってくるということがよく分かった。なのでネット記事を参考にプロンプトの書き方について勉強する。

参考にしたWebサイト「promptia
このサイトには沢山のプロンプト集が公開されていて、どれも参考になるものばかりである。
実際にいくつかこれは使えそうだと思ったものを示す。
実際に3)を活用してプロンプトを作成してもらった。
質問「企業のHPやIR情報から自動的に情報を取捨選択し、GASを用いてGoogleスプレッドシートにまとめてくれるコードを考えてください」
改善案「特定の企業のHPやIR情報から、企業名、事業内容、売上、従業員数を取得し、それをGoogleスプレッドシートにまとめるコードを考えてください。スプレッドシートには、取得した情報を行に追加してください。また、企業ごとに列を分けて情報を整理して記入してください。取得とまとめには、GASのWebスクレイピング機能を使用してください。」
そして改善案をそのままChatGPTに投げかけて、得られた回答は以下の通り。

function getCompanyInformation() {
// ここに取得したい企業のHPやIR情報のURLを指定してください
var companyURL = “企業のURLをここに入力”;

// Webスクレイピングで情報を取得する
var response = UrlFetchApp.fetch(companyURL);
var htmlContent = response.getContentText();

// 企業情報を抽出するための正規表現パターンを定義
var companyNamePattern = /<h1[^>]*>([^<]*)<\/h1>/;
var businessPattern = /<div[^>]*class=”business”[^>]*>([\s\S]*?)<\/div>/;
var salesPattern = /売上:(\d+億円)/;
var employeePattern = /従業員数:(\d+人)/;

// 企業情報を抽出
var companyName = companyNamePattern.exec(htmlContent)[1];
var businessMatch = businessPattern.exec(htmlContent);
var businessContent = (businessMatch) ? businessMatch[1].trim() : “情報なし”;
var salesMatch = salesPattern.exec(htmlContent);
var sales = (salesMatch) ? salesMatch[1] : “情報なし”;
var employeeMatch = employeePattern.exec(htmlContent);
var employeeCount = (employeeMatch) ? employeeMatch[1] : “情報なし”;

// スプレッドシートに記入
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();

// 既にデータが記入されている最終列の次の列を取得
var lastColumn = sheet.getLastColumn();
var nextColumn = lastColumn + 1;

// 企業ごとに新たな列を作成して情報を記入
sheet.getRange(1, nextColumn).setValue(“企業名”);
sheet.getRange(2, nextColumn).setValue(companyName);
sheet.getRange(1, nextColumn + 1).setValue(“事業内容”);
sheet.getRange(2, nextColumn + 1).setValue(businessContent);
sheet.getRange(1, nextColumn + 2).setValue(“売上”);
sheet.getRange(2, nextColumn + 2).setValue(sales);
sheet.getRange(1, nextColumn + 3).setValue(“従業員数”);
sheet.getRange(2, nextColumn + 3).setValue(employeeCount);
}

実行したところ、以下の結果が得られた。
全然思ってた結果と違う。
どうやらChatGPTだけを使ってコードをゼロから完成させることは難しそうだ。
このエントリーをはてなブックマークに追加