コンテンツにスキップ

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

Summary

概要

このページでは,本サイト 「ジョージア工科大学に合格するまでの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出願に関する全てのタスクを管理しました.

Note

私はプロプランを契約していますが,フリープランでもプロジェクト機能は利用可能らしいです.

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

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

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

Todoist

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

Todoist

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

Toggl

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

plotly

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

Note

実は曜日ごとの作業時間や,時間帯ごとの作業時間をRidgeline plotで描画したりしましたが,労力の割に面白い結果が得られなかったため,割愛しました.

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

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

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

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

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

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

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

HTMLを埋め込むための加工

後述するように,本サイトではplotlyが出力したHTMLファイルを MkDocsmkdocs-macros というプラグインを用いて埋め込みました. そのための前処理として,埋め込みたい HTMLファイルから<HTML>タグと<BODY>タグを削除する必要がありました

MkDocs

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

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

以下では,本サイトにおけるMkDocsの設定情報をまとめます.

mkdocs.yml

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

前述したように,本サイトでは include文でplotlyが出力したHTMLファイルを埋め込めるように, mkdocs-macros プラグインを利用しました(63行目付近).

docs/css/custom.css

本サイトでは,下記のようなカスタムCSSを利用しました. こちらに関しても, mebiusbox, MkDocsによるドキュメント作成 を参考にさせて頂きました. ありがとうございました.

GitHub Pages

本サイトは, GitHub Pages でホスティングしています. 作成方法の詳細はGitHub Docs, GitHub Pages サイトを作成するをご参照ください.