DZone.com Feed 日本語
フォロー
「私のマシンでは動く」はアーキテクチャの問題である
開発者のマシンでは動作するのに、それ以外の場所では失敗するという一般的な問題は、アーキテクチャ上の問題を意味します。これは、システムの動作の重要な部分がバージョン管理にキャプチャされていないために発生し、開発者のワークステーションが暗黙的で文書化されていない依存関係となります。ランタイムバージョン、CPUアーキテクチャ、ファイルシステム、ロケール、タイムゾーン、ネイティブライブラリ、証明書、環境変数、依存関係解決、またはビルドツールの違いが、これらの失敗の原因となる可能性があります。これらの不一致は、システムがビルドおよび実行条件の完全で再現可能な定義を欠いていることを意味します。再現可能なビルドの実践は、宣言されたソースと入力が検証可能な成果物を生成することを保証することによって、これを解決することを目指しています。現在、リポジトリはソースコードと設定を保持することが多いですが、オペレーティングシステムに関する仮定を除外しています。たとえば、異なるJava Development Kitは、サービスの動作を変更する可能性があります。ホストのタイムゾーンに依存するコードは、Java Virtual Machineのランタイム環境の違いにより、さまざまな結果を生成する可能性があります。同様に、ロケールに依存する操作に影響を与えるデフォルトのロケールは、環境から継承される可能性があり、一貫性のない結果につながります。