ふりかえり手法に迷わない！個人開発生成AIアプリ『ふりかえりカタRAG』開発の舞台裏〜miroボードからどうやってRAGチャットボットを作るか〜

この記事は[KDDIアジャイル開発センター（KAG） Advent Calendar 2024
](https://qiita.com/advent-calendar/2024/kag)の21日目です。
KDDIアジャイル開発センターのpiyonakajimaです。
この記事では、個人開発生成AIアプリ『ふりかえりカタRAG』を作成した手法や、その工夫から得た知見を共有します。趣味として始めましたが、データを観察し、加工する中で気づいた「AI活用の工夫」や「ふりかえり手法の新しい可能性」を共有します。
AIを使ったアプリ開発のヒントや、ふりかえり手法の活用アイデアにつながったら嬉しいです！

:::note warn
これがベストプラクティスだとは思ってないです。試行錯誤した数多くあるやり方の１つとして読んでいただけると幸いです。
:::

## ふりかえりカタRAGとは

ふりかえりカタRAG（非公式）とは、**チームの悩み事を入力すると、世の中に沢山あるふりかえり手法の中から最適なふりかえり手法や、そこから創発された全く新しいふりかえり手法を提案してくれる今年私が作った生成AIアプリ**です。中身はDifyで作っています。
作成した当時の記事がこちらになります。

https://note.com/piyonakajima/n/n739ef804f017

以下を例として示します。
![スクリーンショット 2024-12-20 22.45.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149986/b4475623-2fae-41ab-33ed-386830358dea.png)

たとえばこのように質問すると、
```
自分のチームの１年間のふりかえりを遡ってやってみたいな。楽しく一年を終わらせたいです。
```

以下のように、1年間の振り返りに最適な手法として『タイムライン』が提案されます。

```
すごーい！1年間のふりかえりをしたいんだね！やったね、素晴らしいアイデアだよ！チームの成長を振り返るのって、とってもワクワクするよね。

あなたの悩みをしっかり聞かせてもらったよ。楽しく1年を終わらせたいという気持ち、よくわかるよ！みんなで頑張ってきた1年だもんね。さすが、チームのことを大切に思ってるんだね！

それじゃあ、ふりかえり手法を3つ提案するね！

1. タイムライン
2. KALM
3. 学習と成長のストーリー

この中で、特に「タイムライン」がいいと思うよ！なぜかというと：

- 1年間の出来事を時系列で可視化できるから、大きな流れがわかりやすいんだ。
- チームみんなで協力して作れるから、楽しくふりかえりができるよ。
- 良かったこと、悪かったことをバランスよく見られるから、公平な振り返りができるんだ。

タイムラインのやり方はこんな感じだよ：

- 大きな紙やオンラインボードに、1年分の横長の線を引く。
- チームメンバーみんなで、重要な出来事や達成したことを付箋に書いて、時系列に沿って貼っていく。
- 良かったこと、悪かったこと、驚いたことなど、カテゴリー分けしてもいいね。
- みんなで完成したタイムラインを見ながら、1年間の成果や学びについて話し合う。

ねえねえ、1年間頑張ってきたみんなのことを思うと、わたしまで嬉しくなっちゃう！これからも素敵なチームで頑張ってね。きっと素晴らしい1年のまとめができるよ！

もし詳しいやり方が知りたかったら、このURLも参考になるかも！
https://miro.com/app/board/uXjVMU1q3PY=/

・・・・あ、閃いちゃった！もっとすごいアイデアを思いついたよ！「思い出の宝箱ふりかえり」っていう新しい手法はどうかな？これ、絶対楽しいよ！

「思い出の宝箱ふりかえり」のやり方：

- チームメンバー全員に、1年間の思い出の品を1つずつ持ってきてもらう。
- 大きな箱や袋を「宝箱」として用意する。
- 順番に、自分の持ってきた品を宝箱に入れながら、その思い出について話す。
- みんなの品が入ったら、宝箱からランダムに品を取り出して、その思い出について全員で話し合う。
- 最後に、みんなで1年間の成長や学びをまとめ、来年の目標を立てる。

この方法が優れている理由：

- 具体的な「もの」を通して思い出を共有するので、より鮮明に1年を振り返られるんだ。
- 予想外の思い出が出てくるかもしれないから、とってもワクワクするよね！
- チームの絆を深められるし、みんなの個性も分かって楽しいよ。
- 単なる振り返りじゃなくて、本当の「宝物」を作る感覚があるから、達成感がすごいんだ！

さすが、1年間頑張ってきたチームだね！この方法で、きっと最高の思い出と共に楽しく1年を締めくくれるよ。みんなで作る宝箱、きっと素敵なものになると思うな。頑張ってね！
```

ノリノリです。**このキャラクター付けは私の趣味です。**
そんなふりかえりカタRAGはこちらから触れます。（個人で作ったものです、念押し）

https://udify.app/chat/JGxeQRCgeowP0PNS


## ふりかえりカタログとは

このアプリのデータソースとなっているのが、以下の記事で公開されている **「ふりかえりカタログ（コミュニティ版）」** になります。非公式として勝手に公開したところ、ふりかえりカタログの中にも掲載頂きました。

https://qiita.com/viva_tweet_x/items/f4db2c923d474f67fe0f

「ふりかえりカタログ（コミュニティ版）」は世の中に存在するふりかえりの手法とその特徴を網羅したカタログです。有志の方で作成され、miroボード上に公開されており、Regional Scrum Gathering Tokyo 2024にて公開されています。

## 作ろうとおもったきっかけ

作ろうと思った最初のきっかけは、カケハシ小田中いくおさんのこちらの資料でした。

https://speakerdeck.com/kakehashi/retrospectives-with-ooda

状況に応じて適切なふりかえり手法を選ぶことが重要であり、状況の変化によっては準備をしていたとしても手法を変えるということに衝撃を受けました。
私達のスクラムチームでは毎日のFun Done Learn、月一回のKPTまたは象、死んだ魚、嘔吐、焼き肉に行く前の焼き肉レトロスペクティブなどに取り組んでおり、そこで得られた知見を楽曲にして発表してきました。しかしながら、選ぶ手法には偏りがあり、これらの手法を使いこなしているとは言いがたい状況でした。個人的にはリズムが作れていることもあり悪いことではないと思っていますが、状況に応じて手法を変えるという体験を自分自身もやってみたいと考えるようになりました。

## 「ふりかえり手法のRAGつくりましょうよ」

きっかけはScrum Fest Osaka沖縄トラックでの知人のコメントだったように思います。こんなようなこと言われたのをおぼろげに覚えています。
『そうだ、自分で作ればいいんだ！』と直感的に思いました。この一言が個人開発生成AIアプリの冒険へと導いたのです。
そこでRAGやDifyが流行っているのもあり、自分が置かれている状況を書き込むと、最適なふりかえり手法を提示してくれるRAGを（趣味で）作ることにしました。

# miroボードをデータにしてみる
## 失敗：PDFや画像にして読み込ませる

![スクリーンショット 2024-12-20 22.09.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149986/e0f14f00-26a7-f145-074b-e98a080edc8b.png)

最初はmiroボードを画像にしたり、PDFにすることでRAGを組めないか検討していました。
しかしながら、ハルシネーション（AIが誤った回答を生成する現象）がひどく活用に耐えられるものではありませんでした。
しかしながら、何度目かのトライで、ある手法により簡単な手順で今回のRAGアプリを実現することができました。

## ハルシネーションを減らした方法


いい感じになったやり方は**miroボードをCSV出力して改行２回毎にチャンク化する（＝データを区切る）** でした。
miroにはmiroボードをCSV形式にて出力するモードがあります。
コミュニティ公開されていた「ふりかえりカタログ」では各ふりかえり手法がシートの上に掲載されていました。そのため、CSVで出力するとシート毎に２回の改行コードが含まれていました。この２回の改行コードを使ってチャンク化（大きなデータを意味のある小さな塊（チャンク）に分割すること）することにより、ふりかえり手法ごとにベクトルを作成することができ、ハルシネーションを減らすことができました。

## 具体的なやり方

三点リーダー -> Board -> Export -> Export to spereadsheet(CSV)を選択します。
![スクリーンショット 2024-12-20 22.09.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149986/e0f14f00-26a7-f145-074b-e98a080edc8b.png)

CSVをテキストファイルで開いてみると、フレーム毎に改行が２つはいっていることが確認できます。
![スクリーンショット 2024-12-20 22.11.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149986/6e08e5d8-d5aa-c1bb-20cd-3140d4bf358d.png)

### CSVファイルをTXTファイルとして保存し直す
CSVファイルを開き、手法そのものと関係ない説明文を削除します。そして、TXTファイルとして保存し直します。


### Dify.aiにアクセスする

https://dify.ai/

### ナレッジ -> ナレッジを作成　を押す

![スクリーンショット 2024-12-20 22.18.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149986/80c083ab-35df-ecdb-6f7e-884177723f35.png)

### 「テキストファイルからインポート」から先程の作成したTXTファイルを入力して「次へ」を押す

![スクリーンショット 2024-12-20 23.09.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149986/9b7ac3d3-cd43-f481-83d7-93e742dc463a.png)

### 「テキストの前処理とクリーニング」として「カスタム」を選択

セグメント識別子として「¥n¥n」（２回の改行）を指定します。
最大チャンク長はプレビューを見ながら最適な長さで調整します。
プレビューを確認し、手法ごとにチャンク化されていることを確認します。

![スクリーンショット 2024-12-20 23.09.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149986/64c07b93-83ef-1737-d1c3-b6faabe81e89.png)


その他はデフォルト設定のまま次へ進みます。

このようにして作成したチャットボットにおいて、コンテキストとして先ほど作成したナレッジを指定します。その他の具体的な手順はこちらを参照するとわかりやすいです。

https://zenn.dev/acntechjp/articles/0b2891bbcb6152

## なぜハルシネーションが減ったのか？

RAGを作成する際、文脈毎（今回の場合ふりかえり手法単位）にチャンク化することが極めて重要です。今回、CSV出力による２回の改行コードでチャンク化することにより、フレーム単位、つまりふりかえり手法毎にデータを切り出すことができました。

## 結論

今回、miroボードをつかったRAGを作るにあたり、CSV出力することにより、チャンク化をキレイに実現できた話を共有させて頂きました。もちろん、ふりかえりカタログがフレーム単位で区切られていたから実現できたことです。
今回の個人開発自身も、PDFや画像からRAGを作って失敗をし、その原因をふりかえることによってたどり着きました。
RAGを作ることで、役に立つものができるのか、不安もありました。でも、試行錯誤しながら少しずつ形になっていく過程は、本当にわくわくするものでした。
現状の生成AIを使ったアプリ開発では目的に応じて最適なチューニングが必要な場合になることが多いです。特に非構造化データに関しては、データを観察してそれにあわせて様々な手法を工夫して実現することが大切なのではないかと考えています。
（この主張はちょっと主語が大きすぎるかもしれないのと、状況目的次第です。n=1の話としてとどめさせてください）


## 効果

私が、**「AIが言ってるからこのふりかえりやってみようよ」** を気軽にチームに言えるようになりました。これにより限られた時間や状況に応じて、ステークホルダーなど**チームの外にいる人とふりかえりを行えるようになった** のは行動変化のひとつでした。
OODAふりかえりとは違う形になったと思いますが、様々な手法にふれることができ、更に味変して自分たち独自のふりかえりもやってみることができるようになりました。
**手法が変わると、場に投げかける問いが変わり、チームの中で異なる気づきが得られます。**
この記事が、あなたのチームで新しいふりかえりの可能性を広げるきっかけになれば嬉しいです。ぜひ一度、ふりかえりカタRAGを試してみてください！

https://udify.app/chat/JGxeQRCgeowP0PNS