あらゆる業界・分野で「DX」「デジタル化」というワードを耳にする昨今。私も「日本はデジタル後進国だからもっとDXを進めるべき」といつも思っていました。

しかし、政府主体で開発したワクチン予約システムが何かと話題になった際、こんなことに気づきました。「あれ……俺よく考えたらシステム開発のこと何も分かってない……」と。

実際、そもそもシステムはどのように開発されていて、開発の際にはどんなことに気を付けるべきか、そんな基本的なことも知りませんでした。これでは、国のワクチン予約システムにどんな問題があるのかも分かりません。

そこで今回は、株式会社GIGで現役エンジニアとして活躍し、予約システムの開発経験もある庄子肇さんに、システム開発の基礎の基礎から「ワクチン予約システムの欠陥の原因として考えられること」まで聞いてきました!

庄子肇さん
バックエンドエンジニア。宮城大学事業構想学部デザイン情報学科を卒業後、ベンチャー企業でエンジニアとして常駐先のシステム開発やサイト制作の経験を積んだ後、2019年10月にGIGにジョイン。

聞き手:齊藤颯人
「これからはプログラミングの時代だ!」と意気込んではじめたプログラミング学習を2週間で挫折したド素人

目次

  1. システム開発=業務効率化のための仕組みづくり
  2. システム開発に必要なのは“国語力”
  3. 予約システム開発は「テスト」が大変
  4. ワクチン予約システム開発には「人員」と「時間」が足りなかった?
  5. 開発者と利用者、どっちもわるい

システム開発=業務効率化のための仕組みづくり

齊藤:
今日は「ワクチン予約システム」について聞きたいのですが、その前に。そもそも「システム開発」って何なのかを教えてください!

庄子:
文字通り「業務効率化のための仕組みを開発すること」です。システムの開発には大きく分けて2種類あります。1から新しいシステムを開発する方法と、既存のシステムを改良する方法です。前者はイメージしやすいと思いますが、後者も立派なシステム開発。

実際、後者のほうが開発費用が安く済みますし、誰かが開発したシステムを別の人が運用したり、1から開発した担当者が現場にいない状態でシステムの改良をしたりすることもあるので、私自身は後者を担当することが多いですね。

「ワクチン予約システム」って結局なにがマズかったの?ド素人が現役エンジニアに聞いてみた
(画像=『Workship MAGAZINE』より引用)

齊藤:
庄子さんは過去にどのようなシステム開発に、どのような役割でかかわってきましたか?

庄子:
過去には、ペットサロンやクリニックの予約システムの開発、ふるさと納税システムの開発などに従事してきました。業務はシステム開発の現場で実際に手を動かし、コードを書くものがほとんどですね。

ふるさと納税システムの開発では地方自治体とかかわりましたが、こうした場所では古くから使われているシステムを扱うため、最新技術が使えなかったりデータの形式が統一されていなかったりと、不便な思いもしました。国のシステム開発の現場でも、同じようなことが起こっている可能性はあります。

システム開発に必要なのは“国語力”

齊藤:
システム開発はどのように進んでいくのでしょうか?

庄子:
たとえば国のワクチン予約システムのように、誰か外部の人から発注されてシステムを開発していく“受託開発”の場合、おもに3つのプロセスで開発されます。

  1. 完成形の具体化
  2. 技術選定
  3. 制作

システムは「何かしらの工程を効率化する」ために開発されるもの。そのため、まずお客様がシステムに何を期待していて、どんなシステムを求めているのかをしっかりヒアリングし、お客様と開発者の間で完成形を具体化します。

齊藤:
「エンジニア=プログラミングスキルを使ってPCでシステムをつくる人」だと思っていたのですが、まずはヒアリングから業務が始まるんですね!

庄子:
はい。じつはこの工程が一番大切で、エンジニアは「相手が何を求めているのか」を正確に把握する必要があります。自分の思い込みだけで勝手なシステムをつくってはいけないのです。ですから、エンジニアには意外と“相手の気持ちを理解する”国語力が求められるんですよ。

「ワクチン予約システム」って結局なにがマズかったの?ド素人が現役エンジニアに聞いてみた
(画像=『Workship MAGAZINE』より引用)

齊藤:
なるほど! では、2つ目のプロセス「技術選定」とは何なのでしょうか?

庄子:
お客様の理想を実現するための開発環境や、使用する技術要素を決定する工程です。受託の場合はいただける予算の範囲内でシステムを開発するので、お客様の置かれた状況や、自分たちのリソースをどれだけその案件に割けるかなど、さまざまな要素を考慮して技術を選定します。

齊藤:
その後は制作に入っていくと思うのですが、システムの開発にはどれくらいの時間がかかるものですか?

庄子:
案件の大きさにもよりますが、どんなに小さいシステムでも開発には最低3か月くらいはかかるものです。大きな案件だと、1年以上かけて開発することも珍しくありません。

予約システム開発は「テスト」が大変

齊藤:
ではシステム開発のなかでも、「予約システムの開発」にはどんな特徴がありますか?

庄子:
基本的に、開発の流れ自体は変わりません。ですが、予約の対象になるサービスや店舗を把握する必要があるので、まず業態の調査から入る点が特徴です。業界によっては予約システムが採用されず、紙や電話での予約になっている場合も多いので、そもそも予約がシステム化されている業界なのかも調査します。

齊藤:
実際の制作段階で何か違いはありますか?

庄子:
予約システムは、「予約用の枠が決められていて、そこにいろんな人がアクセスする」ものです。ですから、たとえば同時に2人から予約が入った際、どちらのユーザーを優先するかを判断する「制御処理」の仕組みなどに気を付けて開発する必要があります。

「ワクチン予約システム」って結局なにがマズかったの?ド素人が現役エンジニアに聞いてみた
(画像=『Workship MAGAZINE』より引用)

齊藤:
確かに、全く同時に予約が入る可能性もありますよね……。しかしそう聞くと、「予約システムの場合は開発後のアフターフォローも大変になるのでは?」と思ってしまうのですが、そのあたりはどうなのでしょうか?

庄子:
アフターフォローも、通常のシステム開発と大きくは変わりません。ですが、予約システムの場合はシステム上でいろんな人がいろんな操作をする可能性が想定されるため、バグを出さないためのテストには時間がかかりやすいです。

齊藤:
あと「予約システム」というと、混雑時にサイトにつながりにくくなってしまうイメージがあります。実際に私は最近、システムが落ちて先着順のコンサートチケットを取れなかった苦い経験をしたのですが、この原因は何なのでしょうか?

庄子:
原因は、システムを設置している「サーバー」とシステムの「処理能力」の2通りが考えられます。アクセス数に対してサーバーの容量が少ないと「サーバー落ち」という状況になってアクセスできなくなってしまいますし、予約に際して複雑な処理が多すぎるとシステムの処理が追いつかず、アクセスできなくなってしまうこともありますね。

ワクチン予約システム開発には「人員」と「時間」が足りなかった?

齊藤:
最近はやはり、国の開発したワクチン予約システムをめぐる話題をよく見かけます。現役エンジニアの目線で、このシステムには問題があると感じましたか?

庄子:
問題はあったと思います。「架空の番号でも予約できた」「生年月日を平安時代にしても予約できた」という声が挙がるのはマズいです。実際に開発したわけでないのでハッキリとは分かりませんが、この問題が発生したのはシステム完成後の機能テストが不十分だったことが原因ではないかと感じました。

おそらく、正しい形で入力がなされた際に予約を反映できているか確認する「正常系」のテストは十分にできていたのですが、予期しない形で入力された際の対処を確認する「準正常系」のテストが十分ではなく、こうした問題が起こってしまったのではないでしょうか。

「ワクチン予約システム」って結局なにがマズかったの?ド素人が現役エンジニアに聞いてみた
(画像=『Workship MAGAZINE』より引用)

齊藤:
テストが十分にできなかった原因にはどんなものが考えられますか?

庄子:
まず、システムの規模に対して開発時間が短すぎますね。このレベルのシステムであれば、少なくとも年単位でプロジェクトを進めたかったはずです。しかし報道を見るに、かなり短期で制作されたようなので、こうした問題が出てきたんだと思います。

またあくまで噂程度ですが、ずいぶんな少人数開発だったという話があり、これも原因かもしれません。単純に欠陥に気づけなかったのか、はたまたシステムの改良まで気が回らなかったのか。真相は分かりませんが、もし気づいていなかったのだとしたら「プロとしてそれは気づいてほしい」というのが本音ですね。

齊藤:
今回のケースでは明らかにデタラメな予約も多く、政府が法的措置を言及するまでになっていますよね。この場合、システム開発者にどこまで責任が及ぶものなのでしょうか?

庄子:
たとえ悪意ある攻撃だったとしても、システム開発者は一定の対策を講じなければなりません。これは実際に判例も出ており、2014年に開発したシステムの脆弱性を突かれてクレジットカード情報が流出した際には、開発者が損害賠償を命じられています。

開発者と利用者、どっちもわるい

齊藤:
ここまでの報道を見るに、ワクチン予約システムをめぐってはシステム開発者と利用者どちらに問題があるのでしょうか?

庄子:
正直、どっちもどっちかなとは思います。開発者側もテストが足りていなかったのは確かですし、利用者側も悪意をもって利用したという点で過失があります。

ですが、一応予約システムとして機能はしているのも事実です。先ほど例に出したクレジットカード情報の流出のように、重大な個人情報が流出しているわけではありません。なので、今のところ法的な問題はなさそうですね。

齊藤:
一部のメディアでは架空予約の実態を実体験とともに報じたところ、政府に「重大な妨害行為」と激しく非難された事例もありました。この件についてはどう感じましたか?

庄子:
開発者の本音としては、欠陥を見つけたらコッソリ教えてほしいというのが正直なところです。ただし、政府を含めたシステム提供側に落ち度があったことを考えると、政府は怒りすぎかなとも感じました。

齊藤:
では、最後にワクチン予約システムをこれから利用する予定の人たちにメッセージをお願いします。

庄子:
確かに問題のあるシステムですが、今のところ普通に予約すれば予約は取れるようです。ですから、システムの欠陥を突くような悪意ある使い方はしないで、ちゃんとサービスを使ってほしいですね。

(執筆&取材:齊藤颯人 編集:泉)

提供元・Workship MAGAZINE

【関連記事】
フリーランスで爆死しないためのリスクマネジメント 〜独立、その前に!〜
仕事の名義、正解ってあるの? ~フリーランス、名義をどうするか問題~
フリーランスの名刺論 〜それ、覚えてもらえる名刺ですか?~
"祈られない" 営業方法 ~提案の正解、たぶんこれです~
フリーランスのアンガーマネジメント ~ちょっと待て、その一言がブタのもと~