GitHub PR Issue Greeterで効率的なワークフローを実現：自動応答ボットGithub appの導入ガイド

## はじめに

現代のソフトウェア開発において、GitHubリポジトリの管理は欠かせません。しかし、新しいプルリクエスト（PR）やIssueに迅速に対応することは、開発者にとって大きな負担となることがあります。そこで注目されているのが「GitHub PR Issue Greeter」です。このボットを使えば、PRやIssueへの初期対応を自動化し、開発チームの効率を大幅に向上させることができます。

## デモ動画

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">GitHub APPの作成にチャレンジ！！！⑥<br>サンプルアプリを整理中。。。<br>---<br>.envから初期化<br>→issueを作成<br>→<a href="https://t.co/70ObGqkA9c">https://t.co/70ObGqkA9c</a>を経由<br>→ローカルのflaskでコメント作成 <a href="https://t.co/02JMcuyXpm">https://t.co/02JMcuyXpm</a> <a href="https://t.co/AEhY5J8l85">pic.twitter.com/AEhY5J8l85</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1824815983468663063?ref_src=twsrc%5Etfw">August 17, 2024</a></blockquote> 

## GitHub PR Issue Greeterとは？

GitHub PR Issue Greeterは、GitHubリポジトリに新しく作成されたPRやIssueに自動的に応答するPythonベースのボットです。このツールは、github-app-sandboxプロジェクトの一部として開発されており、GitHub Appの開発とテストを安全に行うための環境を提供しています。

### 主な特徴

1. **自動応答機能**：
   - 新しいPRが作成されると、自動的に歓迎のコメントを投稿します。
   - 新しいIssueが開かれた際も、即座に対応メッセージを送信します。

2. **カスタマイズ可能**：
   - 応答メッセージは簡単にカスタマイズでき、プロジェクトの雰囲気に合わせて調整できます。

3. **ログ機能**：
   - 詳細なログ機能により、ボットの動作を追跡し、問題が発生した場合にすぐに対処できます。

4. **セキュアな認証**：
   - GitHubのApp認証を使用しており、セキュリティ面でも安心です。

## セットアップ手順

GitHub PR Issue Greeterを導入するのは、思ったより簡単です。以下の手順に従って設定を行いましょう。

1. **リポジトリのクローン**：
   ```
   git clone https://github.com/Sunwood-ai-labs/github-app-sandbox.git
   cd github-app-sandbox/sandbox/s01_github_pr_issue_greeter
   ```

2. **依存関係のインストール**：
   ```
   pip install flask PyGithub loguru python-dotenv
   ```

3. **環境設定**：
   - `.env.example`ファイルを`.env`にコピーし、必要な情報を入力します。
   ```
   cp .env.example .env
   ```
   
   `.env`ファイルの内容は以下のようになります：
   ```
   GITHUB_APP_ID=972367
   GITHUB_PRIVATE_KEY_PATH=gh-pr-issue-greeter.2024-08-17.private-key.pem
   ```

   これらの値の入手方法：
   
   a. **GITHUB_APP_ID**:
      - GitHubの[Developer settings](https://github.com/settings/apps)ページにアクセスします。
      - 作成したGitHub Appを選択します。
      - 「About」セクションに「App ID」が表示されています。この数字をコピーして使用します。

   b. **GITHUB_PRIVATE_KEY_PATH**:
      - 同じくGitHub Appの設定ページで、「Private keys」セクションに移動します。
      - 「Generate a private key」ボタンをクリックします。
      - .pemファイルがダウンロードされるので、このファイルをプロジェクトのルートディレクトリに配置します。
      - .envファイルには、このpemファイルの名前を記入します。

4. **GitHubアプリの作成**：
   - GitHubの[Developer settings](https://github.com/settings/apps)で「New GitHub App」をクリックします。
   - アプリ名、説明、Webhook URL（開発時はsmee.ioなどのプロキシサービスのURLを使用）を入力します。
   - 必要な権限（PRとIssueへの読み書き権限など）を設定します。
   - アプリを作成したら、上記の手順でApp IDと秘密鍵を取得します。

5. **アプリの実行**：
   ```
   python app.py
   ```


## 使用方法

セットアップが完了したら、以下の手順でボットを稼働させます：

1. smeeクライアントを起動してWebhookをローカルサーバーに転送：
   ```
   smee -u https://smee.io/your_unique_url --port 5000
   ```

2. Flaskアプリケーションを起動：
   ```
   python app.py
   ```

3. GitHubリポジトリで新しいPRやIssueを作成し、ボットの動作を確認します。

## カスタマイズのヒント

1. **応答メッセージの変更**：
   `app.py`ファイル内の`comment_text`変数を編集することで、応答メッセージをカスタマイズできます。

2. **イベントの追加**：
   現在はPRとIssueの作成時のみに対応していますが、他のGitHubイベントにも簡単に拡張できます。

3. **ログ設定の調整**：
   `logger.add()`の呼び出しを変更することで、ログの出力先や形式をカスタマイズできます。

## まとめ

GitHub PR Issue Greeterは、開発チームのワークフローを大幅に改善する強力なツールです。自動応答機能により、コントリビューターに素早くフィードバックを提供し、プロジェクトの活性化につながります。また、カスタマイズ性の高さと簡単なセットアップ手順により、さまざまなプロジェクトに柔軟に対応できます。

ぜひGitHub PR Issue Greeterを導入して、より効率的で活気のあるGitHubリポジトリ管理を実現してください。オープンソースコミュニティとの協力も歓迎しています。新機能の提案やバグ報告は、プロジェクトのGitHubページでお待ちしています。

## リポジトリ

https://github.com/Sunwood-ai-labs/github-app-sandbox

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>