【ITニュース解説】I Got Tired of Timesheets, So I Built My Own Tool
2025年09月07日に「Dev.to」が公開したITニュース「I Got Tired of Timesheets, So I Built My Own Tool」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
「タイムシート入力が面倒」という課題から、筆者はシンプルなWebアプリを自作した。作業開始時間の自動記録やERP連携、CORS問題解決などを軽量な技術スタック(StencilJS, Cloudflare Pages/Workers)で実現し、煩わしい手作業を効率化した。開発者の生産性向上に貢献するツールだ。
ITニュース解説
このニュース記事は、日々の業務におけるタイムシート記入の煩わしさという身近な課題を、IT技術を使って自ら解決した開発者の体験談について語っている。システムエンジニアを目指す皆さんにとって、具体的な問題解決のプロセスを知る良い事例となるだろう。
開発者が直面していたのは、毎週金曜日に一週間の作業内容を思い出し、会社のERP(Enterprise Resource Planning、統合基幹業務システム)にタイムシートとして入力する作業だった。このERPのタイムシート機能は、入力フォームが複雑で、操作が分かりにくく、何度もクリックを要するため、彼はこれを「給料の出ない宿題」のように感じていたという。以前、フリーランスとして働いていた頃は、紙とペンで作業内容と時間を手書きする方がよほど手軽だった。例えば、「9:00 プロジェクトA」「10:30 会議」「11:00 プロジェクトB」のようにシンプルにメモするだけで済んでいたのだ。しかし、コンサルタントとしてフルタイムで働くようになると、週の終わりに記録するタスクが膨大になり、手書きのメモをERPに転記する作業が再び大きな負担となった。この経験から彼は、「この手間を自動化すべきだ」という考えに至ったのである。
彼が理想としたのは、まず記録作業が瞬時に行われることだった。システムが自動的に作業開始時刻を記録し、そのタスクに費やした時間を正確に計算してくれることを求めた。次に、報告作業が苦痛なく完了すること。具体的には、タスクごとに作業記録をまとめ、会社のERPへAPI(Application Programming Interface)を使って直接データを送信し、使いにくいERPの画面を二度と開かずに済むようにしたかった。彼はExcelでの管理も検討したが、真の自動化は難しいと判断した。既存のタイムシートツールもいくつか試したが、どれも機能が多すぎて複雑であり、彼が手書きで実現していたような「次のタスクを開始すれば、直前のタスクが自動的に終了し、その時間を計算する」というシンプルなロジックには合致しなかった。そこで彼は、自身のニーズに完全に合致するウェブアプリを自作することを決断した。
最初に開発されたバージョンは、すでに大きな生産性向上をもたらした。ボタン一つ、またはキーボードショートカットで作業記録を追加でき、日付と時刻は自動で入力される。そして、直前のタスクに費やされた時間も自動で計算されるようになった。複数の記録を選択すれば、それらの合計時間が瞬時に表示されるため、彼はその合計時間をERPに手動で入力するだけでよくなった。これだけでも彼の業務効率は大幅に改善された。この初期バージョンの技術構成は非常にシンプルだった。バックエンド(サーバー側の処理やデータベース)は一切使わず、フロントエンド(ユーザーが直接操作する画面部分)のウェブアプリをCloudflare Pagesというサービスを使ってインターネット上に公開した。データは各ユーザーのウェブブラウザに内蔵されているlocalStorage(ウェブサイトが少量のデータを保存するための領域)に保存される仕組みを採用したため、ユーザー登録やメールアドレスの入力も不要で、ウェブページを開くだけで記録を始められた。
しかし、彼の自動化への意欲は止まらなかった。会社のERPとして「Odoo」が使われていたため、彼は終業時にワンクリックで、自作アプリからOdooへタイムシートを直接送信したいと考えた。これを実現するには、OdooのAPIを利用してプロジェクトやタスクの情報を自作アプリに取り込み、アプリ内の作業記録とOdooのタスクを紐付け、そして一日の終わりに、費やした時間(例えば、最低15分単位で丸めるなどのオプション付きで)を一括でOdooに送信する必要があった。ここで彼は、ウェブ開発ではよく遭遇するCORS(Cross-Origin Resource Sharing、異なるオリジン間のリソース共有)問題に直面した。これは、ウェブブラウザが、セキュリティ上の理由から、自分がアクセスしているドメインとは異なるドメインにあるサーバーへ直接APIリクエストを送ることを制限する仕組みである。彼はChrome拡張機能を使ってこの問題を回避しようと試みたが、実用性に欠けた。このCORS問題を解決するために彼が最終的に選んだのが、Cloudflare Workersというサービスだった。Cloudflare Workersは、ウェブブラウザとOdooのAPIの間にプロキシ(代理)サーバーとして機能し、CORSの制約をうまく回避してくれたため、Odooとのスムーズな連携が実現したのである。
現在の彼のタイムシートツールの技術スタックは以下の通りである。フロントエンドの開発にはStencilJSという、ウェブコンポーネントを構築するためのツールキットを使用している。アプリのホスティングは引き続きCloudflare Pagesを利用している。データのストレージは、ブラウザのlocalStorageに依存している。ERPとの連携はOdooのAPIを通じて行われ、CORS問題の解決にはCloudflare Workersがプロキシとして機能している。この構成は、非常に軽量で、サーバーの管理が不要なサーバーレスアーキテクチャを採用しており、運用コストも極めて低いという利点がある。
ツールは開発後も継続的に改善されてきた。「休憩」ボタンの追加により、毎回「休憩」と入力する手間なく、非労働時間を記録できるようになった。デザインもより洗練され、スマートフォンやタブレットなど、さまざまな画面サイズに適応するレスポンシブデザインが導入された。よく使う操作にはショートカットキーも設定され、利便性が向上した。当初、モバイル対応はあまり重視されていなかったが、通勤中などに作業記録を確認したり編集したりしたい場面があったという。しかし、データがブラウザのlocalStorageに保存されているため、異なるデバイス間で記録を同期できないという課題がある。もし将来的にデバイス間同期を実現するとなると、バックエンドサーバーの構築、データベースの導入、ユーザー認証機能の実装などが必要となるだろう。
今後の展望として彼は、現在利用している「Teamwork」というプロジェクト管理ツールとの連携や、カレンダーの予定から自動で作業記録を生成する機能、CSVやExcel形式でのデータエクスポート機能、ZapierやMakeといった自動化サービスとの連携を挙げている。ユーザーからの要望があれば、デバイス間同期も検討するとしている。さらに、LLM(大規模言語モデル)を活用してタイムシートの記述をより詳細にしたり、改善したりするという、AIの可能性にも触れている。しかし、彼が最も重視しているのは、ツールが「シンプルで、高速で、サインアップ不要で、ユーザーのデータを収集しない」という基本的な原則を今後も維持することだという。
彼はこの自作ツール「timesheetr.app」を一般に公開し、フリーランスやコンサルタント、そしてタイムシートに悩む多くの開発者たちに使ってもらい、フィードバックを求めている。この開発者の物語は、自身の不便さという課題から出発し、それをIT技術で解決する一連のプロセスを具体的に示しており、システムエンジニアを目指す皆さんにとって、実践的な学びとインスピレーションを与える貴重な事例と言えるだろう。