Devin Setup

株式会社 Ruby開発において Devin の試用を始めており, 少しずつ性能を評価しております.

ポンコツな所もあり, クセを学ぶ必要もありますが有用と思われます.
初級の課題を与えた所, Devin はジュニアレベル以上のコードを生成しました.

使用する方も増えると思いますので setup の雰囲気をだいぶ簡単に記述します.


# 概要
初めて Devin Interface を開くと種々設定が必要になる.
初回のチュートリアルの様な設定画面は既に開けなくなりましたが, 恒常的な設定画面を元に説明を行う.

**※ 2025/05 現在, Devin の UI は高頻度で変化しているので, 不一致の画面もあるかと思います**



# 概要
- オプトアウト
- Github, Slack 連携
- 環境変数
- Knowledge
- ワークスペース, 開発環境の設定




# Settings 画面を開く
- `[ 画面左下の歯車 ]` を選択
- 以降, 当設定画面を用いる

    ![スクリーンショット 2025-05-23 19.08.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/299d15f0-9602-455e-8d50-a19c8582220b.png)




# オプトアウト
データを Cognition 社のトレーニングに使用させない

- `[ Data Controls ]` を選択
- 以下の項目のトグルスイッチを disabled へ設定
    - `[ Evaluate Devin ]`
    - `[ Make Devin Smarter ]`
    ![スクリーンショット 2025-05-16 18.15.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/c170a5fb-b930-431d-af19-04a8d817792b.png)




# Github 連携
Devin が操作する Github account, repository を設定する

- `[ Organization Integrations ]` を選択
- `[ Connect to Github ]` を選択
    ![スクリーンショット 2025-02-25 19.46.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/7c430f17-2d80-4550-8770-d6ceff17e68b.png)

- Github のアカウント選択画面から連携するアカウントの `[ Continue ]` を選択
    ![スクリーンショット 2025-02-25 19.47.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/474adf59-cb2b-43f3-b505-4adfa5ca8e89.png)

- 複数の orgnization に所属していると複数のプロファイルが表示されるので `[ 連携する organization ]` を選択
    ![スクリーンショット 2025-02-25 19.47.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/07862c04-ca85-4d61-a837-c81075904aca.png)

- `[ 権限を付与するリポジトリ ]` を選択し, `[ install ]` を選択
    ![スクリーンショット 2025-02-25 19.47.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/95270d07-3c50-4664-8955-9791c7fb98e6.png)

以上で Devin へ Github 操作権限が付与される




# Github 連携補足
devin user が Github account の owner 権限を持っている場合, 簡単に devin に連携できます.
自身に owner 権限が無い場合, 以下の様に多少面倒になります

- 前提
    - 1 : Devin user と github user に登録されている同一人物, これを `devin user` と呼称する
    - 2 : `devin user` とは無関係に存在する github organization account を `他社アカウント` と呼称する. 
    - 3 : `devin user` の Devin account へ `他社アカウント` を接続する. 
        - この際, `devin user` は `他社アカウント` の github owner 権限は不要 
- 流れ
    - `他社アカウント` から `devin user` の github acocunt を organization の member 権限で追加する
    - `devin user` は, devin の integration 画面から `他社アカウント` に devin install request を送信する
    - `他社アカウント` は request を承認し, devin app を github app として install する
    - `devin user` は devin integration 画面にて devin と `他社アカウント` github を接続する

という流れになります.
以下 screen shot を交えて記述します


- `他社アカウント` の oganization へ member 権限で `devin user` の github account を invite する
    - github organization people 画面より invite を行う
    - `devin user` へ invite mail が送付されるので, invite を受け入れます 
![スクリーンショット 2025-05-23 10.37.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/f8c0c764-d740-48bc-9b37-465f795f53dc.png)


- `devin user` にて Devin Integration 画面を開き, `Connect Your work Github` を選択
    ![スクリーンショット 2025-05-23 10.01.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/d01babb1-1823-4231-b327-1e786c30cd74.png)

- `Connet to a Different Organization` を選択
    ![スクリーンショット 2025-05-23 10.01.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/a72452e7-e182-405d-8989-deef4b1a8dc5.png)

- `他社アカウント` が表示されているはずなので選択する
    - ここで表示されていなければ, repository への collaborator として登録が必要かもしれません
    ![スクリーンショット 2025-05-23 10.02.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/486d7424-2fa8-4ae8-a3a4-a8e0572a5ba6.png)

- 必要事項を入力して request を発行する
   ![スクリーンショット 2025-05-23 10.02.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/2ddc697e-5fc9-4fb6-9fa6-217216e5c554.png)

- `他社アカウント` に以下 request mail が届くはずです
    -  link を開き request を approve します
![スクリーンショット 2025-05-23 18.16.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/74d20884-5772-4b9c-ab11-e43cab2a6233.png)
![スクリーンショット 2025-05-23 10.06.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/fb0b7adf-1c24-43c0-bd13-7d908f8ef8ef.png)

- `devin user` が devin integration 画面を再度開き,  `Connect your work Github` を選択する
![スクリーンショット 2025-05-23 10.01.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/8ab4cd13-3db7-40b0-934e-76ce2bb4ca2e.png)

- 当初表示されていなかった `他社アカウント` が表示されているはずです. 該当 github アカウントを選択し連結処理を完了させます
![スクリーンショット 2025-05-23 10.40.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/1c3e6f12-aaa5-44fc-b1fc-21249359d018.png)


以上で自身の管理外 github account と連携ができます





# Slack 連携
Slack 上において devin への指示, 経過報告などに用いる

- `[ Connect Slack Organization ]` を選択
    ![スクリーンショット 2025-02-25 19.46.50のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/287f8358-2457-4629-a28a-70a4917019f7.png)

- 確認画面へ遷移し, `[ Allow ]` を押下
    ![スクリーンショット 2025-02-25 20.07.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/c5845ec3-b93e-4b85-85f7-c3fd3682d98b.png)

- Slack で Devin の通知, 操作に用いる channel を開く
    - `/app` と chat へ入力, `add app to this channel` を選択
    - search form へ `Devin` と入力
    - 該当項目の `[ Add ]` を選択

    ![スクリーンショット 2025-02-25 20.19.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/d8b57971-0054-42c7-8322-ca077109de83.png)
    ![スクリーンショット 2025-02-25 20.13.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/8f03a5ee-98fd-4cd4-83c0-5f493997f0e2.png)

以上で Slack channel から `@Devin` とメンションする事で指示が可能になる

# slack 補足
- Devin 画面へ戻り `[ Link User ]` を選択
    - 操作中のユーザーが登録され
    - channel 設定のドロップダウンメニューが表示されるようになる
    ![スクリーンショット 2025-02-25 20.10.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/09f4cfef-8ade-4332-b37b-02bb6b1b8966.png)
- 通知先 channel の設定
    - channel のドロップダウンメニューから通知先の channel を選択する
    ![スクリーンショット 2025-02-26 10.08.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/7dee9a0b-48fc-4cc1-8c8f-a36e4712f4b3.png)

以上で当該 channel へ RP が merge された際などに通知される



# 環境変数
Devin が使用する shell から環境変数を用いる事ができる 
例えば, dockerhub のアカウントを登録しておく事で, docker image を Devin が DL 可能になる 

- `[ Secrets ]` を選択
- `[ Add Secret ]` を選択
    ![スクリーンショット 2025-02-25 20.21.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/20215992-c223-4bae-81f7-9acaa8355440.png)
- `Type`, `Name`, `Value` を設定
    - Sensitive を Enabled に設定すると, Value が隠される
- `[ Add ]` を選択
    ![スクリーンショット 2025-02-25 20.21.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/b2389768-5a66-4935-ba3d-4db22e649616.png)

以上で Devin が用いる shell から `Name` の値で環境変数が使用可能となる




# Knowledge
オンボーディングに当たる. 
リポジトリで遵守するルールや補足情報などを記述する.
Devin はこの情報を元に判断, 行動する.

- `[ Knowledge ]` を選択
- `[ Add Knowledge ]` を選択
    ![https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_118627_efafec7f-65bf-45f4-96e1-8f205bd088d6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/d60bcf9f-85d3-4f8b-87b4-3f3b9dc8bcde.png)    
- `最上段のフォーム`(display name) を記述する
    - 例えば, PRを作成する際など、設定内容の概要を記述する
- `[ Pin to Repository ]` へ適用する Repository を設定する
- `[ Content] ` へルールなどを記述する
- `[ Create] ` を選択
    ![スクリーンショット 2025-02-25 21.45.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/06254446-c7f9-4954-8373-eca692d0ca85.png)
- 自動的に `[ Retrieval Trigger (情報を使用する状況)]` が作成される
    - Display Name, Content の内容を加味し作成される
    ![スクリーンショット 2025-02-26 9.48.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/10ad329f-f748-47d1-9eab-6b5fd270af0a.png)

以上で Devin が適切なタイミングで情報を使用するとの事




# ワークスペース, 開発環境の設定
開発環境の setup 手順を記述する.
しっかり設定しなかった場合, 開発中に Devin が混乱して ACU を浪費する.

- `[ Devins Workspace ]` を選択
- `[ Add repository ]` を選択
- 検索フォームから設定する repository を検索
- 検索結果から `[ repository name が記述された block ]` を選択
- `[ Continue with REPOSITORY NAME]` を選択

    ![スクリーンショット 2025-02-25 22.42.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/180e8ec4-9c7b-4d09-ba32-271048e06c38.png)

- VSCode の画面に自動遷移する
- `[ Begin Setup ]` を選択

    ![スクリーンショット 2025-02-25 22.43.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/94edc53e-a4c8-4d69-9908-8633513d24d5.png)

- 左手の以下項目にコマンドを記述し, setup 手順を明示する.
    - Install Dependencies
    - Setup Lint
    - Setup Tests
    - Setup Local App

    ![スクリーンショット 2025-02-25 22.44.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/51d03066-9d64-4b73-aa44-67c56c185233.png)

- 1項目ごとにコマンドを投入し
- `[ Test ]` を押下する事で, 実際にコマンドが実行される
    - 成功すると Success と表示される
        - `[ Done ]` ボタンを押下し次の項目へ移動 
        - 同手順を繰り返す
    - 失敗した場合は fail と表示される
        - この場合, 自身でコマンドログを追い修正する
    - `※ 2025/03/31 現在, install Dependencies は devin 内の vscode で設定せよ, という指示に変更されている. その他の設定は上述の内容に準じる`


    ![スクリーンショット 2025-03-31 10.00.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/8946fa33-3dd5-48f1-a1ff-742f327cc913.png)

    ![スクリーンショット 2025-03-31 10.05.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/4cfe63a9-0ec5-4988-b710-d0e6c944c83b.png)

    ![スクリーンショット 2025-03-31 10.06.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/646746ce-feeb-4c71-bdfb-8e8025fb2cc9.png)


- 全ての項目が Done となった場合
- `Finish` ボタンを押下, その後表示されるモーダルを全て肯定し設定を保存する
- Devin が setup を完了するまで数分待機し完了となる

    ![スクリーンショット 2025-02-25 22.55.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/5fc11e7c-6918-4264-9dd0-eda89eab48e5.png)




# Workspace setup 補足
## secrets
この setup 中の console では, Secrets で設定した環境変数を用いる事ができる
ここでは `TEST_ENV` という環境変数を作成済みとする

- `echo $TEST_ENV` とコマンドを登録し Test を実行
- ここでは console 上に `[REDACTED SECRET]` と表示される
    - これは, Sensitive データとして設定しているため
    - disabled になっている場合は, 文字列がそのまま表示される

    ![スクリーンショット 2025-02-25 23.00.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118627/fa7fb0b3-b69b-4945-a01d-3772e8ed4f30.png)

## docker
workspace で dcoker を用いる場合, 以下では fail する 
```
docker compose exec web bash
bundle
```

docker 内部でコマンドを実行したい場合は
```
docker compose exec web bundle
```
docker の shell へ入らず, 直接コマンドを実行する必要がある





# 
以上, 最低限必要な設定となります
見難い部分もあり, 不足や不備などがあれば後ほど追記, 修正します