生成AI

GitHub CopilotとClaspによるGAS開発革命:NotionとGoogleカレンダーを活用したToDo管理ツールの作成をしてみた

GitHub CopilotとClaspによるGAS開発革命:NotionとGoogleカレンダーを活用したToDo管理ツールの作成をしてみた

GitHub Copilotとclaspの可能性

このブログの最後に、今回作成したNotionとGoogleカレンダーを連携させたGASをメルマガ登録特典として公開しています。ご興味ある方はご登録いただければ幸いです。

GAS開発の新たな可能性とGitHub Copilot、Claspの組み合わせの紹介

2023年12月29日にGitHubは「GitHub Copilot」のすべてのユーザーが、追加料金なしに「GitHub Copilot Chat」を利用できるようにしたと発表されたとのニュースがありました。これは、開発者コミュニティにとって大きな一歩であり、特にGoogle Apps Script(GAS)の開発において新たな可能性を開くものです。GitHub CopilotのAI支援機能とClaspのコマンドラインツールを組み合わせることで、GAS開発のプロセスを効率化し、生産性を大幅に向上させることが可能になります。

NotionとGoogleカレンダーを統合するToDo管理ツールの構想

GitHub CopilotとClaspを活用したGoogle Apps Script(GAS)開発の新たな可能性を探るため、NotionとGoogleカレンダーを統合する革新的なToDo管理ツールの構想を練りました。これまでのタスク管理方法は、紙やスプレッドシート、ドキュメントにToDoリストを記録し、Googleカレンダーでスケジュールを管理するというものでした。しかし、この方法では繰り返しのルーチン作業や都度の書き出しに多くの時間が割かれ、効率的ではありませんでした。

そこで目をつけたのがNotionです。既に作業用のメモとして活用していたNotionを、タスク管理にも応用することで、スムーズかつ効率的な作業フローを実現しようと考えました。さらに、Googleカレンダーとの連携により、スケジュール管理の自動化を図ることができると考えました。

このプロジェクトの目的は、GitHub CopilotとClaspを用いたGAS開発の可能性を検証することにあります。GitHub Copilotの提供するコード補完機能と、Claspのコマンドラインベースのデプロイメント機能を組み合わせることで、GAS開発のプロセスを効率化し、より洗練された形にすることが目標です。

具体的には、Notionでタスクデータベースを作成し、Notion APIを通じてGASと連携させることで、タスクの取得とGoogleカレンダーへのデータ登録を自動化します。このアプローチにより、タスク管理の繰り返し作業を軽減し、開発者がより重要なタスクに集中できるようになります。

この構想は、開発者が自身のワークフローを最適化し、生産性を向上させるための新しい道を切り開くものです。NotionとGoogleカレンダーの連携は、タスク管理の新しい可能性を提示し、GitHub CopilotとClaspの組み合わせによって、GAS開発の未来が大きく変わることを示しています。

GitHub Copilotとは

GitHub Copilotは、開発者がコーディング作業を効率化し、生産性を向上させるためのAI支援ツールです。以下にその歴史と機能について詳細を記載します。

GitHub Copilotの歴史と機能

GitHub Copilotの歴史

  • 発表: Wikipediaによれば、GitHub Copilotは2021年6月29日にGitHubによって発表されました。最初はVisual Studio Code開発環境でのテクニカルプレビューとして提供され、その後2021年10月29日にJetBrainsマーケットプレイスでプラグインとしてリリースされました。2021年10月27日にはGitHub Copilot Neovimプラグインが公開リポジトリとしてリリースされ、2022年3月29日にVisual Studio 2022 IDEでの利用が発表されました。2022年6月21日には、テクニカルプレビューを終了し、個人開発者向けのサブスクリプションベースのサービスとして提供開始されました。
  • 進化: GitHub Copilotは、2014年2月にリリースされたVisual Studio 2013用の「Bing Code Search」プラグインの進化版です。このプラグインは、MSDNやStackOverflowなどの様々なソースと統合され、自然言語のクエリに対して高品質で文脈に適したコードスニペットを提供していました。

GitHub Copilotの機能

  • コード補完: GitHub Copilotは、Visual Studio Code、Visual Studio、Neovim、JetBrainsなどの統合開発環境(IDE)でのコードの自動補完に役立ちます。Python、JavaScript、TypeScript、Ruby、Goなどの言語での使用に最適化されています。
  • 機能: 自然言語で提示されたプログラミング問題に対して、解決コードを生成する能力があります。コードの説明を英語で行ったり、プログラミング言語間でのコードの変換が可能です。GitHub Copilotには、コードコメントを実行可能なコードに変換する機能や、コードのチャンク、繰り返し部分、メソッドや関数全体の自動補完機能が含まれています。
  • サポート言語とプラットフォーム: GitHub Copilotは、公開リポジトリに含まれる自然言語テキストとソースコードに基づいてトレーニングされた、GitHub、OpenAI、Microsoftによって開発された生成AIモデルによって駆動されます。これにより、さまざまなプログラミング言語でのサポートが可能になっています。

詳細な情報については、GitHub Copilotの公式ウェブサイト(GitHub Copilot)を参照してください

GitHub Copilotの概念とGPT-4との違い

こちらの記事(英語) によればGitHub CopilotはMicrosoftによって開発され、主にコーディングを支援することに特化しています。一方、ChatGPTはOpenAIによって作られ、より広範な会話型AI能力を提供します。両者は高度なAIを使用していますが、それぞれ異なる特化領域があります。

以下ではこちらの

ChatGPT(GPT-4)とプロンプトエンジニアリングでプログラミングを効率化する

ChatGPT(GPT-4)とプロンプトエンジニアリングでプログラミングを効率化する

前回「Generative AI (ChatGPT) × SpreadSheetで業務効率化/自動化」という記事を書きました。記事の中では、GenerativeAI全般とどのように付き合っていくか、その全体的な指針となるようなものを個人的な整理も兼ねてまとめました。
最近遅ればせながら、ChatGPT PlusでGPT-4を使い始め、コーディング能力の高さに感動したので、今回のブログではGPT-4を使って、プログラミングを効率化する方法を探って(まとめて)いきたいと思います。

趣旨としては以下になります。

  1. ChatGPT(GPT-4)になるべくコーディングを任せて、プロトタイプやサンプルプログラムを素早く作ることができるのではないか。
    • 本実装までのリードタイムを短くすることができるのではないか。
  2. テストやリファクタリング、仕様書作成なども一部任せることができるのではないか
    • 納品までのリードタイムも短くできるのではないか。
    • もしくは、限られた時間の中で、お客様へのヒアリングや改善提案など(今の所)人間にしかできないインサイトが必要な事柄に時間を割くことができるようになるのではないか。それによって、より創造的な仕事ができるようになるのではないか。
  3. 上記を達成するために、適切なプロンプトエンジニアリングを行う方法を習得・開発することが必要ではないか。

今回のブログでは1を念頭において、3について調査やまとめた内容を公開します。また、それを踏まえて、実際にGoogle Apps Scriptを対象として、実用的なアプリケーションをChatGPT(GPT-4)になるべく任せる形で作っていく試みをします。

正直なところ、1についてはGitHub Copilot Xもリリースされていますし、いわずもがな、な部分はあるかもしれません。とはいえ、いったん今の所の状況整理の意味も兼ねて改めてまとめてみたいと思います。

目次

ChatGPTとプロンプトエンジニアリング

プロンプトエンジニアリングとは何か

今回、ChatGPT(GPT-4)にきちんと指示・命令を出すためにも、改めてプロンプトエンジニアリングについてまとめてみます。前回の「Generative AI (ChatGPT) × SpreadSheetで業務効率化/自動化」に「ChatGPTの使い方(プロンプトデザイン)」という部分でも一部まとめてがありますので、こちらも別途ご覧ください。

さて、プロンプトエンジニアリングとは、人工知能や機械学習の一分野で、コンピューターやAIに指示や質問を与える際に、どのように文章や情報を提示するかを工夫する技術のことを言います。これにより、コンピューターやAIがより効果的に理解し、正確で役立つ回答や結果を提供できるようになります。

例えば、学校で先生が「この数式を解いて」と言ったとき、生徒はどの数式を解けば良いかを理解する必要がありますね。プロンプトエンジニアリングも同様で、AIに与える情報や質問の仕方を工夫することで、AIが望ましい答えを導き出せるようになります。

Prompt Engineering Guide

プロンプトエンジニアリングに関して、良い教材を見つけました。Prompt Engineering Guideというサイトです。このサイトはDAIR.AIのプロジェクトで、Prompt Engineeringについて、研究者や実践者に教育することを目的としているそうです。有志で日本語訳が随時行われており、大変参考になりますので、ぜひアクセスしてみてみてください。以下では、個人的に気になった・有用に感じた部分を抜粋していきます。

まずは基本となるプロンプトの要素についてです。単に命令するだけでなく、文脈や入力データ、出力指示子をいれるとより正確な回答が得られやすいということですね。

プロンプトの要素