SecHack365 2019年度でのおすすめテーマの「プログラミング言語の開発、ライブラリの開発」に関する説明や注意事項など
(1) テーマの選び方のアドバイス
- 私はプログラミングが大好きですが、でもただプログラムを作っているだけでは進歩がないとも思っています。今使っているプログラミング言語を使って次のプログラミング言語を作り、そのプログラミング言語を使ってさらに次の言語を作る・・・みたいなことをしていったら、徐々にプログラミングがやりやすくなっていくのではないでしょうか?もしくは少しずつ便利な関数を自作ライブラリに追加していって、数年後には圧倒的に開発しやすくなる、なんてことはないでしょうか?
- 作るものが言語かライブラリでなければならない、ということはありません。とにかくプログラミング環境を少しずつ良くできるものであればなんでもいいです。そして昨日より今日、今日より明日と、少しずつコツコツ積み上げていきたいのです。
- プログラミング言語を作るのって面白そう、でも経験のない自分でも作れるかな?・・・と思ったあなたは、text0001(およびその続き)を読んでみてください。これを読んで「なるほどこれだったら自分でもできるかも」と思えたら、もうOKです。
- TL-03まで理解できたなら、選考を通る可能性は十分にありますので、「ばっちりTL-03までは理解できています!」ってアピールしてください。
- プログラミング言語ではなくライブラリを作るのであれば、こちらの理解は必要ではありません。
- 言語やライブラリを作るって、まあ作り方は教えてもらえば分かるとしても、そもそもどんな言語・どんなライブラリを作ったらいいのかが分からない。・・・と思ったあなたは、idea0001(およびその続き)を読んでみてください。
- まずは自分の最近のプログラミングを振り返ってください。そのプログラムには「言語にこういう機能があればもっと短く書けたのになあ」とか「こんなライブラリがあればもっと短く書けたのになあ」と思えるような場所はないでしょうか。そこをやればいいのです。
- いかにもありそうなテーマではあるけど、どこのだれが使うかもわからないような言語やライブラリを作ってもいいことはありません。あなた自身が使いたくなるようなものを作りましょう。メジャーじゃなくてもいいです。地に足がついていることはとても重要です。
- 私はやたらと身近で些細な問題でいいんだと書いていますが、それは「急に言語とかライブラリとか作っていいよとか言われても何をやったらいいか思いつけない!」という人向けに言っているのであって、こんなアドバイスがなくても思い付ける人はもちろんそれでいいですよ!すごいテーマでもOKです。でもどんなテーマにせよ、自分の身近な体験から出発しているのが私の好みではあります。
- そしてセキュリティとの関連を少しでいいから考えてください。セキュリティというと脆弱性みたいなことを第一に考えてしまうかもしれませんが、それに縛られなくていいです。プログラムが短く簡潔に書けるようになるのであれば、それはバグやセキュリティホールを見逃しにくくなるので、立派なセキュリティ要素です。メモリ管理が簡単になるのなら、メモリの解放し忘れなどを減らすことができるので、やはり立派なセキュリティ要素です。もちろん普通の、脆弱性対策が簡単にできるようになるものも大歓迎です。
(2) 注意事項(1)
- 私としては、他のことと掛け持ちしない人が好ましいと思っています。他のイベントにも積極的に参加しています、したいです、っていう人はきっと時間が足りなくなって、成果が中途半端になりやすいと思うのです。まあそれも人生なので仕方ない面はありますが、できればSecHack365に集中できそうな時期を選んで応募してくれたらうれしいです(まあ多少のことなら並行してやってもいいのですが・・・)。
- また大学などの研究テーマ(今やっているやつ)をそのまま持ってこられたりするのは少し困ります。なぜなら、どこからどこまでがSecHack365の成果なのかわかりにくくなるからです。趣味で前からコツコツやっていた、とかはOKです。それなら成果の区切りがあいまいになっても、大きな問題にはならないからです。同じ理由で、今年の未踏でやっているテーマをそのまま持ってきた、というのも困ります。未踏に限らず、他のイベントとの掛け持ちはすべて該当します。
- もしこれらの掛け持ち問題がありそうな人は、申し込みフォームで自己申告して、かくかくしかじかの理由でうまく切り分けられるので心配しないでくださいって教えてください。
- まあでも、掛け持ちするくらいなら、そっちをメインで最後まで頑張るほうがいい結果になりそうな気はしますよ!「二兎を追う者は一兎をも得ず」っていうじゃないですかー。
(3) 注意事項(2)
- 川合は、コンテストでの受賞などをプラスには見ません(もちろんマイナスにもしませんが)。だから優勝したとか高得点を取ったなどのアピールは重要ではありません(もちろんそれでもアピールしたければしてもいいですが)。そうじゃなくて、そこでどんなものをどうやって作ったのかをアピールしてください。・・・結局、コンテストなどの受賞歴は、私からすれば他人の評価でしかないのです。私は私の基準で評価したいので、他人にどう評価されたことがあるかは関係がないのです。
(4) 注意事項(3)
- プログラムの開発の仕方は、何から何まで川合が教えてくれる!という「おんぶにだっこ」な対応は期待しないでください。トレーナーからの指導がなくても、6割くらいは自分で調べて作れるスキルがあるのが前提です。・・・とはいえそれだけだと言語の作り方がわからなくて、言語自作にチャレンジできない人が増えそうだったのでtext0001は用意しました。これを読めばできそうな人が言語開発のテーマを選べます。
- 6割どころか、全部自力でできると思います、の人も大歓迎です。私はさらにきっかけを与えて完成度を120%や200%にすることを目指しますので。
(5) 簡単なQ&A
- [Q] グループでの応募はできないけれど、開発が進行していくにつれて他の合格者と一緒にやりたいって思うことがあるかもしれないですよね。その場合、その人とグループを組んで開発をすることはできますか?またその場合にその人のテーマに合わせたりすることもあり得ると思うのですが、それもOKですか。
- [A] そういう状況になれば、OKできると思います。
- [Q] 代表作なんかないです・・・
- [A] ここでいう代表作っていうのは、世間に公開したものがあったらそれを書いてね、という意味では「ない」のでご安心ください。自分がこの言語で作ったものの中で、一番よくできたのは○○です、ちなみにかくかくしかじかの内容です、って書いてくれたら十分です!・・・誤解しやすい書き方でごめんなさい。
- [Q] 応募時に作りたいと思っていたものと、選考合格後に作りたいものが微妙に変わってしまったのですが大丈夫でしょうか?
- [A] どうして作りたいものが変わったのか、その話は面白そうなのでぜひ熱く語ってもらいたいですが、その上で、たいていはOKできると思います。・・・一応書いておきますが、合格するためにもともと興味もないような開発テーマを書いてみても、それはほぼ一発で見抜かれて落とされますのでそんなせこいことは考えないでくださいね。
- とまあそういうことですので、作りたいものが変わったらどうしよう、今後約1年間もこのテーマに縛られるとしたら慎重に書かないといけないかな、と身構える必要はありません。
こめんと欄