LAST UPDATE: 2025/1/20

競技チームのリーダーとして参加してみて、色々な苦悩を味わってきたお話。

LAST UPDATE: 2025/1/20

こんにちは。こざえもんです。X(twitter)

2024年のHardening競技会に参加したのでレポートを残します。

わたしは2023年に初参加を遂げ、今回が2回目の参加でした。この度チームのリーダーを担った経験を書き残します。来年度以降の参加者にとって参考になれば幸いです。

# Hardening競技の概要

こちらが公式サイトの競技概要です。

開催概要/募集要項 – Hardening 2024 Convolutions

Hardening 2024 Convolutionsは、サイバーセキュリティとビジネススキルを活かすイベントで、参加者を募集中です。技術者だけでなく、ビジネススキルを持つ方も参加可能です。参加者はチームを組み、ビジネスウェブサイトの運用と改善を行い、様々な攻撃に対するセキュリティ対応を実施します。このプロセスを通じて、素晴らしい体験を得て新たな仲間を見つけ、体験に基づく知見を得ることができます。

競技参加者は、会ったことのない複数名のメンバーで1つのチームを組み、架空企業の一員としてECサイト等のITシステム群を守ります。(ります、と書かないと誰かに怒られるかも知れない)

8時間もの間さまざまなサイバー攻撃を受けながらウェブサイトを運営し「見込み販売力」が最も高いチームが優勝というルールです。この見込み販売力というのは営業利益のようなものです。コストを抑えながらリスクを減らしつつ売り上げを伸ばすことが求められる実践的な競技です。

つまるところ、hardening競技はサイバーセキュリティに特化するだけでは競技に勝ち残ることが難しく、ビジネス面の知識も必要 になるわけで、これが競技を面白くさせるポイントです。

2024年の会場は、沖縄県豊見城市。10月の観光シーズンに沖縄へ行けることにワクワクしながら参加申し込みボタンをポチっと押したのは7月の中頃でした。結果は8月中旬に届き「選考通過」と記載されたメールを見て、真っ先に沖縄メシを調べ始めたのはここだけのヒミツです。

# 準備期間

選考通過と同時にチームメンバーが発表されました。今年は全15チーム各7名の構成でした。昨年とは人数配分が異なるので「これはこれは」と気づいてしまいました(後述する連合チームのこと) Hardening競技は、いきなり集まって試合に臨むような短期のイベントではありません。チーム発表の日から競技当日までの約2ヶ月間、それぞれのチームが競技に向け入念な準備をして挑むものです。

私たちのチームは色々な問題を抱えながらも準備を進めていくこととなりました。

▼第1の問題: メンバーが1人辞退した

私たちのチームは選考に通った一人から参加辞退の申し出がありました。他チームは7人で準備をするのに対し、わたしたちは6人だけで競技に臨むという不利な状況が明らかになりました。「まあ、一人あたりの経験値が多くなるので良い経験でしょ」とメンバーに言ったものの、内心は焦燥感でいっぱいです。わたしも二度目の参加ですから、準備がどれだけ大変かよーーく知っています

▼第2の問題: メンバーの予定が合わない

連絡のつかない人、海外出張中でオンライン会議も難しい人、子育て真っ最中のわたし.. それぞれの事情があって、全員が揃うオンラインのミーティングを開催できたのは8月の下旬でした。まあスタートがちょっと遅れてもリーダーがチームの士気をうまく高めることができれば取り返すことはできるはず。良いリーダーがいれば大丈夫なはず.. と自分に言い聞かせていました。

▼第3の問題: 一番時間の無いわたしがリーダー

各チームには1名のリーダーを置く必要がありますが、色々話した結果、唯一の競技経験者ということでわたしがリーダーを担いました。先ほどリーダーが大事だと書いたばかりですが、わたしはそんな器ではありません。心配で心配で、毎日夜しか眠れませんでした。

わたしは共働き&子育て真っ最中というなにぶん多忙な身ですから、家族と相談して21時からオンライン会議に出られるよう、毎日死ぬ気で家事をこなして準備に臨みました。いつも夜遅い時間のオンライン会議となってしまい、メンバーの皆さんにはご迷惑をおかけしました。

# チーム名を考える

みんなが集まって一番最初の共同作業は「チーム名」を考えることです。わたしは、運営の皆さまや沖縄県の多大なご支援によって、この競技会が開催できているものと考えているので、チーム名にその感謝の気持ちを絶対に含めたいと考えていました。そこで 沖縄ワード × セキュリティワード で良い名前を作ろうよ。ということをお伝えし、メンバーから色々なアイデアを募集しました。

数日のうちに何十個もアイデアがあがって絞るのが大変でしたが、最終的に「シーサーと競技会」という名前に決まりました。

(図: チーム名を投票する画面)

個人的には 「スパム対策おにぎり」 がお気に入りでした。まあ多数決というたいへん平和的な決め方なので、誰も何もいうまい。

# チームメンバーの士気を高める

準備段階のトッププライオリティは、競技当日までにお互い遠慮なく話せるような関係を築くことだと考えていました。なぜなら、競技中は常に複数インシデントの対応に追われるため、どれだけ情報を集約・整理できるかが優劣を分けるポイントだと考えたからです。しかし、初めて話すメンバーとチームを組み、しかもオンライン会議だけで密接な連携のできる関係を醸成するのは、非常に難しいことです。

チームビルディングはまさにリーダーの責務です。わたしは集団凝集性を高めるための動機づけに悩みました。みんなが楽しく取り組めて、達成感のあるタスクを、全員でこなすことが大事だと考え、わたしは チームグッズを制作すること を提案しました。その結果... 3つもグッズを作ってしまいました。

▼1つ目のグッズ: リストバンド

(図: チームで作ったラバー製リストバンド)

他チームからも非常に評判が良かったです。「この写真、エモい」 というコメントはとてもうれしかったです。作る過程も楽しかったですが、競技当日に同じグッズを身につけることで、わたしたちは仲間なんだな。と実感できました。

ちなみに、こちらで作りました→Rocket Wristband

2つ目、3つ目のグッズ: シール、ステッカー

(図: ステッカー、マグネット)

競技後に名刺交換の機会がありますが、メンバーに学生の方(名刺を持っていない)が居るのでどうしたものかと考えました。そこで、名刺と同じサイズのステッカーを作ることにしました。ステッカーにはメンバーのSNSアカウントを記載し、これを名刺がわりに配ることで、他チームの参加者とも繋がりを作ってもらえたら良いなと思いながら作成しました。

おまけにマグネットも作りました。 なぜマグネットも作ったのか誰もわかりません。 勢いです。直感に任せた勢いというのは大事です。見た目はステッカーと全く同じですが、金属にピタッと貼りつきます。当日受け取ってしまった人は冷蔵庫に貼ってくださいな。

それぞれ100枚ずつ作り、少しだけ余りました。

ちなみに、こちらで作りました→DIGITAL PRINT SHOP - DIGITA

# メンバーとゴールを共有する

メンバーの皆さんが競技に対して前向きに参加してほしいと思い、わたしはオンラインの会議でこのような発言をしています。

皆さんの好きなこと、挑戦してみたいことを優先してください。普段やっていることや得意なことをやるより、普段できないことにチャレンジすることが大事です。

みなさんが自由に動けるようにと、昨年の参加経験を語る会を開き30スライドほどの資料で説明をしたり、各自が準備した内容を保管する場所(Notion, OneDrive等)の環境を用意しました。しかし、これだけでは皆さんの活動は活発になりませんでした。

わたしは ここでやっと「リーダーとは何か」を考え始めました。考え始めるのが遅かったかもしれません。

色々と悩んだ結果 「リーダーはゴールへの道筋を示し、メンバーを鼓舞し、牽引する役割である」と結論づけました。

競技に初参加のメンバーは勝手がわからないので、どんな準備をすれば良いかわからなかったと思います。目指すゴールはどこなのか?そこ向かうための道筋は何なのか?わたしは何も示すことができていませんでした。やっと気づきました。今のわたしは、自分が理想に掲げているリーダー像と全然違うじゃないか

そこでわたしは、必要な準備作業を細かく区分けしてタスク化するという行動をとりました。

(図: mermaidを使ったタスクツリー)

視覚的に分解すると他の人もタスクを追加しやすいだろうと思い、mermaidを使用しました。同じようなツリーがいくつか出来上がり、初版から膨大なタスク量になりました。その結果、この後に新しいタスクは追加されず最後まで突っ走りました。やりすぎた感がある。

(図: タスクツリーをかんばんボード化したもの)

次に、タスクツリーで分解したタスクをかんばんボードに変換しました。この状態で、各自が挑戦したいタスクを見つけて自分自身をアサインするように伝えました。すると獣が群がるかのように次々とタスクが取られていきました。みんな、お腹がすいてたのね。

タスクをずらっと並べたことにより、メンバーの皆さんはやるべきことを把握でき、それぞれが自主的にタスク消化し始めたことを実感できました。これでやっと 「ああ、道筋を示すということはこういうことか」 と理解できました。リーダーのあり方が少し見えました。

# わたしたち特有の事前準備

競技に向けたセキュリティ対策はおそらくどのチームも似た内容になります。6人しかいないわたしたちのチームが輝くには、他のチームがやらない独自性の高いことをやって、抜きん出るしかないと考えていました。

▼在庫管理・需要予測ツールを作った

わたしはビジネス知識を持ち出して「在庫管理および需要予測」をするツールを作ることに決めました。こざえもんが一晩で作ってくれました。

(図: 在庫管理&需要予測ツール)

EXCELの簡素な仕組みではありますが、安全在庫数の算出、適正在庫数、適正発注量を計算できるツールです。なぜ在庫管理の知識を持っているのかはヒミツです。

黄色いセルに在庫数を入力していくと在庫数の推移がグラフで視覚化されるので、需要予測ができるというものです。

**でも現実世界とは違います。**現実では、在庫を保管するのに保管コストが掛かったり、商品に賞味期限があったりと複雑な要素はあります。競技ではそこら辺の考慮は不要だったので、非常にシンプルな作りで済みました。

このツールの重要なポイントとして、30分おきに在庫数を手入力する運用が必要という点が挙げられます。ちなみにこのポイントは、あとで後悔を経験できるスペシャルな仕様です。

▼競技環境の構築

わたしたちはGoogle Cloudを個人契約して競技環境を模したサーバーをいくつか構築しました。メンバー全員が、模擬競技環境に接続してECサイトの操作を試すという経験ができました。チーム内にすごい技術者が居て、一晩で作ってくれました。

▼そのほか

他に、自作WAF、自作EDRを作る話もあがったけど時間がなくて断念しました。それができそうな技術者がゴロゴロ居たので無理させてみようと思ったけど2週間じゃ無理だと一蹴されました。無茶振りばかりの悪いリーダーです。

# ついに競技資料の公開

競技内容に関する資料は競技当日が近づくまで公開されません。例年は競技前日の夕方に100ページを超える爆弾pdfファイルが配られて、みなさん夜中まで読んで翌日の競技に臨んでいるそうです。(そういえば.. 2023年に参加したときもそうだったなあ)

今回(2024年)は競技の4日前に資料が公開されました。これはゆっくり読む時間があるなあ! と安堵したのも束の間。おそらく参加者の皆さんは、記載されている内容に驚愕されたと思います。

そこに記載されていたのは 「連合チーム制」 でした。

資料ではJV(ジョイント・ベンチャー)と表記されていました。ざーーーっくり説明すると、3チームで連合となって1つのチームとなりましょう、という感じです。チーム間の考え方の違いで揉めるのではないかと思いましたので、どうすべきか、まずは夢の中で悩むことにしました..zzZ

# 連合チームの結成

「まず3チームで話そう」ということで急遽仲間となった3チームをオンライン会議に召集しました。連合チームがうまくやっていくためには、いくつか決めるべきことがあると思っていました。