再帰的依存関係管理: より賢く、より深く、より安全に

4Dバージョンに追随する」のルールの導入に続き、4D 20 R10 では、新たなレベルの自動化と信頼性を実現する機能を発表いたします: 完全な再帰的依存関係の解決です。

コンポーネントの追加・更新・削除のいずれにおいても、依存関係マネージャーが再帰的に動作するようになり、依存関係ツリー全体を通して、すべてのアクションが正確に反映されるようになりました。

1つのアクションですべての依存関係を解決

GitHub やローカルフォルダーから、プライマリ依存関係を追加すると、4Dは:

  • 必要なすべての依存関係を再帰的に読み込みます。
  • dependencies.json で定義されたバージョン制約を適用します。

欠落したパーツや、バージョンの競合を心配する必要はありません。依存関係ツリー全体が自動的に解決され、読み込まれます。

再帰的なバージョン管理

複数のコンポーネントが同じ依存関係の異なるバージョンを必要とする場合:

  • 依存関係マネージャーは、必要な範囲をチェックし、可能な場合はすべての制約を満たすバージョンを選択します。
  • あるバージョンが直接プライマリ依存関係として宣言されている場合、そのバージョンは間接的に要求されるバージョンよりも優先されます。

このアプローチにより、プロジェクトが大きくなっても、環境の安定性と一貫性が保たれます。

完全な構造を反映した UI

プロジェクトの依存関係の再帰的な性質を表示するために、プロジェクト依存関係のインターフェースが更新されました:

  • 「全て」タブ: プロジェクトで使用されているすべての依存関係 (プライマリとセカンダリの両方) のフラットリストを表示します。
  • 「宣言済み」タブ: 「全て」と「アクティブ」の間にある新しいセクションで、dependencies.json で明示的に宣言されている依存関係だけをリストアップします。
  • セカンダリ依存関係は明確にマークされ、その上にカーソルを置くと、どのコンポーネントがその依存関係を必要としているかがツールチップで表示されます。すべてが透明です。

1つのアクションで、あとは 4D が処理

コンポーネントの追加・削除・更新など、すべての変更は、依存関係全体に再帰的に伝搬されます。

これにより、次のような利点があります:

  • 必要なサブ依存関係の自動読み込み
  • 明確な優先順位ルールによるスマートなバージョン解決
  • 影響を考慮した安全な削除
  • プロジェクトの実際の構造を反映した UI

コンポーネントデベロッパー向け

独自のコンポーネントを開発している場合、「依存関係をどのように宣言すればいいのか」と疑問に思うかもしれません。各コンポーネントには、独自の dependencies.json ファイルを含める必要があります。このファイルは、コンポーネントが正しく機能するために必要な依存関係を、バージョンの制約とともに指定します。

この仕組みは、ローカルの依存関係でも GitHub でホストされている依存関係でも機能します。しかし、より良い移植性と共有のためには、GitHub を使うのがベストプラクティスと考えられています。コンポーネントをビルドする際には、dependencies.json ファイルが最終パッケージに含まれていることを確認してください。この機能の完全なサポートは、4D 20 R10 から利用可能です。古いコンポーネントを使用している場合は、自動再帰的解決を利用するためにビルドしなおす必要があります。

今すぐお試しいただき、よりスマートで時間を節約できる依存関係の管理方法を体験し、トラブルシューティングに費やす時間を減らしてください。

 

David Azancot
- 4D for iOS プロダクトオーナー - David Azancotは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、ユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換することを担当しています。また、実装された機能が顧客のニーズを満たしているかどうかを確認することも彼の役割です。DavidはLeonard De Vinci Instituteでマーケティング、インターネット、モビリティのMBAを取得し、2011年にモバイルスタートアップ企業でキャリアを開始。この企業は後にモバイルマーケティンググループのMadvertiseに買収されました。モバイルインターフェースに情熱を注ぐ彼は、2015年、同グループのインタラクティブなモバイル広告フォーマットの開発に抜擢されました。並行して、Davidは2012年から彼独自のiOSおよびAndroidアプリケーションを開発しています。