事前準備は完了していたのに…

 突然ですが、テンプレートメタプログラミング(template metaprogramming)はお好きですか?

 まあ、殆ど人がテンプレートメタプログラミングって何状態だったり、プログラミングなんてしないよって感じかなぁっとは思うのですが。(そもそも、ここゲームプレイ日記のサイトですし…。)

 個人的には、テンプレートメタプログラミングって大好きなんですよ。
 私はC++っというプログラミング言語をメインに使うので、C++ template metaprogrammingを扱うタイプになります。

 日本国内だと、C++プログラマでもtemplate構文が判らないとか、template構文は判るけれど使ったことないから怖いって人も多いので、仕事でC++ template metaprogrammingを使う機会なんて殆ど無いんですけどね。
 それでも、新機能の実装ケースが多すぎて新規コードが数万行になる見積もりだったり、新機能の検証パターンが膨大過ぎる場合は、C++ template metaprogrammingを利用して実装行数を大幅に圧縮+コンパイル時試験を充実させる事により、開発を短期間で終わらせゲームプレイ時間を確保できる訳です。

 まあ、C++ template metaprogrammingで拡張性のある機能追加の仕組みを作ろうとすると、メタプログラミング向けのtemplateクラスを大量に用意しておいたり、組み合わせエラーを検知する仕組みを用意したりっていう部分が大変なんですけどね。
 それでも、事前準備さえ終わらせてしまえば、複雑な機能が数行のtemplateクラス/関数コールで実装+検証出来て凄く楽な訳です。
 テンプレートメタプログラミングの事前準備に多少時間かかっても、その後の実装+試験ペースが数倍~数十倍になれば元は取れるって感じですね。

 でっ、今回もC++ template metaprogramming用のクラス群などを作成して、事前準備として作ったtemplateクラス群+コンパイル時エラーチェックの仕組み検証まで完了していた訳です。

 残念ながら、その機能を追加する話自体が無くなって、事前準備したコードが無駄になってしまったんですけどね…。
 まあ、仕事でソフトウェア開発していると、殆ど実装済みの案件が無かった事になるケースって多いんでよね。此方としては、契約条件に従った報酬さえ貰えれば、途中で中止になっても問題は無いのですが。

 とはいえ、実装したC++ template metaprogrammingなコードが日の目を見ないのは、テンプレートメタプログラミング好きの開発者としては残念な感じなのです。

コメント