プログラミングの工程を「製造」と呼ぶことに違和感を感じる

はじめに

 まず、最初に言い訳をしておく。
 基本的に、言葉というのは、多くの人の間で誤解無く通用するようになれば、その言葉は「通用した」その意味を持つことになる。決めの問題であり、言葉は生き物だ。そのことは分かっている。そのため、この用語が「あれよあれよ」という間に通用し始めた頃、がまんして従っていた。
もう、覆せないところまで来てしまった感があるが、「わるあがき」として、ひとこと云いたい。

 ソフトウェア開発の工程の呼び名として「製造」という用語を耳にすることがあるが、素直に受け入れられないでいる。後述のJIS規格で言うことろの「構築」に当たる工程を、ある程度「標準化」を意識したコンテキストで「製造」と呼ぶことについて、である。発注先の某ソフトハウスも「製造」という用語を、会話の中でも文書でも統一的に使っていたので、会社の作業標準として「製造」と規程している会社があるように思う。

JIS規格では

 2012年版のJIS X 0160:2012では、

7.1 ソフトウェア実装プロセス

 7.1.5 ソフトウェア構築プロセス
  7.1.5.1 目的
   ソフトウェア構築プロセスは、ソフトウェア設計を適切に反映した実行可能なソフトウェアユニットを作り出すことを目的とする。」

と規定されており、現在のJIS規格に従うならプログラミングなどの工程は「構築」と呼ぶことになる。

過去のJIS規格とその他の標準化活動について

 1980年代後半に私はこの業界に入った。その時点での工程の標準化は各企業に委ねられていた。私は独立系のソフトハウスに勤務していたことから、富士通関連のプロジェクトではSDEMを使い、他の会社の場合は、また少し違った用語を使ったりしていた。

 余談になるが、SDEMでは、"Archtecture Design"の日本語として「方式設計」をあてていた。現在のJIS規格でも使われている用語である。*1

 1995年、ISOではISO 12207(SLCP:Software Life Cycle Processes)がまとめられた。SLCPはJCFを参考にして検討されたと聞いたことがある。私は、JCFの中身を読んでいないが、近いものではないかと想像している。
 そして、1996年、SLCPの翻訳版がJIS X 0160としてJIS規格入りした。その後、JCF, SLCPともに何度か改訂されて、JIS規格もこれを反映して改版されている。

1996年のJIS規格が手元にある。現在のものとはかなり違う。現在のJIS規格における「ソフトウェア構築プロセス」に相当するのは、以下の記述である。

5.3.7 ソフトェアコード作成及びテスト

 当時、勤務先がISO9001の監査を受けようとしていたこともあり、節目管理をするために工程の標準化が必要であった。その際にSLCPを見て困った記憶がある。工程の名称として長すぎるのだ。例えれば、料理の名前として調理方法が書かれているようなもので、コミュニケーションの際に用語として用いるには適さない。当時は、この項番号の「3.5.7」を用いるべきか、との議論もあったが実用的ではない。なお、その前後は十分使える用語が割り当てられている。

  • 5.3.4 ソフトウェア要求分析
  • 5.3.5 ソフトウェア方式設計
  • 5.3.6 ソフトウェア詳細設計
  • 5.3.7 ソフトェアコード作成及びテスト
  • 5.3.8 ソフトウェア結合

 結局のところ、単体テストを分けたかったことも1つの理由ではあるが、SDEMに倣って「PG工程」と呼んでいた記憶がある。
 みんなが困った結果、今のような用語の混乱が生まれたのではないかと思う。ちなみに、その後私はもっぱら「実装」と呼んできた。

ソフトウェアを「製造」することの違和感

 あとは、本当に個人的な受けとめ方の話になってしまう。

音楽に例えると

 音楽もソフトウェアである。音楽とソフトウェアを対比する場合、「作曲」と「設計」が対応するであろう。そして「楽器」が「計算機」であり、「演奏」がソフトウェアの「実行」である。
 作曲した曲を譜面に落とす作業がソフトウェアの「製造」に相当すると言われると違和感を感じないだろうか。

「造」とは

 「造」を使った言葉を並べてみる。造成、造型、お造り……。要するに3次元空間における「かたち」に問題意識を置いた言葉である。
 「製造」と聞いて真っ先に思い浮かべるのは、第二次産業の「製造業」である。*2

 例えば、開発したソフトウェアをCDに焼いてマスターCDを造る作業を「製造」と呼ぶなら何とか許せる。どうしても「製造」という言葉を使いたいなら、この工程を指して使ってほしかったくらいである。*3

 端的に言えば、日本語としてズレを感じる。

ソフトウェア開発は、設計の詳細化である

 プログラムは、十分詳細化され正確に記載された設計書である。計算機(やコンパイラ)が読める形式の文書である、と言い換えても良い。
 設計とは準備作業であり、最終目的ではない。読まれることを想定しない文書があるなら、それは自己目的化した−存在することが目的で、内容は問わない−ものに映る。
 納品のために、読まれることを想定しない仕様書を印刷をすることが多々ある。その延長だ。
 わかってもらうために、少々極端に表現すると、
 プログラミングの作業を「製造」と呼ぶ人の頭の中では、「実行可能なソフトウェアユニット」を「設計」することそのものが最終目的になり、実行することは自らの興味の対象では無いかのように映る。演奏されることに興味の無い作曲家のような印象を受ける。

 あくまで極端に表現している。気を悪くされたようであれば、最後に謝っておく。

まとめに代えて

 あまり権威主義的なのは良くないが、折角JIS規格があるのだから、できるだけJIS規格の用語を使うのが良いと思う。しかし、明日から「構築」と呼んでも通じないだろう。難しいところだ。

*1:他に良い訳を思いつかないので、私はこの呼び名で良いと思うが、「方式設計」の意味が通じないあるいは使いたがらないソフト開発者が少なからずいた。もしかしたら彼ら・彼女らはこの用語にこそ違和感を持っているのかも知れない。

*2:私が働いていた製造業の某企業では「製造」という工程はなかった。設計→試作→量産といった具合だ。(本当はもっと細かい。) その意味で、用語の重複はあまり心配する必要は無い。

*3:実際には勤務先の製造業でマスターCDをつくる作業は「ソフトの出図」と呼ぶ人もあれば、単に「マスター作成」と呼ぶ人も居て決まっていなかった。