研究室所属を希望する学生の方々へ
なによりもまず論文やGitHubのリポジトリなどを確認してください。そして、栗原の活動についてざっと確認してください。
その上でこの研究室での研究に興味がありましたらば、入試を受ける前に栗原にコンタクトを取ってください。互いに誤解を避けるためにも、まずは面談します。F2F or オンラインで対応します。
注意事項
よく誤解を受けるので、まず注意事項をまとめておきます。
まず、この研究室は、コンピュータや情報通信技術を「使う」のではなく、それらを「作る」ための研究をしています。そして「安全な情報通信・ネットワークを提供する」ことを目的とした研究は、対象分野が広く、調査習熟に多くの時間を割くことになります。これは、以下で書いた「要求されるバックグラウンド」にまとめていることから解ると思います。
なぜかと言うと、セキュリティはインフラ・システムを構築する際のただの追加要素にすぎないため、そもそもインフラやシステムについて強力な前提知識が要求されるためです。また、この研究室はセキュリティ専業ではなく、「より良いシステムにはセキュリティが要素として入っているため、それも含めてトータルで考える」というスタンスです。
このため、この研究室での研究では、まずは対象となる情報通信工学そのものの深い理解を求めることとなります。なので、情報通信工学・計算機工学に対する興味と、それらを「自力」で調査・整理・実証・実践する意思と努力が必要です。
研究室選び、そして研究を始めるにあたって
栗原の師匠である東京工業大学 植松友彦先生の書かれた「研究読本」には必ず目を通しましょう。 研究室を選んで、そして研究を始めるにあたって、必要な事柄が全て記載されています。研究分野の見つけ方・指導教官の選び方・就職との関係、の観点から研究室の選び方を考えるきっかけになります。 [link] [mirror] (Copyright Prof. Uyematsu)
研究室の方針
東工大 植松先生の方針を踏襲します。
学生の自主性を尊重し、個人の資質を伸ばすことに主眼をおきます。但し、怠惰は許しません。 研究室には次の「きまり」があります。これが守れないような人は来ないで下さい、入ってから後悔します。
- 時間を守る。約束を守る。きまりを守る。
- 理解できなければ、そのときに言う。
- 基本的な事項はまず自分で調べる。調べても分からなければ先輩に聞いてから、教員に聞く。
- 同じことを繰り返し質問しない。
- 自分の都合を優先したり、割り込ませない。
- ゼミの時間に遅れない。ゼミを無断で休まない。
- 研究室の行事には必ず参加する。
- 後輩の面倒をみる。
- 学会発表しない大学院生は修了させない。
この研究室での研究していくのに、必要な学術的・技術的な分野
この研究室での研究には、以下のような学術的・技術的な知識の習熟を要求します。英語以外で最も重要なのは、離散数学です。
- 英語。最新の論文は常に英語で書かれ、出版されます。ほとんどの場合、教科書ですら、英語の文献を参照します。
- 離散数学。特に、線形代数、群環体論、確率論、他。これらはセキュリティ課題を定義し、その課題に対する解決策を構築し、その解決策の安全性を証明するため、あらゆるところで使います。
- セキュリティを考慮したネットワーク・計算アーキテクチャを構成するための、符号理論や情報理論、計算理論、暗号理論の基礎。
- インターネットの構成を含む「ネットワーク構造」や「デジタル通信システム」、また「計算機アーキテクチャ」についての知識。例えばTCP/IP、DNSやWi-Fiシステム、OSや仮想化技術、等。
極端な例として、「紙と鉛筆のみで数学(符号理論)とその応用のみに注力し、計算機は論文やプレゼン資料を書くのに使う」という場合も多々あります。一方で、「メモリ上に載ったビット列をただひたすら弄るコードを書き続ける」ような場合もあります。離散数学と低レイヤのコーディングのどちらか、あるいはその両方とも好きな人・よく学んできた人には、この研究室での研究は向いているかもしれません。もちろん、研究しながら徐々に習熟すれば良いので、初めから完璧にできる必要はありません。いずれにしろ、理論的なところから実践的なところまで、強い興味と、それらを継続して習熟しようとするモチベーションが必要です。
研究の環境、前提となるスキル、入ってから習熟するスキル
- 計算、PoCシステムの構築、論文執筆、プレゼン等々、あらゆる面でUNIX系OSの環境 (MacOS, Linux等) の利用が必須条件です。UNIX系OSを動作させるための計算機自体は研究室に用意しており、自身で用意する必要はありません。この研究室ではWindowsは利用しません。UNIX系OSにこだわる理由は、ネットワークシステムの構成要素はほぼUNIX系OSを採用しているため、研究開発の環境として必要なためです。
- 論文執筆やプレゼン資料作成には、LaTeX (TeX Live等ローカル環境やOverleaf等クラウド環境) の利用が必須条件です。これも学部生までになんらかのLaTeX環境で文書を作った経験があることが望ましいですが、自学自習でどうとでもなります。原稿執筆においては、Gitを用いて正しくバージョン管理ができないため、MS Wordの利用は行いません。
- 無駄を省くために、モダンなツールやクラウドサービスを利用してもらいます。研究進捗資料やソースコードの共有・バージョン管理のため、最低限GitおよびGitHubの初歩的な操作を行なってもらいます。それ以外では、AWS/Azure/GCP、VPSやCIの利用なども促進します。
- プログラミングを行って研究する場合、RustやGoなどのモダンな言語を習得してもらいます。理論的に構築したアルゴリズムの実装や、コンセプトを練り上げたネットワークサービスを実装するために、ここ最近はRustをメインのプログラミング言語として採用しています。Pythonの利用は、とりあえず計算さえできればいいような、極一部のテーマに限定されます。
- DeepL等機械翻訳を上手に使い「英語を読むことを加速すること」を推奨します。ただし、和訳された内容を咀嚼し、正否を判断することに力を入れます。和訳すること自体に価値を置きません。