Grab、AI 生成コードの急増に対応しモバイルアプリの安定性を向上
2026年11月10日 · 読了 1 分
配車サービス大手の Grab は、人工知能によるコーディング支援ツールの普及に伴いコード変更量が急増する中で、モバイルアプリケーションの安定性を安全に確保するための対策を実施したと発表した。同社は、開発からリリースに至るまでの全工程において、クラッシュを防止し、検出し、封じ込めるための多層的な防御戦略を導入した。これにより、欠陥やアプリの停止が本番環境に流出するリスクを低減している。
Grab によると、人工知能はコード記述の速度を加速させているが、この速度を安全なものにするのが多層的な防御策であるという。同社の規模では、毎週多数のプロダクトチームから大量のマージリクエストが提出されており、多くの機能がリリースとは独立して切り替えられるフラグの背後で出荷されている。これらの変更のいずれかがクラッシュを引き起こす可能性があり、本番環境への流出は継続的なリスクとなっている。クラッシュはユーザー体験を損なうだけでなく、クラッシュのないセッション率を低下させ、結果としてアプリストアでのランキング低下を招く。また、すべてのユーザーが自動更新を有効にしているわけではないため、一度出荷されたクラッシュはユーザーの端末上に長期間残存し、コスト増大につながる要因ともなる。
同社の戦略は、問題を可能な限り早期に発見することを目指すシフトレフトのアプローチを採用しており、開発サイクルの各段階で一連の安全装置を設けている。マージ前から本番環境投入前の段階では、予防を「第一の防御線」と位置付けている。具体的には、Android Lint や SwiftLint といった静的コード解析ツールをプラットフォーム固有やコミュニティベース、独自のカスタムルールと共に使用し、コードのマージ前に問題を捕捉する。さらに、単体テスト、ユーザーインターフェーステスト、品質保証チェックを含む自動化および手動テストを実施している。加えて、社内ユーザーに早期ビルドを配布しクラッシュを積極的に監視する本番前ゲートとして機能する早期アクセスプログラムも運用している。ここで少数の社内ユーザーが発見するクラッシュは、本番規模ではクラッシュ率の急上昇やサポート負荷の増大、緊急修正の必要性につながるため、重要な安定性ゲートとなっている。
リリース段階では、段階的なロールアウトと機能フラグを用いて、クラッシュへの本番環境での曝露を制御する。段階的ロールアウトにより、新しいアプリバージョンは当初ごく一部のユーザーのみに配信され、エンジニアがクラッシュを監視し、異常なクラッシュ率が検出された場合にロールアウトを一時停止できる仕組みとなっている。機能フラグは、チームが機能の影響をクラッシュ率と共に監視しながら徐々に活性化することを可能にする。 predefined 閾値を超えた場合、新しいリリースを必要とせずに直ちに機能を無効化できる。
リリース後の段階では、本番環境のクラッシュを検知、調査、封じ込めるための迅速なインシデント対応に注力する。ビルドが公開されると同時に Firebase Crashlytics と BigQuery を用いたリアルタイム監視により異常を特定し、自動トリアージと診断情報の強化によってクラッシュのメタデータやスタックトレースを集約し、特定のプルリクエストへとマッピングする。さらに、フィードバックループと事後分析を通じて、lint ルールの拡張やテストカバレッジの拡大を行っている。