Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChatGPTを使ったCDKコーディングの強みと弱み、そしてその乗り越え方

 ChatGPTを使ったCDKコーディングの強みと弱み、そしてその乗り越え方

Yusuke Shimizu

April 27, 2023
Tweet

More Decks by Yusuke Shimizu

Other Decks in Technology

Transcript

  1. NRI
    ネットコム TECH & DESIGN STUDY #6
    ChatGPTを使った
    CDKコーディングの
    強みと弱み
    そしてその乗り越え方
    志水 友輔
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  2. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    志水 友輔 (しみず ゆうすけ)
    NRI
    ネットコム / CLOUD ARCHITECT
    2023 Japan AWS Ambassadors
    2023 Japan AWS All Certifications
    Engineers(2021-)
     AWS CDK/Cloud9/
    カメラ/
    つけ麺
    SysOps
    試験本書きました
    Blog:
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  3. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    ChatGPTとは
    OpenAI
    が2022
    年11
    月に公開した人工知能(AI)
    チャットボット。自然で意味のある文章を生成する
    ことができる
    人工知能チャットボット
    自然言語処理(NLP
    )タスクに優れており、質問へ
    の回答や文章の要約や翻訳はもちろん、コード生成
    やコードの説明など開発者の助けも可能
    開発者としても有用
    ChatGPT
    は、2021
    年9
    月までの最新技術をベースに
    しており、それ以降の最新技術については、継続的
    にアップデートされることが期待される
    知識の限界
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  4. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    ChatGPTとは
    #nncstudy
    ChatGPT
    、OpenAI
    、https://openai.com/blog/chatgpt 転載、複製、改変等は禁止します

    View Slide

  5. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    ChatGPTとは
    #nncstudy
    ChatGPT
    、OpenAI
    、https://openai.com/blog/chatgpt 転載、複製、改変等は禁止します

    View Slide

  6. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    コーディングの種類
    with ChatGPT
    コード生成
    コード変換(CDK->Test/Test->CDK)
    0->1
    コード修正
    1->100
    コード説明
    100->100
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  7. 朝9
    時に起動するLambda
    コード生成
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  8. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    INPUT OUTPUT

    Python
    を使用してAWS CDK

    EventBridge
    を利用し、日本時間の
    朝9
    時に"Hello ChatGPT"
    を返す
    Lambda
    関数が実行される
    サーバレスアーキテクチャを構築する
    方法を教えて
    VSCode
    、Microsoft
    、https://azure.microsoft.com/ja-jp/products/visual-studio-code
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  9. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    INPUT OUTPUT

    Python
    を使用してAWS CDK

    EventBridge
    を利用し、日本時間の
    朝9
    時に"Hello ChatGPT"
    を返す
    Lambda
    関数が実行される
    サーバレスアーキテクチャを構築する
    方法を教えて
    言語をPython
    に指定
    日本時間の9
    時(UTC0
    時)に
    なってる
    Rule
    とFunction

    紐付けしてる
    VSCode
    、Microsoft
    、https://azure.microsoft.com/ja-jp/products/visual-studio-code
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  10. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    OUTPUT2 OUTPUT3
    ChatGPT
    、OpenAI
    、https://openai.com/blog/chatgpt
    、アクセス日:2023/03/28
    VSCode
    、Microsoft
    、https://azure.microsoft.com/ja-jp/products/visual-studio-code
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  11. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    OUTPUT2 OUTPUT3
    CDK
    コードに沿った手順
    Lambda
    の場所やファイル名
    ChatGPT
    、OpenAI
    、https://openai.com/blog/chatgpt
    、アクセス日:2023/03/28
    VSCode
    、Microsoft
    、https://azure.microsoft.com/ja-jp/products/visual-studio-code
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  12. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    OUTPUT2 OUTPUT3
    body
    でHello ChatGPT

    返してる
    handler
    名もCDK
    と合ってる
    ChatGPT
    、OpenAI
    、https://openai.com/blog/chatgpt
    、アクセス日:2023/03/28
    VSCode
    、Microsoft
    、https://azure.microsoft.com/ja-jp/products/visual-studio-code
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  13. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    INPUT OUTPUT

    Python
    を使用してAWS CDK

    EventBridge
    を利用し、日本時間の
    朝9
    時に"Hello ChatGPT"
    を返す
    Lambda
    関数が実行される
    サーバレスアーキテクチャを構築する
    方法を教えて
    core
    をimport
    してる
    →v2
    のコードになってない
    VSCode
    、Microsoft
    、https://azure.microsoft.com/ja-jp/products/visual-studio-code
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  14. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    修正方法
    cdk-sample
    の修正をINPUT
    https://github.com/aws-samples/aws-cdk-
    examples/commit/b6d65ac3c105b68b583a8
    7da8f2e7c4def1e980a#diff-
    d4d60597adf6490245ba6583d79eea5135cf8
    82b45b2dcc7cf32a78e8463b1bb
    core
    をimport
    したがるタイプなので、修正後の
    コードを出して明示的に指摘する
    差分
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  15. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    OUTPUT4
    起動確認
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  16. 改善サイクルを回す
    コード修正
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  17. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    Fail
    Pass
    Fail
    flake8
    cdk-nag
    普段の開発サイクル
    静的解析->
    セキュリティ解析
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  18. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    Fail
    Pass
    Fail
    flake8
    cdk-nag
    普段の開発サイクル
    Fail->Pass
    が大変
    ChatGPT
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  19. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    プロンプト 修正
    $ flake8 app.py | echo $0
    0
    修正内容(from ChatGPT)
    修正結果
    クラス定義の前に2
    つの空白行を追加しました
    (
    行 9)

    EventBridge
    ルールの定義において、長い行を改
    行して整形しました (
    行 26)

    変更点:
    1.
    2.
    下記がコード内容とそれに対するflake8
    の指摘内容
    です。指摘を直すようにコードを修正して。
    ・コードの内容
    コードをコピる
    ・指摘内容
    flake8
    の指摘内容コピる
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  20. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    プロンプト 修正
    $ flake8 app.py | echo $0
    0
    修正内容(from ChatGPT)
    修正結果
    クラス定義の前に2
    つの空白行を追加しました
    (
    行 9)

    EventBridge
    ルールの定義において、長い行を改
    行して整形しました (
    行 26)

    変更点:
    1.
    2.
    flake8
    は問題
    なし
    下記がコード内容とそれに対するflake8
    の指摘内容
    です。指摘を直すようにコードを修正して。
    ・コードの内容
    コードをコピる
    ・指摘内容
    flake8
    の指摘内容コピる
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  21. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    プロンプト 修正
    下記がコード内容とそれに対するcdk-nag
    の指摘内
    容です。指摘を直すようにコードを修正して。
    ・コードの内容
    コードをコピる
    ・指摘内容
    cdk-nag
    の結果をコピる
    $ cdk diff
    ...
    hello_chatgpt_lambda.role = lambda_role
    AttributeError: can't set attribute
    Subprocess exited with error 1
    修正内容(from ChatGPT)
    修正結果
    Lambda
    関数のランタイムをPython 3.9
    に更新し
    ました (
    行 21)

    AWS
    マネージドポリシーの代わりに、カスタム
    ポリシーを作成し、Lambda
    関数に関連付けられ
    たロールにアタッチしました (
    行 25-45)

    変更点:
    1.
    2.
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  22. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    プロンプト 修正
    `
    hello_chatgpt_lambda.role = lambda_role`
    の部分で
    `
    AttributeError: can't set attribute`
    というエラーが出ました。修正して
    $ cdk deploy
    ...
    ✅ ServerlessEventBridgeExample
    ✨ Deployment time: 72.48s
    ...
    修正内容(from ChatGPT)
    修正結果
    _lambda.Function
    の定義を更新して、role
    パラ
    メータに lambda_role
    を割り当てました (
    行 34-
    40)

    Lambda
    関数の定義をロールの定義の後に移動し
    ました。
    変更点:
    1.
    2.
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  23. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    プロンプト 修正
    $ cdk deploy
    ...
    ✅ ServerlessEventBridgeExample
    ✨ Deployment time: 72.48s
    ...
    修正内容(from ChatGPT)
    修正結果
    _lambda.Function
    の定義を更新して、role
    パラ
    メータに lambda_role
    を割り当てました (
    行 34-
    40)

    Lambda
    関数の定義をロールの定義の後に移動し
    ました。
    変更点:
    1.
    2.
    cdk_nag

    いけた!
    `
    hello_chatgpt_lambda.role = lambda_role`
    の部分で
    `
    AttributeError: can't set attribute`
    というエラーが出ました。修正して
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  24. これってどーゆーこーど?
    コード説明
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  25. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    プロンプト OUTPUT
    下記コードがなにしてるか教えて
    ---
    コードの内容(CDK
    コードのみ)
    (AWS Budgets
    からAmazon Simple Notification
    Service (Amazon SNS)
    へ通知しAWS Lambda
    でデー
    タを受け取り、LINE
    へ通知する構成)
    Budgets SNS Lambda
    LINE
    ChatGPT
    、OpenAI
    、https://openai.com/blog/chatgpt
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  26. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    正解!
    プロンプト OUTPUT
    このコードはAWS
    のコスト管理のために、AWS
    Budgets
    を使って月額コストが設定した予算を超え
    た場合に通知を受け取る仕組みを構築しています。
    コストがしきい値を超えた場合、AWS Budgets

    SNS
    トピックに通知を送信し、Lambda
    関数がそれ
    を処理してLINE Notify
    などのサービスに通知を送る
    ことができます。
    Budgets SNS Lambda
    LINE
    下記コードがなにしてるか教えて
    ---
    コードの内容(CDK
    コードのみ)
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  27. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    ALB EC2
    プロンプト OUTPUT
    下記コードがなにしてるか教えて
    ---
    コードの内容(CDK
    コードのみ)
    (Application Load Balancer
    でリクエストを負荷分
    散し、リクエスト数によってAmazon EC2

    Amazon EC2 Auto Scaling
    でオートスケール)
    ChatGPT
    、OpenAI
    、https://openai.com/blog/chatgpt
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  28. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    プロンプト OUTPUT
    ChatGPT
    、OpenAI
    、https://openai.com/blog/chatgpt
    正解!
    下記コードがなにしてるか教えて
    ---
    コードの内容(CDK
    コードのみ)
    #nncstudy
    ALB EC2
    転載、複製、改変等は禁止します

    View Slide

  29. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    プロンプト OUTPUT
    スクリプトは下記です。alb
    にアクセスすると何が表
    示される?
    ---
    スクリプトの内容
    #nncstudy
    ALB EC2
    転載、複製、改変等は禁止します

    View Slide

  30. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    プロンプト OUTPUT
    スクリプトは下記です。alb
    にアクセスすると何が表
    示される?
    ---
    スクリプトの内容
    正解!
    #nncstudy
    ALB EC2
    転載、複製、改変等は禁止します

    View Slide

  31. ChatGPT
    の実力
    まとめ
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  32. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    コーディングの種類
    with ChatGPT
    コード生成
    コード変換
    0->1
    コード修正
    1->100
    コード説明
    100->100
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  33. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    ChatGPTとの相性 コード生成
    コード変換
    0->1
    コード修正
    1->100
    コード説明
    100->100
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  34. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    ChatGPTとの相性 コード生成
    コード変換
    0->1
    コード修正
    1->100
    コード説明
    100->100
    #nncstudy
    求めてる答えが大体
    出てくる
    転載、複製、改変等は禁止します

    View Slide

  35. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    ChatGPTとの相性 コード生成
    コード変換
    0->1
    コード修正
    1->100
    コード説明
    100->100
    #nncstudy
    v2
    化が癖有り
    転載、複製、改変等は禁止します

    View Slide

  36. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    ChatGPTとの相性 コード生成
    コード変換
    0->1
    コード修正
    1->100
    コード説明
    100->100
    #nncstudy
    v1->v2
    のコードをどれだけ
    INPUT
    出来るか勝負
    aws-samples
    リポジトリの
    v2
    化の差分を投入
    転載、複製、改変等は禁止します

    View Slide

  37. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    ChatGPTとの相性 コード生成
    コード変換
    0->1
    コード修正
    1->100
    コード説明
    100->100
    #nncstudy
    一緒に作っていく感覚
    転載、複製、改変等は禁止します

    View Slide

  38. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    IaC
    is
    Infrastructure as Code
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  39. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    IaC
    is
    Infrastructure as Code
    #nncstudy
    ChatGPT
    を足すと
    転載、複製、改変等は禁止します

    View Slide

  40. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    IaC
    is
    Infrastructure as Code
    with Copilot
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  41. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    IaCC
    is
    Infrastructure as Code
    with Copilot
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  42. ChatGPT
    を使ったCDK
    コーディングの強みと弱み
    そしてその乗り越え方
    IaC
    is
    Infrastructure as Chat
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide

  43. まとめ
    ChatGPT
    でコーディング速度アップ
    AWS CDK
    とChatGPT
    を組み合わせることで、迅速かつ正確
    なAWS
    インフラストラクチャの作成が可能
    コードを追加/
    修正/
    説明は得意
    0
    からコードを作るタイプはデータ期間の関係上苦手
    v2
    変換コードを多くINPUT
    すれば乗り越えられる
    教師ではなく副操縦士
    ChatGPT
    は答えを全てくれる教師ではなく、一緒に助け合い
    ながらコーディングをする副操縦士
    #nncstudy
    転載、複製、改変等は禁止します

    View Slide