|チャレログ

【SecHack365成果】SecHack365でチーム開発を行い、優秀テーマに選抜された体験談

【SecHack365成果】SecHack365でチーム開発を行い、優秀テーマに選抜された体験談

(最終更新日:2018/5/4)

 

拓也

こんにちは、北村拓也です。
私は2017年度に第一期生としてSecHack365に参加しました。
SecHack365は、NICT主催の25歳以下を対象としたホワイトハットハッカー育成プログラムです。
私はSecHack365期間内に、3人チームでサイバーセキュリティを学べるゲームを開発し、優秀テーマに選抜されました。
(優秀テーマは全チームの内、6チームが選ばれました)
とても勉強になるプログラムだったので、是非あなたに応募してもらいたいと思い記事を書きました。

この記事は、

「SecHack365って具体的に何をするの?」
「SecHack365でチーム開発をしてみたいけど、どうやって進めたら良い?」

という疑問を持っているあなたに、SecHack365で何をしたかチーム開発をどう進めたら良いかをお伝えします。

SecHack365の参加期間

2017.5.20(合格決定後の第一回説明会)~2018.3.24(最終成果発表)
SecHack365第一期

SecHack365課題内容

残念ながら、課題の内容については公開が禁止されています。
日頃からセキュリティ関連のニュースに目を通しておくと良さそう。
例えば、総務大臣奨励賞を受賞したpiyokango氏のブログは非常に勉強になるのでオススメです。

セキュリティ興味あるけど、何も知りませんって人にオススメの本は下記です。

一般書より一歩踏み込んだ技術的なところも、わかりやすくまとまっています。

オンライン学習だと、Udemyがセキュリティに関する講座が多く揃っていて良いですね。

SecHack365で良かったこと

いいチームが出来て、いい成果物も出来て楽しかったこと。
セキュリティに関する知識が増え、セキュリティ業界のプロの人達と知り合いになれたこと。
はじめて沖縄に行けたこと(ただし海で泳げなかったので、また行きたい)。
成果物作るための必要物資も支給されたこと(サーバー代金、ドメインなど)。

SecHack365の成果物:仮想空間でサイバー攻防を体験するゲームCyship(サイシップ)

 

SecHack365のチーム

北村拓也(広島大学大学院博士課程後期1年):チームリーダー、通信まわりの実装、UI
友利奈緒:ゲーム原案、WEBサービス全般
川島:メインプログラマー

SecHack365で大変だったこと

移動。広島住みなので、移動は大変でした。
ただ、交通費は全部出るし、前泊後泊も柔軟に手配されたので、地方住みにも優しいプログラム。

色々被っていたこと。
事業/修論/博士入試/学会発表/IPA 未踏事業/CAPアクセラレーションプログラム/シリコンバレー起業家プログラムなどなど…。
なので、色々被っている人でも参加できます(ただし、チームに迷惑はかけないようにしましょう)。

SecHack365の応募のきっかけ

CTF(*1)でチームを組んでいた友利奈緒(以下:友利)に紹介してもらい、セキュリティを学びたいと思っていたので参加しました。
また、広島だとセキュリティ強い同期とか皆無なので、知り合いを増やしたかったという理由もあります。
応募した当時のセキュリティ実績は、セキュリティ・キャンプアワード2017 優秀賞、各種オンラインCTF参加など。
セキュリティ関連の知識を全く知らないって人も居たので、事前知識は気にしなくていいと思います。

*1:CTFとは

 コンピュータセキュリティの分野におけるキャプチャー・ザ・フラッグ(CTF)は、コンピュータセキュリティ技術の競技である。CTFは通常、参加者に対しコンピュータを守る経験に加え、現実の世界で発見されたサイバー攻撃への対処を学ぶ教育手法として企画されている。「ハッカーコンテスト」[1]「ハッキング大会」[2]「ハッキング技術コンテスト」[3]「ハッカー大会」などとも訳される。

SecHack365の参加を考えている人に一言

とりあえず応募して、受かってから悩もう。私はいつもこのスタンスです。

SecHack365 体験レポート

SecHack365とは

情報通信研究機構(NICT)ナショナルサイバートレーニングセンターが、25歳以下の若手を対象に高度な技術力を持つセキュリティイノベーターを1年かけて育成するプログラム「SecHack365(セックハック365)」を実施している。
2017年5月から2018年3月にかけてセキュリティ技術の研究開発を指導し、自ら考えた成果物を発表するというもので、全国5都市で合宿形式のハッカソンを継続して行う。 引用元:CNET.jp 

年間スケジュール

 

それぞれの回にどんなことをするのかは、他の人達が詳しく載せてくれると思うので、自分は何をしたかを中心に書くことにします。

SecHack365 5月 顔合わせ @東京

説明会&顔合わせ
セキュリティキャンプ修了生や、セキュリティ・キャンプアワード受賞者が居て、面白いことできそうだなーと感じました。
当初のSecHack365の認識は、セキュリティを学べるイベントでしたが、ここに来てがっつり開発するイベントだったことを知りました。
少し残念に感じる一方で、学ぶのは本読めばいいし、講義は退屈なのでこっちの方が参加する価値は高いかなと感じたことを覚えています。
あと参加者の名刺のアニメアイコン率の高さに驚きました。

SecHack365 6月 チームビルディング @東京

それぞれ自分の作りたいアイデアの共有とチームビルディングを行いました。
一日の流れとしては、各々アイデア考える→アイデアをお互い話し合う→アイデアをポスター発表する→チーム作りをする→チームでプレゼンする という形。

私は標的型攻撃メールを学べるサービスを考えました。

しかし、そんなに熱意を持って作りたいアイデアでは無かったので、面白そうな人にジョインすることにしました。
この手のイベントは、結局アイデアより「人」で選んだ方が面白いモノを作られるという持論があります。
面白い人は、最終的に何かしら面白いモノを作ると思っています。
なので、最初に意気投合して、人として面白そうな「K」と一緒にチームを作ることにしました。

Kとサイバーレンジ(*2)を作ることにして、メンバーを集め、最終的に6人のチームになりました。

*2:サイバーレンジとは

実地訓練でセキュリティ エキスパートを養成 シスコサイバーレンジ サービスは、疑似的な戦闘ゲームシミュレーション環境を提供し、どのようにサイバー攻撃を視覚化し、ブロックし、軽減することができるか演習する、実地のエキスパート養成トレーニングです。

引用元:シスコ サイバーレンジ サービス – Cisco 

なぜこのアイデアを作ることにしたのか。

セキュリティのプロの方達がトレーナーとして参加していたので、まず私がインタビューをして、セキュリティ業務の課題を聞いて回りました。

その中で、セキュリティインシデント(*3)が起こった時に、「自社ごとに対応が違うが教育プログラムは画一的なモノしかない」という課題があることがわかりました。

*3:セキュリティインシデントとは

セキュリティインシデントとは、事業運営に影響を与えたり、情報セキュリティを脅かしたりする事件や事故のことをいいます。 セキュリティインシデント – IPA

なので、その課題を解決するために、ネットワーク環境をモジュール化し、自社環境に応じたサイバーレンジ演習を提供するソフトウェアを作ろうとチームで決めました。

メンバーにサイバーレンジ作成経験のある人が2名居たので、実装的にも出来そう。

しかし、このチームは6月中に自然消滅してしまう。

なぜか。

 

なんと全く同じアイデアで製品化されている、完全上位互換サービスを私が見つけてしまった

SyprisCyberRangeは単なる学習システムだけでなく、モデリング&シミュレーション機能をも備えた統合システムアーキテクチャーで構成されています。
サイバー攻撃を防ぐ側として現実のセキュリティ危機に迅速かつ専門的に対応するためのスキルや経験、チームでの対応を学習するための基盤、サイバーセキュリティを支える専門家として必要とされる継続的改善メカニズムや、最高レベルの成熟度に達するまでの教育環境を提供します。
NTTデータ先端技術、米Sypris社のサイバーレンジシステムを九州大学へ国内初納入

アイデアが既に実現されていた、これはアイデアソン(アイデア考えるイベント)ではよくあることです。

既に製品化されているモノを作っても面白くないので、チームは自然消滅。

また、Kが留学して途中で抜けるかもしれないということを聞き、自分で何か立ち上げるかーとアイデアを考え始めました。

SecHack365 7月 セキュリティ学習サービスを考える @オンライン

そもそもセキュリティの中高生向け学習サービスを作りたかったので、友利に相談しました。

友利とはオンライン上の知り合いで、CTFチームとして、暗号の知識やサイバー攻防手法などをいつも教えてもらっていた仲でした。

オフラインではSecHack365で初めて会いましたが、技術や知識的に飛び抜けているのは感じていました。

多分、今期の参加者の中では技術・知識ともに断トツの存在でしたね。

それでいて教え上手という素晴らしさ。

友利奈緒とは何者なのかは、以下の記事を参照してください。

友利とアイデアや顧客像をHackMDに書きまくって、最終的にカードゲームを作ることに決めました。
(HackMDとは共同ドキュメント編集ツール、Markdownで書けるので重宝しています)

SecHack365 8月 アナログのカードゲームを作る@福岡

福岡回は2泊3日でした。
私は飛び級した影響で修士論文発表/博士入試/学会発表(奇跡的に福岡:2日目午前)と日程が被っていたので、2日目午後から途中参加。

1日目の流れは、基調講演→アイデア発表→トレーナーによるハンズオンワークショップ→倫理セッション。
2日目の流れは、トレーナーによるハンズオンワークショップ→ひたすら開発タイム
3日目の流れは、開発タイム→発表

私は開発タイムで、友利と紙を切って、アナログのカードゲームを作成しました。

これはサービスにおけるMVP(*4)でした。

*4:MVPとは

MVP(Minimum Viable Product)とは、簡単にいえば、顧客に価値を提供できる最小限の製品や、それを使ったアプローチのことをいいます。

MVPを利用することによって、限られた時間で顧客のニーズに基づく商品・サービスを構築することができるため、無駄なコストの削減にもつながる手法として注目されています。

MVP(Minimum Viable Product)とは | リーン・スタートアップの基本とMVPの実践

MVPがなぜ重要なのか。

例えばカードゲームをオンライン上で動くソフトウェアとして作るとなると、ルールが確定している必要があります。

しかしカードゲームは実際にプレイしてみないと、そのルールが適切か、ゲームバランスは取れているのかなどがわかりません。

なので、いきなりソフトウェアで作ってしまうと、何回も作り直しが発生します(それも根本部分から)。

それを避けるために、まずアナログで作り、二人で対戦しながらルールやゲームバランスをブラッシュアップしました。

その後、セキュリティゲームの専門家の今さんにプレイしてもらって意見をもらったり、アナログの段階で色々なフィードバックを得ました。

他にはCodeBlue代表の佳奈さんに、他の国の事例を教えてもらったりしました。

海外事例を調べるのは億劫ですが、同じアイデアが実現されている場合も多いので、大事ですね。

SecHack365 8月 最強のチームができる@福岡

そして、最強プログラマー川島君がチームにジョイン!

川島君とはホテルの部屋が一緒でした。

人として魅力的だったことに加えて、実装力も高いことが分かり、是非ということでチーム入り。

また彼の作ったオセロAIと対戦し負けたことから(オセロには自信がありました。実は将棋2段。)、ゲームAIのロジックを作る能力も高いことが明らかに。

後で聞いたら彼もカードゲームチームに入りたかったそうなので、win winでした。

良いチームを作るコツは、自分より凄いと思う人を誘うことです。

自分よりすごい人達が結集して、1つのアイデアを形にするって最高にワクワクしますよね。

チームメンバーを自然と尊敬できて、役割分担も明確になるので、是非チームビルディングで使って欲しい方法です。

8月回の最終日から早速ソフトウェア版を作り始めました。

最初は川島君が得意なC++で作り始めましたが、最終的にはUnityで作ることにしました。

理由は、私がUnityに関して開発経験(30作品以上)があり、使えるアセットも大量に持っていたので、Unityで作ったほうが効率が良いだろうと判断したからです。

また、川島君もUnityを勉強したいとのことだったので即決定しました。

SecHack365が終わる頃には、私より川島君の方がUnityの技術力が圧倒的に上になっていました。

1つの言語出来る人は、他の言語のマスターも早いです。

特にオブジェクト指向型言語は、一度理解すると他のオブジェクト指向言語にも汎用的に使えるので便利ですね。

SecHack365 10月 オンラインのカードゲームを作る@北海道

北海道会も2泊3日でした。
1日目:トレーナーによるハンズオンワークショップ(任意参加)
2日目:進捗発表→開発タイム&ハンズオンワークショップ→倫理セッション→発表
3日目:さくらインターネットのデータセンター見学→講演

北海道ではひたすら開発し、ゲームがオンラインで遊べる形になりました。

また、さくらインターネットのデータセンター見学に行きました。

サーバー設置の工夫を知ることが出来て面白かったです。

規模は全く違いますが、私も研究室ではサーバー担当として物理サーバーを保持しているので、勉強になることが多かったです。

SecHack365 11月 ユーザー候補に使ってもらう@広島

11月には、知り合いの中高生達に使ってもらい、フィードバックを得ました。

SecHack365 12月 ゲームが完成に近づく@大阪

大阪回も2泊3日でした。

1日目:開発タイム→講演
2日目:開発タイム→発表→講演
3日目:開発タイム→発表

ゲームが遊べる状態になりました。トレーナーの人たちから改善のアイデアをもらい、改善していきました。

発表に対してフィードバックを色々といただきました。

SecHack365 2月 SECCONE決勝大会 展示@東京

SECCON(*5)で展示させてもらう機会を得ました。

*5:SECCONとは

SECCON(SECurity CONtest)」とは、情報セキュリティをテーマに多様な競技を開催する情報セキュリティコンテストイベントです。実践的情報セキュリティ人材の発掘・ 育成、技術の実践の場の提供を目的として設立されました。 引用元:SECCONEとは

SECCONEは予選に参加したことはありましたが、決勝に出たことはありませんでした。

プレイヤーとして来たかったなーと思いつつ、なかなか無い機会だったのでワクワクしながら参加。

決勝戦はとても楽しそうでした。いずれプレイヤーとして出たい。

ここでもフィードバックを得て改善しました。

SECCONE展示は2日ありましたが、私は2日目にシリコンバレーに行く予定があったので1日目のみ参加です。

SecHack365 2月 SecHack365内成果発表会@沖縄

沖縄回も2泊3日でした。
1日目:最終発表に向けた準備タイム。
2日目:最終発表
3日目:最終発表→招待講演

そして、遂に迎えた成果発表会。

学習ゲームとしては質の高いモノが作れた自負はありましたが、もう一段階レベルアップしたいと思い、AIをビジュアルプログラミングで作れたら面白いのではとチームと担当トレーナーの今さんに提案しました。

提案して一週間程度で実装まで持っていけたので改めてチームの凄さを感じました。

そして沖縄で発表(20分のプレゼン)!
アイデア力・技術力・表現力に対して、とても高い評価を得ました。(毎回発表後にトレーナーからの評価を見られます。)

勝因としては、良いチームが作れたことに尽きます。

友利はやはり天才でしたし、川島君の実装力も本物でした。

個人的に活かせたこととして、一年間を通じてサービスを作る経験を昨年もしており(enpit:優勝)、最初にMVPを作るなどビジネス的進め方アプローチの知識も色々あったので、進め方に迷いが無かったのは良かったと思いました。

SecHack365 3月 外部向け成果発表会@東京

優秀なテーマとして選抜されました(6チームが選抜)。

外部向け成果発表会では、ポスター展示と発表を行い、SecHack365修了書を園田センター長からいただきました。

この成果発表会前日には、発表仕上がるまで帰れま10イベントなどもあり、プレゼンスキルも向上することを請負います。

成果発表の様子は、下記の記事で紹介されています。

取材も何件か受けて色々喋ったのですが、どこにも載っていないのは悲しいですね。コメント力磨かないと。

成果発表会で使ったプレゼン資料はこちらです。

とても楽しいプログラムでした。
関係者の方々には感謝しか無いです。

意外だったのは、トレーナーの方たちが皆、楽しんで参加していたことです。
その雰囲気が参加者にも伝わっていたことがとても良かったです。

次回も良いプログラムになると思うので、迷っている人はまず応募してみましょう。

最後に、今回のチームプロジェクトを成功させるために意識した設計について

今回、チームで1つの作品を開発しました。
実は、一年間を通じて1つの作品を作る場合、チーム開発は結構大変です。
最初に設計をして、チーム内で作品に対して共通意識を持っておかないと右往左往するからです。
なので、今回設計段階でやったこと、意識したことを最後にまとめておきます。

1.課題探し(インタビュー)・市場調査

欲しい人が居ない作品を作っても価値が無いので、誰が困っているのかを明確にします。
今回は、自分が普段プログラミングスクールで教えている中高生を対象として、
セキュリティを学びたいけど、セキュリティ・キャンプやCTFは高度過ぎて参加できないといった課題を見つけていました。
また、個人的にもセキュリティを学びたいけど、何からすればいいか分からないという課題があったので、取り組むことにしました。
市場について、SecHack365の応募倍率が7.6倍だったことからも、学びたい人は多いとわかりました。

2.位置づけを決める

既に、セキュリティを学ぶための様々なプログラム・ソフトがあったので、それらと被らない場所をカバーすることにしました。
具体的には、プログラミングが出来ないが、セキュリティを学びたい人がセキュリティを楽しく学べるサービスとしました。
プログラミングが出来る人向けに学習サービスは既にありました。

3.対象ユーザーの設定

ユーザーは、プログラミングが出来ないが、セキュリティに興味があるゲーム好きの中高生にしました。
ハッキングの映画やアニメなどを見て、セキュリティに興味を持った子たちを想定しました。
この点は、最初にチーム内で作品を作る前にHackMdなどの共同ドキュメント編集ツールを作って決めました。

4.目標設定

目標をSecHack365で優勝、リリースに決めました。
残念ながらSecHack365に優勝などの枠組みはそもそも無かったのですが、優秀テーマに選抜されたので達成出来たと思います(上位6チームが選抜)。
成果発表の時点で、β版もリリースすることが出来、目標は達成できました。

5.MVPの作成

記事に書いたとおりです。

次年度以降の参考になったら幸いです。
この部分をもっと詳しく知りたいなどあったらコメントお願いします!

MVPなどの手法を学びたい人は、書籍「リーン・スタートアップ」がオススメです。

こちらの記事では、具体的にMVPの事例が載っています。

http://TwitterやAirbnb等にみる Minimum Viable Productの4つのタイプと作り方

 



SecHack365カテゴリの最新記事