ペルソナ④
家に帰ってもまだ、新城先生から聞いた話がしばらく頭から離れる事はなかった。
自室に籠り、ベッドの上で何をするでもなく天井を眺めていると、リピートされた楽曲のように新城先生の話が頭の中で何度も繰り返された。
考えてしまうのはやはり、ホワイトハッカーという職業における責任の重さだった。
企業からセキュリティ対策に関する依頼があったとして、その対策に抜け漏れがあった事でセキュリティインシデント――情報漏洩や不正アクセス、ウイルス感染など、システムや情報の安全性を脅かす事故が起きるような事があれば、企業からの追及は免れないだろう。
特に顧客の重要な情報を扱う企業であれば尚の事、セキュリティ対策の重要性は増していく。
新城先生の話を聞いて、少しだけ心が挫かれそうになったのは事実だった。
しかし、僕には今のところ、将来における別の目標がある訳ではないというのも事実だ。
だから、やる事はいつもと同じだった。
僕は心に残った何かを振り切ろうと勢いよくベッドから立ち上がり、PCを起動してから椅子に腰掛ける。
スリープモードとなっていたPCにパスワードを打ち込んだ後、スマホアプリのセキュリティ診断を遂行する為、各種ツールを起動した。
アイトークのアプリデータを抽出後、様々な手順を通して立ち上げたツールにデータを取り込んでいく。
そうする事で、アイトークのソースコード――アプリやシステムを動かす為に書かれた設計図が参照できるようになった。
このソースコードを読み解く事でアプリがどのように動くのかを理解できる。
今から行うのは、静的解析と呼ばれるものだ。
実際にアプリを操作して脆弱性を検出する動的解析ではなく、アプリ内にあるソースコードやデータを見て、脆弱性がないかを調査する手法だ。
静的解析を進めつつ、Javaと呼ばれるプログラミング言語で書かれたコードを読んで、僕は思わず感嘆の声を漏らしてしまった。
それは恐ろしく可読性の高いコードだった。
可読性とは、コードの読みやすさのことだ。
ただ動けば良いというものではなく、後から読む人間が理解しやすいよう整理されているかも、開発においては重要になる。
Javaのコードに関しては他にも見た事があるが、ここまで綺麗なコーディングを僕は見た事がない。
そこには、一種の芸術性のようなものが垣間見えた。
こんなにも美しいコードを書く白石さんに、僕はまたしても畏怖の念を抱きながらも静的解析を進めていく。
それから二時間程経っただろうか。
僕はコードの中に、一つの脆弱性を見つけた。
リスクとしてはそこまで高くはないが、気になる箇所ではあった。
アプリの開発においては低いリスクであれば、そのリスクを許容する事も十分あるだろう。
しかし、もしこれが意図的ではなく作られてしまった脆弱性であるならば、それは開発者が知っておくべき問題だ。
そのうえで、どういう措置を取るのかは、開発者である白石さんに判断を委ねる事になる。
僕はメッセージアプリを起動し、白石さんにそこら辺を確認する事にした。
【アイトークのアプリですが、いまソースコードを読ませてもらっています。第二引数に、既に廃止されているはずの値が設定されているメソッドがあるのですが、これって意図的ですか?】
すぐに既読が付き、白石さんから返信が届く。
【詳細を教えて。できればメールで、該当箇所が分かるように】
僕はPCでメーラーを起動し、該当する箇所の詳細について記載したメールを白石さんのアドレス宛に送信した。
それからしばらく待っていると、メッセージアプリから通知が届いた。
それは、白石さんから通話が来たことを知らせるものだった。
通話を取ると、白石さんの清音のような声が耳に届いた。
『よく気づいたね。あの実装は確かにいただけない』
「あ、やっぱりあのメソッドの使用は意図的ではなかったんですね」
『うん、マキナに確認した』
「……マキナ?」
『ああ、そういえば言ってなかった。マキナは……私の仲間で、一緒にアプリを開発してる』
マキナ。外国人だろうか。日本ではあまり聞かない名前だ。
しかし、昨今では日本にいてもおかしくはない名前なので、判別はつかない。
『マキナはリスクがないと判断していたけれど、それは現時点での話。あの実装を良しとしてこのまま開発を進めていったら、どこかでよりリスクの高い脆弱性が作られてしまう。だから、いま気づけて良かった……ありがとう』
素直にお礼を言われるとは思っていなかったので、少し照れ臭かった。
それと同時に、僕が白石さんのような天才の役に立てたという事実が嬉しかった。
『黒川は私が思っていたより見込みがありそう……ねえ、黒川もアプリの開発に携わってみる気はない?』
「……え? それって、アイトークのアプリですか?」
『ううん、正式には違う。アイはプロトタイプだから、既にその役目を終えている。私がいま開発しているのは、プロトタイプであるアイをより精度の高いモデルへと改良した、ココロというAIを搭載した会話型アプリ』
そう言えば、前にも白石さんはアイがプロトタイプであるという事を言っていた。
プロトタイプであるアイでさえ、あの精度なのだ。
いま開発されているアプリに組み込まれているココロというAIは、一体どれ程のものなのだろうか。
とても興味が湧いた。
『アプリ名もアイトークからココロトークに変わっている。UIとかはあまり変わっていないけど、搭載されているAIは別物だから、別のアプリと言っても良い』
UIとは、ユーザーインターフェースの略称だ。
ボタンや画面構成など、利用者が直接見たり操作したりする部分を指す。
「とても興味はあるんですけど、僕には開発経験がないのであまり力になれない気が……」
『別にコードを書けとは言わない。というか、コーディングに関しては九割方終わっているから、私が欲しているのはその後のQAやセキュリティ診断を担う人員。と言っても、そこに関してもある程度はマキナがやってくれる……けど、彼女も万能じゃない。君がアイトークの脆弱性を見つけてくれたように、君独自の手法で好きにやってくれて良い』
QAとは、品質保証のことだ。
アプリが想定通りに動くか、不具合がないか、利用者にとって問題なく使えるかを確認する工程を指す。
つまり、彼女はこう言っているのだ。
アイのようなプロトタイプを組み込んだアプリではなく、世間に公開するために開発をしているアプリを渡すから、好き勝手やってくれて良いと。
それは、願ってもない申し出だった。
リリース前のアプリを触れる機会など中々ないので、僕は二つ返事でその申し出を受け入れた。
『じゃあ、進め方やスケジュールについて話がしたいから、近いうちに私の家に来れる?』
「そしたら、明日の放課後とかどうでしょう?」
『私はいつでも大丈夫。来るときに連絡してもらえれば』
「分かりました。じゃあ明日の放課後、向かう際に連絡しますね」
『了解。じゃあ』
通話が途切れる。
明日の放課後、白石さんの家へ単身向かう事になった。
その事実に少し緊張しながらも、白石さんからアプリの話が聞けることを楽しみだと感じる自分がいた。




