![見出し画像](https://assets.st-note.com/production/uploads/images/147148499/rectangle_large_type_2_0c52c10e502ac8753948209f33532f61.png?width=1200)
プログラミング時のChatGPTの使い所
はじめに
ご閲覧ありがとうございます。
プログラミングを学ぶ過程で、多くのプログラマーが直面する課題があります。コードの書き方、エラーのトラブルシューティング、コードのリファクタリングなど、数々の困難があります。これを乗り越えるために役立つツールがあります。その名は…ChatGPTです。最近ではプログラミングに必要不可欠な相棒ですね。あなたが右京さんならChatGPTは亀山くんです。あなたが清麿ならChatGPTはガッシュです。
ChatGPTはコーディングを大いに助けてくれます。今回は、プログラミングにおけるChatGPTの使い所について、自分の使い方を振り返りを含めて紹介をしていきます。
テストコードの生成
ChatGPTを使い始めて1番最初にお願いした作業かもしれません。
テストコードを書くのは面倒な作業です。しかしプログラミングの品質を保つために欠かせないものです。ChatGPTは、テスト対象のコードを伝えるだけで、自動的にテストコードを生成してくれます。
例えば、以下のようなメソッドがあるとします。
def add(a, b)
a + b
end
このメソッドに対するテストコードをChatGPTに依頼すると、次のようなRspecのコードが返ってきます。
require 'rails_helper'
RSpec.describe 'Add method' do
it 'adds two numbers correctly' do
expect(add(2, 3)).to eq(5)
expect(add(-1, 1)).to eq(0)
expect(add(-1, -1)).to eq(-2)
end
end
このように、手間をかけずにテストコードを生成できるのは非常に便利です。
ただし注意すべき点もあります。ChatGPTの生成するテストコードは、対象のメソッドの処理を網羅するコードにはなりますが、そもそもの処理誤りは検知できません。
コードのリファクタリング
コードのリファクタリングは、可読性や効率を向上させるために必要ですが、どの部分をどう改善すべきか意外と難しいことがあります。ChatGPTにコードを見せて、「このコードをリファクタリングして」と頼むだけで、改善点を示し、リファクタリング後のコードを提供してくれます。
例えば、以下のJavaScriptコードがあるとします。
function getUserInfo(user) {
if (user) {
if (user.name) {
return user.name;
} else {
return 'No Name';
}
} else {
return 'No User';
}
}
このコードをリファクタリングすると、次のようによりシンプルにできます。
function getUserInfo(user) {
if (!user) return 'No User';
return user.name || 'No Name';
}
ChatGPTの助けを借りることで、より効率的で読みやすいコードを書くことが可能になります。
得意な言語で書いて変換してもらう
新しい言語でプログラミングする際に得意な言語のコードで実装をして新しい言語に変換することで、新しい言語でもスピーディーにコーディングすることができます。ChatGPTは、特定の言語で書かれたコードを別の言語に変換してくれます。
例えば、以下のRailsメソッドをJavaScriptに変換する場合です。
def greet(name)
"Hello, #{name}!"
end
ChatGPTに依頼すると、次のようなJavaScriptコードが生成されます。
function greet(name) {
return `Hello, ${name}!`;
}
トラブルシューティング・不明点の質問
プログラミング中にエラーが発生したり、特定のコードの動作が理解できない場合、ChatGPTに質問することで素早く回答を得ることができます。エラーメッセージや問題の詳細を入力すると、解決方法を提示してくれます。
例えば、「SyntaxError: invalid syntax」のようなエラーメッセージが出た場合、エラーメッセージとともに問題のコードをChatGPTに入力すると、どこが間違っているのか、どのように修正すべきかを説明してくれます。
erbファイルで謎のシンタックスエラーが発生した際にChatGPTに質問をするとコードを修正してくれます。
定義ファイルの生成
インフラの管理にTerraformを使用している場合、設定を伝えるだけで.tfファイルを生成してもらうことができます。「構築したいインフラのイメージはあるけどIacツールの書き方が分からない」という時に活用できます。
例えば、パブリックアクセスを拒否して特定のIAMだけがフルアクセスできるAWS S3バケットを作成する設定が必要な場合、ChatGPTに以下のように依頼します。
パブリックアクセスを拒否して特定のIAMだけがフルアクセスできるAWS S3バケットを作成するためのTerraform定義ファイルを生成して
すると、以下のような.tfファイルを生成してくれます。
resource "aws_s3_bucket" "my_bucket" {
bucket = "my-unique-bucket-name"
acl = "private"
}
resource "aws_s3_bucket_public_access_block" "my_bucket" {
bucket = aws_s3_bucket.my_bucket.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
resource "aws_s3_bucket_policy" "my_bucket" {
bucket = aws_s3_bucket.my_bucket.id
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = ["s3:*"]
Effect = "Allow"
Resource = [
"arn:aws:s3:::my-unique-bucket-name",
"arn:aws:s3:::my-unique-bucket-name/*"
]
Principal = {
AWS = "arn:aws:iam::123456789012:user/specific-iam-user"
}
}
]
})
}
このように、設定の詳細を伝えるだけで、自動的に定義ファイルを作成してくれます。
マイグレーションファイルの生成
例えば、Laravelを使用している場合、新しいデータベースのカラムを追加するためのマイグレーションファイルを生成するのも簡単です。追加したいカラムの情報をChatGPTに伝えるだけで、適切なマイグレーションファイルを生成してくれます。
Laravelでusersテーブルにageカラムを追加するマイグレーションファイルを生成してください。ageカラムは数字型でnull許容してください。
すると、次のようなマイグレーションファイルを作成してくれます。upだけでなくdownもしっかり実装してくれています。
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddAgeToUsersTable extends Migration
{
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->integer('age')->after('email');
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('age');
});
}
}
まとめ
ChatGPTは、プログラミングにおける多くの課題を解決するための相棒です。多岐にわたるサポートを提供してくれます。
これらの活用方法を駆使することで、より効率的にプログラミングを進めることができるでしょう。そして、余った時間でぜひ「家族写真アルバム」というサービスをチェックしてみてください(宣伝)!