SecHack365 2025年度 川合ゼミの説明
(1) こんな人を募集します!
- 「SecHack365 2025年度 開発駆動コース 川合ゼミ」では、こんな人を募集します。
- [1]自分に身近な課題を解決するための開発をしたい人(これが川合ゼミでのおすすめテーマです)
- [2]そのほか川合が興味を持ちそうな開発をやりたい人(これが川合ゼミでの持ち込みテーマになります)
- いずれにせよ、私がトレーナとしてもっとも大切にしているのは、みんなが開発を楽しめることです。「SecHack365のせいで開発が嫌いになってしまった」というのを避けたいです。「前から好きだったけど、もっと好きになった。すごく楽しい」これを目指しています。
- だから無理強いすることはないですし、効率よく早く正解を学ばせることよりも楽しみながら試行錯誤して実感を伴って学んでもらうことを重視します。そもそも何が正解か、そんなに簡単に決められるものじゃないですよね。
- どうしてもうまくいかなくてギブアップしたら私に質問してもらって、私は最低限のヒントを与えてあとは自力で突破してもらう、これが私の理想とする方法です。多くの人は、本当にあとちょっとのところまで来ているものなのです。
- 2024年度まではプログラミング言語の自作を優先してきましたが、2025年度はこれにこだわりません。これは、言語を作ったことがない人がトライした場合に、言語自作ができようになるまでにたくさんの時間を使ってしまい、肝心の作りこみや課題解決のために割く時間が少ししか取れないためです。言語自作の経験がないと、やはり地に足のつかない夢見がちな開発目標になりやすく、難易度が高くなってしまいます。ですからすでに言語自作の経験がある人が、自分の課題を解決するような言語を作るという内容であれば全く問題はなく、大歓迎します。同じように課題解決のためにOSやVMを作りたいという人も、経験者であれば大歓迎です。
- 「世間の人に〇〇への理解を深めてもらうために、こういう内容のゲームを作りたい」系のゲーム開発は、川合に指導センスがないのでおすすめしません。他人に使ってもらうのではなく、自分かもしくは家族や友人に使わせるツールなどを考えてほしいです。ゲーム開発ではなく、ゲームを簡単にたくさん作れるようなゲームエンジンやゲームフレームワークの開発であれば、川合ゼミでも指導できそうです(その場合、あなたがそのエンジンを使ってゲームをたくさん作るのですよ!見ず知らずの他人に作ってもらおうとか思わないでくださいね)。
- 参考までに、私が今までどんなことをしてきたのかを知っておく必要があるでしょう。
- 1996年~ V98というエミュレータを開発
- 2000年~ OSASKというPC向けの超軽量型の自作OSを開発
- 2002年~ naskというx86用のアセンブラを開発
- 2003年~ tek5というLZMAをベースにした可逆圧縮形式を開発
- 2005年~ 書籍「30日でできる!OS自作入門」を執筆
- 2010年~ blikeというC言語用のグラフィックライブラリを開発
- 2013年~ OSECPU-VMという仮想マシンを開発(このバイトコードでプログラムを書くと驚異的に小さくなる)
- 2019年~ kcl03というC言語用の基本ライブラリを開発
- 2019年~ kcll00というC言語用のプログラミング言語開発支援ライブラリを開発
- 2019年~ ES-BASICというスクリプト言語を開発 (詳しくはこちら→esbasic02a)
- 2020年~ aclライブラリを開発
- 2021年~ 「10日くらいでできる!プログラミング言語自作入門」を書く(詳しくはこちら→a21_txt01)
- 2023年~ easy-CというC言語の改良版を発表 (詳しくはこちら→a23_ec002)
- まとめるとこんな感じです。
- エミュレータ自作、PC向けのOS自作、言語自作、圧縮、理想のCPU命令を考える、ライブラリや自作言語を作って自身の開発力を底上げ
- 私は「自分に身近な課題を解決する」ことに強くこだわっていますが、それはa24_useSelfMadeにも書いてあります。
- 一方で「これを作ることで〇〇を実証するのだ」みたいなのも私はOKなので、自分で常用しなければ絶対だめだというわけではないです(私もそういう目的で開発することが時々あります)。
- 解決したい課題がセキュリティに関係しなくても応募は可能ですし内容が魅力的なら選考を通過する可能性は十分にありますが、セキュリティに関係していれば加点しますので、こじつけでもいいのでセキュリティにからめてほしいです。
(2) 補足
- [Q-1]ChatGPTやそのほかの類似の技術を利用して、応募用紙を書いたりプログラムを書いたりしていいですか?
- [A-1]他のコースや他のゼミではダメかもしれませんが、川合ゼミではOKです。ただしChatGPTに文章を書かせて「私は〇〇ができます」と書いたら、本当に〇〇ができなければいけません。つまり書いた内容には責任を持ってください。「ChatGPTが勝手に書いただけだから僕は知りません」というのはダメです。プログラムについても、「ChatGPTに書かせたのでバグがあります、でも直せません」ではダメです。自分が書いたのと同じくらいに責任をとってください。それさえ約束できれば問題ありません。
- [Q-2]もう自分の作りたいものを作り始めているのですが、その続きを作る(改良をする)みたいなのでもいいでしょうか。
- [A-2]それは技術力と熱意の証明だと思うので、大歓迎です!
- むしろこれから作ろうと思っている人も、SecHack365での合格通知など待たずにどんどん作ってほしいです。応募前から作ってほしいくらいです。どこまでできたか教えてください。
- [Q-3]川合ゼミでは、わからないことは何でもたくさん教えてもらえると思っていいでしょうか?
- [A-3]プログラムの開発の仕方は、何から何まで川合が教えてくれる!という「おんぶにだっこ」な対応は期待しないでください。トレーナーからの指導がなくても、7割くらいは自分で調べて作れるスキルがあるのが前提です。
- 「7割どころか、全部自力でできると思います!」の人も大歓迎です。私はさらにきっかけを与えて完成度を120%や200%にすることを目指します。
- [Q-4] グループでの応募はできないのはわかってますが、開発が進行していくにつれて他の合格者と一緒にやりたいって思うことがあるかもしれないですよね。その場合、その人とグループを組んで開発をすることはできますか?またその場合にその人のテーマに合わせたりすることもあり得ると思うのですが、それもOKですか。
- [A-4] そういう状況になれば、OKできると思います。
- [Q-5]実力を示すためにコンテストでの受賞歴があったほうがいいですか?
- [A-5]私は、コンテストでの受賞などをプラスには見ません(もちろんマイナスにもしませんが)。だから優勝したとか高得点を取ったなどのアピールは重要ではありません(もちろんそれでもアピールしたければしてもいいですが)。
- そうじゃなくて、そこでどんなものをどうやって作ったのかをアピールしてください。・・・結局、コンテストなどの受賞歴は、私からすれば他人の評価でしかないのです。私は私の基準で評価したいので、他人にどう評価されたことがあるかは関係がないのです。
- [Q-6]代表作なんかないです・・・
- [A-6] ここでいう代表作っていうのは、世間に公開したものがあったらそれを書いてね、という意味では「ない」のでご安心ください。自分が作ったものの中で、一番よくできたのは〇〇です、ちなみにかくかくしかじかの内容です、って書いてくれたら十分です!・・・誤解しやすい書き方でごめんなさい。
- [Q-7] 応募時に作りたいと思っていたものと、選考合格後に作りたいものが微妙に変わってしまったのですが大丈夫でしょうか?
- [A-7] どうして作りたいものが変わったのか、その話は面白そうなのでぜひ熱く語ってもらいたいですが、その上で、たいていはOKできると思います。・・・一応書いておきますが、合格するためにもともと興味もないような開発テーマを書いてみても、それはほぼ一発で見抜かれて落とされますのでそんなセコイことは考えないでくださいね。
- とまあそういうことですので、作りたいものが変わったらどうしよう、今後約1年間もこのテーマに縛られるとしたら慎重に書かないといけないかな、と身構える必要はありません。
- [Q-8]こちらのゼミでは、年齢情報を選考に利用しますか?
- [A-8]はい、します。基本的に若い人には加点します。中学生と大学院生を同じ基準で比較するとかは(私には)ありえないです。ですから「自分はまだスキルが足りないかもしれないから・・・」って応募を先送りしてもいいことはないと思います(先送りすればするほど、年齢が増す分だけ不利になる)。とにかく今の自分は何が作りたくてどのくらいのことができるのか、書いてみてください!
- なお事務局に確認したところ、選考時には事務局に回答した年齢情報が提供されないようなので、問2~問5のどこかに自分の年齢を書いてください(高校〇年生です、とかでも可)。書いてくれれば若い人への加点をします。
- [Q-9]実はやってみたいテーマが複数あるのですが、どれを書いたらいいかよくわかりません。こういう時はどうしたらいいですか?
- [A-9]そういうときはたぶん自分だけで考えていてもしょうがないので、ひとまず全部書いてしまいましょう。もし複数書いてあれば、その中で一番好ましいものをこちらで選んで、それで評価します。これで選考を通過した場合、最初の打ち合わせの時にはどれを選んだかお伝えできると思います。でもそれを強制するというわけではなく、もう一度希望も聞きますので、一緒に考えましょう!・・・ちなみに、心にもないことを(受かりたいからと)適当に書いてしまうと、それは見抜かれます。ですから小細工はしないで、素直に書くことをおすすめします。
- [Q-10]川合ゼミでは、SecHack365で新たな分野に挑戦することは推奨しないということですか?経験者を優遇している感じがします。
- [A-10]はい、そうです。新しい分野を調べながら学ぶことはSecHack365ではなくてもできることです。それをSecHack365内でやったらとてももったいないと思うのです。・・・SecHack365ではあなたの作品に対してアドバイスをもらう機会がたくさんあります。そのときに「まだ勉強しているところなので、今はデモできません」になると、とてももったいないのです。・・・ですからSecHack365に来る前に独学で勉強しておいて、その上でSecHack365に応募してほしいと思っているのです。
- [Q-11]書き方のコツはありますか?
- [A-11]まず、どんな課題をどう解決したいのか説明してください。・・・先日、おじいちゃんから〇〇だと言われて、それを解決したいと思って既存のツールを探して使ってみたけど、どうもしっくりこない。特に〇〇ができないところが不便だ。そんなの〇〇を使えば簡単にできそうなのに。だからそれを〇〇言語で作りたい。・・・あなたの身近な問題を、あなたの今のスキルの範囲で解決するような開発をしてほしいのです(少しくらいは背伸びしてもいいですが)。
- [Q-12]他に強調することはありますか?
- [A-12]あります。どうも一番大事なことがなかなか伝わっていないようです。このゼミでは「なぜその開発をあなたがするのか?」を重視します。・・・単なる社会的な課題であれば、そんなのプログラミングのうまい別の誰かが解決すればいいじゃないですか。あなたが開発する必然性なんてないのです。そういう開発のすべてがダメだとは言いませんが、川合ゼミはそういう人を優先して応援しようとは思っていないのです。しかし逆に、あなたの何らかの実体験から出発して、「先日こういうことを体験したので、今回こういう開発を是非やりたいと思います!」ってなったら、それはまさにあなたが作るべきという必然性になるのです。しびれますよ。
- だから、まだ作りたいものが決まっていないので、なんかいいネタはないかなと探しています・・・っていうのは川合ゼミ向きじゃないです。川合ゼミのネタは探すものじゃないです。向こうからやってくるものなんです。もし新しい課題に巡り合いたいなら、何か新しいことにチャレンジしましょう。ちょっと旅行してみるなんてどうですか?新しい友達を作ってみたらどうですか?新しいアルバイトをやってみるのはどうですか?そうやって何かすれば、きっと何か気づきがあるでしょう。そうなったら、川合ゼミにGO!というわけです。
(3) 掛け持ちについて
- 私としては、他のことと掛け持ちしない人が好ましいと思っています。他のイベントにも積極的に参加しています、したいです、っていう人はきっと時間が足りなくなって、成果が中途半端になりやすいと思うのです。まあそれも人生なので仕方ない面はありますが、できればSecHack365に集中できそうな時期を選んで応募してくれたらうれしいです(まあ多少のことなら並行してやってもいいのですが・・・)。
- また大学などの研究テーマ(今やっているやつ)をそのまま持ってこられたりするのは少し困ります。なぜなら、どこからどこまでがSecHack365の成果なのかわかりにくくなるからです。趣味で前からコツコツやっていた、とかはOKです。それなら成果の区切りがあいまいになっても、大きな問題にはならないからです。同じ理由で、今年の未踏でやっているテーマをそのまま持ってきた、というのも困ります。未踏に限らず、他のイベントとの掛け持ちはすべて該当します。
- もしこれらの掛け持ち問題がありそうな人は、応募時に自己申告して、かくかくしかじかの理由でうまく切り分けられるので心配しないでくださいって教えてください。
- まあでも、掛け持ちするくらいなら、そっちをメインで最後まで頑張るほうがいい結果になりそうな気はしますよ!「二兎を追う者は一兎をも得ず」っていうじゃないですかー。
(4) ちなみに
- ちなみに、学習駆動コースも川合ゼミに似たテーマを扱っていますので、そちらも確認しておくと、後になって「ああ、それだったら学習駆動コースにしておけばよかった!」と後悔しないで済むと思います。