こんにちは。マルビーネです。
2021年5月17日、すごいニュースが入りましたね。

自衛隊が運営する、ワクチン大規模接種東京センターの予約システムに欠陥が発生したそうです。
いったいどんな問題があったのか。なぜこんなシステムがリリースされたのか?
システム開発者(歴20年超)の視点から想像してみました。
この記事を書いている私は、
・システム開発歴20年以上の者です。
・国のシステムにかかわったことはまったくありません。
・ですので、これから書くことは私の妄想も入っています。
- 国が作ったシステムに障害?ありえないんですけどなぜこんなことになったのか知りたい
- 作ったやつの顔が見てみたい(私ではありません(泣))
「SQLインジェクション」が検索上位に挙がっているようですが、本稿ではその説明は省略します。
ワクチン大規模接種東京センターの予約システムに何が起こったか
どんな欠陥が見つかった?
「AERA dot.」が報じた内容を見ると、以下の通りのことが起こっているようです。
- 虚偽の接種券番号でも予約できる
- 正しくない市町村コードでも予約できる
- でたらめな生年月日でも予約できる
通常、どんなシステムにも搭載されている入力チェックもされず、
まったくのウソデータで予約できてしまうという、おそろしい仕組みです。
この件に対する世論
Yahoo!ニュースのコメント欄を見ると、以下の通りに言われております。
- 日本はIT関係は脆弱
- こんな簡単なチェックも入れられなかったのか
- 税金の無駄使い
- システム開発者側もIT弱者
ボコボコです・・・
国の見解
岸信夫防衛相は18日、「65歳以上の方の接種機会を奪い、貴重なワクチンそのものが無駄になりかねない極めて悪質な行為」と自身のTwitterアカウントに投稿し、報道機関に対し抗議しました。
なぜこのようなシステムが公開されたのか
入力チェックのないシステムはありえない
開発する者にとって入力チェック搭載は当たり前のこと
世間では「こんな簡単なチェックもできないのか」という嘆きが蔓延しているのですが、
本当にこの点は皆さんのおっしゃる通りです。
システム開発を本気で繰り返してきた者ならば、一機能作るだけにしても
「その機能でやりたいこと」とセットで必ず「入力チェック」「妥当性チェック」を気にします。
私ならば、渡された仕様書に書かれていなくとも
文字種のチェック(数字しか入れられないようにする、桁数をオーバーしないようにする、
決められた文字しか入れられないようにする)や
コードの存在チェックくらいは標準で入れます。
(もちろんその機能独自の妥当性チェックは確認します)
そのくらい、入力チェックはシステム開発者にとっては息をするくらい普通のことなんです。
これができたから褒められるなんてことはありません。ただただ普通です。
正常なデータを守ることは開発側にとっても生命線
入力チェックは、開発する側にとっても自分たちを守るために必要なものなんですよね。
めちゃくちゃなデータをデータベースに入れられると、あとから困るのは開発側。想定しない
データが入ると、システムの整合性がとれなくなれます。結果、システムが誤作動することなったり
業務が回らなくなったりすることになります。
問題の予約システムのデータは既にむちゃくちゃな状態だと思うので運用が恐ろしい・・・。
おそらく、現場のSEとPGは入力チェックについて言及していた
こう考えるとですね。きっと現場のSE(システムエンジニア)やPG(プログラマ)は、
このあたりのことは気にしていたと思うんですよね。
最低限、以下のチェックは想定されていたと思います。
- 接種券番号は正しいか
- 市町村コードは正しいか
- 接種券番号とその持ち主の生年月日は一致しているか
- 入力された接種券番号はまだ予約されていないか
入力チェックすら搭載されなかった理由は?
現場は入力チェックを当然入れるつもりだったとして、でも結果的にチェックはほとんどなされないシステムが
リリース(公開)されてしまいました。なぜこんなことが起こったのかを考えてみました。
考えられる理由①チェックに必要なデータが提供されなかった
考えられるっていうか、まず一因はこれですよね。
ワクチンの架空予約 加藤官房長官「悪質なケースは法的措置も視野」(ITmedia NEWS)
記事から引用しますね。
不正な予約を防ぐ手法の実現性について、加藤長官は「虚偽予約を完全に防止するためには、全市区町村が管理する接種券番号含む個人情報をあらかじめ防衛省が把握し、入力情報と照合することが必要」と説明。
ワクチンの架空予約 加藤官房長官「悪質なケースは法的措置も視野」(ITmedia NEWS)
接種券番号がわからないと、入力された数字が妥当かどうかはシステムはわからないんですよね。
で、データが開発会社に渡されなかった理由として、
「こうしたシステムを短期間で実現することは、国民への迅速な接種という観点や、全国民の個人情報を防衛省が把握することが適切なのかという問題もあるため、当初からそうしたシステムは採用しないということで進めてきた」とした。
ワクチンの架空予約 加藤官房長官「悪質なケースは法的措置も視野」(ITmedia NEWS)
とのことです。
個人情報の保護に配慮したと。そういうことですね。
そのあたりの事情はわからないでもないです。
ただ、市区町村コードくらいは国は渡してよかったんじゃない?!というのは私は思いますね。
岸大臣も、この点は改修するって言ってますし(笑)
「接種券番号」と「その持ち主の生年月日」くらいも、思い切って渡してくれたら
よかったんじゃないかなと思いますけれどもね。逆にこれがなかったらまともなチェックなんて
できないですよ、できないからこんなことになったんでしょ・・・
考えられる理由②開発期間が短かった
これもニュースを見ていて感じるのですが「なんでもいいから早く作れ!でも処理が軽くてダウンしないやつね!」
って、国から(あるいはすごい偉い人から)言われたんだと思うんですよ。
「システムを短期間で実現する」ため、「国民への迅速な接種」のためという理由で。
もしかしたら、「早く作ってよ、入力チェックなんていらないからさ」とでも
言われたのかもしれません。
こんな無茶ぶりされ続けて、開発側は
「もういいかあ。だって照合するデータもないし時間もないし」となってしまったのでしょうか。
「入力チェック入れてもテスト工数かかるだけだしさあ」となり、
それで工数削りに削って、入力チェックまでなくしちゃったのでしょうか。
作り手にとって基本であり命綱である入力チェックを省くなんて、ある意味
ものすごく勇気ある決断なんですよ。
もしかしてシステム開発に1人日しかもらえなかったのかなって私は思ってしまうくらい。
開発した人たちの気持ちを考えてみた
現場はちゃんとシステムを作ろうとしたはず
前項でも書きましたが、最前線にいるSEやPGは、普通のシステムを作ろうとしたんだと思います。
入力チェックもできて、二重予約も防げて。そういう普通のシステムを。
作り手にプライドと責任感があるなら、だれかが言っているような「空っぽのシステム」なんて
作りたくないんです。
全国が注目しているシステムですよ。
国民の命を預かるシステムなんですよ。
こんなシステムでいいはずがないのは、作った本人たちが一番よくわかっているはずです。
当然、作った側が
「国からのプレッシャーがあったからこんなシステムになっちゃった。だから仕方ない」
と思ってはいけないとは私は思うんですよね。国が悪いにしろ。
「国が悪い、オレらは悪くない」と思っているならそれは改めて欲しい。
でも、中には「こんなシステム作っちゃった。みんながワクチン接種できるか心配で眠れない」
という人もいると思うんですよ。その誰かさんが、報道機関に情報をリークして今回のことが
わかったんじゃないかなと思うんです。
最後に
今回のワクチン接種予約システムの作りは残念なものでした。
上の圧力があったから、時間がなかったから、という言い訳は当然通用しません。
ちゃんとデータはもらうべきだった。それを国に強く言えなかった会社に責任があると思います。
でも一方で、こんな仕事をさせられてしまった技術者の人には、同業者としてつい同情してしまいます。
「仲間をかばうのか?!」と怒られても仕方がないと思うのですが。
PGなんて人権がない時もあるんですよ。替えの利く人材だと思われてます。
これじゃダメだ!と意見を言っても聞いてもらえなかったのかなあとか色々妄想すると、
今回の記事は書かなければいけないなと思いました。
以上です。ありがとうございました!
コメント