paint-brush
AIは本当にコーディングできるのか?DeepSeekをテストしてみた@filestack
新しい歴史

AIは本当にコーディングできるのか?DeepSeekをテストしてみた

Filestack7m2025/03/13
Read on Terminal Reader

長すぎる; 読むには

コーディングのために DeepSeek を初めて試し始めた日のことを覚えています。コードがほとんど自動的に書けるようになる新しい次元に足を踏み入れたような気がしました。
featured image - AIは本当にコーディングできるのか?DeepSeekをテストしてみた
Filestack HackerNoon profile picture


Filestack のプロダクト マーケティング マネージャー、carlc による記事です。


コーディングに DeepSeekを初めて試し始めた日のことを覚えています。まるで、コードがほとんど自動的に書けるような新しい次元に足を踏み入れたような気分でした。当時、私は複数のプロジェクトを同時にこなしており、品質を犠牲にすることなくワークフローを効率化する方法が必要でした。


そのとき、DeepSeek がコード スニペット、関数全体、さらには小さなモジュールの生成にどのように役立つかを発見しました。これによって開発者としての私の仕事がなくなるわけではありませんが、確実に効率が上がりました。数か月使用した後、このアプローチを最大限に活用するための優れたプロンプトを作成するためのヒントとコツをいくつか紹介したいと思います。

私の第一印象

始めたときは、ワクワクすると同時に少し懐疑的でした。生成されたコードは信頼できるだろうか? エッジケースや新しいライブラリなど、プロジェクトの難しい部分を処理できるだろうか? しかし、時間が経つにつれて、DeepSeek は明確で正確な指示を与えたときに最もよく機能することに気づきました。「ユーザー データを解析する関数を作成してください」などの漠然とした要求を入力すると、結果が大まかすぎたり、必要なニュアンスが欠けたりすることがよくあります。


ただし、「ユーザー データを含む JSON ファイルを読み取り、メール フィールドが欠落しているエントリを無視して有効なユーザーの辞書を返す Python 関数を作成する」など、より具体的な内容を入力すると、結果は驚くほど正確でした。


また、コンテキストが重要であることもわかりました。何を達成したいのか説明せずに、または背景情報を提供せずに DeepSeek にコードを要求すると、限られたデータに基づいて推測することになります。


たとえば、フロントエンド Web フォーム用の JavaScript スニペットが必要だったが、それがブラウザー環境用であることを指定しなかった場合、出力は設定と一致しない可能性があります。一方、環境、言語、タスクの性質を指定すると、実際に必要なものに近いコードを取得できました。

迅速な明確化が重要な理由

私が学んだ最大の教訓の 1 つは、DeepSeek の性能は私が与える指示によって決まるということです。指示とは、Enter キーを押す前に入力する説明のことです。DeepSeek はまるで会話の相手のように動作します。構造化された指示を与えると、DeepSeek は私の目的に合ったコードで応答します。ただし、短いリクエストや不明瞭なリクエストを送信すると、結果はあまり役に立たない場合があります。


そのため、私はすべてのプロンプトで、希望するプログラミング言語を述べることから始めます。次に、コードの目的を説明します。次に、使用予定のライブラリやフレームワーク、重要な制約などの詳細を説明します。


最後に、望ましい出力または動作について説明します。このアプローチにより、DeepSeek は全体像を理解し、理想的なソリューションに近いものを生成できるようになります。

効果的なプロンプトの構成要素

私は効果的なプロンプトを 4 つの主要な部分で考えるのが好きです。


  1. 言語と環境: たとえば、「Node.js 環境で実行される JavaScript 関数を作成する」や「データ分析用の Python クラスを生成する」などです。


  2. 目標またはタスク: 「売上データを分析する」または「React フォームでユーザー入力を処理する」などです。


  3. 制約: ここでは、「スクリプトは組み込みの Python ライブラリのみを使用する必要がある」や「外部パッケージは許可されない」など、特別なことがあれば言及します。


  4. 望ましい出力: 最後に、「ユーザー ID の並べ替えられたリストを返す」や「各エラーをコンソールに記録する」など、正確な結果を明確にします。


この構造に従うと、DeepSeek は最初からプロジェクトの要件に適合するコードを生成する傾向があります。また、コード生成後に大幅な編集を行う必要性も減ります。さらに、これらの各ステップは、本当に必要なものについて慎重に考えるよう促し、中途半端なリクエストを送信するのを防ぎます。

反復的な改良

最善を尽くしても、最初の試みで完璧なコードができることはほとんどありません。しかし、DeepSeek をコーディングに使用する利点の 1 つは、生成されたコードを取得してレビューし、実行してからプロンプトを改良できることです。たとえば、コードに不要な追加機能が含まれている場合は、「データ ログ部分を削除して、並べ替えメカニズムに焦点を当ててください」と言うだけです。コードに重要なステップが欠けている場合は、「空のフィールドの検証関数を含めてください」と言うかもしれません。


この反復的なプロセスは、最初の草稿を書くジュニア開発者と共同作業しているような感じです。最初のパスが完璧であるとは期待していませんが、コードを自分の基準に磨き上げるために、何度もやり取りを続けます。さらに、何がうまくいかなかったのか、何を改善できるのか、常に直接フィードバックするようにしています。DeepSeek に「もう一度試してください」と指示するだけでは、何を変更すればよいかがわからないかもしれません。しかし、「ファイルが見つからない例外に対するエラー処理を追加してください」と指示すれば、たいていは必要なものが得られます。

よくある落とし穴とその回避方法

DeepSeek は非常に強力ですが、私が遭遇した落とし穴がいくつかあります。


  • コンテキストの欠如: 環境やプログラミング言語を指定しないと、望まない言語のコードが作成される可能性があります。言語とコンテキストを常に明確に示してください。


  • プロンプトが広すぎる: 漠然としたプロンプトは、不完全または無関係な結果につながります。主な目標、使用する予定のライブラリ、および特別な制約を指定して詳細を追加します。


  • ベスト プラクティスを無視する: 生成されたコードが古い規則に従っていたり、チームのスタイル ガイドに従っていない場合があります。コードを確認して調整し、標準を満たしていることを確認することが重要です。


  • エラー処理の欠落: 多くの場合、生成されたコードはデフォルトでは例外や無効なデータを処理しません。プロンプトにエラー処理の要件を含めると、将来的に大きな問題が発生するのを防ぐことができます。


これらの落とし穴に注意することで、時間を節約し、コードの大部分を書き直す必要がなくなります。最近では、自分がどの環境で作業しているかを明記することを忘れることはほとんどありません。それが混乱を招く可能性があることをすでに知っているからです。

生成されたコードのテストと検証

DeepSeek からコードを入手したら、それが完全に正しいとは決して思いません。代わりに、手作業で記述する他のコードと同様に、厳密にテストします。また、セキュリティの問題、パフォーマンスのボトルネック、論理エラーもチェックします。DeepSeek はコードの記述速度を速めるのに役立ちますが、コードが期待どおりに動作することを確認するのは私自身です。


私が従う簡単なプロセスは次のとおりです。


  1. コードを安全な環境( ローカル サンドボックスなど) で実行し、重大な問題が発生しないことを確認します。


  2. エッジケースを含むさまざまなシナリオをカバーする単体テストを追加します


  3. 既存のプロジェクト構造およびライブラリとの互換性を確認します


いずれかのステップが失敗した場合は、新しい指示とともに DeepSeek に戻り、エラーを修正するかパフォーマンスを向上させるように指示します。このテスト ループにより、最終製品に自信を持つことができます。

チーム設定でDeepSeekを使用する

過去数か月間、私はチーム メンバーの一部にコーディング用に DeepSeek を紹介してきました。使用したプロンプトを共有すると、コラボレーションが簡単になります。たとえば、チーム メンバーが特定のデータベース クエリの生成方法を気に入った場合、私はそのプロンプトと手順をそのまま見せることができます。こうすることで、メンバーは私がどのように実行したかを推測することなく、私の成功を再現できます。


ただし、チーム全体で一貫性を保つことも重要です。私たちは、全員が同様のアプローチに従うように、プロンプトの標準形式を決めることがよくあります。これにより、生成するコードがより統一され、開発者ごとに大きく異なることがなくなります。また、新人は DeepSeek とのコミュニケーション方法の明確なパターンを見ることができるため、学習のスピードも速まります。

最終的な考えと次のステップ

私の経験では、DeepSeek をコーディングに使用すると、反復的なタスクが大幅に削減され、開発プロセスの多くの部分がスピードアップします。とはいえ、これは魔法の杖ではありません。適切なプロンプトは、役立つコードを得るための秘訣です。言語、コンテキスト、目標、制約を指定するプロンプトを作成することが、高品質の結果を得るための最善の方法です。その後、コードを反復して改良することで、本番環境に適したものに磨き上げることができます。


より多くの開発者が DeepSeek を使い始めるにつれて、より優れたプロンプトを作成するための革新的な方法が見つかると思います。また、コード生成をさらに改善するのに役立つ新しいヒントやコツも見つかるでしょう。


DeepSeek を使い続ける中で、発見した新しい知見を記録していくつもりです。このガイドが、皆さんが圧倒されることなくコード生成を探求するための強力な基盤となることを願っています。明確なプロンプト、慎重なテスト、改良への意欲があれば、より高速で効率的なコーディング プロセスを実現し、開発のクリエイティブな側面に集中できるようになります。


覚えておいてください、重要なのは最初の試みで完璧を期待しないことです。代わりに、DeepSeek を明確な指示と一貫したフィードバックを必要とするコーディング パートナーと考えてください。


時間が経つにつれて、人間の創造性と AI 主導の効率性の完璧なバランスが見つかるでしょう。コーディングを楽しんでください。プロンプトが、可能な限り最もクリーンでエレガントなソリューションを導きますように。


この記事はもともと Filestack ブログで公開されました。