この「ペア」は悪くないですね! AIとのペアプログラミング

この「ペア」は悪くないですね! AIとのペアプログラミング

翻訳者 |陳俊

レビュー | Chonglou

ペアプログラミングという概念を聞いたことがありますか? Wikipedia によると、これは 2 人のプログラマーがチームを組んで協力し、ソフトウェアを開発する方法です。 1 人のプログラマー、つまり「ドライバー」がコードを書き、もう 1 人のプログラマー、つまり「オブザーバー」または「パイロット」が、入力されるコードの各行を確認します。さらに、2 人のプログラマーは頻繁に役割を交換します。レビュープロセス中、「オブザーバー」は作業の「戦略的」方向性も考慮し、改善点や将来取り組むべき問題を提案します。その目的は、「観察者」の指示に基づいて、「ドライバー」が現在のタスクを完了するための「戦術的」側面にすべての注意を集中できるようにすることです。

過去 2 週間、私は人工知能 (AI) とのペア プログラミング方式で、まったく新しい言語とフレームワークを使用して、奇妙な開発環境で古いブログを再構築してきました。以下では、この再構築プロセスで AI を活用した私の経験をいくつか紹介します。

背景

この再構築において AI が重要な役割を果たすようにするために、私は次の 2 つのルールを定めました。

  1. 情報入手に従来の検索エンジンを使用する割合は20%を超えません
  2. 他の開発者に助けを求めないでください。

言い換えれば、AI は、この開発と学習のプロセスにおいて、私の主な情報源、パートナー、アシスタントになったのです。ある意味、このようなコラボレーションは、冒頭で述べた、人工知能がパートナーの役割を果たす「ペアプログラミング」に似ています。そこで私は、プロセス全体を通して、 GitHub Copilot ChatGPT Claude Warp (AIアシスタント)などのサービスを使用し、それらを重要なプログラミング「パートナー」とみなしました。

テクノロジースタックの選択

テクノロジースタックを選択する際には、主にChatGPTClaudeに頼りました。自分の技術的背景や具体的な要件などの詳細な情報を提供し、複数回のコミュニケーションを通じて、必要なプログラミング言語、フレームワーク、エディターが徐々に明確になっていきました。

ご存知のように、人工知能との会話は自由に流れることもあれば、発散することもあります。 AIが提案やプロンプトを出すたびに、対応する方向性や詳細を掘り下げ、定期的に自分の理解をまとめ、再度AIに確認します。数か月前と比べると、 GPT-4Claude 2 は質問者に盲目的に応じることはなくなり、代わりに私の理解と要約の誤りを迅速かつ丁寧に指摘し、私が間違った道に進むのを効果的に防いでくれます。最終的に、ブログのリファクタリングに必要な技術としてTypeScript Astro TailWindCSS VSCode を選択しました。

この段階では、AI が貴重な情報を効率的に提供し、迅速な意思決定を支援してくれました。その理由は次のような点にあると考えています。

  1. 明確な要件: 明確でわかりやすい要件により、人工知能との通信プロセス全体が簡素化され、質問者の意図を迅速に理解できるようになります。
  2. 成熟したテクノロジーの選択: 私が選択したテクノロジー スタックは、成熟したプロジェクトで構成されています。これらのプロジェクトには通常、活発なオンライン コミュニティと広範な公式ドキュメントがあります。この情報は、人工知能に信頼できる意味リソースを提供し、人工知能が関連するテクノロジーを深く理解することを保証します。
  3. 個人的な経験を組み込む: 他のプログラミング言語での経験を活かし、使い慣れた言語、フレームワーク、開発環境を「ペアリング」の議論の参考資料として使用し、AI が私のニーズをよりよく理解できるようにしました。
  4. 複数の AI プラットフォームの補完性: ChatGPTClaudeについて同時に議論を行いましたほとんどの場合、2 つのプラットフォームによって提供される情報は全体的に似ていますが、異なる方向に進む場合があり、これは「ペアリング」にパートナーを追加するのと同じです。
  5. 人間の判断は不可欠です。人工知能によって提供される情報の総量は従来の検索に比べて減少していますが、ユーザーに分析力と意思決定能力が欠けている場合は、依然として「選択の困難」に悩まされる可能性があります。したがって、質問者は強力な分析力と判断力を持っている必要があります。そうしないと、過度の自由によって満足のいく結果が得られなくなる可能性があります。

開発環境の設定

私はVSCodeを使用したことがありますが、メインの開発ツールとして使用したことはありません。また、 Node.js のインストールNPMの使用に関する私の経験は比較的限られています。この点、 AIは開発環境の構築を詳細に支援してくれました。

AI がコマンドライン操作のプロセスに応答する点は注目に値します。 Warpを搭載した AI アシスタントは非常に使いやすいため、エラーが発生した場合は、稲妻 ( ⚡️ )ボタンをクリックするだけで、AI アシスタントが関連するコマンドと出力をコンテキストとして人工知能に自動的に送信します。対照的に、 GitHub Copilotでは、完全なコンテキストを確保するために、解釈する出力を手動で選択する必要がありました。このタスクを完了するには、右クリック メニューの人工知能オプションまたはショートカット コマンド@workspace/explain #terminalSelectionを使用できますが、 Warpほど便利ではありません

Xcodeの統合テスト環境とは異なりVSCodeでは、開発者は使用する言語とフレームワークに基づいて適切なテスト フレームワークとプラグインを選択する必要があります。このプロセス中にいくつかの困難に遭遇しました。最初はAI の提案に基づいてJestをインストールしようとしましたが、開発環境とAstroとの互換性の問題で失敗しましたAI との話し合いが何度かうまくいかなかったため、検索エンジンに頼りましたが、それでも解決策は見つかりませんでした。最後に、オンラインの記事で、私が AI に伝えたことのない知識のポイントと、その構成に関する背景情報が紹介されていました。これを基に、人工知能の指導のもと、 Jestフレームワークの構成を実装することに成功しました。

しかし、その後の単体テストで、 Jest はAstroのランタイム環境では動作できないことがわかりました。 Astroの公式ドキュメントを参照すると、実際にはViTestの方がAstro適したテスト フレームワークであることがわかりました。さらに、 ViTestのインストール プロセスは非常に便利で、 Astroコードのテストを完璧に実行できます。

そのため、このプロジェクトでは、 Astro固有のテストにはViTestを使用し、その他のテストにはJest を使用するという 2 つのテスト フレームワークを構成することになりました

また、設定の問題なのか分かりませんが、 GitHub Copilotがショートカットコマンドを通じて生成するデフォルトのテストコードはJestをベースにしています ViTestに適したテスト コードを生成するには、AI に話しかけてこの要求を明示的に行う必要があります。

上記の経験を通して、人工知能や検索エンジンの助けがあっても、最も権威のある情報源は依然として公式文書であることに気づきました。つまり、AI はこれらの文書をよく理解していますが、重要な情報を見逃してしまうことがあります。公式文書はかけがえのない権威を持ち、私たちにとって依然として優先的な情報源であることがわかります。

コードを読んで新しい言語を学ぶ

私はAstroが提供する公式テンプレートを読んでAstroについて学びました。これはTypeScript を学ぶ最良の方法でもあります。同様に、この段階では人工知能が決定的な補助的な役割を果たします。学習効率が大幅に向上しました。 Astroプロジェクトでは AstroファイルにTypeScript JavaScript HTML CSS 、特定のAstroタグや使用法などのさまざまな要素が含まれる場合があります当然のことながら、関連する経験のない私のような人にとって、人工知能の助けなしにどこから始めればよいかを知ることは難しいでしょう。

Astroは他のフレームワークよりも新しいものですが、AI の知識ベースはすでに Astro を十分に理解しており、コードのさまざまな部分の意味を明確に指摘できます。人工知能による具体的なコードの詳しい説明を通じて、コードの構造やロジックが徐々に理解できました。わからないことがあっても、必要に応じてさらに説明してくれます。

AIとの議論では、他のプログラミング言語やフレームワークに関する知識を人工知能との会話の参考にフル活用しました。同時に、私は定期的に自分の理解を要約し、誤解があれば人工知能に訂正を依頼します。さらに、議論が深まるにつれて、記録のためにAIに以前の議論の結論を定期的に提供するよう依頼します。

この段階に関連するコードの解釈と議論は主にGitHub Copilotで行われますGitHub Copilot は全体的にパフォーマンスは良好ですが、使用中に注意する必要がある点がいくつかあります。たとえば、

  1. 特定のコードが選択されていない場合、 GitHub Copilot は編集ウィンドウに現在表示されているコードのみを解釈します。
  2. GitHub Copilotにさらにコンテキストを提供するには、現在の問題のコンテキストとしてコミットするコードを手動で選択する必要があります。
  3. GitHub Copilot は複数のドキュメントにまたがるディスカッションをサポートしていないため、ユーザーはさまざまなドキュメントのコンテンツを自分で統合して完全なコンテキストを形成する必要があります。
  4. GitHub Copilot の回答には長さ制限があります。回答が長すぎる場合は、すでに提供されているコードがカバーされている可能性があります。この場合、 ChatGPTまたはClaudeの助けが必要になる可能性があります
  5. 場合によっては、 GitHub Copilot はChatGPTと同じ品質の回答を提供しないことがあります

プログラミング練習

プロンプトに基づいてコードを自動的に生成することは、開発者が人工知能のパワーを体験するための最良の方法の 1 つです。最近開発者コミュニティで熱い議論が巻き起こり、上記でも触れたGitHub Copilotは、開発者の意図を理解して高品質なコードをリアルタイムに生成する機能を持っています。ブログのリファクタリング プロジェクトでは、新しいブログを作成するだけでなく、その過程で新しい言語やフレームワークを学習して習得したいと考えていました。この点、 GitHub Copilotを有効にした後は、十分なヒントとコメントを提供すれば、 Copilot は対応するコードをすぐに生成できます。

最初はこれで良いと思っていましたが、使っていくうちに、短期間で人工知能にプログラムコードを尋ねる習慣がついてしまったことに気づきました。これにより、特定のコードの実装概念よりも、コード生成に対する注釈の影響に重点を置くようになります。これは明らかに、リファクタリングを通じて新しい言語を習得したいという私の願望と矛盾しています。人工知能によって出されたコード結果を見ると、まるで自分がその言語を習得したかのような錯覚さえ覚えました。

これに気付いてからは、コードを独自に実装できないときのみ、 GitHub Copilotのリアルタイムコード生成機能を有効にするようになりました。つまり、どんなにうまく書かれていても、まずは自分で書いてみて、その後人工知能に問題発見を手伝ってもらい、徐々にコードの読みやすさや使いやすさを向上させていくのです。このプロセスでは、人工知能に文法の詳細を尋ね、 TypeScriptに沿ったプログラミング パラダイムとより適切なコード実装方法を使用するようにガイドしてもらいます。

同じ機能のコードが複数回作成されるため、事前にユニットテストを作成することが非常に重要です。 VSCodeではJestでもViTestでも、コードが変更されるとすぐにテストが実行されるように自動テストを有効にすることができます。 Xcodeでも同様の機能が提供されれば良いと思います。結局のところ、コードを絶えず変更する過程では、最適化やエラー修正が必要になる状況が頻繁に発生します。テストを通じてのみ、問題をタイムリーに発見することができます。

まとめ

この間、AI 製品に深く関わっていくうちに、AI を効果的に活用しながらも、個人の技術的成長と自立した思考を維持することの重要性を徐々に認識するようになりました。止められないほどの急速な発展の傾向に直面して、人工知能は間違いなく私たちの将来の生活と仕事のあらゆる側面に大きな影響を与えるでしょう。

AI がコードを素早く記述する能力を持つようになった今、多くの開発者は AI に置き換えられるのではないかと多かれ少なかれ心配しています。開発者として、置き換えられないようにするための鍵は、常にスキルを向上させ、人工知能では置き換えられない独自の価値を示すことだと私は信じています。つまり、人工知能に過度に依存することで、確かにいくつかの側面で作業効率が向上したり、これまでは不可能だった成果を達成したりできる可能性があるのです。しかし、長期には、開発者は徐々に自らの優位性を失い、最終的には人工知能ツールのユーザーから人工知能ツールのアシスタント、つまり人間のプロンプト生成者へと変化する可能性があります。もちろん、全体として、人工知能は、私が学習し、再構築する上で、確かに大きな驚きをもたらしてくれました。今後は、AIをもっと仕事に取り入れていきたいと思っています。

翻訳者紹介

51CTO コミュニティの編集者である Julian Chen 氏は、IT プロジェクトの実装で 10 年以上の経験があります。社内外のリソースとリスクの管理に長けており、ネットワークと情報セキュリティの知識と経験の普及に重点を置いています。

原題: AI によるペアプログラミング、著者: fatbobman

<<:  OpenAI、中小企業向けChatGPTチームサブスクリプションサービスを開始、月額料金は1人あたり30ドル

>>:  OpenAIがGPTストアを正式に開始

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

Huawei Cloud TechWave人工知能スペシャルデーでは、インテリジェントプロセスロボットが効率的に動作する方法を紹介します

新興テクノロジーは何千もの業界に影響を及ぼしています。近年、AI+自動化はますます多くの企業や組織で...

AIモデルの「レッドチーム」からの迅速な修正を期待しないでください

ホワイトハウスの関係者らが人工知能チャットボットが引き起こす可能性のある社会的危害を懸念する中、シリ...

会話型ロボットをよりスマートにするために製品設計を最適化するにはどうすればよいでしょうか?

01.人間は日々、環境、社会、他の人々、物と密接に関わっています。このタイプの接続は、一方向、双方...

GPT-4ではMITでコンピュータサイエンスの学位を取得できない

ある研究者が、MITのコンピューターサイエンスの学位の宿題や試験問題を解くことができると主張するチャ...

RPAとは何ですか?ビジネスプロセス自動化の革命

CISO は、日常的なタスクを排除し、従業員がより価値の高い仕事に集中できるようにするために、ロボ...

...

機械学習により整形外科画像分析がさらに進化

医療画像解析に機械学習 (ML) を実装することは新しいことではありません。放射線科医は、自動化ツー...

アプリケーション開発コンサルティングは、企業が人工知能を最大限に活用できるよう支援します

適切なコンサルタント チームが、優れたアプリケーションを選択して AI のメリットを発見できるようお...

コストを 95% 削減した ChatGPT の代替品を作成しましょう! OpenAIのハードコアアップデートが来月リリースされ、ビジュアルAPIが登場

世界中の開発者は長い間、OpenAI モデルの価格に悩まされてきました。ロイター通信は、11月6日に...

拡散モデルはオートエンコーダです。ディープマインドの研究者は新しいアイデアを提案し、

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

世界最高の AI 教育会社はどこでしょうか?米国、中国、欧州、イスラエルが先頭を走る

GoogleがモバイルファーストではなくAIファーストを語り、テンセントがAIをあらゆるものに取り入...

国際翻訳コンテストで優勝したモデルがByteDanceによってオープンソース化された。

Transformer などの主流のテキスト生成アルゴリズムの単語単位の生成は、並列計算に適した ...

Google内部関係者、Bardチャットボットの有用性に疑問

10月12日、ブルームバーグは昨夜、グーグルとDiscordが共同で自社のAIチャットボット「Bar...

15分 = 1年!人工知能と材料科学が出会うとき...

最近、NPJ—Computational Materials誌に研究論文が掲載されました。この論文は...

AutoRLについてまだよく知らないという人は、オックスフォード大学、Google、その他の機関の12人以上の学者がレビューを書いています。

強化学習 (RL) とディープラーニングの組み合わせは、一連の印象的な結果をもたらし、(ディープ) ...