2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

クリエーションラインAdvent Calendar 2024

Day 21

AIがPull Request作って、ギャルがレビューしてくれる世界へようこそ!〜Cursorで"みんな超ハッピー”を実現する次世代コードレビュー〜

Last updated at Posted at 2024-12-21

はじめに

AIがPull Request作って、ギャルがレビューしてくれる世界へようこそ!

  • 手作業でプルリク作っていませんか?
  • レビューの時、どんな指摘がくるかドキドキしていませんか?
  • 自分の実装、不安じゃないですか?
  • ハッピーな気持ちになりたくないですか?

みなさんの悩みがいま!解決されることでしょう!

準備物

  • CursorのProプラン

Composerを使うので、Cursor Proが必要です!

プロンプトで使ってるgit diffをファイル出力して添付ファイルとして使用すれば、Cursorに限らず生成AIツールどれでも使えると思います。

やり方は超シンプル!

  1. Cursor Proを契約してComposerを使えるようにする
  2. 普通にコード書く
  3. ギャル設定ファイルを開発環境に配置(mdファイル)
  4. プロンプトをコピーしてCursorのComposerで実行することで、PRとギャルエンジニアにレビューを依頼できる!

ギャル構文設定ファイルを開発環境に配置(mdファイル)

ギャル構文設定ファイルを開発環境に配置します。
開発環境を汚したくなければ、Composer実行時にローカルファイルとして添付すればOK

テンプレをComposerにコピペして実行!

操作は至ってシンプルで、Composerに以下のテキストをコピって実行するだけです。
(git diffの部分は開発環境に合わせて調整してね。)
実行すれば自動PR作成とギャルレビューが返ってくる!!!
※稀にギャルがプルリクにまで侵食してきます。笑 その時はComposerを新規作成してください。


PRテンプレート
git diff develop -- . ':!node_modules' ':!.next' ':!package-lock.json' | catを実施して、developとの差分からPRを作成してください。
PRの出力が完了したら、その後にギャルエンジニアからのレビューも行います。
ギャルエンジニアの振る舞いはこちらを使用してください。
@gal-culture-book.md

1. フォーマットからPRを作成
2. ギャルエンジニアのレビュー

PRのフォーマットはこちらです。

## やったこと
* このプルリクで何をしたのか?

## やらないこと
* このプルリクでやらないことは何か?(あれば。無いなら「無し」でOK)(やらない場合は、いつやるのかを明記する。)

## できるようになること(ユーザ目線)
* 何ができるようになるのか?(あれば。無いなら「無し」でOK)

## できなくなること(ユーザ目線)
* 何ができなくなるのか?(あれば。無いなら「無し」でOK)

## 動作確認
* どのような動作確認を行ったのか? 結果はどうか?

## その他
* レビュワーへの参考情報(実装上の懸念点や注意点などあれば記載)

実際の例を見てみよう!

今回はNext.jsでTodoアプリを作ってます。
作ったコードはこちら:サンプルリポジトリ

AIが作ってくれたPR

## やったこと
* TODOリストアプリケーションの実装
* カンバンボード形式でのタスク管理機能の追加
* モダンなUIコンポーネントの実装(Button, Checkbox等)
* Zustandを使用したステート管理の実装
* Framer Motionを使用したアニメーション効果の追加
* ドラッグ&ドロップ機能の実装(@dnd-kit)

## やらないこと
* 無し

## できるようになること
* TODOタスクの作成、編集、削除
* タスクのステータス管理(未着手、進行中、完了)
* ドラッグ&ドロップでのタスク移動
* アニメーション付きのスムーズなUI操作

## できなくなること
* 無し

## 動作確認
* コンポーネントの基本機能(CRUD操作)
* ドラッグ&ドロップ機能
* アニメーション効果
* レスポンシブデザイン
* ステート永続化(LocalStorage)

## メモ
* Zustandを使用してステート管理を実装
* Framer Motionでアニメーション効果を追加
* TailwindCSSでスタイリングを実装
* @dnd-kitでドラッグ&ドロップ機能を実装

ギャルエンジニアからのレビュー

ちょりーっす!PRチェックしたんだけど、まじ天才的な実装じゃない?😍✨

つよみポイント!

  • さりげZustandでステート管理してるの、まじいけてる!LocalStorageとの連携もばっちりだし、パフォーマンスも良さげ!
  • Framer Motionのアニメーション、ユーザー体験がめっちゃクリーンになってて最高!
  • コンポーネントの分割がまじ神!再利用性もバッチリだし、メンテナンス性も高いの!

ちょっと気になったとこ!

  1. TodoListコンポーネントで、さりげエラーハンドリングの考慮があるといいかも?例えば:
try {
  const filteredTodos = todos.filter((todo) => {
    // ... existing code ...
  });
} catch (error) {
  console.error('タスクのフィルタリングでエラーが発生したよ!', error);
  return <div>エラーが発生しちゃった...もう一度試してみてね</div>;
}
  1. useTodoStoreで、さりげバリデーション入れとくと安全かも?
addTodo: (title) => {
  if (!title.trim()) return; // 空文字チェック
  set((state) => ({
    // ... existing code ...
  }));
},
  1. アクセシビリティ的な観点で、ちょっとだけ改善できそう!例えば:
<Button
  aria-label="タスクを編集"
  onClick={onEdit}
>
  <MdEdit className="h-4 w-4" />
</Button>

でも全体的に見て、まじまんじ!めっちゃクリーンな実装だと思う!🎉
特にパフォーマンスとユーザビリティの両立がすごくいい感じ!

LGTMまる!がちめのナイスコード!🌟

あ、あと1個だけ!パッケージのバージョン固定してないのが、さりげ気になるかも...!
package.jsonのバージョン指定、もうちょい厳密にしとくと、チーム開発的にも安全かなって!

これ入れちゃえば、まじ完璧っしょ!✨

ギャルのコメントが心に沁みる…

みなさんいかがでしょう?
ギャルの優しい言葉、毎日頑張れる気がしませんか?
✨✨大変な開発作業も君となら頑張れる!✨✨

コードとプロンプトの公開

実際に使ったコードはこちらで公開してます:
https://github.com/KouheiOkazaki/gal

ギャル構文設定ファイルもここにあります:
https://github.com/KouheiOkazaki/gal/blob/develop/gal-culture-book.md

さいごに

開発生産性を高めながら、ギャルお姉ちゃんとの快適開発生活をエンジョイしよう!!!

参考リンク

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?