概要
- Redisに新しい Arrayデータ型 を追加する開発経緯
- AI(主に GPT 5.x)を活用した設計・実装・テストのプロセス
- 実装中に直面した課題と データ構造の進化
- Markdownファイルや正規表現( ARGREP)など新機能の追加
- AIの利点と今後のRedisへの期待
Redis Arrayデータ型開発ストーリー
-
2024年1月初旬より Redisの新しいArrayデータ型 の開発を開始
-
実装は約4ヶ月間、 パートタイム的に作業 (実際はフルタイム週も多数)
-
最初の1ヶ月は 仕様書の作成 に集中
- 新データ型の意義、C構造体、スパース表現、リングバッファ用カーソルのセマンティクスなどを詳細に記述
-
仕様書作成時は Opusとペア作業、その後 GPT 5.3 リリースで Codex を活用
-
設計・実装の全工程で GPT 5.xシリーズ を主に利用
- フィードバックや設計上の課題解決、妥協点の検討などAIと対話しながら進行
-
2ヶ月目以降、 自動コーディング(オートコーディング) で実装開始
- コードを常に レビューしつつ開発
-
初期設計の 間接参照レベルが不十分 と判明
- ARSET myarray 293842948324 foo のような操作で効率的なメモリ管理を目指し、 階層構造を再設計
- ディレクトリ+スライス(スパース/デンス)の2層構造を 超ディレクトリ+デンスディレクトリ+スライス 構造に進化
- 各スライスは 4096要素 をデフォルトで保持
- ARSCANやARPOP 操作の効率向上
- ARSET myarray 293842948324 foo のような操作で効率的なメモリ管理を目指し、 階層構造を再設計
-
コード全体を 行単位で精査
- AIによる広範なテストに加え、 細かな非効率性や設計ミス を人間とAIで修正
-
3ヶ月目には 多様なストレステスト を実施し、堅牢性と有用性を確認
-
利用ケース検証中に MarkdownファイルをArrayに格納 する使い方を発見
- これをきっかけに ARGREP (正規表現検索)機能を実装
- 正規表現ライブラリは TRE を採用(安全性重視)
- foo|bar|zap パターンの効率化やセキュリティ修正もAIと協力して実施
- これをきっかけに ARGREP (正規表現検索)機能を実装
-
AIの最大の利点
- 複雑で膨大な作業 の安全網として機能
- 32ビットサポート の追加・テストなど、膨大なタスクもAIで効率化
- 複雑なアルゴリズムのバグ検出 にも貢献
-
膨大な仕様書 の作成が後の作業全体の鍵
- sparsearray.c、t_array.cなどの 全行レビュー も仕様書が支え
-
ユースケース詳細は PRのコメント に記載(https://github.com/redis/redis/pull/15162)
-
Redisに 数値インデックスを持つデータ型 が加わる意義を強調
-
Array PRの受け入れと新たなユースケースの拡大 に期待
-
フィードバック歓迎 の姿勢
Redis新Array型の設計ポイント
- 数値インデックス をセマンティクスに組み込む新データ型
- スパース/デンス表現 のハイブリッド構造
- データ量やアクセスパターンに応じて 内部構造を自動変形
- メモリ効率と高速アクセスを両立
- 4096要素単位のスライス 管理方式
- ARSCANやARPOP など範囲操作の効率化
AI活用による開発効率と品質向上
- 設計・実装・テスト・最適化 の各工程でAIを積極活用
- 仕様書作成や設計議論 もAIとの対話で質向上
- コード自動生成+人間によるレビュー で効率化と品質担保
- テストケース生成やバグ検出 もAIが支援
- AIによる仮想労働力 で膨大な作業量をカバー
今後のRedisと新Array型への期待
- 従来にないユースケース の開拓
- ファイル管理やナレッジベース としての活用
- 正規表現検索(ARGREP) による柔軟なデータ操作
- コミュニティからのフィードバック を歓迎
- Redisの進化 とユーザー体験の向上に貢献