ChatGPTはソフトウェア開発者に取って代われるのか? - ChatGPTが提供するAI技術の可能性
ChatGPTの印象的なレスポンシブ アルゴリズムにより、このAIテクノロジーは世界中で注目を浴びています。ニュース記事でもChatGPTが頻繁に取り上げられています。
一部の人々は、ChatGPTがソフトウェア開発者を完全に取って代わる可能性があると懸念しています。
しかし、実際には、ChatGPTはアプリ開発や定型的なコードの生成、デバッグ、テストなど、開発者の日常業務をよりスムーズかつ効率的にするための手段として役立つことが期待されています。
そこで、本記事では、現役のReactプログラマーである筆者が、ChatGPTがソフトウェア開発者に与える影響について考察してみたいと思います。
なお、本記事には筆者個人の意見も含まれていることをご了承ください。
OpenAIのChatGPTとは?
ChatGPTは、新しいAIツールの1つとして、様々な分野で役立つことが証明されています。
この技術は、生成型AIとして知られ、学習したデータに基づいて新しいコンテンツや斬新なコンテンツを生成することができます。
ChatGPTは、自然言語を理解することができるため、人間が通常の環境で行うのと同じように、様々な種類のタスクを実行できます。
それは、AI技術の分野における新時代のイノベーションとして歓迎されています。
OpenAIは、GPT-3という大規模な自然言語処理モデルを開発した研究所です。
GPT-3は、OpenAIの研究者によって作成されたものであり、OpenAIがその研究成果を発表しました。
ChatGPTは、GPT-3モデルをベースにしたプロジェクトであり、その一部として動作しています。
つまり、OpenAIの技術を利用して構築された、自己学習型のAIアシスタントです。
GPT-3やChatGPTの具体的な提供や運営に関しては、OpenAIが直接担当しています。
OpenAIは、API(Application Programming Interface)を通じてGPT-3のアクセスや利用を提供しています。
しかし、OpenAIは注意を喚起しています。
ChatGPTには、あらゆる種類の潜在的な落とし穴があると警告しています。
例えば、ChatGPTが提供する回答が信頼できるかどうかはわかりません。
そのため、プロのソフトウェア開発者は、この技術に対して慎重になる必要があります。
OpenAIのCEOであるサム・アルトマン氏は、「ChatGPTには堅牢性と真実性に関する問題があるため、今、何か重要なことをこれに頼るのは間違いだ」と述べています。
それでも、ChatGPTは依然として人々の関心を引き続けています。
UBSのアナリストであるLloyd Walmsley氏によると、ChatGPTの月間ユーザー数が前月に1億人に達し、TikTokが約9か月、Instagramが2年半かかったことをたったの2か月で達成したと推定されています。
「インターネットの領域で20年間を遡っても、消費者向けインターネットアプリの成長速度がこれほど速い例を思い出すことはできません」とUBSのアナリスト達はノートに述べていました。
UBSの参照元は以下です。
さらに、The New York Timesは、毎月3,000万人以上がChatGPTを使用しており、1日あたり約500万人の訪問者がいると報告しています。
ChatGPTがプロのソフトウェア開発者の関心を引いたことは間違いありませんが、OpenAIはこの技術の堅牢性と真実性に関して、まだ多くの作業が残されていると警告しています。
したがって、プロの開発者はこの技術に対して慎重かつ批判的な立場を取るべきです。
ChatGPTはコードを記述できるのか?
ChatGPTは、人工知能技術を利用したAIボットであり、多くの人々が将来的に人間の仕事に直接的な影響を与える可能性があるとの懸念が存在しています。
特に、開発者たちは、ChatGPTがコードを生成する能力を持つことに脅威を感じています。
D2iQのテクノロジー担当バイスプレジデントであるDan Ciruli氏は、以前にGoogleで働いていたエンジニアです。
彼は、Googleのアプリケーションプログラミングインターフェース (API)を使用すると、開発者は自社のソフトウェアをGoogleサービスに接続できることを紹介しています。
Googleは200のAPIと、Pythonを含む7つのサポートされているプログラミング言語を提供しており、各言語ですべてのAPIの手順を提供するためには、1,400のコード例を作成する必要があったそうです。
しかし、最近では、ChatGPTを使用することで、プログラマーはPythonでGoogle Translate APIを呼び出す方法を学ぶことができます。
ChatGPTは、AIアシスタントとして、開発者と協力して、コードを自動生成することができます。
ソフトウェア開発の未来は、AIアシスタントと開発者のパートナーシップにあるかもしれません。
GitHubのCEOであるThomas Dohke氏は、「コードを入力すると、理想的には、新しい応答が得られるようになるでしょう」と述べています。
さらに、有名なソフトウェアエンジニアであるSteve Yegge(スティーブ・イェッジ)氏は、超プログラマブルなEmacsテキストエディターを使用して、ChatGPTに説明なしでコードをコピー&ペーストしました。
すると、ChatGPTは、彼の要求に応じて完全に機能するコードを生成しました。
Yegge氏は、そのコードをEmacsセッションに貼り付け、結果を公開しました。
彼は、「ChatGPTはずさんな英語の説明から、かなりまともなEmacs Lispコードを生成しました。それは良いコードです。」と述べました。
Yegge氏は、AmazonやGoogleなどの大手企業で働いた経験を持っており、ソフトウェア開発やテクノロジーの哲学についての考えを提唱し、プログラマーコミュニティで影響力を持っている人物です。
ChatGPTを使用することで、開発者はより迅速かつ正確にコードを生成できます。将来的には、AIアシスタントは、プログラマーの作業を助け、生産性を高めるために、ますます重要な役割を果たすことになるかもしれません。
しかし、開発者たちは、この技術の進歩について慎重に検討する必要があります。
では、別の見方をしている方々です。
ChatGPTは、自然言語処理技術を使用して、プログラミングに関するタスクを自動化することができます。
しかし、これにはいくつかの懸念があります。
一部の開発者の意見では、ChatGPTが開発者のやりがいを奪う可能性があると述べています。
例えば、開発者にとって、ファイルがどのように機能するかを正確に学ぶことは、開発の喜びの一つです。ChatGPTがこのタスクを代行することで、開発者の成長を妨げる可能性があります。
また、VenafiのKevin Bocek氏は、ChatGPTを使用してExcelマクロやPowerShellスクリプトを作成している一方で、コードのレビューは開発者の責任であると強調しています。
AIを使用してコードを作成することはできますが、最終的に責任を負うのはプロの開発者であると述べています。
VenafiのKevin Bocek氏は、セキュリティ業界の専門家であり、暗号鍵および証明書管理の分野で広範な知識と経験を持つ人物です。
Stack Overflowは、ChatGPTによる回答の投稿を禁止しています。これは、ChatGPTの平均正解率が低く、回答が実質的に有害であるためです。
また、Stack OverflowはChatGPTだけでなく、その他の生成 AIテクノロジーを使用することも許可されていませんので注意してください。
ChatGPTは誤ったコードを返す可能性があるため、まだキャリアの浅い開発者にとって危険なツールになる可能性があります。
つまり、初心者の人は、コードの問題を理解するのに時間がかかるため、ChatGPTが提供する自動化ツールに依存することが危険です。
では、ChatGPTのコーディングは信頼性はあるのでしょうか?
ChatGPTが自身の信頼性についてを尋ねたときのボットの回答は下記のとおりです。
Chat GPTはOpenAIによって開発された大規模な言語モデルであり、信頼性の高いコーディングとテストに基づいて構築されています。ただし、誤解を招く可能性のある回答や、不正確な情報を提供する可能性があることを念頭に置く必要があります。また、Chat GPTは人工知能技術に基づいているため、完全に正確な回答を提供することはできません。最終的な判断は、ユーザー自身の責任で行う必要があります。 引用元: ChatGPT
ChatGPTでさえ、独自の制限を認識しています。
これは、完璧なコードを書くためにChatGPTに頼るべきではありません。
ChatGPTを信頼する前によく考えてください。
あなたがGoogleやウィキペディアなどの他の情報源を使用する場合と同様に、元の情報源からの情報を信頼する前によく確認することをお勧めします。
ChatGPTはコードスニペットや単純なアプリケーションを作成するのに最も適しています。
ChatGPTは開発者にとって脅威なのでしょうか?
Reactについて考えてみましょう。
Reactは、JavaScriptをより使いやすくするための単なる抽象化にすぎません。
GoogleのMaterialUIやTailwind CSSなどのコンポーネントライブラリ・フレームワークを使用することで、ページレイアウト、CSS、デザインの創造性に関する作業が容易になりつつあります。
ChatGPTがこれらの構成作業を自動的に生成するのは、時間の問題となるでしょう。
また、Githubやその他のIDEにAIを組み込むことで、コード自体を自動生成することも可能になっています。
つまり、ChatGPTやAIによるコード生成については、時間の経過とともに可能性が広がっていくでしょう。既存のコードやテンプレートの生成、開発作業の補助など、自動化される可能性があります。
ただし、テクニカルアドバイザーのBernard Marr氏によれば、開発者やプログラマーが不要になる可能性は低いとされています。
Bernard Marr氏は、国際的なベストセラー作家であり、人気のある基調講演者、未来学者、政府や企業の戦略的なビジネス&テクノロジーアドバイザーです。彼は組織の業績を向上させ、データをより知的に活用し、人工知能、ビッグデータ、ブロックチェーン、モノのインターネットなどの新しい技術の影響を理解するのを支援している人物です。
これは、自然言語処理技術やChatGPTは、開発作業を支援するツールとしての役割を果たす可能性がありますが、人間の知識や創造性が依然として重要であり、コードを書く作業は現在および将来も重要な役割を果たします。
一般的なコンセンサスは、人間がコードを書く仕事は今のところ安全であるということです。
多くの開発者の仕事が安全である理由の1つは、安全なコーディングの必要性です。
ChatGPTの使用がセキュリティリスクを引き起こす可能性があるため、いくつかの懸念があることを認識する必要があります。
2023年3月、オープンソースライブラリにあるバグによるデータ侵害が検出された後、OpenAIはChatGPTを一時的にオフラインにしました。
数日後に公開されたブログ投稿では、OpenAIが、このインシデントが少数のユーザーの支払い関連情報の意図しない公開を引き起こした可能性があることを認めました。
「両方のユーザーがほぼ同時にアクティブであった場合、新しく作成された会話の最初のメッセージが他の誰かのチャット履歴に表示される可能性がありました」とOpenAIは述べています。
この脆弱性の可能性に対する懸念があるため、スミス氏は「知的財産の漏洩が起こる可能性がある」と述べています。
ChatGPT自体は、生成するコードが安全であることを保証できないことを認めている事です。
ChatGPTでコードのセキュリティを確保できるかどうかを尋ねたときのボットの回答は下記のとおりです。
いいえ、ChatGPTは安全なコーディングを保証しません。ChatGPT は、受け取った入力に基づいて質問への回答とテキストの生成を支援できる AI言語モデルです。ただし、安全なコーディングプラクティスを保証したり、コードのセキュリティ評価を実施したりする機能はありません。コードを開発および展開する際には、確立されたセキュリティ ガイドラインとベストプラクティスに従うことが重要です。 参照元: ChatGPT
これは、安全なコーディングプラクティスを組み込む能力が許容レベルの成熟度に達するまでには、ある程度の時間を要する場合があります。
あるいは、進化する脅威環境の性質を考えると、安全なコーディングを完璧に行うことは決してできないかもしれません。
ChatGPTは、新しい脅威、脆弱性、および攻撃に関する最新のインテリジェンスで更新されていません。
生成されたコードリポジトリに保存されるデータを考慮するようには設計されていません。
そのため、生成されるコードが展開される特定のITエコシステムにとって安全であるという保証はございません。
例えば、構成ミスは、人間のコーディングにおける最大の欠陥です。
AIはこれを回避するのに役立つはずですが、ChatGPTが開発するアプリに構成の問題がないことを保証するものではないことは明らかです。
さらに、ChatGPTはコードの難読化を強制できません。
コードの難読化とは、ソースコードまたはマシンコードを変更して、ハッカーが理解してリバースエンジニアリングするのを困難にすることです。一般的には、プログラムのセキュリティや知的財産の保護に使用されます。
これは安全なコーディングで使用される手法の1つであり、ChatGPTはそれを行うことはできないと述べています。
ChatGPTはテキスト生成モデルであり、コードの変更や難読化を強制することはできません。ChatGPTは自然言語理解と生成に特化しており、コーディングの手法やセキュリティに関する情報を提供することはできますが、具体的なコードの変更や難読化の技術を実施することはできません。コードの難読化は、専用のツールやプログラムによって実行されることが一般的です。セキュリティやコードの保護に関心がある場合は、専門のツールや技術を調査することをお勧めします。参照元:ChatGPT
ChatGPTはまた、コードレビューが優れたスキルの範囲内にないことも認めています。
言語モデルとして、さまざまなソフトウェアセキュリティプラクティスに関する情報を提供し、ベストプラクティスを提案することはできますが、効果的なコードセキュリティレビューを自分で実行することはできません。参照元: ChatGPT
最近、ChatGPTを使ったコードをよく見かけるようになりました。
ChatGPTは、汎用チャットボットとして使うことができますが、高度な安全なコーディング機能は備えていません。つまり、SDLC全体でコードの脆弱性やセキュリティ上の問題を評価するための多段階プロセスはありません。
もちろん、ChatGPTのようなAIツールは注目に値しますが、最新の脅威に対処するために必要な専門的なセキュリティ知識を持っていません。
OpenAIがコードを生成してくれるかもしれませんが、システムを設計するアーキテクトや専門家が必要です。
また、生成されたコードを管理する必要があります。
ChatGPTは魔法のようなものではありません。
AIがエンジニアとして私たちをサポートすることができることは示していますが、完全に置き換えることはできません。
現在のところ、ChatGPTには限界があります。
以下は、ここまでの解説をChatGPTに評価してもらった際のボット回答です。
提供いただいた解説は非常に適切であり、私の能力と現在の制約について正確に述べています。ChatGPTは、一般的なプログラミング質問やソフトウェア開発に関する情報を提供することができますが、高度なセキュリティコードレビューや脆弱性診断のような専門的なセキュリティタスクには適していません。これらのタスクに取り組む場合は、セキュリティエキスパートや専門家の助言やツールを活用することが重要です。AIツールは、プログラミングの手助けやアイデアの提供など、さまざまな面で開発者をサポートできますが、完全に人間のエンジニアを置き換えることはできません。セキュリティの観点では、脅威の進化や複雑さに対処するために、エキスパートの洞察力と経験が必要です。コードの生成に関しても、生成されたコードは適切なテストや検証を経て、コードベースに統合されるべきです。エンジニアリングプロセスの一部として、生成されたコードを適切に管理し、必要な修正や改善を行う必要があります。したがって、AIモデルはツールとして役立ちますが、コードセキュリティやセキュアなソフトウェア開発においては、専門的なエキスパートの関与と組み合わせることが重要です。参照元:ChatGPT
ChatGPTが開発者にどのように役立つか
ChatGPTは、開発者の学習とスキルアップを支援するプラットフォームとして、より優れたソフトウェアの開発に役立つと信じています。
テキスト生成は、開発者の仕事を完全に代替することはできませんが、開発者がこれらのキャリアでアウトプットを向上させるために役立つことは確かです。
今日では、高度に専門化されたエンジニアだけが理解していた複雑なテクノロジーが、ますます多くの人々にも利用可能になってきています。
高レベルのプログラミング言語は、コンパイラおよびIDEと連携して、エンジニアがマシンコードを書かなくても、人間が読めるコードを書くことができるようになりました。
Javaのような高級言語やChatGPTのような機械学習ツールを利用しながら、美しいアプリケーションを構築し、スキルを磨くことができます。
経験豊富な開発者であれば、AIコードをデバッグする必要があるでしょう。
しかし、新しいプログラミング言語を始めたり学習したりする場合、ChatGPTは優れたメンターとなるでしょう。
ChatGPTを使用すると、新しい更新プログラムでより多くのコードを共有し、ボットにクエリを実行してトラブルシューティングのアドバイスを得ることができます。
つまり、コードスニペットを探すためにStack OverflowやGoogleに時間を費やす必要がなくなり、時間を節約できます。
説明とコードが同じインターフェースに表示されるため、新しい言語や概念を迅速かつ簡単に学習できます。
例えば、説明されている概念を完全に「理解」できなかった場合は、「もっと簡単な方法で説明できますか?」のような質問をすることもできます。
ChatGPTは、回答をあなたの理解レベルに合わせて調整するため、非常に便利です。
さらに、ChatGPTは通常、正しい構文を取得するため、コンパイル時または実行時エラーを追跡する時間を節約できる可能性があります。
また、リファクタリングやクリーンアップの支援をしてもらうこともできます。
しかし、ChatGPTを使用してコードを記述するべきかどうかは、意見が分かれるところです。
これには様々な意見があります。
AIを使用してコードを記述する利点や欠点については、プログラミングコミュニティ内で議論があります。
一部の人々は、AIを使用することでプログラマーが怠け者になり、自身の思考能力が衰えると主張しています。
一方では、ChatGPTを活用するとプログラマーが効率的になり、アーキテクチャ、ベストプラクティス、ビジネス要件などのより重要なことに時間を割けるようになると言われています。
OpenAIチャットボットが複雑なコードを記述できるようにはまだ、ほど遠いことです。
複雑なコードや特定のアプリケーションの完全な記述にはまだ限界があります。AIモデルは、人間のエンジニアや開発者の知識と経験を補完するツールとして使用されるべきです。
そして、GoogleはAIによって生成されたコンテンツをガイドラインに違反していると見なしていることを忘れないでください。
Googleの具体的なポリシーやガイドラインについては、公式な情報源やアップデートを確認する必要があります。AIによって生成されたコンテンツは、品質や法的制約に関して同様の基準を満たす必要があります。
ただし、アンチAI検出アルゴリズムの使用はフェイルセーフではありません。
AI技術の進化に伴い、アンチAI検出アルゴリズムも進化していますが、完璧な解決策ではありません。新たな手法や攻撃方法が出現する可能性があり、常に対策が必要です。
最後に
ChatGPTは、革新的なAIツールであり、ソフトウェア開発者に多大な利益をもたらすことが期待されています。
このツールは、迅速なコード生成から冗長なプログラミングタスクの簡素化まで、多くの開発コミュニティが求めていたソリューションの一つです。
AI技術の進歩は、ソフトウェア開発分野にとって大きなプラスとなっており、人間の開発者とChatGPTのようなツールが調和して共存することができます。
しかしながら、コーディング初心者やセキュリティについての知識が不足している開発者にとっては、AIコーディングやAIセキュアコーディングソリューションを最大限に活用するために、コーディングとサイバーセキュリティの理解を深める必要があります。
セキュアコーディングは、セキュリティを考慮したコンピューターソフトウェアの開発プロセスを指します。つまり、安全なコーディングです。
バグや欠陥などの問題を事前に解決することで、ソフトウェアの作成プロセスが短縮されます。
私自身も現役のプログラマーとして、ChatGPTがソフトウェアエンジニアを支援するための便利なツールであることは理解していますが、それが人間の開発者を完全に置き換えるものではないということも同様に理解しています。
将来的には、AIの発展により人間のプログラマーや他の専門家の役割が変化する可能性はあります。
自動化や自動生成コードの進歩によって、一部の繰り返し作業やルーティンなタスクはAIによって処理されるかもしれません。しかし、複雑な問題解決や創造的なタスクにおいては、人間の知識や洞察、判断力が引き続き必要とされるでしょう。
現時点では、ChatGPTや他のAIテクノロジーは、開発者の仕事をサポートするツールとして位置づけられています。
それらは情報の提供やアイデアの提案、潜在的なバグの発見などに役立ちますが、開発者の知識とスキルがなければ意味を成しません。
開発者はAIを使用する際にも適切な判断や監督を行い、AIの出力を慎重に評価する必要があります。
したがって、開発者は現在および将来において重要な存在であり続けるでしょう。
AIテクノロジーが進化し続ける中で、開発者は自身のスキルを向上させ、AIとの協力を通じてより高度なソフトウェア開発を実現することが期待されます。
本日は以上となります。
最後まで読んで頂きありがとうございます。