見出し画像

ChatGPTや大規模言語モデルによる変化とソフトウェア開発の雑感

GPT-4とChatGPT Plus、ただただ驚嘆するばかりですね。SNSのタイムラインや知人など狭い観測範囲ですがこの話題ばかりという印象です。LayerXでも毎日話題で同時多発的にエンジニア陣が色々なアプローチを試してはデモをしています。楽しい。この衝撃をソフトウェアエンジニアとして咀嚼してみたので、雑記としてChatGPT Plus先生にまとめてもらいました。

ちなみに長々と書いていますが、大雑把には下記のようなことを考えていました。

  • コードの生成だけでなく、実行で得られたエラーに対する修正も含めて一連のプロセスとして大規模言語モデル(LLM)で実現できるようになる。Go言語のgeneratorとにた発想でコード自体は毎度書き捨て、みたいな考え方も増え、LLMに合わせた実行環境やツールが出てくる。

  • テストもLLMで生成できる。ユニットテストは今日から使える。E2Eテストなども作れるだろうし、マルチモーダルモデルになればスクショからPC操作なども実現できる。LLMに即したプロダクトが出てくるだろう。

  • コーディング面接が無意味になった。この手段で図れる技術力はLLMに任せればいいものになった。意思決定をより問う重要性が増してくる。

  • 人の関わる意義は、課題の発見やトレードオフある答えのない選択肢の中での方向づけ、などエモーショナルな要素も混ざったタスク中心になり、意思決定力が更に重要になる。

  • 今書いてるコードは低水準言語になっていくかもしれない。LLMに合わせた言語やツールも登場する中で、コード自体に向き合うことは減る。これはインフラにおけるクラウド化など抽象化が進み続けていた流れの延長ともいえる。

  • エンジニアとしては、LLMを使って新たなプロダクトの作り方を模索していくべく積極的に試していくことをおすすめしたい。

個人的にはスマホやクラウドの登場くらいワクワクする、毎日眠るのも惜しむくらい楽しい技術ですね。


以下、GPT-4先生から見たソフトウェア開発の変化10項目。

1. 効率の向上: 大規模言語モデルを使用することで、コード生成やエラー訂正が自動化され、開発の効率が向上します。
2. 品質の向上: 自動生成されたテストコードにより、ソフトウェアの品質が向上し、バグの発見や修正が容易になります。
3. 時間の節約: 開発者は煩雑なコーディング作業から解放され、より創造的なタスクやプロジェクトの全体戦略に集中できるようになります。
4. イノベーションの促進: 開発者がより高度な問題解決に注力できることで、イノベーションが促進され、新しい技術やソリューションが生まれやすくなります。
5. 学習コストの低減: 大規模言語モデルがコード生成をサポートすることで、初心者でも短期間で開発を始めることができ、学習コストが低減されます。
6. 技術スタックの進化: 大規模言語モデルに適した技術スタックやプログラミング言語が増え、開発プロセスの柔軟性が向上します。
7. コードの可読性: 自動生成されたコードは一定の品質と可読性が保証されるため、コードレビューや保守性が向上します。
8. 人材の選抜基準の変化: 面接ではコーディング能力よりも課題発見や方向づけの能力が重視されるようになり、開発者の役割が変化します。
9. 開発ツールの進化: 大規模言語モデルと連携した開発ツールが登場し、開発環境がより強力で効率的になります。
10. 人間と機械の協働: 開発者は大規模言語モデルと協力し、プロジェクトの戦略立案や意思決定に集中することで、人間と機械の協働が進むでしょう。

ChatGPT先生の回答

以下、GPT-4先生に自分の考え事をまとめてもらったブログ。数対話で書けてしまった…

GPT-4という衝撃、指示だけで簡易なアプリが作られる

GPT-4の登場は、ソフトウェアエンジニアリングの世界に大きな変化をもたらしました。この革新的な言語モデルは、指示だけで簡易なアプリケーションを作成する能力を持っており、開発者の労力を大幅に削減することができます。GPT-4を活用することで、アイデアを素早く実現し、プロトタイプを手軽に開発することが可能になりました。
具体例として、ブラウザで動作するテトリスのゲームを考えてみましょう。従来であれば、開発者はゲームのロジックやインターフェースを一から構築する必要がありましたが、GPT-4を使用することで、テトリスの基本ルールや機能を指定するだけで短時間でアプリケーションが生成されます。これにより、開発者は独自の機能やデザインを追加するなど、より創造的な部分に集中することができます。
また、GPT-4はブラウザで動作するアプリケーションを生成する際に、HTML、CSS、JavaScriptといった一般的なWeb技術を活用してコードを生成します。これにより、生成されたコードは多くのデバイスやブラウザで互換性があり、開発者は追加の調整や最適化をほとんど行わずに済みます。
このように、GPT-4は簡易なアプリケーションの開発において、開発者の作業負荷を大幅に軽減し、アイデアの実現がより迅速になることを示しています。今後もGPT-4のような大規模言語モデルが進化し続けることで、ソフトウェア開発の効率化が一層加速されることが期待されます。

仕様に対するテストも機械が書く

仕様に対するテストコードの作成も、大規模言語モデルによって自動化されるようになりました。これにより、開発者はテストコードの作成にかかる手間を省き、品質の高いソフトウェアを効率的に開発できるようになります。
ユニットテストの生成は、少なくとも指示に応じて適切に作成できるようになっており、開発者がテストケースを網羅的に考慮する手間が軽減されます。今後、エンドツーエンド(E2E)テストも含め、大規模言語モデルと連携したテストコード生成が一般的になることが予想されます。これにより、アプリケーション全体の品質保証がより効率的に行われるようになります。
さらに、マルチモーダルモデルの発展によって、画面のスクリーンショットからテストケースを生成することも可能になるでしょう。このような技術が実現すれば、開発者はユーザーインターフェイスの変更に対しても迅速にテストコードを更新できるようになります。また、将来的には、マルチモーダルモデルが実際のPC操作を行い、テストプロセスをより効率的に自動化することも考えられます。
このように、仕様に対するテストコードの自動生成が進化することで、開発者は品質保証にかかる手間を軽減し、より効率的なソフトウェア開発が実現できるようになります。大規模言語モデルやマルチモーダルモデルの進化に伴い、今後のソフトウェア開発において、これらの技術がますます重要な役割を果たすことが期待されます。

ChatGPT plusによるコード生成とエラー訂正

ChatGPT plusは、コード生成とエラー訂正のプロセスを自動化することで、ソフトウェア開発の効率を向上させています。この技術を使えば、開発者はコーディングの煩雑な部分から解放され、より高度な課題や創造的な作業に注力できるようになります。また、エラー訂正の自動化により、コードの品質も向上し、開発期間の短縮が期待できます。
ChatGPT plusは実行可能なコードを指示に従って生成できる能力を持っています。生成されたコードは少なくともある程度習熟した人のレベルに相当し、開発者が適切な指示を与えることで、効率的に高品質なコードが生成されます。これにより、開発者はプロジェクトにおいてより重要な課題に集中することができるようになります。
さらに、ChatGPT plusは実行時のエラーを検出し、修正案を提示する能力も持っています。これにより、開発者はエラー訂正にかかる時間を大幅に削減でき、プロジェクトの進行をスムーズに進めることができます。組み合わせれば、エラーの原因となるコード部分を特定し、適切な修正案を提案することも可能です。
このように、ChatGPT plusを活用することで、コード生成とエラー訂正の自動化が実現され、ソフトウェア開発の効率化が一層促進されます。開発者は従来のコーディング作業から解放され、より創造的で高度な課題に取り組むことができるようになるでしょう。今後のソフトウェア開発において、ChatGPT plusのような技術はますます重要な役割を担っていくことが予想されます。

エンジニアの面接の未来、コーディングテストより課題発見と方向づけの意志力

機械がコードを書く時代において、ソフトウェアエンジニアの面接では、従来のコーディングテストに代わって、課題発見と方向づけの意志力が重視されるようになります。開発者は、より高度な思考や創造的なアプローチが求められ、問題解決能力やチームでの協力スキルが重要視されます。これにより、開発者の役割は単なるコードを書くことから、プロジェクト全体の戦略立案や意思決定により関与する方向へとシフトしていくでしょう。
大規模言語モデルがコーディングテストツールの試験問題をわずか3分で回答できるようになったことで、従来の評価基準が陳腐化していることが明らかになりました。このような状況下では、面接での評価がより総合的なスキルに焦点を当てるべきであり、開発者がどのように問題に取り組むかや、新しいアイデアをどのように生み出すかが重要な評価ポイントになります。
この流れは、そもそも開発ツールの抽象化(クラウド化や様々なツールの登場)から進んでいたが、今後さらに劇的に進むことが予想されます。これに伴い、開発者が直接コードを書くことの重要性は低下し、代わりにアイデアや方向性を与え、適切な開発戦略を立てる能力が求められるようになるでしょう。
結果として、ソフトウェアエンジニアの役割は変革を遂げ、機械との協働やチームでのコラボレーションがより重要になることが予想されます。面接では、コーディングテストに代わり、課題発見と方向づけの意志力を評価することが、開発者が今後の技術革新に適応するための鍵となるでしょう。

我々が今書いているコードは低級言語になる

ChatGPTや大規模言語モデルの進化に伴い、現在のコーディング言語も変化していくことが予想されます。今我々が使っているプログラミング言語は、次世代の開発者にとって低級言語となり、より高度な言語や抽象化された表現方法が登場するでしょう。これにより、開発者はコードの複雑さを軽減し、効率的なソフトウェア開発が可能になります。
生み出されたコードの品質を確かめる活動すらも大規模言語モデルに依頼する世界が来ることで、コードを読む人がだんだんと減り、コードを書くことは一部のエキスパートの仕事になるでしょう。このような状況では、リレーショナルデータベース自体の開発などと近い高度なタスクが求められることが予想されます。
また、大規模言語モデルに適した技術スタックやプログラミング言語、開発ツールが増えていくことで、開発者はこれらの新しい技術を活用し、プロジェクトの効率や品質を向上させることができるようになります。これにより、開発者の役割は従来のコードを書くだけでなく、新しい技術を適切に選択し、効果的に活用するスキルが重要となります。
総じて、ChatGPTや大規模言語モデルによる変化は、ソフトウェア開発のプロセスを劇的に変えるとともに、開発者の役割も大きく変わることが予想されます。今後は、コードの細部にこだわることよりも、全体の戦略や方向性に重点を置いた開発が求められるでしょう。これはソフトウェアエンジニアリングの新たな時代を迎えることを意味します。

まとめ

ChatGPTや大規模言語モデルによって、ソフトウェアエンジニアリングの風景は大きく変わりつつあります。コード生成やエラー訂正の自動化、解説やテストコードの生成、そして面接プロセスやプログラミング言語の変化が、開発者に新たなスキルやアプローチを求めるようになります。これらの変化に適応し、創造的な思考や高度な課題解決能力を磨くことで、ソフトウェア開発者は未来の技術革新に貢献し続けることができるでしょう。

ここから先は

0字

経営者やDX戦略の推進担当、スタートアップ、事業でソフトウェアを活用しようという方々向けに、重要な知識や取り組みを詳細に、かつ体系的に解説したコンテンツをお届けします。

DX推進やスタートアップを頑張る法人の皆様に向けた「ソフトウェアと経営について」マガジンの法人向けプランです。 法人内で自由にコンテンツを…

事業でソフトウェアを活用しようという方向けに、普段の軽い投稿ではなく、重要な知識や取り組みを詳細に、かつ体系的に解説したコンテンツをお届けします。

ソフトウェアと経営について

¥1,000 / 月 初月無料

自社のDX(デジタルトランスフォーメーション)やソフトウェア活用について改善したい、理解したいという方、スタートアップで自社事業をより良く…

この記事が気に入ったらチップで応援してみませんか?