セキュリティキャンプ全国大会2019 の言語自作ゼミに関する説明や注意事項など

  • (by K, 2019.04.06)

(1) 何を開発するかを選ぶためのアドバイス

  • 私はプログラミングが大好きですが、でもただプログラムを作っているだけでは進歩がないとも思っています。今使っているプログラミング言語を使って次のプログラミング言語を作り、そのプログラミング言語を使ってさらに次の言語を作る・・・みたいなことをしていったら、徐々にプログラミングがやりやすくなっていくのではないでしょうか?もしくは少しずつ便利な関数を自作ライブラリに追加していって、数年後には圧倒的に開発しやすくなる、なんてことはないでしょうか?(ライブラリというのは、言語を簡単に拡張するための手段だと私は思っています)
  • 作るものが言語かライブラリでなければならない、ということはありません。とにかくプログラミング環境を少しずつ良くできるものであればなんでもいいです。そして昨日より今日、今日より明日と、少しずつコツコツ積み上げていきたいのです。
  • プログラミング言語を作るのって面白そう、でも経験のない自分でも作れるかな?・・・と思ったあなたは、text0001(およびその続き)を読んでみてください。これを読んで「なるほどこれだったら自分でもできるかも」と思えたら、もうOKです。
    • TL-03まで理解できたなら、選考を通る可能性は十分にありますので、「ばっちりTL-03までは理解できています!」ってアピールしてください。
    • プログラミング言語ではなくライブラリを作るのであれば、こちらの理解は必要ではありません。
  • 言語やライブラリを作るって、まあ作り方は教えてもらえば分かるとしても、そもそもどんな言語・どんなライブラリを作ったらいいのかが分からない。・・・と思ったあなたは、idea0001(およびその続き)を読んでみてください。
    • まずは自分の最近のプログラミングを振り返ってください。そのプログラムには「言語にこういう機能があればもっと短く書けたのになあ」とか「こんなライブラリがあればもっと短く書けたのになあ」と思えるような場所はないでしょうか。そこをやればいいのです。
    • いかにもありそうなテーマではあるけど、どこのだれが使うかもわからないような言語やライブラリを作ってもいいことはありません。あなた自身が使いたくなるようなものを作りましょう。メジャーじゃなくてもいいです。地に足がついていることはとても重要です。
    • 私はやたらと身近で些細な問題でいいんだと書いていますが、それは「急に言語とかライブラリとか作っていいよとか言われても何をやったらいいか思いつけない!」という人向けに言っているのであって、こんなアドバイスがなくても思い付ける人はもちろんそれでいいですよ!すごいテーマでもOKです。でもどんなテーマにせよ、自分の身近な体験から出発しているのが私の好みではあります。
  • そしてセキュリティとの関連を少しでいいから考えてください。セキュリティというと脆弱性みたいなことを第一に考えてしまうかもしれませんが、それに縛られなくていいです。プログラムが短く簡潔に書けるようになるのであれば、それはバグやセキュリティホールを見逃しにくくなるので、立派なセキュリティ要素です。メモリ管理が簡単になるのなら、メモリの解放し忘れなどを減らすことができるので、やはり立派なセキュリティ要素です。もちろん普通の、脆弱性対策が簡単にできるようになるものも大歓迎です。
  • そもそもこの川合秀実ってどういうやつなんだ、面白いやつなんだろうか?と心配になるのはごもっともです。そんな人のために、簡単な自己紹介を書きました。参考にしてください。→kawai

(2) 注意事項(1)

  • 私としては、他のことと掛け持ちしない人が好ましいと思っています。5月から8月にかけて、他のイベントにも積極的に参加しています、したいです、っていう人はきっと時間が足りなくなって、成果が中途半端になりやすいと思うのです。まあそれも人生なので仕方ない面はありますが、できればセキュリティキャンプに集中できそうな時期を選んで応募してくれたらうれしいです(まあ多少のことなら並行してやってもいいのですが・・・)。
  • もしこれらの掛け持ち問題がありそうな人は、回答フォームの中で自己申告して、かくかくしかじかの理由でうまく切り分けられるので心配しないでくださいって教えてください。
    • まあでも、掛け持ちするくらいなら、そっちをメインで最後まで頑張るほうがいい結果になりそうな気はしますよ!「二兎を追う者は一兎をも得ず」っていうじゃないですかー。

(3) 注意事項(2)

  • 川合は、コンテストでの受賞などをプラスには見ません(もちろんマイナスにもしませんが)。だから優勝したとか高得点を取ったなどのアピールは重要ではありません(もちろんそれでもアピールしたければしてもいいですが)。そうじゃなくて、そこでどんなものをどうやって作ったのかをアピールしてください。・・・結局、コンテストなどの受賞歴は、私からすれば他人の評価でしかないのです。私は私の基準で評価したいので、他人にどう評価されたことがあるかは関係がないのです。

(4) 注意事項(3)

  • プログラムの開発の仕方は、何から何まで川合が教えてくれる!という「おんぶにだっこ」な対応は期待しないでください。講師からの指導がなくても、6割くらいは自分で調べて作れるスキルがあるのが前提です。・・・とはいえそれだけだと言語の作り方がわからなくて、言語自作にチャレンジできない人が増えそうだったのでtext0001は用意しました。これを読めばできそうな人が言語開発のテーマを選べます。
  • 「6割どころか、全部自力でできると思います!」の人も大歓迎です。私はさらにきっかけを与えて完成度を120%や200%にすることを目指しますので。

(5) 簡単なQ&A

  • [Q] 代表作なんかないです・・・
    • [A] ここでいう代表作っていうのは、世間に公開したものがあったらそれを書いてね、という意味では「ない」のでご安心ください。自分がこの言語で作ったものの中で、一番よくできたのは○○です、ちなみにかくかくしかじかの内容です、って書いてくれたら十分です!・・・誤解しやすい書き方でごめんなさい。
  • [Q] 私はSecHack365とセキュリティキャンプの両方に応募資格があるのですが、どっちに応募したらいいですか?
    • [A] 遠慮せずに両方に応募してしまいましょう(笑)。回答内容は使いまわしでOKです(書き分けてもいいですが)。私としては、先にSecHack365の選考がある(はず)ので、そっちで受かればそっちで合格にして、セキュリティキャンプは不合格にします。不合格になれば、翌年以降に別のテーマでキャンプに挑戦可能ですので、それはそれでいいですよね?

(6) おまけ(選考には一切関係しません)

  • (a)私の経験では、「やろうと思えば今日できる、でも明日以降にやってもいい」ことを今日のうちにやると、明日にはもっといいアイデアが浮かぶことになり、結果的により遠くへ行くことができます。
  • (b)もし毎日がしんどいと感じるのなら、たぶんそれは頑張りすぎです。今のペースは「持続可能な負荷」ではないのです。休みましょう。
  • (c)試験前などで、「あれ、私ってやればこんなにできるんだ!」なんて思って、それを自分の本当の能力だと勘違いして、そのペースで何日もできる想定でスケジュールを組む人がいます。もしくは、締め切りが近づいてきても「頑張ればあのペースでできるから大丈夫」と油断ばかりしていて、結局ろくな成果が出せない人がいます。・・・短期間ならできることと、毎日続けられることは違うのです。それを理解して、自分がしんどくなくて続けられるのはどのくらいなのか、把握するようにしましょう。これができるようになると、スケジュールを立てるのがうまくなります。
  • (d)あなたには高い能力があって、1日くらい頑張るだけで、普通の人の1週間分の成果を上げられるとしましょう。そのとき、あなたは1日だけ頑張って6日間は他のことをすべきでしょうか?・・・まあそれも悪くはないですが、それだとあなたは普通の人です。高い能力はほぼ死蔵したことになるでしょう。・・・そうではなくて、その能力で1年間も頑張ったらどうなるでしょうか?それは普通の人の7年分であり、1つのことを7年も続ける普通の人はまずいないので、あなたはついに尋常ではない成果を上げることになります(おそらくその分野での先頭集団に入っている)。これは間違いなく高い能力を活用できたことになります。・・・ここで私が何を言いたいのかというと、作業が速いとか遅いとかは結局重要ではなくて、最終的にどこまで行ったのかが重要だということです。実は私は仕事が遅いほうですが、とにかくあきらめないで続けるので、最終的には誰も行ったことのがない領域に到達することになります。
  • (e)だいたいこんなものかな、これ以上やる必要はないだろう、は私には禁句です。だってそんなの普通ですよね。普通のことをやるなら誰にでもできるのです。・・・徹底的にやるんです。やりすぎていいんです。とにかく限界までやる、行けるところまで行ってみるんです。そうしたら、何が本質で何がそうではないのか、見えてくるかもしれないじゃないですか。いや実はたいていの場合何も得られないのですが、でもとにかくやってみないとわからないのです。私だったら迷わずやります。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-04-15 (月) 15:43:23 (1831d)