見出し画像

プログラムとAIは、こうやってつなぐ。非エンジニアがGeminiと一緒にコードを書いた話

前回まで、GASのコードを実行ボタンで一度動かす方法と、トリガーで毎週自動にする方法を見てきました。動かし方そのものは、思っていたよりずっと単純だったと思います。

ただ、僕の中にはまだ一番大きな壁が残っていました。動かし方は分かっても、そもそも「動かすコードそのもの」を、プログラミングを習ったことのない自分がどうやって書けばいいのか。そこが、ずっと分からないままだったんです。

今回はその壁の話です。先に結論を言ってしまうと、コードは一人でゼロから覚えなくても大丈夫でした。やりたいことを自分の言葉で伝えれば、AIが一緒に考えて書いてくれます。今回は試しに、Gemini(Googleの生成AI)に手伝ってもらいます。

まず、ためしにお願いしてみる

いきなり難しいことは頼みません。前回の「A1のセルに今日の日付を書きたい」を、そのまま自分の言葉でGeminiに伝えてみました。専門用語は一つも使っていません。ただ「こういうことがしたいです」と書いただけです。

Geminiに「A1に今日の日付を書きたい」と日本語でお願いすると、そのまま貼って使えるコードを書いて返してくれた

返ってきたのは、コピーしてそのまま貼れるコードでした。貼り付ける場所も、前回の記事でやったのと同じです。エディタを開いて、貼って、保存する。それだけなので、ここでは手順はくり返しません。もし忘れてしまったら、前回までの2本を置いておくので、こちらを見てもらえたらと思います。

ここで大事なのは、コードの中身が読めなくても、やりたいことさえ言葉にできれば形になる、ということでした。

もう少しだけ、欲張ってみる

一度できると、欲が出てきます。日付を書くだけじゃなくて、もう少し「仕事」らしいこともお願いできないだろうか、と思ったんです。

そこで、こんなことを頼んでみました。別のシートに毎日の作業を記録しているとして、その先週1週間分をまとめて、毎週月曜の朝に自分あてにメールで送ってほしい。これも、書いたのはぜんぶ日本語です。

「先週分をまとめて毎週メールしてほしい」と日本語で頼むと、Geminiが何ステップもある処理をひとまとまりのコードにして返してくれた

日付のときとは、明らかに難しさが違います。シートからデータを読んで、先週の分だけを選び出して、文章の形に整えて、メールで送る。人が手でやろうとしたら何工程もある作業です。それを、Geminiはひとつのまとまったコードにして返してくれました。

貼り付け方は、さっきの日付のコードと同じです。もし貼って動かしたときにエラーが出ても、あわてなくて大丈夫でした。赤い文字で出たエラーを、そのままコピーしてGeminiに貼れば、どこをどう直せばいいかを一緒に考えてくれます。

参考までに、実際に返ってきたコードがこれです。中身を一行ずつ理解する必要はありません。「へえ、こういうものが返ってくるんだな」くらいの気持ちで眺めてもらえたらと思います。

function sendWeeklyLog() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("作業ログ");

  if (!sheet) {
    console.error("「作業ログ」という名前のシートが見つかりません。");
    return;
  }

  // 先週の月曜日(7日前)と日曜日(1日前)の日付を計算
  const today = new Date();
  const lastMonday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
  const lastSunday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1);

  lastMonday.setHours(0, 0, 0, 0);
  lastSunday.setHours(23, 59, 59, 999);

  const lastRow = sheet.getLastRow();
  if (lastRow < 2) {
    return;
  }
  const data = sheet.getRange(2, 1, lastRow - 1, 2).getValues();

  let emailBody = "先週の作業ログをまとめました。\n\n";
  let hasData = false;

  for (let i = 0; i < data.length; i++) {
    const rowDate = new Date(data[i][0]);
    const content = data[i][1];

    if (rowDate >= lastMonday && rowDate <= lastSunday) {
      const formattedDate = Utilities.formatDate(rowDate, "Asia/Tokyo", "yyyy/MM/dd");
      emailBody += `【${formattedDate}】\n${content}\n\n`;
      hasData = true;
    }
  }

  if (!hasData) {
    emailBody += "先週の記録はありませんでした。";
  }

  const myEmail = Session.getActiveUser().getEmail();
  const subject = "【週報】先週の作業ログまとめ";

  MailApp.sendEmail(myEmail, subject, emailBody);
}

実際に動かしてみたら

このコードを貼って動かしてみました。そうしたら、ほんとうに自分あてに週報が届いたんです。

実際に届いた週報メール。作業ログの先週分が、日付ごとに自動でまとめられている

もう一度言いますが、僕はこの間、一行もコードを書いていません。やりたいことを日本語で伝えただけです。それだけで、何ステップもある作業が、勝手に動くところまで来ました。

入口だったのは、コードを書く力じゃなかった

ここまでやってみて、気づいたことがあります。入口に立つために必要だったのは、コードをすらすら書ける力ではありませんでした。「何を、どうしてほしいのか」を、自分の言葉ではっきりさせる力のほうだったんです。そこさえ言葉にできれば、あとは一人で抱え込まなくていい。これは僕にとって、地味だけれど大きな発見でした。

そして、ここまで来ると、次の問いが自然に浮かんできます。この「作業ログをまとめてメールする」という一連の仕事、毎回自分でお願いして、コードを貼って、動かして、とやるんじゃなくて、丸ごとAIに任せてしまえないだろうか、と。

次は、その話をしてみたいと思っています。コードを書いてもらう相手だったAIに、仕事そのものを任せるようになるまで。GASで十分満足していたはずの僕が、それでもその先へ進みたくなった理由を、一緒にたどってみられたらと思います。

いいなと思ったら応援しよう!