Sprout Social の Android モバイル アプリは、お客様が外出先でもソーシャル メディア プレゼンスに接続できる強力なネイティブ アプリケーションです。 Android アプリの一部として、私たちはオープン ソース コミュニティによって管理されている 35 以上の依存関係を維持しており、これらはアプリケーションに有用な構成要素を提供します。



私たちの依存関係は、ネットワーク呼び出しを行うためのフレームワーク、非同期画像の読み込み、テスト ツール、Android 開発の一般的な課題を解決するその他の既存のソリューションなど、無数の機能を提供します。これらの依存関係の中には、コア Android ライブラリを活用するために必要なものもあれば、すべてのコードを最初から作成しなくても、一般的なソフトウェアの課題を解決できるものもあります。それぞれの依存関係により、車輪を再発明することなく機能を活用できるようになります。



同時に、新しいパフォーマンス、セキュリティ、機能のアップデートを確実に知るために、最新の状態に保つ責任もそれぞれにあります。これは机上では素晴らしいことのように聞こえますが、モバイル開発者なら誰でも知っているように、これらの更新を手動で追跡するのは実際の負担となる可能性があります。


エンジェルナンバー288

私たちの価値観の一つは、 Sprout のエンジニアリング チーム 目的と集中力を持って行動することです。その精神に基づき、私たちはお客様にとって影響力のある機能の構築により多くの時間を費やすことができるように、よりスマートなソリューションを実装することにしました。これを実現するために、自動化された依存関係管理のファーストパーティ プラグイン、Dependabot を使用しました。 dependabot は古い依存関係の量を減らし、依存関係の更新に必要な作業を簡素化し、開発プロセス全体を合理化します。

依存関係の手動メンテナンスからの脱却

ネイティブ Android 開発では、依存関係は build.gradle ファイルで宣言されます。必要な依存関係をバージョンとともに指定すると、Gradle が中央リポジトリから依存関係を解決し、アプリケーション内で使用できるように取得します。 Android アプリがマルチモジュールの場合、各モジュールには、そのモジュールの依存関係を宣言する独自の build.gradle ファイルがあります。

これらの依存関係を効率的に維持することは、開発プロセスをスムーズに進め、ソーシャルの速度に対応できる効果的なソーシャル メディア管理アプリケーションを顧客に提供するために重要です。しかし、依存関係を最新の状態に保つことは、作業の評価、バージョンの互換性チェック、潜在的なコードの変更とテストを必要とする困難な作業になります。

dependabot が登場する前は、依存関係管理プロセスを手動で行っていました。アプリケーションの複雑さが増すにつれて、依存関係の管理に費やす時間も増加しました。依存関係の必要性を特定し、それをアジャイル開発ワークフローで処理して優先順位を付けて最新の状態にするのには、チームにとって多大な労力がかかりました。機能開発中に依存関係の更新が必要であることが判明することがよくあり、それにより常に恐ろしいプロジェクトのスコープクリープが発生してしまいました。もっと良い方法が必要でした。



導入:Dependabot

依存関係の管理は新しい概念ではありません。依存関係の管理に必要な作業のほとんどが反復的で単調であることを考えると、私たちのチームは、これが (自動化を自分たちで書かなければならないという罠に陥ることなく) 自動化できるものの完璧な候補であると考えました。

私たちは、Dependabot が私たちのニーズによく合っていることがわかりました。これは、依存関係の新しいバージョンを自動的に検出し、依存関係のアップグレードによって発生する可能性のある互換性の問題を解決する GitHub のファーストパーティ ツールです。バージョン アップグレードが利用可能になるとそれが表示され、アップグレードに関する情報を含むプル リクエスト (PR) が作成されます。これにより、通常のエンジニアリング ワークフローにシームレスに統合することができました。突然、すべてが最新であることを確認するために手動で長時間を費やす必要がなくなりました。

実装

dependabot は、build.gradle ファイルをインテリジェントに分析して依存関係ツリーを特定し、更新する必要がある依存関係の PR を作成します。実装を成功させるには、各 PR を慎重にレビューし、PR のマージを合理化する方法が必要でした。




944エンジェルナンバーの意味

  更新する必要がある依存関係を識別するために、Dependabot が使用するデシジョン ツリーの図。

Android アプリのリリース時には、リリース マネージャーを割り当てます。私たちは、各リリース サイクル中に最大 5 つの依存関係のアップグレードが完了することを期待して、この責任をリリース マネージャーのプロセスに統合することにしました。リリース マネージャーは、Dependabot によって発見された依存関係の更新をレビューし、PR での継続的統合テストがパスし、ライブラリに重大な変更がないことを確認してから、このバージョン バンプによって提供されるアップグレードをレビューし、承認のために PR のリストをチームに提出します。合併することになる。

自動化のメリット

自動化された依存関係管理は、開発プロセスとエンジニアの生活の質を大幅に向上させる強力なツールです。また、ネイティブ モバイル アプリケーション内の高い価値と最新の機能をユーザーに提供します。 dependabot のようなツールを使用することで、依存関係の取得、統合、バージョン管理を合理化し、エンジニアが費やさなければならない手作業の量を削減し、依存関係ツリー内で競合が発生する可能性を減らしました。


99の重要性

Android プロジェクトの複雑さが増し続ける中、私たちのチームにとって世界クラスの開発プロセスを確保し、お客様にとって世界クラスの Android アプリケーションを確実に提供するために、自動化された依存関係管理の導入は価値の高いステップでした。

Sprout のエンジニアリング チームと文化について詳しく知りたい場合は、 当社の採用サイトにアクセスしてください 。

友達と共有してください: