Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

ChatGPT を使ったCDK コーディングの強みと弱み そしてその乗り越え方 INPUT OUTPUT 1 Python を使用してAWS CDK で EventBridge を利用し、日本時間の 朝9 時に"Hello ChatGPT" を返す Lambda 関数が実行される サーバレスアーキテクチャを構築する 方法を教えて VSCode 、Microsoft 、https://azure.microsoft.com/ja-jp/products/visual-studio-code #nncstudy 転載、複製、改変等は禁止します

Slide 9

Slide 9 text

ChatGPT を使ったCDK コーディングの強みと弱み そしてその乗り越え方 INPUT OUTPUT 1 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 転載、複製、改変等は禁止します

Slide 10

Slide 10 text

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 転載、複製、改変等は禁止します

Slide 11

Slide 11 text

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 転載、複製、改変等は禁止します

Slide 12

Slide 12 text

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 転載、複製、改変等は禁止します

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

ChatGPT を使ったCDK コーディングの強みと弱み そしてその乗り越え方 プロンプト 修正 $ flake8 app.py | echo $0 0 修正内容(from ChatGPT) 修正結果 クラス定義の前に2 つの空白行を追加しました ( 行 9) 。 EventBridge ルールの定義において、長い行を改 行して整形しました ( 行 26) 。 変更点: 1. 2. 下記がコード内容とそれに対するflake8 の指摘内容 です。指摘を直すようにコードを修正して。 ・コードの内容 コードをコピる ・指摘内容 flake8 の指摘内容コピる #nncstudy 転載、複製、改変等は禁止します

Slide 20

Slide 20 text

ChatGPT を使ったCDK コーディングの強みと弱み そしてその乗り越え方 プロンプト 修正 $ flake8 app.py | echo $0 0 修正内容(from ChatGPT) 修正結果 クラス定義の前に2 つの空白行を追加しました ( 行 9) 。 EventBridge ルールの定義において、長い行を改 行して整形しました ( 行 26) 。 変更点: 1. 2. flake8 は問題 なし 下記がコード内容とそれに対するflake8 の指摘内容 です。指摘を直すようにコードを修正して。 ・コードの内容 コードをコピる ・指摘内容 flake8 の指摘内容コピる #nncstudy 転載、複製、改変等は禁止します

Slide 21

Slide 21 text

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 転載、複製、改変等は禁止します

Slide 22

Slide 22 text

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 転載、複製、改変等は禁止します

Slide 23

Slide 23 text

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 転載、複製、改変等は禁止します

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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 転載、複製、改変等は禁止します

Slide 26

Slide 26 text

ChatGPT を使ったCDK コーディングの強みと弱み そしてその乗り越え方 正解! プロンプト OUTPUT このコードはAWS のコスト管理のために、AWS Budgets を使って月額コストが設定した予算を超え た場合に通知を受け取る仕組みを構築しています。 コストがしきい値を超えた場合、AWS Budgets が SNS トピックに通知を送信し、Lambda 関数がそれ を処理してLINE Notify などのサービスに通知を送る ことができます。 Budgets SNS Lambda LINE 下記コードがなにしてるか教えて --- コードの内容(CDK コードのみ) #nncstudy 転載、複製、改変等は禁止します

Slide 27

Slide 27 text

ChatGPT を使ったCDK コーディングの強みと弱み そしてその乗り越え方 ALB EC2 プロンプト OUTPUT 下記コードがなにしてるか教えて --- コードの内容(CDK コードのみ) (Application Load Balancer でリクエストを負荷分 散し、リクエスト数によってAmazon EC2 が Amazon EC2 Auto Scaling でオートスケール) ChatGPT 、OpenAI 、https://openai.com/blog/chatgpt #nncstudy 転載、複製、改変等は禁止します

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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