{"contents":[{"id":"0w562v0u1","createdAt":"2025-07-27T05:10:34.070Z","updatedAt":"2025-07-28T01:26:06.866Z","publishedAt":"2025-07-27T05:22:37.933Z","revisedAt":"2025-07-28T01:26:06.866Z","title":"ブックマークの上位互換のChrome拡張を作った","body":"新たにChrome拡張を作成したのでその記事となります。\n今回はCursor,Cometを活用して開発を行ったので、うまく使えた方法をナレッジとしてまとめます。\n\n## 作成したChrome拡張の紹介\n\nquick-link-jump というChrome 拡張を作成しました。\nこの拡張機能の詳細はぜひ[ストア](https://chromewebstore.google.com/detail/ekhdeahifjjpnohanlbjpebefgncfpno?utm_source=item-share-cb)を見てほしいのですが、仕事で普段使ってるツールのkeyで画面遷移ができる（かもしれない）ようなツールです。\n\n一番想定したシチュエーションが、普段JIRAを使っていてスプレッドシートなんかでチケット番号だけもらって、リンクがない時に画面遷移をするために、適当なチケットを開く→チケットのURLのチケット番号部分を書き換える。という流れを取ってました。\nそこで、チケット番号を選択して右クリックし、選択されたテキストをテンプレートに埋め込み画面遷移ができるような拡張機能です。\n\n## 環境\n\n使用した生成AI / ツール\n- Cursor\n- Perplexity\n- Comet(PerplexityのAIブラウザ)\n\n## 開発の流れ\n\n1. 作成する拡張機能を整理して仕様として作成する\n2. 実際にプログラムを作成する\n3. Chrome Web Storeで申請する\n\n大きくはこの流れとなります。この中にも細かいステップを踏んでいったのでナレッジとして残そうと思います。\n\n### 1.要件定義 (Perplexity)\n\nほしい拡張機能のアイデアは、仕事中に「チケット番号のテキストだけもらってリンク移動するの面倒だな。」と思ったところが発端です。\n最初のアイデアはすでに固まっていました。\nただ、Chrome拡張でどこまでのことができるのか？という広い知識がないためそこでPerplexityの出番です。\n\n前の記事でも書いたのですが、Perplexityはウェブの情報を調べてくれるので\nハルシネーションリスクは一般的な生成AIより低いと思っております。\n\n具体的な対話の進め方として以下のステップを踏んで情報をまとめていきました。\n\n1. やりたいことの言語化を行う\n2. 実現するための技術調査を依頼する\n3. 技術的情報も込みで仕様書を出力する\n\nこの流れで実現性の高い仕様書が出力されました。\n\n今回作成したCursor向け指示書は[こちら](https://github.com/GASHIRA-E/quick-link-jump/blob/main/%E6%8C%87%E7%A4%BA%E6%9B%B8.md)\n\n### 2.実装 (Cursor)\n\n仕様書が完成したら次はCursorで実装を進めていきます。\n\nまずは仕様書をリポジトリに配置し、そのリポジトリを元に実装を進めます。\nただしここでも仕様書を元に実装をすぐに依頼するのではなく、仕様書を読んだ上で実装のステップを表示させるようにしています。\n\n（当時のやりとりログは消してしまったので思い出しながらの例ですが）\n\n```text\n@指示書.md\n指示書を確認し、実装を進めるためのステップを表示してください。  \nチェックポイントを設けやすい形でステップを提示してほしいです。\n```\n\nという形でプロンプトを送り、ステップを表示してもらいました。\nそのステップを手元のメモに残しステップ毎にプログラムの作成依頼を投げていきました。\n\nステップ毎に指示を出すことで、一気に全ての変更を出力しないので、作業毎に自分で判断をしやすいです。\nまた、全体の作業予定はわかっているためステップが問題ないかを判断しやすいというのも信頼性の高い開発が進められた形となります。\n\nまた、今回の開発で意識できたこととしてある程度実装が進んだタイミングでリファクタリングをかけていくことですね。\n普段人力でやる時は実装途中でリファクタが気になって雑念的な感じで出てくるんですが、AIで実装をしていると、リファクタのフェーズと実装のフェーズを繰り返しながらの実装が大変楽にできるから、品質も上がっていっている感じがします。\n\n「計画→実装→見直し→リファクタ」このループを細かく進めていけることこそAI実装の強みなのかなと最近は考えています。\n\n### 3.公開申請 (Comet)\n\nChrome拡張を公開するために、Chrome web storeで拡張機能の申請を行う必要があります。\nその時にとても便利だったのがCometです。\n\nCometは、現在誰でも使えるわけではなく2025/07/27現在だとアーリーアクセスでの提供を行っており、招待制で利用が可能なブラウザです。\nChatGPTも同じようなAIブラウザを配信し始めたようですね。\n\nそんなAIブラウザのCometはページの要約だったり、タブ自体を `@` で指定することで複数のタブで情報を比較したりなどが行えます。\nそしてそのほかにできることが、フォームの入力などブラウザの操作も可能です。\n\n例えばGoogle Formでフォームを作る指示を出したのですが、以下のような動きをします。\n\n1. Google Form を開いて右側のエージェント欄に指示を入力\n\n![ai-chrome-2/comet-1.png](https://images.microcms-assets.io/assets/39656de2b10f492fb4033ddbe8999636/29bec56616614dfc8145a55d383b12c0/ai-chrome-2%2Fcomet-1.png)\n\n2. 実際に指示通りに実行してくれた後のキャプチャ（ここまで6分）\n\n![ai-chrome-2/comet-2.png](https://images.microcms-assets.io/assets/39656de2b10f492fb4033ddbe8999636/ceb28d740b31451fbc8f97b8bb78d75b/ai-chrome-2%2Fcomet-2.png)\n\nこのような処理をプロンプトひとつで進めてくれるような機能が搭載されています。\nこれをどう役に立てたのか？というと、Chrome web storeではChrome拡張の登録をする時に「権限が必要な理由」や「単一用途」（どういった目的の拡張機能なのか）を記載する必要があります。\n毎回これをある程度の定型分に沿って書くのは手間なので、以下手順で対応しました。\n\n1. Cursorで、作成した拡張機能の概要を作成\n2. Cometで申請ページへ移動\n3. 概要を貼り付けてプライバシー部分を埋めてもらう\n\n上記手順でプライバシー欄はすぐに埋めることができました。\n\n若干味のないやり方ではありますが、個人制作なのでこの辺りはサッと済ませたいですからね。\n\nあとは、アイコンを作ったりキャプチャを用意したりなどを行い公開申請を行いました。\n\n## 最後に\n\n最近は生成AIによって個人で書いたコードが最後まで進むことが増えた気がします。\nCometやCursorなど何かに特化したソフトウェアが存在し、対話型AIが主流だった２年前とは全く違う景色になってきましたね。\nこれからさらにAIが低レイヤーに入っていって、近い未来macOS自体で生成AIが動いてくれるでしょうね。\n\n一方で、生成AIが低レイヤーを扱うにあたって「プライバシーとは？」なんていう原初の疑問に立ち返っていく必要も出てきますね。\n\n生産性と安全性、しっかりとバランスを取って開発を進めていきたいと思う今日この頃でした。\n\nお読みいただきありがとうございました。","tags":[{"id":"wt4ea7-6it","createdAt":"2025-07-27T04:56:23.412Z","updatedAt":"2025-07-27T04:56:23.412Z","publishedAt":"2025-07-27T04:56:23.412Z","revisedAt":"2025-07-27T04:56:23.412Z","name":"生成AI"},{"id":"ii64bamjewkf","createdAt":"2025-07-27T04:57:14.811Z","updatedAt":"2025-07-27T04:57:14.811Z","publishedAt":"2025-07-27T04:57:14.811Z","revisedAt":"2025-07-27T04:57:14.811Z","name":"Chrome拡張"}]}],"totalCount":9,"offset":0,"limit":1}