見出し画像

プログラミング時の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は、プログラミングにおける多くの課題を解決するための相棒です。多岐にわたるサポートを提供してくれます。
これらの活用方法を駆使することで、より効率的にプログラミングを進めることができるでしょう。そして、余った時間でぜひ「家族写真アルバム」というサービスをチェックしてみてください(宣伝)!

いいなと思ったら応援しよう!