SATySFiで大学に受かった話(筑波大学AC入試合格体験記)

はじめに

先日、筑波大学情報学群情報科学類のAC入試で合格しました。 後は筑波大学が入学許可を正式にしてくださるかどうかにかかっていますが、無事に許可された場合、筑波大学情報学群情報科学類(以下、coinsと書くことにします)に学部一年生として入学することになります。

ここでは、「coinsのAC入試に受かるまでにしたこと」を記事にしたいと思います。平たく言えば「筑波大学情報学群情報科学類AC入試の合格体験記」というやつです。

志望校選び

「なぜ筑波大学情報学群情報科学類をAC入試で受ける選択をしたのか」ということについて簡単に説明したいと思います。

なぜ情報科学なのか

中学三年生のときに、SATySFiの実装について知りたくなった自分は「まずはラムダ計算ってやつについて知りたい」と思いました。そこで、学校の数学教師(「修士(情報)」持ち)と一緒に「型システム入門 プログラミング言語と型の理論(TaPL)」を読んでラムダ計算について勉強しました。 そこで自分は「自分は専門書を読んで理解しようとしても簡単に間違えるほどの能力しかないのだ。専門家の指導の下できちんと勉強しないと正しく知識を入れられない。」ということに気が付きます。

そしてプログラミングを趣味で続けていくうちに、いつしか「今のままの知識ではできることは限られる。大学で体型的に情報科学に触れて基礎をしっかりつけてできることを増やしたい。」と思うようになってきました。

というわけで、「できることを増やすために専門家のもとで情報科学を学ぶ」という目標ができ、「情報科学科志望の高校生」となるわけです。

なぜAC入試なのか

AC入試とは「アドミッションセンター入試」の略で、世間一般でいうところの「AO入試自己推薦入試・総合型選抜」と同じようなくくりです。 出身高校などからの推薦は不要ですが、テストの点数のみでは合否は決まらず、書類選考と面接が課せられることが大きな特徴です。

自分はもともと冬に精神状態が不安定になりやすく、とうとう高校二年生の冬に重度の抑うつ状態になってしまい、○○未遂に至るまでになってしまいます。精神科に通いながらも寛解まで半年もかかり、とてもしんどい思いをし続けました。 また、自分は勉強ができるわけではなく、一般入試でも非常に苦労することが容易に予想されました。

以上のことから、一般入試を受けることにすると、途中から

  • 合格に必要な学力に到達できず、劣等感が強く刺激される
  • 「合格できないかもしれない」という不安感を強く感じるようになる
  • 受験勉強そのものが強いストレスとなる

ということがおき、11月ごろから抑うつ状態に再度なることが予想されました。このような直前期に抑うつ状態になった場合、十中八九受験に失敗し浪人することになると思われます(「受験会場に行けない」になると志望校をどう変えようが落ちますからね)。浪人するとさらにストレスがかかり、寛解はほど遠くなり、悪循環に陥るでしょう。そのため、なんとしてでも「一般入試を回避しつつ現役合格をする」ということが必要になります。 さらに、受験期間と冬が被る時期を減らすために、合格がわかる日が早ければ早いほど良いことになります。

そこで当然目を付けるのが「推薦入試」です。

なぜ筑波大学なのか

推薦入試があって情報科学を学べ、できるなら文化系の授業も取れる大学を探すと、意外と数が絞られることがわかりました。その結果、候補として挙がったのは以下の大学と受験方式でした。ここら辺を調べたのは主に高校一年生の冬から高校二年生の夏にかけてでした。

京大特色は「面接で英語を使うらしい・めっちゃ難しそう」ということで早々に候補から消え、東工大もかなり迷っていたのですが、「単科大学である・筑波ACの合格発表後に出願できる」ことから保留になります。

東大推薦と筑波ACと筑波推薦の3つの中から選ぶことになるのですが、

  • 勉強できる環境
  • 自分ができること
  • 大学でやりたいこと
  • 情報科学科にある研究室の研究テーマ
  • カリキュラムの特性
  • 合格発表時期
  • 合格するための道筋

などから勘案して筑波AC入試をすることにしました。ここでかなり迷いました。本当は筑波ACと筑波推薦は両方出願できるのですが、「筑波推薦では受からんだろう・筑波推薦を取るための学内選抜の準備をするくらいなら筑波ACの準備をした方が良い」ということで諦めた感じです。

そういうわけで、高校三年生の6月頃には「筑波大学情報学群情報科学類をAC入試で受験する」ということを決めていました。

出願の準備

調査書発行や自己推薦書の添削、面接練習などで結局学年の先生に伝えることや、今まで進路の話を色々としていたことから、クラス担任の先生にcoinsをAC入試で受けることを伝えました。すると、ちょうど自分が6年間化学を教わっていた学年の化学教師がそういった推薦入試対策をしていた経験があることを教えていただいたので、その化学教師に相談することにしました。

志願理由書

執筆

相談の結果、志願理由書を書くことになり、6月から7月中旬にかけて志願理由書を書いては添削してもらっていました。一番参考にしたのは何と言ってもアドミッションポリシーです。coinsのアドミッションポリシーが

情報科学や情報技術,または関連する分野に強い関心を持ち,自ら研究課題と明確な目標を設定して問題の分析や解決を創造的に図る意欲と能力を有し,その過程と結果を論理的に説明することのできる人材を選抜します。

「令和4年度(2022年度)アドミッションセンター入試学生募集要項」より

となっていたので、

  • 情報科学の基礎を固め、OSSなどの形で貢献したい
  • やってみたい研究テーマ

などと絡めて書きました。

最初は字数オーバーで書き、そのあと少しずつ削っていく感じでした。

清書

要項によると、指定された用紙の上に文字が載っていないといけないらしいですが、どうしても原稿用紙用に文字数を調節することが面倒で、字を綺麗に沢山書きたくなかったので、自動化しました(パソコン使用可でした)。

具体的には、SATySFiで一文字ずつ原稿用紙の格子の中に収まるように行と列を計算して配置していくプログラムを書きました。

役物の処理が雑なのであまり本格的には使いたくないですが、文字数カウントの手間が省けたのでかなり楽でした。

自己推薦書

わりとメインの提出書類でした。

これもアドミッションポリシーに沿った内容を意識して「課題発見解決能力」を示せるエピソードになるようにしながら書きました。そしてこれも同じく沢山添削を受けました。

内容的には

  • OSS活動
    • ソフトウェア
    • イベント
  • 学校活動

みたいな感じでした。

図にすると

f:id:puripuri2100:20211214204339p:plain
自己推薦書の見取り図
みたいな感じになります(ちなみにこの図は自己推薦書の最初の方に載せました)。

作成したソフトウェアについてもっと書きたかったのですが、わりと内容が似た感じになりそうだったので、特徴的なものを選んで載せました。

ページ数は80ページほどになりましたが、これの多さはほとんど関係ない気がします。

補足資料としてソフトウェアのソースコードUSBメモリに入れて送りました。見てくれたのかは謎です。

自己推薦書を書く時には、技術記事やドキュメントを書いていた経験がかなり生きました。

その他

入学志願票・写真票などは印刷してそのまま入れました。

調査書はクラス担任の先生に伝えていたこともあってスムーズに発行できました。

長期休みとの兼ね合いもあるので、早めに手に入れるに越したことはないと思います。

ギリギリまで粘らず、事前に準備をすべて終え、9月1日に郵送しました。 書類がきちんと受理されたかどうかがわかるまで少しドキドキしました。

ところで、「期間内必着」ではなく「期間内消印有効」にして欲しいですね。早く着いた場合にどうなるのかわからないのが怖いです。

一次選考結果発表

10/1が合格発表でした。都民の日で学校が休みだったので、10時に確認することができました。

数日前からかなり緊張していました。最終合格発表よりも緊張したと思います。

coins22のAC入試ではここが3倍強の倍率だったようです。

教師と親から「不合格になるかもしれないから、出願後は勉強しようね」と言われていましたが、結局勉強せずにソフトウェア作っていました。現実逃避ってやつです。

面接対策

面接は一時合格発表の2週間ほど後の10/13にありました。

ここで落ちるわけにはいかないので対策をしっかりとやりました。手法としては「面接練習をしてフィードバックを貰い、それを基にして修正を加えていく」という感じにしました。

回答の主軸も当然アドミッションポリシーです。

面接練習は学校の先生と先輩に頼みました。本当にありがとうございました。

属性としては

  • クラス担任の数学教師
  • 学年の数学教師
  • 学年の化学教師
  • coins13ACで現在も筑波博士課程在学中の先輩
  • AO入試東北大学医学部に合格した3つ上の先輩

でした。

練習の中身としては主に

  • 「研究で社会にどう貢献するのか」というテーマ関連の質問
  • 「自分のやってきたこと・やりたい研究テーマ」に技術的な観点から踏み込んだ質問
  • 受験時のマナーと「自己推薦書の中身を纏めて短く説明する」ことの練習

をやっていただきました。それぞれかなり役に立ちました。

面接練習で貰ったアドバイスとしては

  • 先行研究についてもう一度まとめておく
  • 自己推薦書や志願理由書の中に説明が不十分な記述があるので、事前知識も踏まえて説明できるようにしておくこと
  • 自己アピールの機会があるかもしれないので、その時にいうことを決めておけ
  • 「大変だったこと」・「そのソフトウェアを作ったきっかけ」については話せるようにしておきたい
  • 研究テーマについては具体的に話せるようになっておいた方が良い
  • 情報科学の知識を対策のために新たに入れる必要はない
  • 回答で脇道にそれる必要はない
  • それぞれの成果で自分がやった範囲を明確にして説明する
  • 最初早口になるのはしょうがない
  • 受験番号をいう時などに声をきちんと出すことでリラックスできるようにしたい
  • 楽しめ

などでした。

数をこなすのはわりと重要だと思いました。

面接

遅刻をしないように2時間前に着くように行動した結果、事故無く着いたは良いものの、建物の中に入れずに凍えていました(雨が降っていました)。

面接自体は順調に終わりましたが、最後に受験票を忘れて退室するというへまをしました。

最終合格者発表

11/2に発表がありました。前日に学校の創立150周年記念式典があり、その代休で休みだったので、これも10時ちょうどに見ることができました。

嬉しかったです。

SATySFi的なお話

「SATySFiのおかげで大学に受かった話」ということで書いているので、最後にSATySFi要素に触れたいと思います。

技術面

志願理由書の自動生成

前述したように志願理由書の作成にSATySFiを用いました。

志願理由書の記入欄が原稿用紙のような格子状に区切りが入っていたため、

  1. 入力をstring-explode等を用いて一文字ずつに分割する
  2. マスの横幅と縦幅の値をもとにそれぞれの文字が配置される座標を計算する
  3. 計算結果の座標を基にdraw-textで描画する
  4. 背景にこれまたload-pdf-imagedraw-textで志願理由書のテンプレート用紙を配置する

という形で実装しました。

自己推薦書でのページ番号の処理

自己推薦書もSATySFiで作成しました。クラスファイルは一から作成しました。

そのクラスファイルとデモファイルを puripuri2100/tukuba-AC-cls というリポジトリで公開しました。

文書は

  1. はじめに
  2. 目次
  3. 本文
  4. おわりに
  5. 参考文献

によって構成され、「はじめに」と「目次」のページ番号はローマ数字にし、本文以降はアラビア数字でページ番号を表し、目次と本文の間でページ番号のカウンタをリセットするという形になっています。よくある本と同じ感じです。

これの実現方法ですが、

  1. hook-page-break-blockプリミティブとregister-cross-referenceプリミティブを用いて目次の終わりのページ番号を記録
  2. 二度目の処理でget-cross-referenceライブラリで目次の終わりのページ番号を取得し、baseライブラリの中のintパッケージで提供されているof-string関数を使ってint型にする
  3. ページ番号の計算を行った結果のページ番号を組むが、その際にローマ数字を出力するページでは、ローマ数字への変換にnum-conversionパッケージで提供されるto-roman-lower関数を使う

という感じでした。

自己推薦書での参考文献

参考文献はgfngfn/cs-thesisnamachan10777/BiByFiなどを参考にして自分でパッケージを作成して作りました。

SATySFiでの参考文献の作成についてはもっとアップグレードさせていける気がしました。

自己推薦書で使ったその他の技術

ルビを振る必要があったため、puripuri2100/satysfi-rubyを使ってルビを振りました。

画像貼り付けにはpuripuri2100/satysfi-imageを用いました。デフォルトで横幅がtext-widthになるようになっているのであまり考えなくてよかったです。クラスファイルの方で+figureコマンドを実装して使っていました。

我ながら便利なパッケージを作ったと、過去の自分に感謝しています。

書類内容面

自己推薦書に書いた内容の多くにSATySFiが絡みました。 書いているときにふと「自分の青春のほとんどはSATySFiだったのではなかろうか」と思うこともありました。

  • SATySFiのライブラリ作成について
  • SATySFi関連の便利ツール実装について
  • SATySFi本体への貢献について
  • SATySFi Conf主催について
  • SATySFiで部誌・運動会パンフレットを作成したことについて

など沢山書きました。これからもSATySFiに関わりながら楽しく活動していきたいと思います。

おわりに

今、生きるのに辛くて大学受験をどうすればいいのかがわからない高校生は筑波大学AC入試を選択肢の一つに入れてみてはどうでしょうか?

「表彰されたもの」・「世間的に評価された実績」・「良い成績」が全て無くとも合格することはできると思います。重要なのは「社会的ステータスがある活動のアピール」ではなく、「今までやってきた活動を踏まえて、自分がアドミッションポリシーに沿った人物であると売り込むこと」だけです。

応援しています。

最後に、今回の受験でお世話になった方々に感謝したいと思います。

ありがとうございました。