Amazon Qをちょっとだけ触ってみた！（kintone × AWS Lambda 連携コードを生成）


こんにちは！かねごん（[@hrbk25](https://x.com/hrbk25)）です！

今回は、最近日本語対応された **Amazon Q (Amazon Q Developer)** を使って、  
kintone と AWS Lambda の連携処理に関するコードを生成してみました。

Amazon Q の設定方法や、実際にどんなことができるのか、備忘録的に簡単にまとめています。

---

## どんな人向けの記事か

- Amazon Q が実際にどのように使えるのか知りたい方  
- kintoneと外部システムの連携に興味がある方  
- AWS開発を効率化するツールを探している方  

---

## Amazon Qとは？

https://aws.amazon.com/jp/q/


> Amazon Q は、組織での仕事の進め方を変える生成 AI アシスタントです。
Amazon Q は、ソフトウェアデベロッパー、ビジネスインテリジェンスアナリスト、コンタクトセンターの従業員、サプライチェーンアナリスト、および AWS で開発を行うすべての人に特化した機能を備えており、すべての従業員がデータに関するインサイトを得てタスクの処理を加速できるよう支援します。

### 特徴まとめ

- Visual Studio CodeなどのIDEに組み込んで利用可能  
- コード補完やバグ修正、テストコードの生成もサポートしてくれる
- AWSコンソール上でも利用可能 など

---

## Amazon Qでkintone×Lambda連携に関するコードを生成してみた

先日参加した [devCamp](https://qiita.com/kanekoh/items/d2d90d95a4c105e66976) で学んだ「フォームのデータを kintone に登録する処理」を、Amazon Qで作ってみました！


### 前提：Amazon Qの準備

今回は開発者向けの **Amazon Q Developer** を利用しました。  
Visual Studio Code の拡張機能としてインストールし、チャット形式でやり取りできます。
以下の記事を参考に設定しました。

https://www.r-staffing.co.jp/engineer/entry/20240726_1

また、2025年4月9日にAmazon Q Developer の言語サポートが拡大されて、日本語にも対応されたことで、より使いやすくなっています。

https://aws.amazon.com/jp/blogs/news/amazon-q-developer-global-capabilities/


### Amazon Qにプロンプトを投げてみた結果


:::note
**プロンプト：**  
Webフォームの問い合わせが送信されたら、kintoneにレコード登録するAWS Lambda関数を作ってほしい。（言語：JavaScript、ライブラリ：kintone REST API Client）
:::



#### 出力されたコード（JavaScript）


```javascript
const { KintoneRestAPIClient } = require('@kintone/rest-api-client');

exports.handler = async (event, context) => {
    // 環境変数からkintoneの認証情報を取得
    const KINTONE_BASE_URL = process.env.KINTONE_BASE_URL;
    const KINTONE_API_TOKEN = process.env.KINTONE_API_TOKEN;
    const KINTONE_APP_ID = process.env.KINTONE_APP_ID;

    try {
        // kintoneクライアントの初期化
        const client = new KintoneRestAPIClient({
            baseUrl: KINTONE_BASE_URL,
            auth: {
                apiToken: KINTONE_API_TOKEN
            }
        });

        // POSTリクエストのボディをパース
        const requestBody = JSON.parse(event.body);

        // kintoneに登録するレコードデータを作成
        const record = {
            name: {
                value: requestBody.name
            },
            email: {
                value: requestBody.email
            },
            subject: {
                value: requestBody.subject
            },
            message: {
                value: requestBody.message
            },
            submitDate: {
                value: new Date().toISOString()
            }
        };

        // kintoneにレコードを追加
        const response = await client.record.addRecord({
            app: KINTONE_APP_ID,
            record: record
        });

        // 成功レスポンスを返す
        return {
            statusCode: 200,
            headers: {
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': '*' // CORSの設定
            },
            body: JSON.stringify({
                message: 'Successfully created record',
                recordId: response.id
            })
        };

    } catch (error) {
        console.error('Error:', error);
        
        // エラーレスポンスを返す
        return {
            statusCode: 500,
            headers: {
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': '*' // CORSの設定
            },
            body: JSON.stringify({
                message: 'Error creating record',
                error: error.message
            })
        };
    }
};

```
講義で使用したコードと同等のクオリティのものが、出力されました。
さらに、以下のような追加設定も自動で提案されます：
- Lambda関数の環境変数の設定
- 依存パッケージ（@kintone/rest-api-client）のインストール
- API GatewayやIAMの設定例


また、Amazon Qは、対話の中で次にやるべきステップも提案してくれます。
今回は、二つ目の質問を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3582762/56b3821d-e590-4507-8cff-76ed88f5f487.png)

以下のような設定例も追加で提案してくれました。

- Lambda関数のVPC設定例
- IAMロールの最小権限設定
- 環境変数の暗号化
- 入力値のバリデーション
- タイムアウトとメモリの最適設定
- リクエスト制限（API Gateway使用時）
- ログ・モニタリングの設定 など


---

## 使ってみた感想

- ChatGPTと違って、IAMロールやVPCの用語が前提で話が進むので、AWS環境に特化して使える
- 次にやるべき操作を自動で教えてくれるので効率化を図れる
- セキュリティや構成面のアドバイスをしてくれるので心強い


### 今後深掘りしたい機能

Amazon Q には以下のような機能もあります。
- コードのリファクタリング提案
- テストコードの生成
- コードの説明表示
- 修正・最適化・プロンプトへの送り直し

既存のプロジェクトにAmazon Qを適用して、保守やレビューに活用してみたいです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3582762/8af38a1d-d152-4a41-bf58-9c899e79dbd1.png)


---

## まとめ

今回は「kintone × AWS Lambda 連携処理」の作成を通じて、Amazon Q Developer を実際に使ってみた内容を簡単にまとめました。

今後はコード生成だけでなく、保守性やセキュリティを意識した設計支援にも活用していけるか、さらに検証していきたいと思います。