Devinによる開発活動報告です。
週次開発活動報告 - 2025年11月17日〜11月24日
概要
2025年11月17日から11月24日までの1週間で、組織全体で37件のプルリクエストがdevin-ai-integration[bot]によって作成されました。今週は、サーバー移行に向けたインフラ整備、新規クライアント統合、そしてバッチ処理システムの大規模な依存関係管理の改善が中心となりました。
活動サマリー
主要な技術トレンド
1. サーバー移行プロジェクト(server-migration-poc)の本格化
今週は、新サーバー環境への移行に向けた準備作業が複数のリポジトリで進行しました。
repo-a での移行準備
IAMロールベース認証への移行
- 全スクリプトからxxx_batchフラグを削除(3600行以上の変更)
- EC2インスタンスロールを使用した認証に統一
- AWS CLI実行時の認証情報を環境変数やプロファイルではなく、インスタンスメタデータから自動取得
システム依存関係の自動インストール
- CodeDeploy BeforeInstallフックでJava 21とMySQL clientを自動インストール
- 手動セットアップ作業の削減により、新サーバーへのデプロイが簡素化
Python依存関係管理の統合
- 複数の個別pyproject.tomlファイルを単一のルートpyproject.tomlに統合
- 共有仮想環境により、依存関係の重複インストールを削減
- ディスク使用量とデプロイ時間の大幅な改善
UNISIZE-BATCH-JAVA での対応
CI/CDパイプラインの拡張
- server-migration-pocブランチをデプロイ対象に追加
- ARM64ランナーの条件付き使用により、新アーキテクチャでのビルドをサポート
2. Pipenv→uv移行の完了
baycrews、jointspace、machouseの移行
- Pipfile/Pipfile.lockを削除し、pyproject.toml + uv.lockに移行
- 依存関係解決の高速化とビルド再現性の向上
- 660行以上のレガシーロックファイルを削除
3. 新規クライアント統合: Curucuru (client_id=271)
今週、repo-dに新規クライアント「Curucuru」の統合が完了しました。
実装の特徴:
- 税込価格処理: regular_price * 1.1で消費税を自動計算
- S3自動クリーンアップ: 処理完了後にソースファイルを自動削除するdelete_s3_object関数を実装
- systemdタイマー: 1日2回(00:45, 14:45)の自動実行スケジュール
- タブ区切りフィード対応: CSVではなくTSV形式のデータフィードを処理
関連PR:
- #330: 初期実装とS3ユーティリティのリファクタリング
- #333: client_id 271の設定
- #335: TSVフィード対応
- #337: カラム名修正(imageurl → img)
- #339: スケジュール設定とドキュメント整備
4. CV監視システムのスキーマ移行
tracking_v2スキーマへの移行
cv-monitor Lambda関数が新しいtracking_v2スキーマに対応しました:
- データソース変更: line_idからuuid(BeID)への移行
- ユーザー解決ロジック: GetUserByBeIDメソッドを使用してBeIDからLineIDを取得
- クエリ最適化: Athenaクエリにclient_uid IN (...)フィルタを追加し、不要なデータスキャンを削減
5. AWS Glue ETLパイプラインの改善
repo-fリポジトリで、AWS Glue Jobの設定管理が大幅に改善されました。
主な変更点:
- ExecutionPropertyのサポート: maxConcurrentRunsなどの実行プロパティをPascalCaseで正しく設定
- Visual Jobのサポート : CodeGenConfigurationNodesとJobModeパラメータの追加により、ビジュアルETLジョブの作成が可能に
- エスケープされたJSON処理 : dev環境の名前がエスケープされたJSON文字列内でも正しく置換されるように修正
6. バッチ処理の安定性向上
タイムアウト設定の追加
- ships.pyに4時間のタイムアウトを設定
- 長時間実行プロセスのハング防止
ブラックアウトウィンドウの実装
- client 684に対して7:25-14:05 JSTの実行禁止時間帯を設定
- ビジネス時間中のリソース競合を回避
メモリ設定の柔軟化
- Javaバッチのメモリ設定を.envファイルで設定可能に
- JAVA_HEAP_SIZE環境変数によるXmx/Xmsの動的設定
7. Lambda関数のデプロイ基盤整備
facechange-laboでのServerless Framework導入
height-adjustment機能をAWS Lambdaにデプロイするための完全な基盤が構築されました:
- Dockerベースのデプロイ: Python 3.11 + onnxruntime 1.16.3
- onnxruntimeエラーの修正: --no-depsフラグでeasy_dwposeをインストールし、GPU版との競合を回避
- Serverless Framework設定: dev/prd環境の自動デプロイ、Function URL、3008MBメモリ、5分タイムアウト
- 環境変数設定: SKIP_DWPOSE=trueでLambda環境での不要な依存関係をスキップ
8. S3パス正規化の統一
private-actionsでのS3クリーンアップ改善
- normalizeS3Key関数で先頭スラッシュを削除
- path.posix.joinを使用した安全なパス結合
- trailing slashの一貫した処理により、S3オブジェクトの削除エラーを防止
9. その他の重要な修正
文字エンコーディング問題の解決
- utf8mb4_binコレーションのブランド名をCAST(brand_name AS CHAR CHARACTER SET utf8)で処理
- MySQLの文字セット不一致エラーを解決
IFS設定の修正
- グローバルIFS設定がJava引数を破壊する問題を修正
- ローカルスコープでのIFS変更に限定
uv export権限問題の解決
- usbatchユーザー所有の一時ファイルにrequirements.txtを書き込み
- 権限エラーによるデプロイ失敗を防止
sudoパスワードレス設定
- usbatchユーザーにNOPASSWD sudo権限を付与
- デプロイスクリプトの自動化を改善
リポジトリ別活動詳細
repo-a (12 PR)
サーバー移行とPython依存関係管理の改善が中心:
- #598: pandas 1.5.3 + numpy<2.0でPython 3.10互換性を確保
- #600: AfterInstallタイムアウト延長と依存関係スキップロジック
- #601: 単一ルートpyproject.tomlへの統合
- #603: uv export一時ファイル権限修正
- #605: Java 21とMySQL clientの自動インストール
- #607: IAMロール認証への移行
- #609: Javaメモリ設定の.env化
- #611: usbatchユーザーのパスワードレスsudo
- #613: utf8mb4_binブランド名処理
- #617: グローバルIFS設定の修正
- #619: Pipenv→uv移行完了
- #621: DYNAMODB_PREFIX環境変数追加
repo-d (10 PR)
Curucuru統合とバッチスケジューリングの改善:
- #322: lightupのdfplusエクスポートロジック再利用
- #323: client 684のブラックアウトウィンドウ
- #325: lightupバッチの13:00スケジュール
- #327: ships.pyの4時間タイムアウト
- #330: Curucuru統合とS3ユーティリティリファクタリング
- #333: Curucuru client_id 271設定
- #335: Curucu ruタブ区切りフィード対応
- #337: Curucu ruカラム名修正
- #339: Curucu ruスケジュール設定(1日2回)
repo-f (5 PR)
AWS Glue Job設定の包括的改善:
- #21: ExecutionPropertyのPascalCase変換
- #23: ExecutionPropertyとS3アップロードawait
- #25: エスケープJSON内のdev名置換
- #28: Visual Job用JobModeパラメータ追加
repo-e (4 PR)
CV監視とLambda設定の改善:
- #99: tracking_v2スキーマとGetUserByBeID対応
- #100: cv-monitor手動テスト用JSON期間サポート
- #101: ATHENA_OUTPUT_S3環境変数の必須化(オープン)
- #102: cv-monitor LambdaへのS3権限追加
その他のリポジトリ
- private-actions (2 PR): S3パス正規化の改善
- facechange-labo (1 PR): Lambda デプロイ基盤構築
- slo-dashboard (1 PR): CVTagモニタリングのALBからS3メトリクスへの変更(オープン)
- unisize-api-batch (1 PR): Athenaバケット/output_location修正
- unisize-batch-java (1 PR): server-migration-pocデプロイサポート
技術的負債と改善提案
1. 依存関係管理の継続的改善
今週のPipenv→uv移行とpyproject.toml統合は大きな前進ですが、まだ個別のPipfileが残っているクライアントが存在する可能性があります。全クライアントの移行状況を監査し、統一的な依存関係管理を完了させることを推奨します。
2. サーバー移行の段階的展開
server-migration-pocブランチでの作業が進行中ですが、本番環境への移行計画とロールバック戦略を明確にする必要があります。特に、IAMロール権限の検証とCI/CDパイプラインの完全なテストが重要です。
3. Lambda関数のモニタリング強化
新規デプロイされたLambda関数(height-adjustment、cv-monitor)について、CloudWatchメトリクスとアラームの設定を推奨します。特に、メモリ使用量、実行時間、エラー率の監視が重要です。
4. ドキュメントの継続的更新
今週、Curucu ruの統合でREADMEにスケジュール実行セクションが追加されました。このような運用ドキュメントの更新を他のクライアント統合でも標準化することを推奨します。
まとめ
今週は、サーバー移行プロジェクトの本格化、新規クライアント統合、依存関係管理の大規模改善という3つの主要テーマで開発が進行しました。特に、repo-aでの3600行以上のIAMロール移行とpyproject.toml統合は、インフラの近代化における重要なマイルストーンです。
次週は、server-migration-pocブランチの本番環境への統合と、残存するPipenv依存関係の完全な移行が予想されます。