Cursorとは
前から使ってみたいと思っていたCursorを今回使ってみました。
Cursorとはchatgptを組み込んだコードエディターです。
会話ベースでコードを書いてくれたり、修正してくれます。
VSCodeをフォークしているみたいなので、今までVSCodeを使っていた方は直感的に使えると思います。
インストール方法
インストール方法や使い方はこちらの記事を参考にさせていただきました。
ダウンロードは以下の公式からできます。
rubyでCursorを使ってみる
私はWSLに接続し、docker環境で使ってみることにしました。
任意の場所に、test.rbを作成します。
Ctrl + Kを押すと、以下のように入力フォームが出てきます。
じゃんけんゲームの作成
Enterを押すと、以下のようにコードが生成されました。すごいですね。
Acceptすると、コードを受け入れることができます。
生成されたコードは以下です。
class JankenGame
CHOICES = ["グー", "チョキ", "パー"]
def initialize
@player_score = 0
@computer_score = 0
end
def play
loop do
player_choice = player_turn
computer_choice = computer_turn
result = judge(player_choice, computer_choice)
display_result(player_choice, computer_choice, result)
break unless play_again?
end
display_final_score
end
private
def player_turn
puts "じゃんけんポン! (0: グー, 1: チョキ, 2: パー)"
choice = gets.chomp.to_i
until choice.between?(0, 2)
puts "無効な選択です。もう一度選んでください。 (0: グー, 1: チョキ, 2: パー)"
choice = gets.chomp.to_i
end
CHOICES[choice]
end
def computer_turn
CHOICES.sample
end
def judge(player_choice, computer_choice)
if player_choice == computer_choice
"引き分け"
elsif (player_choice == "グー" && computer_choice == "チョキ") ||
(player_choice == "チョキ" && computer_choice == "パー") ||
(player_choice == "パー" && computer_choice == "グー")
@player_score += 1
"勝ち"
else
@computer_score += 1
"負け"
end
end
def display_result(player_choice, computer_choice, result)
puts "あなたの選択: #{player_choice}, コンピュータの選択: #{computer_choice}"
puts "結果: あなたの#{result}です!"
end
def play_again?
puts "もう一度プレイしますか? (y/n)"
gets.chomp.downcase == 'y'
end
def display_final_score
puts "最終スコア - あなた: #{@player_score}, コンピュータ: #{@computer_score}"
end
end
game = JankenGame.new
game.play
実際の動作
実際に動かしてみます。
$ docker compose run --rm web ruby test.rb
[+] Running 1/0
⠿ Container rails_sample-db-1 Running 0.0s
じゃんけんポン! (0: グー, 1: チョキ, 2: パー)
2
あなたの選択: パー, コンピュータの選択: チョキ
結果: あなたの負けです!
もう一度プレイしますか? (y/n)
y
じゃんけんポン! (0: グー, 1: チョキ, 2: パー)
1
あなたの選択: チョキ, コンピュータの選択: パー
結果: あなたの勝ちです!
もう一度プレイしますか? (y/n)
n
最終スコア - あなた: 1, コンピュータ: 1
しっかりとじゃんけんゲームがつくられています!
コードの説明
Ctrl + Lを押すと対話式に、コードの説明をしてくれます。
application_controllerを作成してもらう
今度はrailsのapplication_controllerに必要なコードを作成してもらいます。
生成されたものは以下です。
説明もしてもらいました。
各部分の説明
・class ApplicationController < ActionController::Base: これは ApplicationController クラスの定義で、ActionController::Base を継承しています。ApplicationController は他のすべてのコントローラーの基本クラスです。protect_from_forgery with: :exception: これはクロスサイトリクエストフォージェリ (CSRF) 攻撃からアプリケーションを保護するための設定です。CSRFトークンが一致しない場合に例外を発生させます。
before_action :configure_permitted_parameters, if: :devise_controller?: これは Devise コントローラーが使用される前に configure_permitted_parameters メソッドを実行するためのフィルターです。
protected: これは以下のメソッドが保護されたメソッドであることを示します。保護されたメソッドはクラス内でのみ呼び出すことができます。
def configure_permitted_parameters: これは Devise のパラメータサニタイザーを設定するメソッドです。
devise_parameter_sanitizer.permit(:sign_up, keys: [:username]): これはサインアップ時に :username パラメータを許可します。
devise_parameter_sanitizer.permit(:account_update, keys: [:username]): これはアカウント更新時に :username パラメータを許可します。
この設定により、ユーザーがサインアップやアカウント更新を行う際に :username パラメータを送信できるようになります。
最後に
CursorはVSCodeをフォークしてるだけあって使いやすく、コード生成や説明のやり方も簡単で分かりやすいなと思いました。
今回はやっていないですが、リポジトリの説明をしてくれたり、コードの修正もしてくれるみたいです。
ぜひ、気になった方は使ってみてください。