「空と君のあいだに」を実装する
始まり
「『空と君のあいだに』をシステム化して欲しいんです。」
その日、営業担当から依頼されたのは実に平凡な依頼であった。
かの有名な中島みゆきさんの名曲であれば、システム化を希望する顧客も多いだろう。 私は顧客に近い環境で働くシステム屋として、以前からその気配を肌で感じていたのだ。
「わかりました」と素っ気なく仕事を引き受けた私は、さっそく打ち合わせの準備に入るのだった。
顧客との打ち合わせ
翌日、顧客との打ち合わせが始まった。
今日の目的は要件定義だ。システムを作るためには、まず顧客の要望を聞き取る。 それを要件という形でまとめる作業を経て、ようやくシステムを作ることができるのだ。
顧客との打ち合わせの結果、特に重要とされた要件を優先して実装することになった。 その要件とは、以下の2つだ。
- 君が涙のときには、僕はポプラの枝になる
- 君が笑ってくれるなら、僕は悪にでもなる
この2つだけを実装するのであれば、難易度はそれほど高くない。 顧客からも「費用対効果の面で満足している」との回答を得られた。
次回の打ち合わせまでには、画面デザインを提示できるだろう。
実装開始
顧客から提示された要件を改めて眺める。
- 君が涙のときには、僕はポプラの枝になる
- 君が笑ってくれるなら、僕は悪にでもなる
これはつまり、「君」の状態に合わせて「僕」を変化させて欲しいということだろう。 早速PCに向かった私は、最初の画面デザインを作成した。
バージョン1の画面では、「君」が「涙のとき」である場合、「僕」の欄に「ポプラの枝になる」を表示する。
もちろん、「君」が「笑ってくれる」場合にも対応している。この場合、「僕」の欄に「悪にでもなる」を表示する。
最初のバージョンとしては十分な実装だろう。これを最初の案として顧客に見せることにした。
フィードバック
「えーと、実はですね……」
顧客から帰ってきた反応は芳しくないものだった。どうやら要望から外れたものを出してしまったようだ。
しかしこれも織り込み済みの事態である。ここからフィードバックを得て、改善を積み重ねていくのだ。 早い段階で第1案を提案でき、フィードバックを得られたのはむしろ僥倖と言えよう。
改めて顧客から聞き取りを行った結果、以下の事実が判明した。
- 「君」は泣き笑いをする
つまり「涙のとき」と「笑ってくれる」が同時に起こりうる、とのことだった。 なるほど、今の画面では泣き笑いを表現できない。
自社に帰った私は、このフィードバックを元に画面を改良した。
バージョン2の画面では、従来の機能を保持したまま「泣き笑い」に対応している。
まずは従来どおり、「君」が「涙のとき」には、「僕」の欄に「ポプラの枝になる」を表示する。
「君」が「笑ってくれる」なら、「僕」の欄に「悪にでもなる」を表示する機能も同様だ。
今回追加した機能として、「泣き笑い」にも対応している。 「涙のとき」と「笑ってくれる」が同時に起こっている場合、「悪のポプラの枝にでもなる」を表示するのだ。
これで顧客のフィードバックに対応することができた。 完成した画面を顧客に見せた時の反応も上々で、私はとても充実した気持ちで家に帰った。
誤算
「空と君のあいだに」の実装も終盤に差し掛かったある日、その連絡は届いた。
「すみません、ちょっと相談が……」
電話口の営業担当の声が暗い。何か良くないことが起こったのは明白だった。 話を聞けば、どうやら顧客から仕様変更の依頼が来たらしい。
この時期にプログラムを変更するリスクは高い。 下手な仕様変更は避けたいところだが、かといって話を聞かないという選択肢もない。 的はずれな製品を納入した所で、それは顧客の役に立たないのだ。
私は急いで顧客の元に向かい、再度の聞き取りを行った。
仕様変更
問題があったのは、「僕は悪にでもなる」の部分であった。
ひとくちに「悪にでもなる」といっても、悪にならないケースもあり得るらしい。 実際に悪になるかどうかは、状況によって変わりうるそうだ。
これを受けて、悪になるかどうかの選択肢を「僕」に設ける改修を行った。
バージョン3の画面では、「君」が「笑ってくれる」ときに選択肢が現れる。 その選択によって、「僕」が悪になるかどうかを選ぶことができる。
ここで明示的に「僕」が「悪になる」ことを選択して初めて、「僕」は「悪になる」のだ。
もちろん以前のフィードバックも忘れていない。「悪のポプラの枝になる」機能も実装済みだ。 「君」が「笑ってくれる」かつ「君が涙のとき」に、「僕」が「悪になる」を選択すれば良い。
この画面を改めて顧客に見せたところ「今度こそ間違いない」との回答を得られた。 急な仕様変更であったが、どうやら上手く対応できたようだ。
リリース、そして……
その後は大きなトラブルもなくプロジェクトが進み、無事に「空と君のあいだに」システムをリリースすることができた。 我が社の営業担当から聞いた話によれば、顧客の反応は上々なようだ。
しかし、今回実装したのは「空と君のあいだに」のうち一部に過ぎない。 最優先の機能は実装できたものの、まだ実装するべき機能が残っているのだ。
私は「空と君のあいだに」のシステム改修に向けて、今日も顧客との打ち合わせに向かうのだった……。
あとがき
ネタを思いついてしまい、ついカッとなってやった。今では反省している。
君が泣き笑いしてくれるなら
— かーみん#全日本知らんがなグランプリ参加選手 (@m_kahmin) January 24, 2019
僕は悪のポプラの枝にでもなる https://t.co/MO4jWWYy57
システムを作る際には「曖昧なところを確認して、明確な仕様を作る」という作業が必要だったりします。 その過程でこのようなやり取りがあったりするのです……という空気が伝わればいいなぁ。