TalentX Tech Blog

Tech Blog

Devin Scheduled Sessions で定期タスクを自動化した話

こんにちは。MyTalent CRMで開発を行っている穴原です。

プロダクト開発、運営を続けているとデッドコードの削除や定期業務のタスク作成など、やったほうがいいけど後回しにしがちな業務があると思います。
私たちのチームでも、デッドコードが溜まり、定期業務に少しずつ時間を消費する日々を過ごしていました。
今回はDevinの Scheduled Sessions(スケジュール機能) を活用して、こうした業務を自動化した取り組みを紹介します。

Devin Scheduled Sessions とは

Devin の Scheduled Sessions は、定期的に Devin のセッションを自動起動する機能です。 https://docs.devin.ai/ja/product-guides/scheduled-sessions

スケジュールの設定は Settings > Schedules の設定画面から行えるほか、セッション内で「これを毎週月曜にやって」と伝えることでDevinがスケジュールを作成してくれます。
Devin は単なるスクリプト実行ではなく「判断」ができます。後述する祝日対応や破壊的変更の調査など、従来の自動化ツールでは対応しづらかったケースにも対応できるのが特徴です。

このDevin Scheduled Sessionsを活用した業務改善を紹介したいと思います。

ユースケース① デッドコードの定期削除

課題

プロダクトの成長に伴い、使われなくなった API やコードが徐々に蓄積していきます。デッドコードが増えるとコードの可読性が下がり、影響範囲の調査コストも増えるため新機能開発のスピードに影響します。
ただ、デッドコード削除は今やらなくてもプロダクトに大きな影響は無いので優先度が下がりがちです。
また、プロダクト開発を続けていくとデッドコードは増えていくので定期的にデッドコード削除を行う必要があります。

Devin による解決

Devin のスケジュール機能を使い、定期的にデッドコードの検出と削除PRの作成を自動化しました。
バックエンドでAPI開発をしている場合、フロントエンドのリポジトリも読み込むように指示することで、APIがどこからも呼ばれていないことを確認した上で削除PRを作成できます。
プログラム内部の関数も同様にチェックし、どこからも参照されていないコードを確認した上で削除PRを作成できます。

Jira 連携でレビューを確実に

私たちのチームはタスク管理にJiraを使用しています。
削除PRを作成するだけではなく、レビューからマージまでを人が実施するタスクをDevinがJiraに作成しています。
Devin にはJira と連携するための MCP サーバーを追加できます。これを有効にすることで Devin が Jira のタスク作成や更新を行えるようになります。
この仕組みを使い、Devin が作成した削除PRの内容に合わせた件名やタスク内容を記載し、PRのURLもタスク内容に含めた状態で Jira にタスクを自動起票しています。レビュー担当者はタスクからすぐにPRにアクセスできるため、スムーズにレビュー・マージまで進められます。
これにより定期的にデッドコード削除を行えるようになりました。

注意点

直近開発したプログラムは対象外にする

直近1ヶ月以内に変更があるファイルは対象外としました。ロジックだけ先に開発したケースや、フロントエンド側がまだリリースされていないケースなど、どこからも参照されていなくても開発途中のコードである可能性があるためです。

PRのサイズを指定する

PR内に大量のデッドコードが存在するとレビュー負荷が高まります。
Devinに1PRにつき1API もしくは 1関数だけにすることを伝えることでPRのサイズが小さくなり、レビュー負荷が軽くなります。

PRの作成数を制御する

Devin に PRの作成数の上限を明示的に伝える必要があります。この指示がないと Devin はデッドコードを見つけた分だけPRを量産します。
一定期間内でレビュー可能な数はチームによって異なるので、レビューできる上限数を決めた上でその数を Devin に伝えるようにしてください。

プロンプト例

記載した内容を元に、以下のようなプロンプトをスケジュール機能に設定します。

バックエンドリポジトリにてデッドコードの削除を行ってください。
Jiraのタスクは未作成のため、新たに作成してください。
タスクの件名、内容は削除するデッドコードについて記載をしてください。
作成したタスク番号を含む、修正内容に適したブランチ名を作成してください。

以下に該当するデッドコードを探し、削除のPRを作成してください。
1度のセッションで作成するPRは1つだけにしてください。
* フロントエンドリポジトリから参照されていないAPIエンドポイント
* ロジック層にて使用されていない関数やファイル
PRに含めるAPIや関数は1つにしてください。
ファイルが直近1ヶ月以内に更新された場合、開発途中の可能性があるので削除しないでください。

ユースケース② 定期リリースタスクの作成

課題

定期的なリリース対応のタスクを Jiraに作成し、管理しています。
以前は Jira のオートメーション機能を使ってタスクを自動作成していたのですが、リリース予定日が祝日の場合でもその日にリリースするタスクが作成されてしまう問題がありました。
Jira のオートメーションは「毎週◯曜日にタスクを作成する」というルールベースの処理なので祝日かどうかの判断ができません。結果として手動で日付を修正する作業が発生していました。

Devin による解決

この処理を Devin のスケジュールに移行しました。Devin には「リリース日が日本の祝日の場合は翌営業日にすること」と伝えるだけで適切に判断してくれます。
ルールベースの自動化ツールが苦手とするイレギュラーケースへの対応が、自然言語で指示するだけで実現できるのは生成AIで自動化するメリットだと思います。

プロンプト例

記載した内容を元に、以下のようなプロンプトをスケジュール機能に設定することで祝日を考慮したタスク作成を行ってくれます。

Jiraにタスクを作成してください。
タスクの件名は「定期リリース ◯月◯日」にしてください。日付は来週の月曜日の日付にしてください。
ただし、日本の祝日の場合は翌営業日にしてください。

ユースケース③ Dependabot PR対応タスクの自動作成

課題

私たちのプロジェクトでは Dependabot を導入しており、定期的に依存ライブラリのバージョンアップを提案するPRが作成されます。
Dependabot がPRを作ってくれるのはありがたいのですが、そこから先のPRの内容確認、破壊的変更の有無の調査、Jira タスクの起票、ポイントの見積もりはすべて手作業で行っていました。
特にアップデート内容に破壊的変更がないかを毎回調べるのは工数がかかります。

Devin による解決

Dependabot の定期実行スケジュールに合わせて Devin のスケジュールを設定しました。Devin は以下の作業を自動で行います。

  1. Dependabot が作成したPRの検出
    今回の実行サイクルで Dependabot が新しく作成したPRを検出します。

  2. Jira タスクの自動作成とポイントの自動投入
    調査結果を踏まえて Jira にタスクを作成します。この際、バージョンの種類に応じてストーリーポイントを自動で設定しています。
    パッチバージョン(例:1.2.3 → 1.2.4)の場合:最小値の 0.5ポイント
    マイナーバージョン(例:1.2.3 → 1.3.0)の場合:1ポイント
    プロジェクトのルールとして以前から運用していたものですが、これまでは人がバージョン番号を見て判断し手動で入力していました。判断ロジックが明確なので Devin に任せても問題なく動作しています。

  3. 破壊的変更の調査
    各PRについてアップデート内容に破壊的変更がないかを調査します。CHANGELOGやリリースノートを確認し、その結果をタスクの説明に記載します。これまで手動でリリースノートを読んで確認していた作業が自動化されました。

注意点

CHANGELOGやリリースノートから破壊的変更が読み取れない場合、Devinは影響無い旨をタスクの説明に記載します。
生成AIの判断を過信しすぎず、最低限の動作確認は別途行うことを推奨します。

プロンプト例

記載した内容を元に、以下のようなプロンプトをスケジュール機能に設定します。

バックエンドリポジトリに出ているプルリクエスト一覧を読み込んでください。
直近1週間以内にdependabotが作成したプルリクエストがあれば、そのパッケージを更新するストーリーをJiraに作成してください。
必ず1パッケージ1ストーリーにしてください。
Story point estimateはパッチバージョンアップの場合は0.5。マイナーバージョンアップの場合は1。メジャーバージョンアップの場合は未設定にしてください。
ストーリー内容にはアップデート内容に破壊的変更がないかをCHANGELOGやリリースノートから調査し、その結果を記載してください。

まとめ

Devin Scheduled Sessions を活用して自動化した3つのユースケースを紹介しました。

ユースケース Before After
デッドコード削除 手動で対応 定期的にPR作成+Jiraタスク化
リリースタスク作成 Jiraオートメーション(祝日非対応) Devinが祝日を判断して翌営業日にスキップ
Dependabot PR対応 手動で破壊的変更を調査+タスク起票 調査もタスク作成もポイント設定も自動

従来のルールベースの自動化ツールは定型的な処理は得意ですが「判断」が必要な場面では限界があります。
Devin のようなAIエージェントをスケジュール実行に使うメリットはこのイレギュラーへの対応力です。自然言語で例外的な処理を伝えられるのは便利です。
まだ導入して間もないですが、コードベースの清潔さが維持され定期タスクの抜け漏れがなくなったので、同じような課題を抱えている方は試してみてください。

最後に

現在、TalentXでは一緒に働く仲間を募集しております。

talentx.brandmedia.i-myrefer.jp

カジュアル面談も行っておりますので、ぜひご応募ください!

i-myrefer.jp