筆者のエンジニアとしての物の考え方を形成するのに、大きく影響を与えてくれた本の一つに
「達人プログラマー」
という本がある。
これは、最初の会社の時に先輩が勧めてくれた本で、このおかげで、かなり物の考え方が広がったと思っている。
このような本は、時間が経ってから読むと、新たな知見が得られるという事が何度かあったので、最近また読んでみたのだが、その際に、昔は理解できなかった項目が、少しだけ筆者なりの解釈が出来た部分があったので、ここにメモしておく。
ちなみに、この本はこのエントリの内容に関わらず、会社に従事して仕事をこなすのであれば、物の考え方が広がると思うので、そうですね、仕事に慣れた2年目中期くらいの人が読むと、1/3くらいは理解できるのではないかなと思います。それだけでも十分なくらいの内容になっていると思っています。
その本の該当箇所は
第一章:達人の哲学 12:専用の言語
上記の場所だ。
※ここからは筆者の理解の話なので、間違いだと思ったりしたら是非意見が欲しい。
ここの項目を要約すると
・要求仕様で使われている「言葉、単語」を用いて、プログラムの設計を行う
・最初は、それは実行できなくてもいい。つまり、プログラム言語のような物で書かれたプログラム用の仕様書という扱いでいい
・最終的には、そのような自分達で扱う言語を実行ファイル形式にすれば、要求仕様をそのままドキュメントかつ機能として使えるので、周知がしやすい
・このことを「問題領域に近い所でプログラミングを行う事」と、まとめられていた
といった具合だ。
当時から、言っている事・やっている事は理解できたのだが、実際にこれは仕事でどのような場面で生かせるのか、というのがどうにもピンと来ていなかった。
しかし先日、出向先のプランナーさんが、ゲーム内のアドベンチャースクリプト(キャラとキャラの顔と名前とセリフを仕込んで、やり取りさせるような設定)を組む際に
・エクセルで記載しているが、最終的にはtxt形式にしなければいけないので、めんどくさいしミスが多くなる
との話を聞き、GoogleSpreadSheetで動く、簡単な変換プログラムを作ってみた(この話は、また別のエントリで書きます)
一応、役には立ったようなのだが、
・筆者:そのスクリプトで必要なタグやキー(顔の指定や再生するSEの指定。例えば、TAG_FACE="smile"といった具合)はそのままで、セルに分けて書いて、メニューから実行すれば、フォーマットを自動で生成してくれる
・プランナーさん:タグとかキーがプログラムで判断する物を直接書くのではなく、例えば顔なら「笑う、泣く」など、日本語で分かる設定で、それで吐き出すと最終的なフォーマットで生成される。
との、食い違いがあった。
この時、問題領域に近い所でプログラミングを行うという事をどこで使える物なのか、理解できた気がした。
シナリオスクリプトのタグの設定は、プログラムで定めた物をエクセルに書き込むのが普通だ、というのは、エンジニアの勝手な思い込みでしかなく、それを設定するのがプランナーさんなのであれば、彼らがわかる言葉を使うべきなのだなと思った。
この知見は、後々使えそうなので、是非覚えておこうと思った。