3
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?

バイブコーディングでGitHub Text To Issueというchrome拡張機能をつくってみた

Last updated at Posted at 2025-09-30

どもども、ランサーズでSREしているogimanです。

いやーほえーふがー気候が最高ですね。
通勤もラクになったので日々テンション↑↑

今回は生成AIで作成したChrome拡張機能のご紹介
バイブコーディングで作っているのでコードは書いてません。
コードは煩雑かもしれませんが、こんなものをほぼ手放しで30分くらいで出来てしまうのがすごい!
良い時代ですねー

GitHub Text To Issue

WebページからワンクリックでGitHubイシューを作成できるChrome拡張機能です。
サイドパネル形式で使いやすく、選択したテキストやページ情報を自動的にイシューに含めることができます。
Github Projectに対応しています。

背景

毎回、Githubを開いてISSUE作成してっていうのが面倒でした。
Chrome拡張機能とかでさくっとできないか?というのが事の発端です。
似たようなChrome拡張機能はあったのですが、GithubProjectに対応したものがなかったので作ってみました。
めちゃくちゃISSUE作成するのがラクになったのでうれしー!
生成AIに感謝感激でーす。

🚀 主な機能

  • Chrome拡張機能を押下すると、事前に設定したGithub Projectのフィールドから選択できる
    スクリーンショット 2025-09-30 15.27.20.png

  • WEBサイト内のテキストを選択して右クリックすると、選択したテキストがISSUEに追加される

スクリーンショット 2025-09-30 15.28.28.png
スクリーンショット 2025-09-30 15.46.20.png

✨ サイドパネルUI

  • サイドパネル形式: ポップアップではなくサイドパネルで表示され、より広い作業スペースを提供
  • レスポンシブ対応: パネル幅を調整すると自動的にコンテンツもリサイズ
  • 常時表示: ページを移動してもパネルが開いたまま

📝 イシュー作成機能

  • 自動URL取得: 現在のページURLを自動的に取得
  • 手動編集対応: Current URLフィールドは編集・追記可能
  • テキスト選択対応: ページ上のテキストを選択してコンテキストメニューから直接イシュー作成
  • タイトル自動設定: ページタイトルを基にイシュータイトルを自動設定

🔧 高度な設定機能

  • 複数リポジトリ管理: 複数のGitHubリポジトリを登録・管理
  • デフォルトリポジトリ設定: よく使うリポジトリをデフォルトに設定
  • ラベル・アサイニー: デフォルトのラベルやアサイニーを事前設定
  • GitHubプロジェクト連携: プロジェクトフィールドの自動取得・設定
  • プロジェクトフィールド: Urgent、EPIC、Important、Estimateなどのカスタムフィールドに対応

📦 インストール方法

開発者モードでのインストール

  1. このリポジトリをクローンまたはダウンロード
  2. Chromeで chrome://extensions/ を開く
  3. 右上の「デベロッパーモード」を有効にする
  4. 「パッケージ化されていない拡張機能を読み込む」をクリック
  5. このプロジェクトのフォルダを選択

⚙️ 初期設定

1. GitHubトークンの作成

  1. GitHub Settings > Personal Access Tokens にアクセス
  2. 「Generate new token」をクリック
  3. 以下のスコープを選択:
    • repo (リポジトリへのフルアクセス)
    • project (プロジェクトへのアクセス)
  4. トークンを生成してコピー

2. リポジトリの設定

  1. 拡張機能のアイコンをクリックしてサイドパネルを開く
  2. 「Settings」ボタンをクリック
  3. 「Add Repository」をクリック
  4. 以下の情報を入力:
    • Organization/Owner: GitHubのオーガニゼーション名またはユーザー名
    • Repository: リポジトリ名
    • GitHub Personal Access Token: 作成したトークン
    • Default Labels: デフォルトで付けるラベル(オプション)
    • Default Assignees: デフォルトのアサイニー(オプション)

3. プロジェクト設定(オプション)

  1. リポジトリ設定で「Fetch Projects」をクリック
  2. 利用可能なプロジェクトから選択
  3. 「Fetch Fields」でプロジェクトフィールドを取得
  4. 使用するフィールドにチェックを入れる

🎯 使用方法

基本的な使い方

  1. サイドパネルを開く: 拡張機能のアイコンをクリック
  2. リポジトリ選択: ドロップダウンからターゲットリポジトリを選択
  3. イシュータイトル入力: イシューのタイトルを入力
  4. URL・詳細編集: Current URLフィールドで追加情報を入力
  5. ラベル・アサイニー選択: 必要に応じて選択
  6. プロジェクトフィールド設定: Urgent、EPIC等のフィールドを設定
  7. イシュー作成: 「Create Issue」ボタンをクリック

テキスト選択からの作成

  1. Webページ上でテキストを選択
  2. 右クリックして「Create GitHub Issue with selected text」を選択
  3. サイドパネルが開き、選択したテキストが自動的に含まれる
  4. 必要に応じて編集してイシューを作成

🏗️ プロジェクト構造

GithubTextToIssue/
├── manifest.json          # 拡張機能の設定ファイル
├── background.js          # バックグラウンドスクリプト
├── popup.html            # サイドパネルのHTML
├── popup.js              # サイドパネルのJavaScript
├── options.html          # 設定ページのHTML
├── options.js            # 設定ページのJavaScript
├── styles.css            # サイドパネルのスタイル
├── options.css           # 設定ページのスタイル
├── icons/                # 拡張機能のアイコン
└── README.md             # このファイル

🔧 技術仕様

対応ブラウザ

  • Google Chrome 114以降(Side Panel API使用)

使用技術

  • Manifest V3: 最新のChrome拡張機能仕様
  • Side Panel API: サイドパネル表示
  • GitHub REST API: イシュー作成・プロジェクト管理
  • Chrome Storage API: 設定データの保存
  • Context Menus API: 右クリックメニュー

主要ファイルの役割

manifest.json

  • 拡張機能の基本設定
  • 権限とAPIの定義
  • サイドパネルの設定

background.js

  • サービスワーカー
  • コンテキストメニューの管理
  • サイドパネルの開閉制御

popup.js

  • サイドパネルのメインロジック
  • GitHub API呼び出し
  • イシュー作成処理

options.js

  • 設定ページのロジック
  • リポジトリ管理
  • プロジェクトフィールドの取得・設定

🎨 カスタマイズ

スタイルの変更

  • styles.css: サイドパネルのスタイル
  • options.css: 設定ページのスタイル

デフォルト幅の調整

manifest.jsonside_panel.default_widthで初期幅を変更可能(現在385px)

3
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
3
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?