Step11. 開発準備
「ジン先輩ー、今回のプロジェクトの仕様書見たいんですが、どこにありますか?」
「ちょっと待ってな……これだ」
「おっふ」
セキュリティレベルが高く、暗号化が施されていた。
薄々感じてはいたが、まともな仕様書は無さそうだ。
仕様に嘘偽りが無い完璧なドキュメント、つまりソースコードを見て行くか……
「ソースコードを見たいんですが、どうやったら見れますか?」
「今作業中で、ビルドが通らないから少し待ってくれ。俺のソースコードは、2日くらい結合してないが、大きな問題はないはずだ。転写して渡すから記憶の魔導石を準備しておいてくれ」
「おっふ(2回目)」
ダメ元で、恐る恐る聞いてみる。
「……バージョン管理システムは使ってませんか?」
「なんだソレ?」
「いえ、何でもありませんっ」
デスヨネ、使ってる訳ないですよね。
説明しよう!
バージョン管理システムとは、ソースコードを管理するシステムのことで、プログラマ必須のアイテムだっ!
ソースコードの履歴や差分を管理してくれて、他の人のソースコードを結合してくれる優れもの。
これが無いと、正直生きていけない。使わずに開発するのは、軽装で山に登るようなものだっ!
ここは手を抜くために、全力を出すしかない。
な……何を言ってるのか、わからねーと思うが、損して得取れという意味だ。
プログラマにとって、機械的な単純作業は、失敗しても、成功しても得られる経験値は何もない。
ただ集中力と時間を奪われて辛いだけだ。
心が決まった。
バージョン管理システムとまでは行かなくとも、他の人のソースコードを結合してくれるツールを作ろう。
仕組みは簡単だ。2つのソースコードを1行ずつ比べて、一致しなければ、判定を保留して、次の行を見ていく、先の行のどこかで一致したら、新規に挿入されたコードとみなして、結合する。
機械的に対応できなかったり、判断に困る部分があれば、判断を促す表示をして、決めてもらう。大体こんな感じで、いけるはずだ。
ソフトウエアを頭の中で組み上げる。
―戦術選定......汎用型決戦モデル
――要件定義......ソロミッションのため省略
―――基本設計......心象世界に具現化
――――詳細設計......現場での判断を優先
「条件付きでオールグリーン、製造準備完了!いつでも行けます!」
「……ただ……成功率が60%未満です」
「成功率なんてのは単なる目安だ。 あとは勇気で補えばいい! ファイナル・ミッション承認!!」
「了解! ファイナル・ミッション、プログラム……ドライブ!」
バキッ(何かが割れる音)
「よっしゃぁぁぁぁあ!」
…
……
「……おい、サワタリ大丈夫か?」
ハッとして横を見ると、ジン先輩が心配そうにこちらを凝視していた。
「……だ、大丈夫です。何でもありません。ご心配をおかけしました」
「なら、いんだが」
あぶない、あぶない、感情が昂って軽くトリップしてしまった。気をつけねば。
えっ、こんなことで盛り上がれるのかって?
そうとも、プログラマは孤独な闘いであることが多く、自分の世界に入りやすい。
独り言が多いのもその為だ。科学的に証明はされていないが、声を発することで、思考を整理しているとも言われている。
もし近くにプログラマが居て、何かあっても生暖かく見守ってあげて欲しい。
よし、気を取り直して、プログラミング開始だ!
カタカタ…ターン!
カタカタカタ…ターン!!
カタカタカタカ…ターン!!
カタカタカタ…俺のターン!!
地味だがコーディング中は、こんなものだ。
カタカタッ……
カタカタカタ…最後のターン!!
「完成っと!」
集中して、一気にやり切った。
外の様子を見ると暗くなり始めていた。黄昏時というやつだ。
完成したらやることと言えば……お披露目会だ!
いつもならジェシカを呼ぶところだが、今回はダメだ。内容がマニアックすぎて伝わらない。
ここは頼れるジン先輩だ。
「ジン先輩、少しお時間よろしいでしょうか?」
「ん?なんだ。いいぞ」
「ソースコードの結合するツールを作ったのですが、見ていただけないでしょうか」
「……ほう、それは面白そうだ」
「ジン先輩は2日間結合してなかったんですよね?それで試してみましょう」
「そうだな。結合もしようと思っていたところだ。フリートのとこに行ってソースコードを貰ってくるとしよう。付いてこい。ついでに紹介もしよう」
2人並んで、反対側のデスクまで歩いていく。
「フリート、新しく入ったサワタリだ。仲良くしてやってくれ」
「いつも貴方は突然ですね。私はフリートと申します。以後お見知りおきを」
「私はサワタリと申します。こちらこそよろしくお願いします」
丁寧な人だ。フリートさんは見た感じエルフ族のようだ。見た目は20代だけど、年齢は分からないな…
「フリート、さっそくだが、結合したいんだが、どうだ?」
「先ほど、キリがついたので大丈夫ですよ」
「おお、それは良かった。あとサワタリが結合ツールを作ったらしいんで、試してもいいか?」
「!?……それは興味深い、ぜひお願いします」
「分かました。ではさっそく、同じフォルダ階層にして、このツールを実行します」
「「ふむふむ」」
(二人の顔が近いなぁ……)
「はい、終わりました。結合が出来なかったファイルは、衝突しているので、手動で解消を行ってください。今回は3つのファイルが衝突していますね。対象箇所を分かりやすく表記しているので、試しに1つ見てみましょう」
<<<<<<< ジン先輩のコード
void Rental()
=======
void Rental(Book book)
>>>>>>> フリートさんのコード
「メソッドの引数が変わってますね。どちらかを残して、不要な部分を削除してください。今回はフリートさんのコードを残すのが良さそうですね」
「「!?」」
「なんだ、これは」
「なんですか、これは」
「めちゃくちゃ凄いじゃないか。手作業が当たり前だったので、こんな発想なかったぜ」
「私もです」
「お気に召していただき光栄です。他のファイルも結合が終わっているので、見てみてくださいね」
「「うぉぉぉぉぉぉおおおお」」
「結合作業にイライラしていた日々は何だったんだ……ソースコードが消された時は、相手に怒りをぶつけることもあった。このツールがあれば、そんなことに悩まされずにすむっ!! 画期的じゃぁぁぁぁないか!」
「私も同感です。プログラムで結合をやろうなどと、考えたこともありませでした」
「それは良かったです。それでこのツールを社内の運用として、みんなで使っていきませんか?」
「「はい、よろこんで!!」」
どこかの居酒屋で聞いたようなセリフだな……
開発環境としては、まだ不満が残るが限られた納期でやるにはこのくらいが妥当だろう。
ちなみにツールは、その日のうちに社内に広まった。
自分は帰ってしまって、その場に居なかったが、歓喜の声で溢れていたとのことだった。




