🕰️

「ジョージア工科大学に合格するまでの572時間29分02秒」を公開するサイトを約82時間21分11秒かけて作った

2021/05/28に公開
1

https://kakeami.github.io/road-to-gatech/


「ジョージア工科大学に合格するまでの572時間29分02秒」

背景

OMSCS

ジョージア工科大学(Georgia Institute of Technology)とは,アメリカのアトランタにメインキャンパスを構える,州立大学です.THEのWorld University Rankings 2021で総合第38位コンピューターサイエンス(以下,CS)で第13位と評価されています.

OMSCS(Online Master of Science in Computer Science)とは,ジョージア工科大学がAT&Tの支援のもと提供している,オンラインのCSの修士課程です.大きな特長は,以下3点です.

  • 非常に安価(合計で約$7,000~)である
  • 完全オンラインで,現地通学と同等の学位を取得できる
  • 授業はMOOCs形式で配信されるため,時間的な制約がない

働きながらCSの学位を取得したい社会人に非常に人気で,Fall 2020の出願数は37,498に上ったそうです.

OMSCSへの出願タイミングは年2回,毎年7月頃と3月頃に設定されています.(ちなみに,私が出願したFall 2021の出願締切は2021年3月1日でした.)上記の締切までに,出願用Webサイトから下記[1]を提出する必要がありました.

自己紹介

5年以上前に工学修士を取得しました.現在は一児の父でサラリーマンです.裁量労働制かつ,新型コロナ以降は完全リモートワークですので,平日は時間に融通が効きやすい状況にあります.

大学および大学院でCSを専攻したことはありません.上記の静的サイトのように,Pythonでおもちゃは作れますが,ソフトウェアエンジニアではありません.かねてからCSに憧れ(コンプレックスと言ったほうが近いかもしれません)を抱いていたため,2019年11月29日にジョージア工科大学のOMSCSの存在を知るとすぐに,受験を決意しました.準備に割く時間が無かったことと,金銭的な条件を満たす選択肢が無かったことから,併願[2]はしませんでした.

以前TOEFL iBTを受験した際は88点でしたが,有効期限が切れてしまっていました.

作ったもの

概要

ジョージア工科大学に合格するまでの503日間(2019年11月29日〜2021年4月14日)の全ての作業時間をまとめた静的サイトを作成しました.

https://kakeami.github.io/road-to-gatech/


「ジョージア工科大学に合格するまでの572時間29分02秒」

対象読者

第一の対象読者は自分自身です.出願準備を進める中で,色々な面白い出来事を経験しました.忘れっぽい自分のために,詳細に記録に残しておきたいと思いました.

おこがましいですが,第二の想定読者は,留学に向けて勉強する全ての方です.上記の経験の中には,苦しいこともたくさんありました.会社にも友達にも話せず,黙々とTOEFLの単語を覚え続ける日々が半年以上続いたこと.現業が忙しすぎて,当初の計画から大きな遅れが生じたこと.書き慣れないエッセイに戸惑い,5ヶ月以上筆が進まなかったこと.そして,合格通知がなかなか届かず,redditで次々合格を報告する他の受験生を眺めたこと.

ネット上の合格体験談には励まされましたが,精神的に余裕が無いと,かえって自分の無能さを痛感して辛くなりました.そんな時,失敗も成功も全て含めて,赤裸々に体験談を語ってくれる人がいたらいいのにと心から思いました.

幸い,私はタイムトラッキングが趣味です.受験勉強を本格的に開始した2019年11月29日以前から,全ての活動をtoggl trackで記録しています.私の紆余曲折の受験記録を読んで,「そうだよな,こんなもんだよな」と安心してくださる方が一人でもいれば,これに勝る喜びはありません.

構成

「ジョージア工科大学に合格するまでの572時間29分02秒」の本編は「はじめに」とそれ以外の「各作業のページ」で構成されます[3]

はじめに

まず,はじめにでは「ジョージア工科大学に合格するまでの572時間29分02秒」を概説します.

  • 背景
  • 全作業時間の分析
  • 本サイトについて
  • 謝辞
  • 参考
  • 連絡先

「背景」「本サイトについて」は本記事と同様ですので読み飛ばして頂いても問題ありませんが,「全作業時間の分析」「参考」はお読み頂いた方が良いかもしれません.

全作業時間の分析では,572時間29分02秒の推移とその内訳を示します.「ジョージア工科大学に合格するまでの572時間29分02秒」はこの章を起点に作業時間を分解しながら解説を加えるツリー構造をしています.後述する「各作業のページ」進む前に,この章で全体を俯瞰しておくと読みやすいと思います.

参考では,「ジョージア工科大学に合格するまでの572時間29分02秒」で利用したすべての参考書,アプリ,サービスを列挙しています.手っ取り早く参考書等の情報を得たい場合は,ご参照ください.

各作業のページ

出願までに必要だった,下記それぞれの作業についてページを設け,作業時間の内訳とその推移を詳細に示します.

各ページの構成は下記の通りです.

  • Summary
  • 概要
  • 作業時間の分析
    • 作業時間の推移
    • 作業時間の内訳
  • 各作業の詳細

基本的に,概要までお読み頂ければ,作業のイメージが掴めるよう作成したつもりです.作業時間の推移では,下図のように日次合計作業時間を表す折れ線グラフを用いて,作業着手日,完了日,ピーク,およびトレンドについて説明します.


日次合計作業時間を表す折れ線グラフ

作業時間の内訳では,下図のように作業内容をブレークダウンし,

  • 各作業の全期間の合計時間の比率を表す棒グラフ
  • 各作業の月次合計時間の推移を表す積み上げ棒グラフ

を,どの作業にいつどれくらいの時間がかかったのか説明します.


各作業の全期間の合計時間の比率を表す棒グラフ


各作業の月次合計時間の推移を表す積み上げ棒グラフ

各作業の詳細ですが,例えばPersonal Statement対応の場合は

  • 大学院について調査する
  • 参考書を読む
  • Personal Statementを作成する
  • 英文添削を依頼する
  • 知人にレビューを依頼する
  • 出願用Webサイトに記入する

という粒度で,それぞれの日次推移と実施内容を詳細に説明します.

なお,TOEFL対応についてはタスクの量も種類も多いため,下記のような中間階層を設けます.

スコープ

「ジョージア工科大学に合格するまでの572時間29分02秒」は留学ガイドではありません.したがって,例えば下記のような情報は扱いません.

  • 効果的なTOEFLの勉強法
  • 魅力的な履歴書の書き方
  • 強力な推薦状の書き方,頼み方
  • 説得力のあるエッセイの書き方

あくまでも私の体験談を語ることが目的であって,汎用的なアドバイスを提示することはできません.

作成時間

このサイトの企画構想から完成まで,合計で約82時間21分11秒[4]かかりました.想像を遥かに超える大変さでしたが,MkDocsplotlyに詳しくなれたので良かったです.

2021年1月頃,現実逃避のためにデータの前処理およびサイトの構築に着手しました.2021年4月14日以降,作業を本格化し,ゴールデンウィークに8割型完成させました.

作り方

以下では,ジョージア工科大学に合格するまでの572時間29分02秒の作り方をまとめます.

まず必要なのは作業時間の記録です.私は,TodoistのタスクをChrome拡張機能を使ってToggl trackと連携することで,作業時間を記録しました.記録したデータは,Toggl APIを用いてダウンロードしました.

上記のデータを前処理した後で,plotlyを用いてインタラクティブなグラフをHTMLファイルとして出力しました.上記のHTMLファイルを,後述するmkdocs-macrosを使ってサイトの本文に埋め込むために,<HTML>タグや<BODY>タグを削除する必要がありました.

MkDocsを使って静的サイトのコンテンツを生成し,GitHub Pagesにデプロイしました.

以下,詳細に説明します.

Todoist & Toggl track

TodoistのタスクをChrome拡張機能を使ってToggl trackと連携することで,作業時間を記録しました.

Todoistはタスク管理アプリです.私は「受験勉強」プロジェクトを作成し,OMSCS出願に関する全てのタスクを管理しました.

Toggl trackは,タイムトラッキングアプリです.私はこのアプリを使って,2019年ごろから現在まで24時間365日,秒単位で全ての作業時間を記録しています.

Chrome拡張機能を用いることで,TodoistとToggl trackを連携しました.具体的には,Todoist上の各タスク上でTogglボタンを押下することで,当該タスクのプロジェクトとタスク名で作業時間を記録しました.

例えば,Ankiを解き始める時に,下記のようにTogglボタンを押下すると,

下図のように,Toggl trackで「受験勉強」プロジェクトの「Ankiを解く」作業時間の記録が開始されます.

Toggl trackのWeb画面では,下図のように表示されます.

Toggl trackのデータは,Toggl APIを用いてダウンロードしました.このデータを前処理した後,plotlyでグラフを描画しました.

plotly

上記のデータを元に,plotlyでインタラクティブなグラフを描画し,HTMLファイルとして出力しました.ベーシックなグラフしか利用していないため,plotly公式のサンプルをご覧になればなんとなく作成方法はご理解頂けると思います.

「作業時間の推移」の作成方法

Basic Range Slider and Range Selectorsのサンプルをベースに,下記のような修正を加えました.


こんな感じのグラフを作成しました

「作業時間の内訳」の作成方法

Bar chart with plotly Expressのサンプルをベースに,下記のような修正を加えました.

  • ホバー時に合計作業時間を表示(hovermode="x unified"):Unified hovermode


こんな感じのグラフを作成しました

「作業時間の内訳の推移」の作成方法

Stacked Bar Chartのサンプルをベースに,下記のような修正を加えました.


こんな感じのグラフを作成しました

HTMLを埋め込むための加工

後述するように,「ジョージア工科大学に合格するまでの572時間29分02秒」ではplotlyが出力したHTMLファイルをMkDocsmkdocs-macrosというプラグインを用いて埋め込みました.そのための前処理として,埋め込みたいHTMLファイルから<HTML>タグと<BODY>タグを削除する必要がありました

MkDocs

MkDocsを使って静的サイトのコンテンツを生成しました.MkDocsを選択した理由は下記です.

  • デフォルト設定でかなり素敵な静的サイトが作れる
  • コマンド一つ(mkdocs gh-deploy)で簡単にGitHub Pagesをデプロイできる

以下では,「ジョージア工科大学に合格するまでの572時間29分02秒」におけるMkDocsの設定情報をまとめます.

mkdocs.yml

MkDocsでは,ルートディレクトリのmkdocs.ymlで各種設定を行います.設定にあたっては,mebiusbox, MkDocsによるドキュメント作成を参考にさせて頂きました.ありがとうございました.

前述したように,「ジョージア工科大学に合格するまでの572時間29分02秒」ではinclude文でplotlyが出力したHTMLファイルを埋め込めるように,mkdocs-macrosプラグインを利用しました(63行目付近).

docs/css/custom.css

「ジョージア工科大学に合格するまでの572時間29分02秒」では,下記のようなカスタムCSSを利用しました.こちらに関しても,mebiusbox, MkDocsによるドキュメント作成を参考にさせて頂きました.ありがとうございました.

GitHub Pages

「ジョージア工科大学に合格するまでの572時間29分02秒」は,GitHub Pagesでホスティングされています.作成方法の詳細はGitHub Docs, GitHub Pages サイトを作成するをご参照ください.

おわりに

最後までお読みくださり,ありがとうございました!次回作「ジョージア工科大学を卒業するまでのxxxx時間xx分xx秒」にご期待ください!

ちなみに,本記事を執筆するのに2時間02分59秒かかりました.

参考

脚注
  1. GREを受験する必要がない,というのもOMSCSの大きな魅力の一つです. ↩︎

  2. 例えば,イリノイ大学のOnline Master of Computer ScienceはOMSCSと併願されがちなCS修士課程の一つです. ↩︎

  3. ここでは簡単のため,おわりにとAppendixは無視しています. ↩︎

  4. 細かく微修正を続けているため,厳密には+10%程度の時間がかかっています. ↩︎

GitHubで編集を提案

Discussion