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

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

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

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

目次

\ 年末までに限った無料特典 /
貴社のシステム開発・アプリ開発を爆速で進めるための
【毎月先着2社限定】デモアプリ構築・無料依頼フォーム

【当社では、こんなデモアプリがすぐに作れます】

  • 貴社で「まずつくってみたい」試作品アプリの構築を毎月先着2社限定で無料で承っております
  • 社内の管理システムからtoB, toCのWebサービスまで幅広くご支援可能です
  • ご興味のある方は下記のフォームよりお申し込みください

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.15, last published: 7 months ago. Start using @notionhq/client in your project by runnin...
  1. 用途: Notion APIとの通信を容易にするための公式Node.jsクライアントライブラリです。このライブラリを使用することで、Notionのデータベースへのクエリ、ページの更新、ブロックの操作など、多くのAPI機能を簡単に利用できます。
  2. 主な機能: ページの作成と更新、データベースのクエリ、ブロックの追加と更新など。

@azure/openai

npm
@azure/openai A companion library to openai for Azure OpenAI.. Latest version: 2.0.0-beta.2, 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: 8 months ago. Start using dotenv in your project by running `npm i dotenv`. ...
  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を活用して、機能名から機能要件定義を一括で作成できる関数を作成しました。
こちら以外でも自動化できそうな内容があれば、今後も共有できればなと思います。

メンバーを募集中!

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

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

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

\ システム開発にお悩みの方へ /
貴社のシステム開発・アプリ開発を爆速で進めるための
超高速開発が分かる資料3点セット

【下記の3点の資料が無料でダウンロードできます】

  • 【料金表付き】新規事業を爆速で立ち上げられる高速開発支援サービスの紹介資料
  • 【最短24時間で納品?】高速開発のプロジェクト支援事例集
  • 導入に向けて開発プラットフォームのランニングコスト比較表
  • URLをコピーしました!

この記事を書いた人

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

株式会社ファンリピート

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


目次
閉じる