集中講義をやり遂げたぞ!

MacOSをアップデートしてCatalinaにしたら、業務で必要なオンラインミーティング用のアプリが起動しなくなってしまった。Catalinaでは32bitアプリをサポートしなくなったのでその影響っぽい。しょうがないのでTime MachineでMojaveへ戻すことにしたら、復元まで4時間31分と書いてあって何もできなくなってしまった。

閑話休題

8、9月は大学で行う集中講義(大阪大学のProSec)の準備をしていたため、他のことが全くできなかった。10月には2つの集中講義があり、1つめは自分が担当し、2つめは情報通信研究機構から明石先生を招いて講義を行ってもらった。

1講義は2日間かけて行われるのだが、自分が担当した1つめの講義では、1日目に簡易デバッガを自作してもらい、2日目には正規表現を自作のアセンブリ言語に変換して実行するという、いわゆるコード生成機とバイトコードインタプリタの実装を行ってもらった。どちらもアセンブリレジスタマシンの仕組みを正確に理解していないと実装は難しいのだが、2〜3割ぐらいの学生はある程度実装を終えたようだった。ちなみに、JITコンパイルを行うために、LLVM IRへ変換する方法の説明とサンプルコードも紹介したが、さすがにLLVM IRまで到達した学生はいなかった。欲張ってコンテンツを盛りすぎである。

2つめの明石先生の講義では、仮想環境でJuniper社のvSRXを利用しFirewallを構築した後、Web Application Firewallの設定や脆弱性スキャンの演習を行った。SRXは実際に業務でも利用されているアプライアンスであり、それとほぼ同じものを体験できるのはなかなかないチャンスだったと思う。こちらも最後まで到達できた学生は2〜3割程度だったが、vSRXの設定はすべての学生が出来ていたようだった。

普段業務でプログラミングやサーバを触ることの多い社会人の参加者でも、プログラミングやvSRXの設定等に苦労していたため難易度はそこそこ高かったかもしれないが、勉強にはなったと思う。

しかし、準備はやたらと大変であった。例えば、OSのシグナルについて正確に教えるためにLinuxカーネルソースまで読んでいて、めちゃくちゃ時間がかかった。結局の所、これは必要なかったように思うし、そういう必要かどうかわからないところまで調査していたら、あっという間に時間が過ぎてしまった。必要な知識かどうかを事前知識のないまま取捨選択するのは難しい。

前期の計算の理論の講義ではλ計算型推論エンジンの実装を行ってもらい、今回の集中講義でアセンブリに関する実装を行ってもらったので、現代コンピュータの重要なところは学べたと思う。いずれにせよ、両方ともの集中講義が無事に終えることが出来てよかった。