yuiwaiの個人開発日誌

個人的な開発の備忘録などです

プログラムを書いてから実行されるまでのラグ

あるプログラムを書くとします。

書いたプログラムが実行されるのはいつでしょうか?

 

プログラムのタイプにもよりますが、例えばWebアプリのコードだとして、自分でローカルで動かしてみるか、あるいはデプロイして開発環境で動かすか、あるいはなんらかのテスティングフレームワーク経由で動かすか。

 

依存性の大きいコードだと、動かす、も一筋縄ではいかないでしょう。

DBの状態、キャッシュの状態、デプロイ、DNS、その他のシステムを構成する様々な要素...。

 

コードを書く行為と実行して動作を確認するまでの間に、ラグが生じます。

このラグが大きいほど、開発に無駄なコストがかかっていると思っています。

 

書いて動かして改善する、のサイクルをなるべく早く回したい。

 

そのために取れる戦略が色々あります。

ローカル環境の整備、テストの充実、抽象化とモックによる部分的な動作環境の構築、デプロイの自動化、などなど。動かしたい対象の性質に合わせて様々です。

 

でも、そもそも、動かないものは動作確認も取れません。

最低限、動くを保証した上で、動作を確認する戦略を乗せたい。

 

静的型付けによるコンパイル時のチェックは、最低限のプログラムの動作を保証する重要な機構だと思います。

書いたコードに対して、最初のフィードバックを与えてくれるのはコンパイラ(あるいは、IDEが提供する型チェック)です。

 

書いたコードの正しさは、いくつかの層に分かれていて、言語機能でサポートされる層の保証が大きければ大きいほど、その上の層の負担が減ります。

 

型システムがどんなに進化しても、コンパイルが通ればそれだけで正しいコードである、というレベルにまではなかなか到達はしないでしょう。しかし、正しさを確認する工程の補助を強化することはできます。

 

 

システムの規模が大きくなるにつれ、書いたコードの実行までのラグが大きくなるので、これを小さくする工夫が開発を円滑にするための重要なファクターだと思います。