AI コード支援サービス「Amazon CodeWhisperer」で遊んでみた
~ 第 1 回 データサイエンス 100 本ノック編
Author : 金森 政雄
builders.flash 読者の皆様こんにちは。この記事は数名のソリューションアーキテクト (SA) が集まって、AI コーディング支援サービスである Amazon CodeWhisperer を使って、1 時間で様々なことにチャレンジしてみた様子をご紹介します。
SA が楽しそうに新しい技術を触ってワイワイしている様子をご覧いただく中で、Amazon CodeWhisperer でどんなことができるのかイメージを掴んだり、なんらかの学びがあれば幸いです。
今回は Amazon CodeWhisperer が JupyterLab と Amazon SageMaker Studio の拡張機能として利用できるようになった ことを記念して、Amazon SageMaker Studio Lab を使った データサイエンス 100 本ノック (構造化データ加工編) に Amazon CodeWhisperer でチャレンジしてみようと思います ! それではお楽しみください !
1. まずは Amazon SageMaker Studio Lab のセットアップ
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
今日は、Amazon SageMaker Studio Labで Amazon CodeWhisperer のエクステンションをセットアップして、データサイエンス 100 本ノック を解いてみるのはどうでしょう?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_happy_80.7f6aa63a06942b5c955fc84fd7659806ded7bd86.png)
金森
では私がドライバーやるので、皆さんナビゲートお願いします !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_wang_normal_80.4ff6cb40ec6f8904d694adff4cbab72ab8f50e5a.png)
王
では SageMaker Studio Lab にアクセスしてください。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_question_80.ac8c9eb3b165805ad1b0a2b328b37c97290c6ca2.png)
安達
SageMaker Studio Lab のアカウント持ってます ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_normal_80.bdf6e80b9f2e88232942fdc79172bc78be93cc15.png)
金森
申請してた気がするので、Sign in してみますね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
SageMaker Studio Lab は初めて使うときは申請が必要ですね。
* 2023 年 7 月 18 日現在、Amazon SageMaker Studio Lab を初めて使う際にはフォームから申請して、承認を受ける必要があります。詳しくは こちら の手順をご参照ください。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_happy_80.7f6aa63a06942b5c955fc84fd7659806ded7bd86.png)
金森
無事ログインできました !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_question_80.287b034e59167a3ecfee37a3c60f7cd0c0b473b8.png)
金森
起動できました。次はどうしましょう ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_wang_trouble_80.c85a38e7920eb7a286141c74054e76e01bc5ad06.png)
王
CodeWhisperer を Jupyter で利用する場合は、拡張機能のインストールが必須なんですよね ?まずは拡張機能のインストールしてみましょうか。
でも、ここからはインストールできなさそうですね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_question_80.ac8c9eb3b165805ad1b0a2b328b37c97290c6ca2.png)
安達
pip install するコマンドが必要なんですかね ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
ターミナルを開きましょうか。「File」>「New」>「Terminal」でターミナルを開いてください。
* 実際のインストール手順は こちら の JupyterLab へのインストール手順をご参照ください。
pip install amazon-codewhisperer-jupyterlab-ext
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_happy_80.7f6aa63a06942b5c955fc84fd7659806ded7bd86.png)
金森
開きました !
お、入ってる。これで動くはず、ですか ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
インストールした拡張を有効にするためのコマンドを実行しないといけないですね。
jupyter server extension enable amazon_codewhisperer_jupyterlab_ext
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
jupiter-server のリスタートをしましょう。これで拡張の中に含まれていればインストールされてますね。
2. とりあえず Amazon CodeWhisperer を動かしてみよう
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
では、試しにノートブックでも立ち上げてみましょうか ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_question_80.287b034e59167a3ecfee37a3c60f7cd0c0b473b8.png)
金森
「File」→「New」→「Notebook,,, python」で良いですか ?
あれ、でもなんか、CodeWhisperer が動かないな。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_surprise_80.3c550c4d622ec52773c7ce94cfe8cf3ea1813920.png)
安達
CodeWhisperer では Indivisual 版の場合、AWS Builder ID を紐づける必要があるので、紐付けをやってみましょう。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_happy_80.7f6aa63a06942b5c955fc84fd7659806ded7bd86.png)
金森
これは気づきづらいかもですねー、王さんナイス !
「Start CodeWhisperer」を押して・・・。これで接続してるんですかね ?
金森
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/img_try-codewhisperer-01_06.8d96303a75e71d049686de0a03de0cecf1ac8ca8.png)
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_normal_80.dd0faf805381f078b7de25690adde162a373c6e8.png)
安達
その後のページで、3 行目のコードをコピーします。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/img_try-codewhisperer-01_08.7c2e567bf1bdbf407144cf4e7cdbac325da58f87.png)
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_normal_80.dd0faf805381f078b7de25690adde162a373c6e8.png)
安達
「Allow CodeWhisperer for JupyterLab to access your data?」の画面が表示されたら、「Allow」をクリックします。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_normal_80.dd0faf805381f078b7de25690adde162a373c6e8.png)
安達
Please wait のあと成功画面が出るので、そしたら元のポップアップで「Copy Code and Proceed」ボタンを押します。ちょっと待つと繋がるはずです。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_happy_80.c9cce4fe1f1005597cec32ae4607c343b200b704.png)
久保
おお、出てきましたね。では、本題の「データサイエンス 100 本ノック」に入っていきますか !
3. データサイエンス 100 本ノックの準備をしよう !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
データサイエンス 100 本ノックの GitHub のページ にアクセスしましょう。
Requirement の Cloud Service のところに、Amazon Sage Maker Studio Lab があるので、そこからひらけます。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_wang_question_80.04da0e854cbc38cef1d5ffbad222ef42de50939e.png)
王
Python 演習と Python 解答がありますが、今回はどちらでやりますか ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
今日は Python 演習の方で CodeWhisperer にコードを書いてみてもらって、Python 解答と比較してみましょう。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_question_80.ac8c9eb3b165805ad1b0a2b328b37c97290c6ca2.png)
安達
このリポジトリを clone すれば良いですか ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_normal_80.bdf6e80b9f2e88232942fdc79172bc78be93cc15.png)
金森
CodeWhisperer をインストールした時とは別の SageMaker Studio Lab のウインドウを開いているので、改めて CodeWhisperer の接続しましょう。
環境構築には数分かかりますね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_question_80.ac8c9eb3b165805ad1b0a2b328b37c97290c6ca2.png)
安達
準備できました。どうすれば良いんでしたっけ ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
docker フォルダの中の、work に、3 つファイルがあるんですが、python の nodebook である「preprocess_knock_Python.ipynb」を開いてください。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_happy_80.223cc43697f0c74bf9bca796db64c82df18780de.png)
安達
開きました !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
そうすると、先ほど作成した環境を選ぶ画面が出てきます。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_question_80.287b034e59167a3ecfee37a3c60f7cd0c0b473b8.png)
金森
「100Knocks-prep:Python」ってやつですかね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/img_try-codewhisperer-01_20.6577a18d6095834c01dc7f84c95a72afd3a3b960.png)
4. データサイエンス 100 本ノックに CodeWhisperer でチャレンジ !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_happy_80.c9cce4fe1f1005597cec32ae4607c343b200b704.png)
久保
上手くいったのでここからが本番ですね。
コメントを作ってみて、お題である「レシート明細データ (de_receipt)」から先頭 10 件を表示するコードを生成してくれるか、という話です。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_normal_80.bdf6e80b9f2e88232942fdc79172bc78be93cc15.png)
金森
では、とりあえず日本語で打ってみますか。
「df_receiptから先頭10件を表示して」
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_wang_happy_80.51d415c1ad1da3603e59dfde3315e7396102a96a.png)
王
2023 年 8 月現在、CodeWhisperer は正式には英語のみ対応ですが、学習しているデータには日本語のコメントが含まれているコードも含まれているので、日本語でも動作することがありますね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_normal_80.bdf6e80b9f2e88232942fdc79172bc78be93cc15.png)
金森
とりあえず実行してみましょうか。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/img_try-codewhisperer-01_25.c18be47328e1fdfbf915a400ab849b06caf58026.png)
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_happy_80.223cc43697f0c74bf9bca796db64c82df18780de.png)
安達
日本語でいけましたね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_normal_80.bdf6e80b9f2e88232942fdc79172bc78be93cc15.png)
金森
次の問題も行ってみましょう。
「df_receipt からsales_ymd、customer_id、product_cd、amountの列を10件表示せよ」 と・・・。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_happy_80.c9cce4fe1f1005597cec32ae4607c343b200b704.png)
久保
おお、合ってますね !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_happy_80.7f6aa63a06942b5c955fc84fd7659806ded7bd86.png)
金森
知ってるコードだと直接コード書いちゃった方が早いかもしれないですが、初めてやる操作だと便利ですね !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_wang_normal_80.4ff6cb40ec6f8904d694adff4cbab72ab8f50e5a.png)
王
次の問題に行ってみましょう。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/img_try-codewhisperer-01_27.07aa57b4df9914abc9c96fcdab2299ee863e290e.png)
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_question_80.287b034e59167a3ecfee37a3c60f7cd0c0b473b8.png)
金森
さっきのコメントに、「sales_ymdをsales_dateに項目名を変更する」を追加、と。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_trouble_80.867512d32ca061a42d359ff481b513f4576f38cf.png)
久保
最初に rename の指示を出した方が良さそうです。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_question_80.21adf242d239361d87788755cc46594add5bc68f.png)
久保
そういえば、推論はいくつかの候補が出て選べるはずですよね ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_wang_normal_80.4ff6cb40ec6f8904d694adff4cbab72ab8f50e5a.png)
王
Jupyter だと ↑↓ で選べるみたいです。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_surprise_80.3c550c4d622ec52773c7ce94cfe8cf3ea1813920.png)
安達
他のIDE だと ← → で選ぶみたいですね。
※ IDEごとのショートカットについては こちら をご参照ください。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_normal_80.bdf6e80b9f2e88232942fdc79172bc78be93cc15.png)
金森
次に行ってみましょうか、P-004。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/img_try-codewhisperer-01_31.48c198604ca61faddf1f8b98662233435e7e8682.png)
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_happy_80.223cc43697f0c74bf9bca796db64c82df18780de.png)
安達
これ、「display」くらいまで打つと、コメントも推測してくれますね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/img_try-codewhisperer-01_32.79e4804b985faeca5e282bfb32f4637b262fcf89.png)
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_happy_80.7f6aa63a06942b5c955fc84fd7659806ded7bd86.png)
金森
notebook の文章も読んでくれるんですね !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/img_try-codewhisperer-01_33.a9e6527597651e55c369fb202f8d8964835fdade.png)
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_happy_80.c9cce4fe1f1005597cec32ae4607c343b200b704.png)
久保
コメントも推測してくれるの地味にありがたいですね !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_trouble_80.4eeb0b1845bd53b806bfb8238908c143c3d88c57.png)
金森
ただ、これだとフィルターだけで列の指定は反映されていないですね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_happy_80.223cc43697f0c74bf9bca796db64c82df18780de.png)
安達
私の環境だと「display」だけで全部うまくいきますね !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_happy_80.c9cce4fe1f1005597cec32ae4607c343b200b704.png)
久保
マークダウンの内容もコンテキストとして読んでくれて、サジェストしてくれていますね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_wang_happy_80.51d415c1ad1da3603e59dfde3315e7396102a96a.png)
王
タブ押して受け入れて実行、だけでどんどん進んじゃいますね。
5. やってみた感想
この後もしばらく SA で問題を CodeWhisperer に解かせてみた後、お互いの感想を語ってもらいました。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_question_80.287b034e59167a3ecfee37a3c60f7cd0c0b473b8.png)
金森
実際やってみてどうでしたか ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_wang_happy_80.51d415c1ad1da3603e59dfde3315e7396102a96a.png)
王
思っていた以上に賢くサジェストされましたね ! マークダウンのセルまでコンテキストとして取り込まれるのは驚きでした。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_normal_80.12c9a819e05fa9562b43531922b6219bc9002228.png)
久保
Pandas のメソッドとか、咄嗟に出てこない時もあるので、そういう時便利ですね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_happy_80.223cc43697f0c74bf9bca796db64c82df18780de.png)
安達
ペアプログラミングしているみたいな楽しさがありますね !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_happy_80.223cc43697f0c74bf9bca796db64c82df18780de.png)
安達
雑な英語でもやりたいことを羅列していくと、ちゃんと考慮してくれるので、そんなに英語を難しく考えないでも良いかな、とも思いました !
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_confuse_80.bf323b8cb6be6abad7bec7ce4053ed4e89ebce8c.png)
久保
でも、もっともらしく見えるのも出てくるので、レビューをお願いされた人も迷いそうですね ?
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kanamori2_normal_80.bdf6e80b9f2e88232942fdc79172bc78be93cc15.png)
金森
しっかりレビューできるように、データサイエンス 100 本ノックしっかりやらないとですね。
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_adachi_happy_80.223cc43697f0c74bf9bca796db64c82df18780de.png)
安達
CodeWhisperer 使うと、タブ打って Enter の繰り返しになっちゃいますけど。(笑)
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_wang_happy_80.51d415c1ad1da3603e59dfde3315e7396102a96a.png)
王
楽すぎてノックのしがいがない ! (笑)
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/icon_kubo_happy_80.c9cce4fe1f1005597cec32ae4607c343b200b704.png)
久保
データサイエンス 100 本ノックは素晴らしいコンテンツで、簡単に SageMaker Studio Lab で実行できます。レビューや良いコメントでのサジェストに役立つはずですので、ぜひご自身でもチャレンジしてみてください !
6. まとめ
Amazon SageMaker Studio Lab に Amazon CodeWhisperer を設定して、データサイエンス 100 本ノックを SA たちとやってみましたが、いかがでしたでしょうか?
簡単に環境を作って試せることや Amazon CodeWhsperer がどんな風にコードを提案してくれるのか、また、何より SA の楽しそうな雰囲気が伝われば幸いです。新しい技術を皆でワイワイ触ってみるのは楽しいですよね。
生成 AI は我々開発者の仕事の仕方を大きく変えてくれる可能性があります。ただ、それを活かすためには開発者もしっかり知識をつけていかなければなりません。
今回は CodeWhisperer の検証のためのお題としたデータサイエンス 100 本ノックは、素晴らしいコンテンツですので、ぜひ、CodeWhisperer のお試しにもご自身の腕試しと学びにもチャレンジしてみてください !
筆者プロフィール
![](https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/2023/photo_masao-kanamori.1ce03b0292807c839355e413f8f945996842dea6.png)
金森 政雄
アマゾン ウェブ サービス ジャパン合同会社
デベロッパースペシャリスト ソリューションアーキテクト
Web、モバイル向けの自社サービスの開発やクラウドを活用したシステムの請負開発を経験後、パートナーソリューションアーキテクトとして、アマゾン ウェブ サービス ジャパン合同会社に入社。2021 年から DevAx チームとして、開発者の方に向けたイベントやワークショップの提供を中心に活動。
最近の個人的ニュースは家の近くのラーメン屋で、「まさお」という自分の名前と同じメニューがあったこと。
AWS を無料でお試しいただけます