### みんなもっと遅延しようよ
ソフトウェア・エンジニアリングにおいて、「遅延」とは、最適化のための重要な概念である。英語では “delay”.
- 遅延ロード
- アプリケーションが外部モジュールを使用する際、後々必要になるモジュールは起動時に全て読み込んでしまうというのが一般的であった。対して、軽量なまま起動を済ませ、追加モジュールは必要になったぎりぎりの時点で初めて読み込むという手法。
- 遅延生成
- データベース管理された日記をHTMLで公開する場合、アクセスされる度にビューを生成するとサーバに負荷がかかるため、その日の記事を書き終えた時点でビューを生成するというアプローチが取られることがあった。対して、データ入力完了時ではなく、最初の閲覧者がそのページを見ようとしたときにビューを生成する、という手法。（”キャッシュ”は、哲学は違うがやってることは多分一緒。）
- 遅延宣言
- コーディング時に、使用する変数のリストを関数の最初ですべて宣言するのではなく、使用する箇所の直前で宣言、初期化する手法。古いC言語では文法的に認められていなかった。僕はこの発展で遅延include(実際にそれを使用する関数の直前でクラスやパッケージのヘッダをincludeする)を多用していたところ、前の会社の同僚と議論になった。
もちろんそれぞれメリットデメリットはあるが、近年は特に、大抵において歓迎される。
これが、「遅延」である。
さて、話を日常生活に戻そう。
「遅延」は、忌むべき行為であり、「前倒し」が常に奨励される。
「もっと遅延しろ！」などと言われることは決して無い。
ともすれば「怠惰」に直結するくらい、ネガティブな語感をふんだんに含んだ言葉だ。
このギャップはどうしたことだろう？
(揶揄してるのかなんだか知らないが、”delay” の代わりに “lazy” を使うこともある。)
僕はいま現実に、週末のイベントの準備でてんやわんやしていて、遅延させないため、遅延を取り戻すために戦っている最中。終わると大抵、「もっと前倒しで準備するべきだった」みたいな反省が当然出てくるのであるが、そこには本質的な見落としがあって、だからまた遅延を繰り返している。
「歓迎されるdelay」をもう少し突き詰めて考えると、そこにヒントがあるかも、と漠然と思いつつ、仕事に戻ります。
＃来週、続きを書くかも。遅延ダイアリィ。
遅延演奏