ファンリピート社のブログFR note

NotionとGPTを活用した機能要件定義の自動化!

こんにちは。ファンリピートの鳴海です。

今回は機能名を事前に入れておくだけで、一括で要件定義を行う処理について、社内開発を行ったので、概要だけ説明します!

目次
「システムを短納期かつ低予算で作成したい」
ローコード開発に興味がある

Azure OpenAI

機能名から機能要件を出力するために自然言語処理を活用します。OpenAIでも使用することは可能ですが、今回は情報保護するためにAzure OpenAIを使用します。

Azure OpenAIについて詳しく知りたい方は以下の記事をご覧ください。

あわせて読みたい
Azurechatの構築方法について解説! こんにちは。ファンリピートの鳴海です。今回はAzurechatの構築方法について解説したいと思います。 【】 法人向けにMicrosoftによって提供されるオープンソースのウェ...

モデルの作成

検索ボックスで「Azure OpenAI」と検索し、該当する項目を開きます。

作成を押下します。

項目を入力します。

こちらの種類は必要に応じて選択し、次へを押下してください。

エラーが起きなければ、作成ボタンを押下してください。

作成後に画面に進み、Go to Azure OpenAI Studioをクリックしてください。

デプロイを押下します。

新しいデプロイを押下します。

モデル名や駆動させるモデルを選択し、作成を押下します。

API Keyの発行

デプロイしたモデルを開きます。

プレイグラウンドで開きます。

コードの表示を押下します。

①URL、②API Keyをメモしておきます。

Notion

Notionで行う作業としてはテーブルの作成、API keyの発行を行います。

テーブルの作成

対象ページで、データベースを作成します。

プロパティを最低限以下で設定します。

  1. name
    1. title
  2. status
    1. セレクト

statusは以下で設定しておきます。

  1. 開発くんで生成
  2. 開発くんで生成中
  3. 開発くんでエラーが発生
  4. 開発くんで生成完了
  5. クローズ

タスクを作成する時は、デフォルトで開発くんで生成に設定しておきます。

次にdatabase IDを取得したいので、フルページとして開きます。

URLからコピーします。

notion.so/{ここがdatabase id}?~~~

API Keyの発行

以下のURLを開き、新しいインテグレーションを押下します。

Notion
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases. A new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your team

上記作成したテーブルのワークスペースを選択し、名前を入力できたら、送信ボタンを押下します。

表示されるAPI Keyをメモしておきます。

コードについて

環境はNode.jsベースで、処理の内容としては以下のようになります。

package.jsonの処理内容について

@notionhq/client

npm
@notionhq/client A simple and easy to use client for the Notion API. Latest version: 2.2.14, last published: 4 months ago. Start using @notionhq/client in your project by runnin...
  1. 用途: Notion APIとの通信を容易にするための公式Node.jsクライアントライブラリです。このライブラリを使用することで、Notionのデータベースへのクエリ、ページの更新、ブロックの操作など、多くのAPI機能を簡単に利用できます。
  2. 主な機能: ページの作成と更新、データベースのクエリ、ブロックの追加と更新など。

@azure/openai

npm
@azure/openai An isomorphic client library for Azure OpenAI.. Latest version: 1.0.0-beta.11, last published: 2 months ago. Start using @azure/openai in your project by runnin...
  1. 用途: Microsoft AzureのOpenAIサービスへのアクセスを提供するNode.jsクライアントライブラリです。OpenAIのAPIを介して自然言語処理や機械学習モデルを利用することができます。
  2. 主な機能: テキスト生成、テキスト解析、会話モデルへのアクセスなどが可能です。このコードでは、OpenAIのチャット機能を利用して、開発チケットの自動生成に関する応答を生成しています。

@tryfabric/martian

npm
@tryfabric/martian Converts Markdown to Notion Blocks and RichText. Latest version: 1.2.4, last published: 2 years ago. Start using @tryfabric/martian in your project by running `...
  1. 用途: Markdown形式のテキストをNotionのブロック形式に変換するためのライブラリです。NotionのAPIは独自のブロック形式を使用してコンテンツを扱うため、この変換プロセスが必要になります。
  2. 主な機能: MarkdownからNotionのブロック形式への変換を行い、NotionページにMarkdownコンテンツを簡単に追加できるようにします。

dotenv

npm
dotenv Loads environment variables from .env file. Latest version: 16.4.5, last published: a month ago. Start using dotenv in your project by running `npm i dotenv`. T...
  1. 用途: Node.jsプロジェクトで環境変数を簡単に管理するためのゼロ依存ライブラリです。.envファイルから環境変数を読み込み、プロジェクト内で安全に使用できるようにします。
  2. 主な機能: .envファイルから環境変数をプロセス環境にロードします。これにより、APIキーやデータベースの接続情報などの機密情報をコードから分離し、安全に管理できます。

index.jsの処理内容について

  1. 環境変数の読み込み:
    • dotenvモジュールを使用して、.envファイルから環境変数を読み込みます。これにより、Notion APIキー、Azure OpenAIのエンドポイント、APIキー、デプロイメントIDがプログラム内で利用可能になります。
  2. 関数の定義:
    • bulkCreateDevTicketsは、HTTPリクエストを受け取り、Notionのデータベース内の特定のステータスを持つページに開発チケットを生成する非同期関数です。
  3. NotionとOpenAIクライアントの初期化:
    • Notion APIとAzure OpenAIサービスに接続するためのクライアントインスタンスを作成します。
  4. 開発チケットのテンプレート読み込み:
    • fsモジュールを使用して、createDevTickets.txtファイルから開発チケットのテンプレートを読み込みます。
  5. Notionデータベースからのデータ取得:
    • 指定されたデータベースIDを使って、ステータスが「開発くんで生成」のページを検索します。
  6. ページごとの処理:
    • ステータスを「開発くんで生成中」に更新します。
    • ページのタイトルをOpenAIに送信し、開発チケットの内容を生成します。
    • OpenAIからの応答を受け取り、Markdown形式のテキストをNotionのブロック形式に変換します。
    • ページ内の既存ブロックを全てアーカイブ(削除と同様)し、新しい内容のブロックを追加します。
    • ステータスを「開発くんで生成完了」に更新します。
  7. エラー処理:
    • 何らかのエラーが発生した場合、ページのステータスを「開発くんでエラーが発生」に変更し、エラーメッセージをログに記録します。また、HTTPレスポンスとしてエラーを返却します。
  8. 完了:
    • 全ての処理が無事に完了したら、HTTPレスポンスとして200 OKを返却します。

createDevTickets.txtについて

こちらは出力させたいフォーマットを事前に読み込ませるような内容となっています。

もし出力内容を変更したい場合は、こちらで変更が可能です。

Google cloud functions

Google cloud functionsで上記のコードをデプロイし、使えるようにしたいと思います。

デプロイ

自身のアカウントで、GCPのコンソールを開きます。

あわせて読みたい
Google Cloud Platform Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure as Google.

cloud functionsを開きます。

ファンクションを作成を押下します。

APIを有効にします。

①関数名は「bulkCreateDevTickets」にします。

②認証について

  1. 認証はもし使用する関数が今後外部でも使用したいという方は、「未認証の呼び出しを許可」を選択します。※今回はこちらを推奨します。
  2. Google認証が必要であれば「認証が必要」を選択します。

ランタイム環境変数は以下のようにセットします。

名前
NOTION_API_KEY上記で取得したNotionのAPI Key
AZURE_OPENAI_ENDPOINT上記で取得したAzure OpenAIのURLのドメインhttps://~~~~.openai.azure.com/
AZURE_OPENAI_API_KEY上記で取得したAzure OpenAIのAPI Key
AZURE_OPENAI_DEPLOYMENT_ID上記で取得したAzure OpenAIのURLのdeploymentsの後の値

セットができたら、次へ進みます。

エントリポイントはbulkCreateDevTicketsにします。

package.json、index.jsは上記のコードをそのまま貼り付けしてください。

+ボタンを押下して、ファイル名を「createDevTickets.txt」で作成します。内容自体は上記を貼り付けしてください。

対応できたら、デプロイを押下すれば、完了です。

使用方法

Notionで事前に「slack通知機能」という名前で追加しておきます。

デプロイした関数のテスト中を開き、トリガーとなるイベントの構成で以下のを入力し、関数をテストするを押下して、Notionに反映されていればOKです!

※databaseIdの値は上記手順で取得したdatabaseIdを入力してください。

まとめ

今回はGPTを活用して、機能名から機能要件定義を一括で作成できる関数を作成しました。
こちら以外でも自動化できそうな内容があれば、今後も共有できればなと思います。

メンバーを募集中!

当社ではお客様に向き合い、お客様の事業成功にコミットをできる仲間を募集しています。

正社員、インターンから副業まで、幅広く採用活動を進めております。プロジェクトマネージャーやシステムエンジニアとして当社のシステム開発業務に携わってみませんか?

当社と共に、業界トップを目指して挑戦したい方は未経験者から経験者まで広く募集しているので、ぜひエントリーをお待ちしています。

「システムを短納期かつ低予算で作成したい」
ローコード開発に興味がある
「煩雑なExcel管理から脱したい」
慣れ親しんだシステムを使って効率化したい
「大規模なシステム開発を行うためにPoCを行いたい」
「社内のDXを進めていきたい」
  • URLをコピーしました!

この記事を書いた人

株式会社ファンリピートのアバター

株式会社ファンリピート

FRnoteは株式会社ファンリピートのメンバーによって運営されている社内ブログです。ノーコード・ローコードの技術ブログを始めとして、最新のIT技術、業務で役立つノウハウなど様々なトピックをまとめています。


目次
閉じる