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 のセットアップ
久保
今日は、Amazon SageMaker Studio Labで Amazon CodeWhisperer のエクステンションをセットアップして、データサイエンス 100 本ノック を解いてみるのはどうでしょう?
金森
では私がドライバーやるので、皆さんナビゲートお願いします !
王
では SageMaker Studio Lab にアクセスしてください。
安達
SageMaker Studio Lab のアカウント持ってます ?
金森
申請してた気がするので、Sign in してみますね。
久保
SageMaker Studio Lab は初めて使うときは申請が必要ですね。
* 2023 年 7 月 18 日現在、Amazon SageMaker Studio Lab を初めて使う際にはフォームから申請して、承認を受ける必要があります。詳しくは こちら の手順をご参照ください。
金森
無事ログインできました !
久保
「Start runtime」のボタンを押してください。今回は CPU で良いかな。
クリックすると拡大します
金森
起動できました。次はどうしましょう ?
安達
「Open project」をクリックですね。
クリックすると拡大します
安達
立ち上がったので、エクステンションを入れましょうか。左のメニューにパズルみたいなアイコンありますよね。
クリックすると拡大します
王
CodeWhisperer を Jupyter で利用する場合は、拡張機能のインストールが必須なんですよね ?まずは拡張機能のインストールしてみましょうか。
でも、ここからはインストールできなさそうですね。
安達
pip install するコマンドが必要なんですかね ?
久保
ターミナルを開きましょうか。「File」>「New」>「Terminal」でターミナルを開いてください。
* 実際のインストール手順は こちら の JupyterLab へのインストール手順をご参照ください。
pip install amazon-codewhisperer-jupyterlab-ext
金森
開きました !
お、入ってる。これで動くはず、ですか ?
久保
インストールした拡張を有効にするためのコマンドを実行しないといけないですね。
jupyter server extension enable amazon_codewhisperer_jupyterlab_ext
久保
jupiter-server のリスタートをしましょう。これで拡張の中に含まれていればインストールされてますね。
安達
入ってますね !
クリックすると拡大します
2. とりあえず Amazon CodeWhisperer を動かしてみよう
久保
では、試しにノートブックでも立ち上げてみましょうか ?
金森
「File」→「New」→「Notebook,,, python」で良いですか ?
あれ、でもなんか、CodeWhisperer が動かないな。
安達
CodeWhisperer では Indivisual 版の場合、AWS Builder ID を紐づける必要があるので、紐付けをやってみましょう。
王
ウィンドウの下に “CodeWhisperer” っていうところがあるから、そこからサインインできそうですね。
クリックすると拡大します
金森
これは気づきづらいかもですねー、王さんナイス !
「Start CodeWhisperer」を押して・・・。これで接続してるんですかね ?
金森
安達
2 行目の URL に接続して、AWS Builder ID でログインしてください。
クリックすると拡大します
安達
その後のページで、3 行目のコードをコピーします。
安達
「Allow CodeWhisperer for JupyterLab to access your data?」の画面が表示されたら、「Allow」をクリックします。
クリックすると拡大します
安達
Please wait のあと成功画面が出るので、そしたら元のポップアップで「Copy Code and Proceed」ボタンを押します。ちょっと待つと繋がるはずです。
クリックすると拡大します
金森
繋がった !
じゃ、コメント書いてみますか。“upload file S3” と・・・
クリックすると拡大します
久保
おお、出てきましたね。では、本題の「データサイエンス 100 本ノック」に入っていきますか !
3. データサイエンス 100 本ノックの準備をしよう !
久保
データサイエンス 100 本ノックの GitHub のページ にアクセスしましょう。
Requirement の Cloud Service のところに、Amazon Sage Maker Studio Lab があるので、そこからひらけます。
王
Python 演習と Python 解答がありますが、今回はどちらでやりますか ?
久保
今日は Python 演習の方で CodeWhisperer にコードを書いてみてもらって、Python 解答と比較してみましょう。
安達
このリポジトリを clone すれば良いですか ?
久保
「Open Studio Lab」のボタンがあるので、そこをクリックすれば簡単に Studio Lab を実行できます。
クリックすると拡大します
金森
この画面では「Copy to Project」 ですね
クリックすると拡大します
安達
次に、「Clone Entire Project」ボタンですね。
クリックすると拡大します
久保
はい、その後「clone」ですね。
クリックすると拡大します
金森
これで、自動的に clone されますね。
クリックすると拡大します
王
Conda の環境を作るか聞かれたので、ここで「OK」ですね。
クリックすると拡大します
久保
はい、これで自動的に 100 本ノックの環境がつくられます !
クリックすると拡大します
金森
CodeWhisperer をインストールした時とは別の SageMaker Studio Lab のウインドウを開いているので、改めて CodeWhisperer の接続しましょう。
環境構築には数分かかりますね。
安達
準備できました。どうすれば良いんでしたっけ ?
久保
docker フォルダの中の、work に、3 つファイルがあるんですが、python の nodebook である「preprocess_knock_Python.ipynb」を開いてください。
クリックすると拡大します
安達
開きました !
久保
そうすると、先ほど作成した環境を選ぶ画面が出てきます。
金森
「100Knocks-prep:Python」ってやつですかね。
久保
はい、そうです、それを「Select」して、一番最初のセルを実行しましょう。
クリックすると拡大します
金森
行くぜ !
って、これは成功しますね。(笑)
クリックすると拡大します
4. データサイエンス 100 本ノックに CodeWhisperer でチャレンジ !
久保
上手くいったのでここからが本番ですね。
コメントを作ってみて、お題である「レシート明細データ (de_receipt)」から先頭 10 件を表示するコードを生成してくれるか、という話です。
金森
では、とりあえず日本語で打ってみますか。
「df_receiptから先頭10件を表示して」
王
2023 年 8 月現在、CodeWhisperer は正式には英語のみ対応ですが、学習しているデータには日本語のコメントが含まれているコードも含まれているので、日本語でも動作することがありますね。
安達
ちゃんと提案されましたね。
金森
うんうん・・・
あれ ? なんか勝手にコメントも追加されてコードが追加されましたね。
金森
とりあえず実行してみましょうか。
安達
日本語でいけましたね。
金森
次の問題も行ってみましょう。
「df_receipt からsales_ymd、customer_id、product_cd、amountの列を10件表示せよ」 と・・・。
王
コードの提案が出てきましたね。実行してみますか。
クリックすると拡大します
久保
おお、合ってますね !
金森
知ってるコードだと直接コード書いちゃった方が早いかもしれないですが、初めてやる操作だと便利ですね !
王
次の問題に行ってみましょう。
金森
さっきのコメントに、「sales_ymdをsales_dateに項目名を変更する」を追加、と。
安達
エラーになっちゃいましたね。rename させたかったのに、項目名を直接変えてしまっていますね。
クリックすると拡大します
久保
最初に rename の指示を出した方が良さそうです。
安達
英語ですが、「rename sales_ymd to sales_date」にすると上手く推論されますね
金森
これ、前のセルのコンテキストを引き継いでそうですね、head(10) で表示するとか。
クリックすると拡大します
久保
そういえば、推論はいくつかの候補が出て選べるはずですよね ?
王
Jupyter だと ↑↓ で選べるみたいです。
安達
他のIDE だと ← → で選ぶみたいですね。
※ IDEごとのショートカットについては こちら をご参照ください。
金森
次に行ってみましょうか、P-004。
安達
これ、「display」くらいまで打つと、コメントも推測してくれますね。
金森
notebook の文章も読んでくれるんですね !
久保
コメントも推測してくれるの地味にありがたいですね !
金森
ただ、これだとフィルターだけで列の指定は反映されていないですね。
安達
私の環境だと「display」だけで全部うまくいきますね !
久保
マークダウンの内容もコンテキストとして読んでくれて、サジェストしてくれていますね。
王
タブ押して受け入れて実行、だけでどんどん進んじゃいますね。
5. やってみた感想
この後もしばらく SA で問題を CodeWhisperer に解かせてみた後、お互いの感想を語ってもらいました。
金森
実際やってみてどうでしたか ?
王
思っていた以上に賢くサジェストされましたね ! マークダウンのセルまでコンテキストとして取り込まれるのは驚きでした。
久保
Pandas のメソッドとか、咄嗟に出てこない時もあるので、そういう時便利ですね。
安達
ペアプログラミングしているみたいな楽しさがありますね !
金森
うまくサジェストされない時も、追加の情報をコメントで提供すると修正された提案が出てきますしね。
安達
雑な英語でもやりたいことを羅列していくと、ちゃんと考慮してくれるので、そんなに英語を難しく考えないでも良いかな、とも思いました !
王
正規表現なんかも出してくれるのは便利ですね。
(正規表現を出してみた図)
久保
でも、もっともらしく見えるのも出てくるので、レビューをお願いされた人も迷いそうですね ?
金森
しっかりレビューできるように、データサイエンス 100 本ノックしっかりやらないとですね。
安達
CodeWhisperer 使うと、タブ打って Enter の繰り返しになっちゃいますけど。(笑)
王
楽すぎてノックのしがいがない ! (笑)
久保
データサイエンス 100 本ノックは素晴らしいコンテンツで、簡単に SageMaker Studio Lab で実行できます。レビューや良いコメントでのサジェストに役立つはずですので、ぜひご自身でもチャレンジしてみてください !
6. まとめ
Amazon SageMaker Studio Lab に Amazon CodeWhisperer を設定して、データサイエンス 100 本ノックを SA たちとやってみましたが、いかがでしたでしょうか?
簡単に環境を作って試せることや Amazon CodeWhsperer がどんな風にコードを提案してくれるのか、また、何より SA の楽しそうな雰囲気が伝われば幸いです。新しい技術を皆でワイワイ触ってみるのは楽しいですよね。
生成 AI は我々開発者の仕事の仕方を大きく変えてくれる可能性があります。ただ、それを活かすためには開発者もしっかり知識をつけていかなければなりません。
今回は CodeWhisperer の検証のためのお題としたデータサイエンス 100 本ノックは、素晴らしいコンテンツですので、ぜひ、CodeWhisperer のお試しにもご自身の腕試しと学びにもチャレンジしてみてください !
筆者プロフィール
金森 政雄
アマゾン ウェブ サービス ジャパン合同会社
デベロッパースペシャリスト ソリューションアーキテクト
Web、モバイル向けの自社サービスの開発やクラウドを活用したシステムの請負開発を経験後、パートナーソリューションアーキテクトとして、アマゾン ウェブ サービス ジャパン合同会社に入社。2021 年から DevAx チームとして、開発者の方に向けたイベントやワークショップの提供を中心に活動。
最近の個人的ニュースは家の近くのラーメン屋で、「まさお」という自分の名前と同じメニューがあったこと。
AWS を無料でお試しいただけます