【ITニュース解説】I Built a Python Script That Tracks My Screen Time and Shows Weekly Insights
2025年09月22日に「Medium」が公開したITニュース「I Built a Python Script That Tracks My Screen Time and Shows Weekly Insights」について初心者にもわかりやすく解説しています。
ITニュース概要
Pythonプログラムを自作し、自身のPC利用時間(スクリーンタイム)を自動で記録・追跡。週ごとの利用状況を分析し、グラフなどで可視化するツールを開発した。無意識に費やすPC時間を把握し、効率的な時間管理に役立てる。
ITニュース解説
この記事は、ある開発者が自身のパソコン利用時間、いわゆるスクリーンタイムを追跡し、その結果を週ごとに分析して表示するPythonスクリプトを構築した体験について述べている。開発者は長年、自分がパソコンを使うのは「たまに確認する程度」だと思い込んでいたが、ある日ふと気づくと、土曜日の貴重な半日をパソコンの前で過ごしていたことに衝撃を受けたという。この出来事が、彼が自身のデジタルデバイス利用状況を客観的に把握する必要性を強く感じるきっかけとなったのだ。
多くの人が、自分が思っている以上にデジタルデバイスに時間を費やしている可能性がある。しかし、具体的にどのアプリケーションに、どれくらいの時間を割いているのかを正確に知る術は少ない。開発者は、このような漠然とした感覚ではなく、具体的な「データ」に基づいて自身の行動を理解し、必要であれば改善したいと考えた。このような、現実世界に存在する課題を特定し、それを情報技術を使って解決しようとする発想は、システムエンジニアが日々行っている仕事の根幹をなす考え方である。
この開発者が課題解決のために選んだ手段は、Pythonというプログラミング言語を用いたスクリプトの作成だった。Pythonは、そのシンプルで直感的な文法のおかげで、プログラミング初心者にも非常に学びやすい言語として知られている。データ分析、ウェブアプリケーション開発、人工知能、そして今回のような自動化スクリプトの作成まで、非常に多岐にわたる分野で活用されている汎用性の高い言語だ。ここで言う「スクリプト」とは、特定のタスクを自動的に実行するために書かれた一連のプログラムコードを指し、大規模なソフトウェア全体ではなく、特定の目的のために比較的小規模に記述されることが多い。
では、このスクリーンタイム追跡スクリプトは具体的にどのように動作するのだろうか。まず、このスクリプトは、パソコン上で現在最も前面に表示されている、つまり「アクティブな」ウィンドウの情報を常に監視する。これにより、ユーザーがどのアプリケーション(例えば、ウェブブラウザ、文書作成ソフト、動画プレイヤーなど)を現在使っているかを特定できる。そして、そのアプリケーションがアクティブであった時間を記録していくのだ。さらに、開発者はユーザーが一定時間、キーボードやマウスを操作しなかった場合に、その時間を「アイドル時間」(操作が行われていない時間)として判断する機能も組み込んだ。これは、単にパソコンの電源が入っているだけの時間と、実際にユーザーが積極的に操作している時間を区別するために非常に重要だ。
収集された利用データは、パソコンのローカルストレージにあるファイルに保存される。一般的に、このようなデータはCSV(Comma Separated Values)ファイルのような形式で保存されることが多い。CSVファイルは、データをカンマで区切りながら記述するシンプルなテキスト形式であり、Microsoft Excelなどの表計算ソフトウェアで簡単に開いて内容を確認できるため、手軽なデータ保存手段として広く利用されている。スクリプトは、日々の利用データをこのファイルに蓄積していき、週の終わりには、保存されたデータをすべて読み込み、集計する。そして、特定のアプリケーションの総利用時間や、曜日ごとの利用時間の推移など、「週ごとのインサイト」としてまとめられた分析結果を表示する。このインサイトは、開発者自身が自分のデジタルデバイスの利用パターンを客観的に把握し、「思ったよりもSNSに時間を費やしている」「特定の曜日の作業効率が低いかもしれない」といった具体的な気づきを得て、今後の行動改善に役立てるための重要な情報となる。
このようなスクリーンタイム追跡スクリプトを自作するプロセスは、システムエンジニアを目指す初心者にとって、非常に多くのことを学ぶ機会となるだろう。まず、現実世界で直面する課題を、プログラミングという手段を用いて解決しようとする「問題解決能力」を養うことができる。次に、プログラムが必要とする情報をどのように集めるか、集めたデータをどのように処理し、どこに保存するか、そして最終的にユーザーにとって意味のある形でどのように表示するか、といった「システム設計の基礎」を実践的に学ぶことができる。例えば、アクティブウィンドウの情報を取得するためには、オペレーティングシステムが提供する特定の機能を利用するためのPythonライブラリ(pygetwindowやpsutilなど)を使うことが考えられる。また、アイドル時間を検出するためには、キーボードやマウスのイベントを監視するライブラリ(pynputなど)を用いる技術も応用できる。これらの技術を選び、組み合わせることも、システム開発における重要なプロセスの一つである。
さらに、集計したデータをただ数値の羅列として表示するだけでなく、グラフやチャートなどの形で視覚的に表現することも、データ分析とユーザーインターフェースの基礎を学ぶ良い機会となる。データが視覚化されることで、その意味がより明確になり、ユーザーが自身の行動を理解し、改善しようとする意欲を高めることができる。
このプロジェクトは、プログラミングが単なる複雑なコードを書くことではなく、私たちの日常生活における様々な課題を解決し、より良い生活を送るための強力なツールとなることを示している。自身の時間管理という個人的な課題を、Pythonというプログラミング言語を使って解決しようとするこの発想は、まさにシステムエンジニアの仕事に通じるものがある。システムエンジニアは、企業や組織が抱える業務上の課題や要望を、情報技術を用いて解決する役割を担っており、そのプロセスは、この開発者が自身のスクリーンタイムを追跡したプロセスと多くの共通点がある。データの収集、分析、そしてそれに基づくシステムの構築と改善。これらすべては、システム開発の基本的なサイクルに含まれる要素である。
プログラミング学習を進める上で、このような「自分ごと」として取り組める具体的なプロジェクトは、学習意欲を大きく高める要因となる。最初から複雑なシステムを一から構築する必要はなく、まずは身近な課題に目を向け、それを解決するための小さなスクリプトを作成することから始めるのが良い。Pythonはその手軽さから、まさにそうした入門レベルの学習に非常に適した言語と言える。この記事の事例は、プログラミングが私たちの生活をどのように豊かにできるか、そしてシステムエンジニアという職業がどのような価値を生み出すのかを理解するための良い手本となり、データに基づいた自己理解を深め、より生産的な生活を送るためのツールを自ら作り出す喜びを教えてくれるだろう。