2021年度のSecHack365に参加し、修了しました。

この記事ではSecHack365とはどんなプログラムか、実際に参加してみてどうだったか、何を学べたのか、最後に応募を考えている方へのメッセージを紹介します。

SecHack365とは

若手セキュリティイノベーター育成プログラム SecHack365は、25歳以下の学生や社会人から公募選抜する40名程度の受講生を対象に、サイバーセキュリティに関するソフトウェア開発や研究、実験、発表を一年間継続してモノづくりをする機会を提供する長期ハッカソンです。全国の一流研究者・技術者や受講生等との交流をするなかで、自ら手を動かし、セキュリティに関わるモノづくりができる人材(セキュリティイノベーター)を育てます。 https://sechack365.nict.go.jp/document/

という、1年をかけてキュリティに関するものづくりをするハッカソンです。運営はNICT 国立研究開発法人情報通信研究機構という国立研究開発法人で総務省がバックについており、参加者(トレーニー)に費用負担はありません。(トレーニーはかっこいいTシャツを貰えたりします)

過去のトレーニーの作品は https://sechack365.nict.go.jp/achievement/ で公開されているのでぜひ見てみてください。セキュリティを全面に押し出したものから、セキュリティとは別の部分に主軸を置いているものまで様々な作品が作られています。 自分も応募前は「すごい作品ばっかりだな」「自分はこんなすごい人たちの中に入れるのだろうか」と不安に感じていましたが、個人的にSecHackは「すごいものを作る」よりも「どうやってものを作っていくのか・どのように表現して色んな人に伝えるかを学ぶ」ことに主軸を置いているなと感じており、過去作品を見てハードルの高さを感じて応募・参加を躊躇わないでほしいなと思います。 SecHackはすごいものを作れる人が参加するところではなく、すごいものを作れるようになるためのプログラムです。 応募したときにはまだ0だったものが1年間を経ていろんなことを学びながら頑張った努力の結晶が過去作品となっているので「1年後にこんなすごいものを作れるようになりたい!」という気持ちで応募から参加まで頑張って欲しいです。

それではSecHackでどんな活動をして、どんなことを学んでいったのか紹介していきます。

活動

まずSecHackには5つのコース、表現駆動・学習駆動・開発駆動・思索駆動・研究駆動があり、またコースにはコース内に複数のゼミがあるものがあります。(コース概要 - SecHack365を参考にしてください)

1年を通しての基本的な活動はゼミ(もしくはコース)活動 + 全6回のイベント + 成果発表会となっていて、自分が参加していた開発駆動コースの仲山ゼミではゼミ活動では毎週木曜日の夜にオンラインでミーティングをしていました。イベントは週末の1日もしくは土日で行われ、SecHackに参加している全トレーニーが一同に集まりお互いの作品の発表やものづくりに関する講座を受けたりします。そして成果発表会は一般の方向けに1年で作った作品を公表する場になっていて、2021年度はoViceという歩き回れるオンラインミーティングツールでスライド発表やポスター発表が行われました。

ゼミ

SecHackの活動の基本にあたるもので、ゼミ(もしくはコース)担当のトレーナーから指導を受け、また同じゼミに参加しているトレーニーと共に作品を作っていきます。自分が参加していた開発駆動コースの仲山ゼミでは毎週2時間ほどのオンラインミーティングで進捗確認 + 相談 + 雑談をしていました。

進捗確認ではYWT「Y:やったこと W:わかったこと T:つぎやること」をそれぞれまとめてレビューを受けます。実際に書いたYWTは

# 09/16
## Y:やったこと
+ プロファイラ使ってみた
  + Goについてはpprofで内部処理が取れそう
    + そのままでは使えなさそうなので拡張ライブラリの制作が必要
    + リクエストごとに取れるようにする
+ StackHawkというツールを使ってみた
  + DAST(ホワイトボックス)
  + 全自動
    + OWASP ZAPのScannerと似ている
    + 自分が作りたいものとは方向性が違う
## W:わかったこと
+ デモ
  + 前回と同じ方針で良さそう
    + 汎用性が高いツール
    + 内部からの情報を取って精度の高いFuzz生成
      + プロファイラの目処が立ちそうなのでそこを詳しく説明する方向で
    + 自動化は今後の課題としたい
  + セキュリティの課題を解決するアピールをしっかりとするべき
    + 現状はWebアプリのFuzzingは汎用性が無いツールが多い
    + どんなwebアプリでもFuzzingができる汎用性と拡張性のあるツールを制作
## T:つぎやること
+ プロファイラの制作
+ 発表内容について汎用性と拡張性を掘り下げてみる
  + 具体的に考えてデモに起こしてみる

のような内容で1週間でやったことをベースに現状の把握と次の1週間の計画を練ります。YMTのレビューを1週間ごとに行うため確実に前に進み続けることができました。

個人開発だと気が向かなくなって開発が頓挫することがよくありますが、SecHackではトレーナーとサポートのもと確実に進捗を出し続けることができます。

相談に関しては技術的なものだけではなく、「どんなことを実現したいのか」「自分のやりたいことは何なのか」を深堀りして考えてみたり、イベントや成果発表会前には発表スライドやポスターの表現についてアドバイスを頂き、発表練習をしたりしました。また雑談では経験豊かなエンジニアである仲山トレーナーからいろんな話を聞いたり、同ゼミのトレーニーやアシスタントの方と技術論議に花を咲かせたりととても楽しい時間を過ごせました。

ゼミの活動のみならずSecHackにおいてトレーナーはトレーニーがやりたいことに全力で背中を押してくれる存在です。「これをやりなさい」とは決して言わず、トレーニーのやりたいことに対して後押ししたり、新たな視点で「こんなことも考えてみたらいいんじゃない?」とアドバイスをしたりと圧倒的な安心感で1年間背中を押し続けてくれます。時には進捗について背中がアツアツなことになることもありますが、トレーナーのサポートによって、なかなか自分だけではしっかり捉えることができない「自分がやりたいこと」をきちんと自分で考え抜いて、明瞭になった道を進むことができます。

この「自分がやりたいことをきちんと自分で考え抜く」ことは、SecHackに参加して大切さを自覚できたものの1つで、これからのエンジニア人生でも大事にして、実践していきたいと思っています。

イベント

2021年度は以下のスケジュールでイベントが実施されました。情勢もありすべてオンライン開催になり、ZoomもしくはoViceを使用しました。

https://sechack365.nict.go.jp/document/ より引用

イベントではほとんど毎回自分の作品についての発表の機会があり、自分は6回発表をしました。エンジニアは技術力だけでなく「伝える力」も重要視されます。SecHackで自分の作品について何度も伝える経験をすると、発表の流れの組み方や注目を集めるテクニック・伝わるスライド表現が身についていきます。特に自分がこの1年で成長したなと思うのがポンチ絵作成力で、言葉では伝えづらいシステムのアーキテクチャなどをわかりやすく直感的に伝えることができるようになりました。

また発表は事前収録が基本となっていて動画編集力も鍛えられます。(自分はPowerPointでスライド作成 → JPEGで書き出し → DaVinci Resolveにスライド画像を並べる → DaVinci Resolve上で声当て + 字幕入れをして完成という流れで作るようになりました)

またイベントでは自分の作品を伝える練習をするだけでなく、他のトレーニーの発表からいろんなものを吸収できる機会でもあります。ものづくりの発展の仕方を参考にしたり、上手い発表を真似してみたり、またフィードバックを送り合うことで新たな視点から制作物を見直すことができます。SecHackではこのような機会をイベントという形で定期的に行うことで制作物や自分の発表をより洗練させることができます。イベントは準備も当日も大変ですが得るものはとても大きいので参加される方はぜひ頑張ってください!

実際にイベントで何をやっているのかは公式のレポートをご覧ください

成果発表会

ゼミとイベントを経て制作物を一般にお披露目するのが成果発表会です。優秀修了生の作品発表や招待者のおすすめ作品の紹介イベント、各トレーニーごとのポスター発表や作品紹介LTなどが行われ、高名な方や実際の現場のエンジニアの方・過去のSecHack生までいろいろな方が作品を見学にいらっしゃいます。

そして成果発表会前にはトレーニーは過去作品としてHPにも掲載されるポスターの準備に追われます。ポスターには1年間で何を目指して何をやって何を実現したのかをまとめきる必要があり、ぱっと見て作品の大まかな概要がつかめて細かく見ると詳細がしっかりと書かれているものを作らないといけません。これが想像以上に難しく、自分もトレーナーからの指導を受けながら何度も作り直しました。ポスター作りの経験は「載せたいものをまとめきる」「数段階の目線の深さを想定して表現する」という点でとても貴重な経験になりました。

また、当日は来場者の方と作品についていろいろお話でき、新たな視点や意見をいただけるのでとても充実した時間になりました。

成果発表会の動画アーカイブやレポートはSecHack公式ページで公表される予定らしいです

SecHack365を振り返って

ゼミの進捗確認のYMT「Y:やったこと W:わかったこと T:つぎやること」を使ってまとめると

## Y:やったこと
+ 1年間ゼミ活動と開発を続けた
+ 全6回のイベントと成果発表会でスライド&ポスター発表を行った
## W:わかったこと
+ ゼミ活動
  + 一歩づつ確実に開発を進めることができる仕組みが分かった
    + 定期的な振り返りを行う
    + 他の人からフィードバックを定期的に貰う
      + 見落としの再発見
      + 計画の中での重要度の整理
    + 類似ツールやまったく違うツールの調査を続けていく
      + 新しい視点を取り入れることができる
+ 開発について
  + 開発をゆっくりでも継続していくことの大切さ
    + 1週間単位では少ししかない進捗も、長期で見れば大きい進捗になる
  + 締め切りには余裕を持って開発する必要がある
    + だいたい予想の3倍の時間がかかる
+ 発表について
  + 伝わる発表の作り方
    + 話の流れの組み方
      + 強調したいポイントをどのように伝えるか
    + ぱっと見てわかるポンチ絵の作り方
    + 流れが明確で理解しやすいスライドの作り方
  + わかりやすいポスターの作り方
    + ぱっと見てわかるようにするための全体的な配置
    + 効果的なポンチ絵の入れ方
    + 掲載する文章の選び方
    + 強調の仕方
## T:つぎやること
+ 作品の開発を続ける
+ SecHackの経験を生かして新しい価値づくりに取り組む
  + 開発xセキュリティだけではなく、インフラや運用とセキュリティを掛け合わしてみる

という感じで「どうやってものを作っていくのか・どのように表現して色んな人に伝えるか」を学び、エンジニアとして必要な「開発力」と「表現力」を鍛えることができた1年だったなと思っています。

また今後は作品の開発を続けてみたり、SecHackの経験を生かしていろんな新しいものを作ってみようと思っています。

応募を考えている方へ

SecHackは1年間のものづくりの継続と発表の経験で「開発力」と「表現力」を鍛えることができます。また、SecHackの作品は「自分が何を作りたいか」を1年間考えながら作ったものなので作品の中に「自分らしさ」を見出すことができると思います。自分がどんなことを実現したいのか、そこで発揮できる自分の個性は何なのかを見つけ今後のエンジニアリングの軸にすることができます。

応募倍率は高いですが何にも代えがたい経験ができる機会ですので、1年後にすごいものを作れるようになるのを目指して応募してみてください。

最後に

1年間の中で色々な挑戦の機会を頂き、成長することができました。お世話になった担当の仲山トレーナーをはじめ他のコースのトレーナーやトレーニー・アシスタント・事務局の方には本当に感謝しかありません。ありがとうございました。