お腹.ヘッタ。

関数型とかセキュリティとか勉強したい。進捗つらぽよ

SecHack365を修了しました。

SecHack365を修了しました。

今年度はSecHack365という通年hackathonに参加してきました。 去年の5月初旬ごろに参加決定の連絡が入り、先日3/24に成果発表会&修了式だったので、1年を通してどんな活動をしてきたかを振り返りたいと思います。
きっと来年度以降参加する人になればいいなぁというのと自分に対しての戒めてきなのもある。ちょっと後半辛めです。すいません。

SecHackとは

SecHack365 は高度な技術力を持つセキュリティ研究者や開発者を育成することで、我が国のセキュリティ技術力、産業競争力を高めることを目的としています。

年間プログラムの中ではhackathon、遠隔研究・開発実習、コンテスト演習、座学講座、全国の一流研究者・技術者等との交流、先端企業の見学等のイベントを通じて、各参加者の志望に沿った能力開発を行います。

訂正4/9 すいません.自分が委員の方から聞いた言葉の解釈間違いのようでした。完全に確認不足です.:bow: あくまでセキュリティに関連していることを目指さなくてはいけないようです ですがセキュリティというのは多岐にわたるので基本的にはやりたいことがやれるはずです!

もう少し具体的に話させていただくと.... セキュリティキャンプのような座学・実習形式ではなく、あくまで開発がメインになります。

参加者の多くは最終的にバイナリ解析や悪性web対策と言ったセキュリティ関連の物を開発していましたが、全員が思いっきりセキュリティというとそうでもなく、割と自由に作りたいものを作れるのびのびした環境です。

よくあるハッカソンと何が違うのかというと、

  1. 1年間を通して開発できる
  2. 実装や発表に関して困ったことがあればプロに相談できる。
  3. NICT保有するデータを活用できる
  4. ほんのり成果が求められる

と言った感じだと思います。 3に関しては別に使わなくても良いですし、4はメンター制度があるので相談すればそれなりに身の丈になったものを一緒に考えてくれるはずです。

今年度の参加者と応募について

全国から358件の応募があり、NICTの審査によって47名(うち未成年者17名)の若手が選抜された。
https://media.dglab.com/2018/01/05-sechack365-01/ より

結構な倍率ですねぇ。小学生から社会人まで参加していて、20〜22歳あたりの参加者が一番多かったと存じます。

実はなのですが唯一僕は参加者の中で学部一年相当で同じ学年の人が居なかったのでそれが残念でした。正直お陰で自分の実力値が他の人と図る機会がなかったり交流で同輩がいなかったりが寂しかったなぁと思いました。残念すぎるし、そのくせ私のことをみんな修士一年の間違えとか呼び始めるのまちがってるのでは?

ちなみに女性比率は今回は割りと一般的な情報系イベント並かなぁと感じました。

たぶんなんですが、割と技術ではあまり人を見てない気がします。自分はあまりできる側ではなかったでまぁラッキーぐらいのお気持ちでした。

ちなみにですが学生は参加費無料です。オフラインハッカソンでの宿泊費、交通費全て支給していただけます。やったぜ!

応募前の自分ときっかけ

応募前はまぁ色々多趣味でコードを書いていてセキュリティはそんな強くないけど適当に用語ぐらいはわかるけど、エクスプロイトかけるかと言われると困りますねぇみたいな感じ。むしろこの時のマイブームはコンパイラでした。

実は締め切りギリギリの12時間前とかに見つけて適当に出したって感じです。申し訳ないのですがホントそんな感じ。

選考課題については口外してはいけないことになっているので詳しくは言えませんが、深夜テンションだろうが強い気持ちを書いていけば自ずと受かるような気がします。

何をやっていたのか

私はチームでIoTデバイス管理システムの開発をしていて、それのプロダクトオーナー的なこと。つまりリーダーぽいことをしていました。 技術的な文脈で言うと最終的にはアーキテクチャの提案と設計、パケットキャプチャと配信、FWなど基盤部分の担当をメインでしていました。 https://github.com/Team-IoTSystem/Vortoj

1年間のイベントについて

ホント一年何も書かないでいたので書いていこうと思います。 これはもしかしたら呼んでるあなたを不快にする可能性があるので、もしものときはブラウザバックしてどうぞ。てかブラウザバックって今の人知ってるのかなぁ。

5月<東京・NICT見学会、説明会>

受かってしまったあとはマジか~って全国から来る人達にビビりまくりながら小金井にGo.

印象にあるのがHarekazeにいる@ak1t0くんにあれ?@takemioIOさんですか?って聞かれてコレオフ会になってるやんけってなったのは良い記憶。あとは@felme_neinさんとひたすら自然言語処理関連の技術の話をしていた記憶がある。

というかまわりが割りと知り合い同士らしいなか地方民はマジで浮くのであれちょっとつらかったですが強い気持ちで行きましょう。

6月<東京・蒲田>

富士通のなんかあれなところでスタート。

二回目になると流石に慣れてきて、@りねあくんとラーメンを食べてふつーに仲良く遅刻してきた記憶がある。すいません手遅れてます。いや手遅れたラーメンはうまい。 f:id:taketarou2:20180408064046j:plain

ここまでは強い気持ちでリージョン推論を用いた僕が考えた最強のコンパイラ書いてやるぞとか思っていたんですが色んな人の話を聞く中であーって思うようになって、その中の一つの選択肢として組み込みもいいかなぁということでIoTやネットワークも選択肢になった。

そんなこんなで一人ブレインストーミングをしながらマッピングをしていてぼっち検討をココでもしていたような気がします。(てか班の人がみんな居なくなるんだもん)

というわけでなんだかんだでチームの外形が決まってきました。

8月<福岡回>

前半はLINE FUKUOKAにお邪魔させていただいて、愛甲さんに講演していただいたり、各自考えて来たアイディアを発表したり、「縁日」と称したトレーナーの方によるハンズオンが開催されたりと盛りだくさんでした。後半は海が綺麗なホテルでハッカソンを行いました。これが最高のハッカソンですよ f:id:taketarou2:20180408064120j:plain が、弊チームは人はいるけど進み具合も担当もバラバラで結局可視化の自分が福岡に入る前にフィジビリ実装したものしか発表ができなかったという話があります。マジでつらい。 しかしこれがケツに火がついたのかチームや開発テーマも固まって来て、ここからが本番といった感じです。

10月<北海道回>

チーム開発は遠隔で行いながらなのですがやはり突然の音信不通の多発などがいっぱいでしんどかったです。そんな中メンターさんと5時間ミーティング&討論するとか相当な追い込まれがありました。(コレ2,3回ぐらいあった)突然の進捗どうですかがあってツラい。

f:id:taketarou2:20180408064211j:plain これは周りが迷走してる図です

大体の感想としては飯がうまい。って回でした.

内情をちょっとくわしく話すと

チーム開発は炎上してるし、みんなやはり突然の音信不通の多発などがいっぱいで、工数見積をしてくれといったのにみんなしないしてかガチガチに開発手法入れなくても良いんじゃないとかメンターが言ったせいで崩れた要因の一つだと思ってるのでそこはモニョッてる、僕の手には負えないので辛すぎるんでメンターさんにPMしてほしい言ったけど「そこは自分たちでやるべきだよ(意訳)」って言われるしほんとにつれぇってお気持ちです。 (申し訳ないのですが承知しましたが影響力がある方が開発内容に良かれと思ってだろうと口出すならば一緒に手も動かしてほしいみたいなことを議論していたりしました。)

この頃はパケット配信のAPIを作ってRest部分を用意して発表に組み込みました。

ちなみにその他として石狩サーバーも見てきました! f:id:taketarou2:20180408064247j:plain

12月<大阪回>

やはりチーム開発は炎上してる(進捗的に) この頃私はRest以外にもストリーミングAPIを用意して置くということ、@abas_onの位置推定を組み込むということをしてました。

ここでは最終発表に向けて私は音頭を取りながら2月までのワークフローを立てていった。全体のチームの人達が動くことを書き出せたのでまぁ良かった。

北海道以降では@ancoさんがinstallerを作りながらブリッジ設定など諸々を頑張っていた。ありがてぇ。。。

2月<沖縄回>

f:id:taketarou2:20180408064400j:plain やはりチーム開発は炎上してる(進捗的にも、人的にも)

自分はFWのフィジビリ実装を行い、ancoさんが実機検証をやってみたいなことを基盤サイドでやっていたことまで落とし込んだ。他の人はちょっと覚えてないが

内輪の成果発表会だったのですが発表前夜、とても背の高いトレーナーの方に手厳しいアドバイスを頂き、夜遅くまで(AM1:00すぎ)発表練習とスライドの修正を繰り返していました。うまく伝わったか不安でしたが、あとからトレーナーからの評価を聞き、言いたい事は伝わっていたのでまぁよかったなぁーってなりました。

アメリカにいった

takeio.hatenablog.com

こちらを参照してください。

3月<最終発表>

やはりチーム開発は炎上してる(進捗的にも、人的にも) 多くは語りませんが、せめて早めにできないときは連絡をしましょう。とても他の人が無駄な消耗をします。結局できないとか普通に信じらんないし(10月頃にデータ形式の相談をしたのに結局ほしいパターンではないとか言うのは流石に駄目ですよ!)優しいから怒らないだけです。

で、中身としては対外向けの成果発表会でした。デモをするにあたり、チームメンバーがそれぞれ作成したものを結合させる作業が必要でしたが、発表直前になってAPIを叩いてアプリが組み込むことが結局できなかったり、ラズパイが処理落ち頻発したりして大変でした。当日もネットワーク関係でトラブルがあり、あまりうまくいかずに厳しいなぁとなりました。

本番不具合が起こった際でもイメージを見せられるようにように準備はしていたというかそれを覚悟していていたので対応はできたのが救いでした。 f:id:taketarou2:20180408064441j:plain

まとめとお気持ち

結構楽しませてもらったなぁと思います。なんだかんだ言いましたがココまでこれたのはチームとメンターと委員の方々のおかげだと思っております。本当に感謝です。いろんなことを学ばせていただいたなぁと思います。

ですが、僕は後悔があってチームの人の持っている知識バックエンドを活かせませんでした。バックエンドに合わせた構成に無理矢理でも落とすべきなのかとかは未だに苦悩です。今回は本人のやりたい希望に合わせて議論上でこうしましょうとなった(なお僕は希望通りではない)のですが、しかし結局それが幸せなのかというとわからないし、そもそもチームの人のレベル差、得意不得意、予定の把握にもっと良いソリューションがあったのでは?とか思う。そもそも無駄な忖度をしたせいでやりたいことが出来ないとかがあったしチームでやるなら誰かが情に流されずに僕も含めて使えないor動けないコマはアサインさせたところからガンガン変えていったり、なんならMVPを活かすためならばそのやろうとしてることごと切り捨てる必要があるなぁと思いました。

正直言ってイマ何言っても仕方ないのでアレですが、メンターの方とうまくマッチングしてないと感じたら新しいメンターの方新たに相談するべきだし、人数が多すぎるときは誰かがリーダーとしてPO or PMになりきる必要があるけどそれはちゃんと責任分界を決めてやらないとリーダーがコードを書いたりすることは出来ないし、権限の移譲を心がけてうまくやらないと行けない。ある種の気づきが多くあったと思います。 そういう意味では後半は最適化されてきたせいでオンサイト開催をうまくスプリントとして自然に使うことが出来たなぁと思います。

割と悔いが残る形で終わりましたが、逆に悔いなく出来た部分もあります。それもまぁ充実なのかなと思うことしました。初年度なので手探りなので結構辛かったですね。 ですが来年度はこの辛さがフィードバックされまくるはずなので、コース制になったのでそんなことなく楽しめるはずです。

ぜひ皆さんも最高の体験をしに応募しましょう!