見出し画像

ソフトウェア開発と小説のメタファー

誰でも「仕事はなんですか?」と聞かれることがあると思う。そんなとき、ぼくの場合は「業務用のソフトウェアをオーダーメイドでつくってます」とか、シンプルに「プログラマーです」などと答えるが、だいたいポカンとされるか、曖昧にうなずかれて会話は終わる。

友達や家族ならそれでもいいが、相手がクライアントの場合は開発チームの業務イメージを共有できないとイロイロ問題なので、1つの手段として長編小説の執筆をソフトウェア開発のメタファー(喩え)として使う。

ちなみに小説のメタファーはぼくのアイデアではないが、いつ、どこで読んだか記憶にない。

補足(非IT系の方向け)
ソフトウェアとアプリはざっくり同じ意味です。
また、ソフトウェアはプログラムを書いてつくります。

大長編小説

小説といっても短編から長編までさまざまあるが、小説と比較してソフトウェアの規模はどの程度だろう。以下の記事によると、2020年3月にFacebookはMessengerを更改し、その際に「170万行以上あったコードを36万行にまで減らした」らしい。

自然言語で書かれた文章とコンピュータープログラムを単純に比較することはできないが、巨大だということは伝わると思う。ちなみに、ざっくり文字数で比較すると以下になる。

長編小説  :原稿用紙300枚×400文字 = 12万文字
ソフトウェア:コード36万行×50文字/行 = 1800万文字(原稿用紙4.5万枚)

※長編小説の定義はWikipediaから引用
※50文字/行はコード1行あたり最大100文字として、平均すると半分になると仮定したむちゃくちゃ適当なものです

しかも、小説は多少つじつまの合わない箇所や誤字脱字があっても読み手が推測して柔軟に解釈してくれるが、コンピューターにはそれができないので一字でも誤りがあれば正しく動かなくなる。

ここまで説明すると、クライアントは顔を曇らせる。

***

テーマ、設定、構成、執筆

小説には恋愛、SF、推理、政治、歴史などのテーマ(テーマを分類するとジャンル)がある。また、小説には登場人物や組織、舞台となる街などの設定がある。さらに、多くの場合、書き始める前に物語の流れ(=構成)を考える。それらの土台があり、ようやく小説を執筆できる(と思ってる)。

これをソフトウェアに(とても強引に)当てはめるてクライアントに説明する際には、以下のようにする。

テーマ   :ソフトウェアの企画
設定、構成 :要件定義~構成
執筆    :実装(プログラミング)

ちなみに執筆後の推敲校正は、ソフトウェア開発ではテストと言えそうだ。誤字脱字なんかはバグと考えられる。

***

バグとは

バグとはプログラムの誤りのことだが、その誤り方にもさまざまある。小さな誤りは小説のメタファーで言うと、誤字脱字だろう。これを見つけて直すためには、小説の執筆者本人がWordなどでチェックをしたあと、専門家に校正を依頼のだと思う(たぶん)。

ではソフトウェアではどうかというと、同じようにプログラムをソフトウェアでチェックして誤りを見つけ、第3者にコードレビューと呼ばれる目視のチェックを受けることが多いので、プロセス自体は小説と大差ないと思う。

ただし前述のとおり、ソフトウェア開発はプログラムの量の多さ読み手(コンピューター)の融通のきかなさで小説の作業量を圧倒する。しつこいようだが、1つでも誤りがあればソフトウェアは動かない。

***

だから仕様変更には時間がかかる

長編小説の設定を変えるとする。たとえば「主人公の名前を変える」と、直接的に名前が記述されている文のほかに、呼ばれ方やニックネームなど、変更を検討すべき箇所は多い。仮に名札や表札の描写があれば、それも変更対象だろう。これらをすべてをもれなく見つけて修正し、文章全体でつじつまを合わせる作業が膨大なものになることは容易にイメージできると思う。

ソフトウェア開発も同じで、ユーザーの見た目には小さな仕様変更でも、その変更が方々に影響することが結構ある。開発チームはそれをあらゆる手段で洗い出し、修正し、テストする。何度でも言おう、1つでも誤りがあれば(略

***

愚痴りたいわけではない

すっかり愚痴っぽくなってしまったが、ただ不満を言いたかったわけではない。小説のメタファーでクライアントにソフトウェア開発のプロセスを少しでもイメージしてもらえれば、開発チームとの相互理解が深まる。

それはプロジェクトチームとして目に見えないプロダクト(=ソフトウェア)を生みだすために、必須の条件だと思う。

この記事が気に入ったらサポートをしてみませんか?