画像加工用の自作アプリケーションで使用していた TImage コントロールを TPaintBox コントロールに入れ替える作業を Cursor で行いました。自分でやったら、「少なくとも数日は要したであろう」作業が「わずか数分で、しかも、エラーなく、完了!」しました。Cursor 凄すぎます!
【もくじ】
1.コントロール入れ替えのための準備作業
2.用意したプロンプト
3.実行
4.まとめ
5.お願いとお断り
1.コントロール入れ替えのための準備作業
今回の主役 Cursor をまずインストール。※ 以下の解説は Windows の場合です。
https://cursor.com/ja/download
“Download for Windows” をクリックしたら自動的に CursorUserSetup-x64-3.4.XX.exe がダウンロードされました(XX 部分の2桁の数値は頻繁に更新されて増加するようです。ちなみに 2026 年 4 月 28 日は 11、2026 年 5 月 16 日は 20 でした)。この exe を起動して Cursor をインストールします。
インストールが完了したら、日本語化します。
Cursor を日本語化するには、日本語表記用の言語パッケージをインストールする必要があるとのことで、Web 上にあった情報を参照しながら作業しました。

赤い枠囲み部分をクリック(ショートカットを利用するなら Ctrl + Shift + X を実行)して、検索バーを表示し、Japanese Language pack と入力するだけで自動的に検索が実行され、表示された検索結果の上のほうにある Japanese Language Pack for VS Code をクリックすると、その右側に Install ボタンが表示されるので、こちらをクリックしてインストールを実行します。
言語パッケージのインストールが完了したら、表示言語の設定を変更します。
メニューの View からコマンドパレットを開き(ショートカットなら、Ctrl + Shift + P)、次のように入力します。
Configure Display Language
すると、下に Configure Display Language が表示されるのでそれをクリックして選択します。

使用できる言語の一覧が表示されるので、日本語を選びます。

設定を反映させるには、Cursor の再起動が必要なようです。再起動したら、Cursor 上部のメニューが日本語になっていました。これでとりあえず設定は完了したことにします。
Cursor の使い方をまったく知りませんので、とりあえず、この状態で動かし、何か問題があればエラーメッセージ等が表示されると思いますので、それを見て対応することにしました。
【重要】
次は、今回コンポーネントの入れ替えに使用する Delphi のプロジェクトの内容を丸ごと別のフォルダ内にコピーします。コントロールの入れ替え作業は、このコピーしたプロジェクトに対して実行します(オリジナルはバックアップとして必ず残しておきます)。
Cursor を起動して、ファイルメニューから「フォルダーを開く」を選択し、オリジナルプログラムを全部コピペした作業用フォルダを選択すると、左ペインにフォルダ内のファイルが表示されるので、書き換え対象の pas ファイルをクリックして選択します。
中央のエディター部分に pas ファイルの内容が表示されますが、文字化けしていました。

画面右下にある文字セットの表示をクリックします。

次のように表示されるので、「エンコード付きで再度開く」をクリックし、

表示される一覧から「 Japanese (Shift JIS) 」をクリックして選択したら、

宇宙語みたいな文字は、無事、日本語に変わりました!

Cursor 本体のインストールと日本語化と文字化け対応以外に、ここまでで行ったことは、Delphi のプロジェクトをコピペしたフォルダを指定して開き、コードを記述した Unit1.pas をクリックして中央のエディターペインに表示しただけ!です。走召!カンタン!!

これで、準備作業は、半分完了?(です)。
2.用意したプロンプト
あとはプロンプトの入力(準備)だけですが、その前にそもそも、なぜ、TImage を TPaintBox に入れ替えようと思ったのか、その部分をザックリ説明します。このブログの過去記事でご紹介した Capity Plus(既存の製品ではどうしても満足できず、自分の欲しい機能だけ全部詰め込んで作成したオリジナルの画像加工アプリ)で、ただ一点、どうしても気になることがあって、それを解決したかったからです。
それは何かというと…
TImage は TGraphicControl でウィンドウハンドルを持たないため、これで作成したラバーバンドをドラッグすると、そのドラッグ中に画面の再描画が過剰に発生して、ラバーバンドが激しく揺れるフリッカーと呼ばれる現象が起きてしまうのです。これは Delphi の VCL の構造上避けることができない問題で、根本的な解決方法は TImage を他のコントロールと入れ替えるしかありません。
実は、当該画像加工アプリを作成した時、僕は TPaintBox でラバーバンドを作る方法を知らなかったのです。そこで、当時、唯一知っていた TImage を利用してラバーバンドを作る方法でこれを実装するしかありませんでした。
もちろん、開発当初からラバーバンドのドラッグ時に、フリッカーが発生するのは気になっていましたが、それ以外の部分では(自分的には)期待通りに動作するアプリが作れたので、もう日常使いはコレ一択で、日々たいへん喜んで使っていました。が、その後、偶然、TPaintBox でもラバーバンドが作れることを知ってからは、当該アプリ使用時にフリッカーが発生するのを目の当たりにするたびに(直さなきゃ…)って思いが、日に日に強くなって…
しかし、コントロールの入れ替えに伴う(自分的には)膨大な手間と、その入れ替えに失敗する可能性(の高さ)を考えると(フリッカーが発生しても、これは Delphi の TImage の仕様みたいなもので、アプリ自体が落ちるわけじゃないし、取り敢えず使用できるので、それを究極の不具合とは思えなかったこともあり)、入れ替え作業を実行することにためらいを感じていたことも事実でした。
そんな時、職場の友人から Cursor のことを聞き(それは凄い!と、かなりワクワク・ドキドキしてしまい)、Cursor の使い方を、ぜひ学びたい気持ちも相まって、これは絶好の機会だと感じ、Cursor に何もかも全部丸投げするかたちで VCL コントロールの入れ替えを行ってもらおうと思ったのです。
プロンプトは、どんなものを用意すればいいのか、さっぱりわからなかったので、単刀直入に次のプロンプトもどき?と、TPaintBox でラバーバンドを実装した際に書いたコード一式を指定。
このDelphiのコードで、TplResizeImage クラス(コンポーネント)を使ってラバーバンド(選択矩形)を描画している部分を、以下のUnit1内のTPaintBoxを使った実装に書き換えてください。
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, System.Math, System.Types;
(以下、延々と続く TPaintBox で作るラバーバンドの実装コード)
このプロンプトもどき?以下のラバーバンドの実装コードは、このブログの次の過去記事で紹介させていただいた Unit1.pas です。これを、そのまま、全部、プロンプト入力欄にコピペしました(記事に掲載した内容そのままです!)。
・・・ということで、次のようにプロンプトが完成(?)しました。

はたして、これで、OK なのでしょうか?
3.実行
他にすることは思いつかないし、 Cursor の詳しい設定は知らないので、あとは実行するだけです。プロンプト入力欄の右下の ↑ マークをクリック後、Cursor が作業を完了するまで約9分かかりました。
作業終了後、修正結果を上書き保存して、Delphi で当該プロジェクトを開き、コンパイルしたところ、エラーは発生せず、アプリのフリッカーは見事に消え、その他の機能は「コンポーネントの入れ替えなどなかった」かのように、完全に動作しました!
結果として、新たな問題は一切起こることなく、VCL コンポーネントの入れ替えに成功しました。あまりにも簡単に出来てしまったので、なんだか信じられない気持ちでしたが、巷で騒いでいる通り、まさに「 そういう時代になったのだ 」と、それだけを、ただ、ただ、ただ・・・ 実感しました!!
正直、今までの(コーディングに関する)苦労 は、いったい なんだった のでしょうか…
【参考】
使用できる AI は、Cursor Settings の Models で設定できるとのことでした(今回はここの設定は変更せず、デフォルトの設定のまま、コンポーネントの入れ替え作業を実行しました)。

4.まとめ
Cursor すごい です!!!
【ご注意願います】
ただ、今回得られた結果を AI に確認したところでは、たまたま(今回に限っては)うまく行った!というのが本当のところで、同じプログラムコードに対して、同じプロンプトを適用しても、生成されるコードは毎回、同じにはならない(似て非なるものになる)ということでした。
今回のプロジェクトに対して、試しに実験してみましたが、確かに2回目はコンパイル時にエラーが発生して、コードの訂正作業が必要になりました(実際に訂正作業は行いませんでしたが・・・)。1回目で期待した通りの結果が得られたのは、ただ単に、たまたま運がよかっただけなのですねー☆
ドラッグ時のフリッカーが消えた画像加工アプリは、次のリンク先記事内でダウンロードできます。もし、よかったらお試しください。同一範囲の連続キャプチャ(連続してスクリーンショットを撮る場合)など、それなりに便利に使えると思います。
5.お願いとお断り
このサイトの内容を利用される場合は、自己責任でお願いします。記載した内容(プログラムを含む)を利用した結果、利用者および第三者に損害が発生したとしても、このサイトの管理者は一切責任を負えません。予め、ご了承ください。