私のパソコン歴(5) : 受験と課題研究

今日は高3の話。明日は大学1年の話。 思い出話と学んだことが混ざっているので、一通り思い出したあとに学んだことについてあとで整理していくことにする。

課題研究

東工大附属高校では、チームを組んで課題に1年間取りくむ「課題研究」というものを3年生になるとやる。 もちろん専門の門戸を叩いて2年程度しか経っていない高校生がやるものなので、別に世紀の大発見とかがあるわけでは(たぶん)ない。 が、その割にはけっこう突っ込んだこともやっていることで地味に有名である。

課題は専門分野の先生たちが持ち寄ってくるものを採用するか、自分たちで設定する。 すぐ動くマイコンのボードの付録のついた雑誌のムック本を先生が見つけてきて、私のいたチームではこの上で動くOSを作ろうということになった。

http://toragi.cqpub.co.jp/Portals/0/support/2010/H8/MTRZ201004l.jpg

振り返ってみると二次記憶装置からブートしてないしそもそもカーネルすらないしでツッコミどころがたくさんあった。 実のところ、私はこれに取りくむまでOSの仕組みをまるっきり分かっていなかった。Twitterで知り合った人たちにOSのしくみを教えてもらったり、実装を見てもらったりもした。

チームでは、マルチタスクとシェルとファイルシステムとウィンドウシステムを手分けして実装をした。 私は主にマルチタスクのところを担当し、Makefileの書き方、CPUのしくみ*1、各種デバイスの制御方法*2 、組込みC言語の制約はここで覚えた。

最終的にはすべてを統合するまで間に合わなかったので、部品単位で成果を発表した。

大学受験

大学受験をする年になって、志望校に設定したのは筑波大学だった。

高2で参加したセキュリティキャンプには、筑波大学の在学生も数多くいた。 AC入試の存在を思い出した私は、これに向けて本格的に準備を始めた。

まず、テーマ決めで悩んだ。AC入試では自分の取りくんだ研究テーマを持ち込む。 課題研究で取り組んでいたOSの話は、当時の自分では説明がしきれないと考えたため避けた。

いろいろ考えた挙句、題材には「しりとり」を取り上げた。理由は簡単で、「誰も答えを知らないもの」かつ「好きなもの」だったからだ。 しりとりの必勝法にしようかとも考えたが、これは簡単すぎた。そこで、できるだけ長く続くしりとりbotを作ることにした。 当時ゲテモノ言語にハマっていた私は、Erlangというプログラミング言語を使ってしりとりのbotを実装した。

*1:スタックポインタやプログラムカウンタや割り込みハンドラとかのレベル

*2:メモリマップドI/Oとかでビット演算しまくり