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

ジュニアエンジニアの僕のAI Assistantの使い方と心構え/howtouse-ai-as...

ジュニアエンジニアの僕のAI Assistantの使い方と心構え/howtouse-ai-assistant-20240317

ジュニアエンジニアがAI Assistantを用いて開発する上での使い方と心構えについて共有する

Naoto Kamimoto

March 17, 2024
Tweet

More Decks by Naoto Kamimoto

Other Decks in Technology

Transcript

  1. 生成AIを用いた仕事の進め方 ①データ取得 ②データ整形 ③データ返却 DB Rails BFF ① ② ③

    [ { 'hoge_id' => 'uuid1', 'fuga_data' => [ { '2023-01-01' => 0.1 }, { '2023-01-02' => 0.2 } ] }, { 'hoge_id' => 'uuid2', 'fuga_data' => [ { '2023-01-03' => 0.3 }, { '2023-01-04' => 0.4 } ] } ] [ { 'uuid1' => { '2023-01-01' => 0.1 , '2023-01-02' => 0.2 }, 'uuid2' => { '2023-01-03' => 0.3 , '2023-01-04' => 0.4 } } ] 取得したデータ 返却するデータ データ整形がAPI実装業務の大部分を占める
  2. 生成AIを用いた仕事の進め方 [ { 'hoge_id' => 'uuid1', 'fuga_data' => [ {

    '2023-01-01' => 0.1 }, { '2023-01-02' => 0.2 } ] }, { 'hoge_id' => 'uuid2', 'fuga_data' => [ { '2023-01-03' => 0.3 }, { '2023-01-04' => 0.4 } ] } ] [ { 'uuid1' => { '2023-01-01' => 0.1 , '2023-01-02' => 0.2 }, 'uuid2' => { '2023-01-03' => 0.3 , '2023-01-04' => 0.4 } } ] Function Input Output 命題 : 次のInputをOutputに変換するFunctionを作成せよ ? 🤔❓ 生成AIを用いた仕事の進め方
  3. 生成AIを用いた仕事の進め方 次の#inputを#outputに変換するメソッドを rubyで作って下さい。 その際に、each_with_objectメソッドを用いて下さい # input ```ruby [ { 'hoge_id'

    => 'uuid1', 'fuga_data' => [ { '2023-01-01' => 0.1 }, ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ ] ``` #output ```ruby [ { 'uuid1' => { '2023-01-01' => 0.1 , ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ ] ``` プロンプト例 def convert_data(input) output = [{}] input.each do |hash| hoge_id = hash['hoge_id'] fuga_data = hash['fuga_data'].each_with_object({}) do |element, new_data| element.each do |date, value| new_data[date] = value end end output[0][hoge_id] = fuga_data end output end 出力例
  4. 生成AIを用いた仕事の進め方 [ { 'hoge_id' => 'uuid1', 'fuga_data' => [ {

    '2023-01-01' => 0.1 }, { '2023-01-02' => 0.2 } ] }, { 'hoge_id' => 'uuid2', 'fuga_data' => [ { '2023-01-03' => 0.3 }, { '2023-01-04' => 0.4 } ] } ] [ { 'uuid1' => { '2023-01-01' => 0.1 , '2023-01-02' => 0.2 }, 'uuid2' => { '2023-01-03' => 0.3 , '2023-01-04' => 0.4 } } ] Function Input Output 命題 : 次のInputをOutputに変換するFunctionを作成せよ ? 🤔❓
  5. 生成AIを用いた仕事の進め方 [ { 'hoge_id' => 'uuid1', 'fuga_data' => [ {

    '2023-01-01' => 0.1 }, { '2023-01-02' => 0.2 } ] }, { 'hoge_id' => 'uuid2', 'fuga_data' => [ { '2023-01-03' => 0.3 }, { '2023-01-04' => 0.4 } ] } ] [ { 'uuid1' => { '2023-01-01' => 0.1 , '2023-01-02' => 0.2 }, 'uuid2' => { '2023-01-03' => 0.3 , '2023-01-04' => 0.4 } } ] Function Input Output 命題 : 次のInputをOutputに変換するFunctionを作成せよ def convert_data(input) output = [{}] input.each do |hash| hoge_id = hash['hoge_id'] fuga_data = hash['fuga_data'].each_with_object({}) do |element, new_data| element.each do |date, value| new_data[date] = value end end output[0][hoge_id] = fuga_data end output end 😏 🎉
  6. 次の#inputを#outputに変換するメソッドを rubyで作って下さい。 その際に、each_with_objectメソッドを用いて下さい # input ```ruby [ { 'hoge_id' =>

    'uuid1', 'fuga_data' => [ { '2023-01-01' => 0.1 }, ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ ] ``` #output ```ruby [ { 'uuid1' => { '2023-01-01' => 0.1 , ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ ] ``` プロンプト例 意識するべきポイント/心構え Function Input Output ポイント ・①Input/Outputをちゃんと定義して渡す ・②適切なConditionを添加する
  7. 次の#inputを#outputに変換するメソッドを rubyで作って下さい。 その際に、each_with_objectメソッドを用いて下さい # input ```ruby [ { 'hoge_id' =>

    'uuid1', 'fuga_data' => [ { '2023-01-01' => 0.1 }, ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ ] ``` #output ```ruby [ { 'uuid1' => { '2023-01-01' => 0.1 , ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ ] ``` プロンプト例 意識するべきポイント/心構え Function Input Output Condition ポイント ・①Input/Outputをちゃんと定義して渡す ・②適切なConditionを添加する
  8. 意識するべきポイント/心構え 心構え ・①受け取ったFunctionをちゃんと理解する ・②ConditionをPRレビューから習得し増やす 出力例 def convert_data(input) output = [{}]

    input.each do |hash| hoge_id = hash['hoge_id'] fuga_data = hash['fuga_data'].each_with_object({}) do |element, new_data| element.each do |date, value| new_data[date] = value end end output[0][hoge_id] = fuga_data end output end Q: 〇〇メソッドって何ができるの ? Q: n行目のデータの状態はどうなる ? Q: なんで〇〇メソッド使う ? ◇◇メソッドでよくね?
  9. time proficiency time proficiency time proficiency 生成AIを用いた実装 人による実装 「生成AIを用いた実装」 vs

    「人による実装 」  を考えてみる vs 比較 生成AIがジュニアエンジニアにもたらす懸念
  10. time proficiency 比較 生成AIを用いた実装 の方が早い領域 人による実装 の方が早い領域 懸念 ・境界線 :

    time[AIを用いた実装] == time[人による実装] ・このグラフは「命題」によって異なる ・「命題」と「熟練度」次第で境界線を超えることはおおいにある ・その場合、人による実装の方が生産性が高い ・生成AIによる実装だけだと、人による実装の成熟度が上がりにくい – :生成AIを用いた実装 – :人による実装 生成AIがジュニアエンジニアにもたらす懸念