なぜ日本はIT後進国になってしまったのか

 今回の予約システムの件に限らず、COCOAの不具合の時もそうだが、昨今よくネットで話題になるのが「いつの間に日本はこんなIT後進国になってしまったのだろうか」というテーマである。

 原因は複数あるだろうが、そのうちの一つは「ソフトウエア開発において、日本はウォーターフォール型の考え方から抜け出せない人が多い」ことにある。

 ウォーターフォール型とは、工程を「企画/設計/実装/テスト/運用」などに分割し、引き継ぎながら順番に行っていく開発手法だ。最初の企画段階でソフトの機能をすべて細かく決めてしまい、設計担当者に渡す。設計担当者は企画担当者が作った仕様書に沿って設計して実装担当者に渡す……という具合に、複数の専任チームが順番に開発を行っていく。

 ウォーターフォール型開発の場合、重要な決定はすべて最初の段階で行わなくてはならない。例えば後から「こんな機能を追加したい」と言っても仕様変更は難しいので、仕様決定には時間をかけて、細かいところまできっちりと決めなくてはならない。こうした作り方は開発に長い時間がかかるという問題があり、2000年代以降は非ウォーターフォール型の開発手法を採ることが増えてきた。

 その代表格が「アジャイル」と呼ばれる開発手法で、海外では今はこちらが主流といわれている。アジャイル開発では、大まかにやりたいこと(仕様)を決めたら、いきなり開発をスタートする。最も重要な機能や欲しい機能、やりたいことをまず設計・実装し、それをテストして、問題があればフィードバックして手直しする……というサイクルを細かく繰り返しながら開発していく。アジャイルの最大のメリットは、ウォーターフォール型よりも格段に短い時間でシステムやソフトを作れるということである。本番の運用が始まった後も、細かく手直ししながら柔軟に完成度を上げていく。例えば、スマートフォンのアプリが、頻繁にアップデートを繰り返して使いやすくなっていくというイメージがこれに近い。

 今回の防衛省の予約システムの場合、何よりも急いでシステムを作る必要があった。できるだけ大勢にワクチンを接種できるような受け付けシステムを、まずはできるだけ早く作ろうというのが最大のポイントであり、細かく仕様を決め、万全なセキュリティー対策を施した堅牢なシステムを設計している暇は当然なかっただろう。素早く、柔軟性高くシステムを開発する手法を採ったはずだ。

 セキュリティー上の欠陥があるというよりは、「セキュリティー対策やチェック機能を入れるつもりでそもそも作っていない」という設計に見える。岸大臣もツイートしている通り、「全市長区町村が管理する接種券番号を含む個人情報を予め防衛省が把握」するのは困難、という認識だったのだから。まずはシステムを急いで作り、問題があれば後から対処する、という方針は悪くない。