え?ワンオペプロジェクトの担当が死んだのでソースコードが消えたって?
プログラマは、コードを書くのが仕事かもしれない。だが実際は、コード「も」書くのが仕事だ。
要件を整理し、設計の不備を指摘し、開発・テスト環境を作り、データベースやネットワークも整備し、テストもするしデプロイもする。なんでもやらされるというか、やらないと「コードを書く」という仕事が成立しない。
そして、責任感が強く、優秀であるほど、一人で抱え込み、回せてしまう。結果、「その人」に仕事が集まり、「その人」しか回せなくなり、属人化が進んでいく。
そんな状況で、突然その人が死んだら、何が起きるか?
ワンオペ担当者が死亡
「姿勢計測ソフト開発」の判例が参考になる。これは、東京外環道の工事に用いられ、掘削機が想定通りに進んでいるかをリアルタイムに計測するソフトウェアだという。
2017年2月に初期版をリリースした後、機能追加が発注されていく。「一回作って終わり」ではなく、土木工事で検証された結果をフィードバックしていく性質のため、改良版を順次リリースしていた。
2019年4月に、開発していた担当者(Dさん)が死亡した。病気、事故、自殺……理由は明記されていないが、「担当者死亡により作業中止」とある。
リリースは、実行ファイル形式で引き渡されていた。ユーザ側はプロジェクトを引き継ぐため、成果物として最新版の提示を求めるのだが、ベンダ側はそれを見つけられず、裁判になる。
裁判の争点で重要なのは、「成果物としてソースコードも含まれるか?」という点にある。
厄介なのは、成果物が何かについて契約書に書いていなかったことだ。さらに、契約自体が、請負なのか準委任なのかについても明確ではなかった。請負ならソースコードが成果物として扱われるだろうし、準委任なら明記されない限りソースの有無は問われない。
まずユーザ側は「請負契約なのに完成しなかった」と主張した。しかし、裁判所はそこまでは認めなかった。
一方で、姿勢計測ソフトは継続的に改良する性質のものだった。改良や機能追加にはソースコードが必要になる。だから裁判所は、実行ファイルだけでなく、ソースコードも成果物に含まれると判断した。
そして、最新ソースコードを把握・回収できていなかったため、ベンダ側の債務不履行となった。
資産であるソースがどう管理されていたか?
2018年ならGit等は使えていたはずだが、クラウドリポジトリを使っていたかどうかは、判例からは読み取れない。オンプレサーバや定期的なバックアップがあったかも記載されていない。
分かっているのは、組織的なソース管理はされておらず、Dさんの作業環境に依存していたことだ。
トラックナンバー1(ワン)
ウチはGitにあるから大丈夫、と思うかもしれない。だが、ソースコードは象徴的な例と考えたほうがいい。
例えば、
- ソースコードは個人アカウントのレポジトリにある
- 個人のスマホで二段階認証
- その人しか知らない場所に暗号化鍵が保存
- パスワードマネージャのマスタパスワードがその人だけ知っている
- 2FAのrecovery codeが不明
- DBやファイルの暗号化の鍵の所在
ソースやDBが残っていても、暗号鍵が無ければ復旧できないし、鍵を保存する場所なんて、それこそ個人の裁量に任されている場合があるかもしれない。
GitHubにはコードがある。AWSには本番環境もある。DBも残っている。だが、管理者が死亡した本人だけで、2FAも本人のスマホだけ。だから誰も触れない。これが、クラウド版の「最新のソースコードが見つからない」になる。
姿勢計測ソフト開発は、Dさんがほぼ一人で回していた。
打ち合わせに出て、改良点や追加機能をヒアリングして、ソースに反映する。それをテスト・修正したものを提供し、現地での調整や検収にも関わっていた。ソフトウェア開発の実質的な作業は、Dさんが担っていたことになる。
そして、Dさんがやっていたことの代わりはおらず、開発は中止となった。これは単なる「担当者不在」ではなく、会社として受けた開発が、特定の個人の技能と環境に強く依存していたことになる。
「何人トラックに轢かれたら、そのプロジェクトは破綻するか?」というブラックジョークがある(バスに轢かれる場合は、バス係数と呼ぶ)。複数のメンバーで回していても、「この人がいなくなったらプロジェクトは止まる」という人がいる。
そういう属人的な要素を取り除こうと戒めるためのジョークなのだが、このプロジェクトの場合は、トラックナンバー1(ワン)だったことになる。
ワンオペで回している「その人」の重要性は、トラックナンバーが0になったとき露呈する。属人化の怖さは、「その人が優秀であること」ではない。その人がいなくなった瞬間、プロジェクトが破綻し、企業として契約不履行となる。
これ、他の専門職と比べものにならないくらい大きい。
もちろん、医師や弁護士、会社役員のような場合、「その人」を失うことは、企業にとって大きな痛手になる。だが、カルテや事件記録、契約書や稟議は組織に残る。なので、資格を持った「代わりの人」が引き継ぐことができる。
一方、属人化したソフトウェア開発では、「その人」を失うと同時に、ソースコード、認証情報、暗号鍵が失われる可能性がある。失われるのは、一人分の労働力ではなく、企業が保有しているはずのソフトウェア資産そのものだ。
ワンオペで回している人は、このリスクを自覚しているだろう。
だが、会社は認識しているだろうか?
| 固定リンク
コメント