複数端末リアルタイム同期タイマーOSS「DeviceTick」が公開:URL共有だけでタイマーを揃える

テクノロジー

複数端末リアルタイム同期タイマーOSS「DeviceTick」が公開:URL共有だけで「今この瞬間」のタイマーを全デバイスで揃える

株式会社NITI Technologyは、複数のデバイス間でカウントダウンおよびポモドーロタイマーをリアルタイムに同期できるオープンソースソフトウェア「DeviceTick」をGitHub上で公開しました。ライセンスはMITです。このソフトウェアは、ログイン不要でURLを共有するだけで、PC、スマートフォン、タブレットなど、あらゆる端末でタイマーの状態を即座に同期できるのが特徴です。

DeviceTickのユーザーインターフェース

DeviceTickが解決する課題

在宅勤務やハイブリッドワークが普及する現代において、ユーザーは作業中にPC、スマートフォン、タブレットといった複数のデバイスを頻繁に利用します。しかし、従来のタイマーアプリの多くは、端末ごとに独立して動作するため、「PCで開始したタイマーをスマートフォンで停止する」といったシンプルな操作すら困難でした。多くのオープンソースタイマーアプリも、単一端末内での利用や、過去の記録の同期にとどまっており、「現在進行中のタイマーの状態をデバイス間でリアルタイムに同期する」というニーズには十分に応えられていませんでした。

既存タイマーの課題

DeviceTickは、このような「いま動いているタイマー」を端末をまたいで共有する空白を埋めるために設計されたタイマー同期エンジンと、そのWebクライアントのセットです。

DeviceTickの主な特徴

DeviceTickは、以下の4つの要素を同時に満たすことで、既存のOSSタイマーにはない独自の体験を提供します。

  • ライブ同期: タイマーの履歴ではなく、「今この瞬間に走っているタイマーの状態」をすべての端末でリアルタイムに同期します。

  • ログイン不要・URL共有で即参加: アカウント登録は一切不要で、生成されたURLを共有するだけで、他の端末や参加者が同じセッションに即座に参加できます。

  • 公開プロトコル付き: JSON SchemaでAPI契約が公開されており、第三者が独自のCLIツール、デスクトップアプリ、さらには物理タイマーとの連携など、多様なクライアントを構築可能です。

  • 極めて軽量なセルフホスト: Go言語の単一バイナリで動作し、データベースも不要です。Docker Composeを使えば1コマンドで起動でき、個人VPSやRaspberry Piなどの低リソース環境でも運用できます。

より詳細な情報やソースコードは、以下のリポジトリで確認できます。
https://github.com/NITI-Lab/DeviceTick

DeviceTickの独自性

DeviceTickは、上記の基本特徴に加え、以下の点で特に優れています。

  1. 端末間で時計がズレない仕組み
    タイマーの残り時間はサーバー側で一元管理され、その情報が全端末に配信されます。これにより、各端末の時計のわずかなズレやスリープからの復帰後も、表示される時間は常に正確に同期されます。ポモドーロの集中と休憩の切り替えもサーバーが判定するため、端末ごとのズレが生じる心配がありません。

  2. リンク1本で参加完了
    ルーム作成時に発行される短いIDを含むURLを共有するだけで、複数人が同じセッションに参加できます。チャットでの共有、QRコード経由、講師から受講者への一括配布など、共有のための手間はほとんどありません。

  3. カウントダウンとポモドーロをひとつのアプリで
    シンプルなカウントダウンタイマー(任意の分数設定)と、ポモドーロタイマー(集中と休憩のサイクル)を、同じアプリ内で切り替えることなく利用できます。

  4. 他開発者が連携アプリを作れる、開かれた仕様
    API仕様(リクエスト・レスポンス形式、配信イベント形式)が公開ドキュメントとして提供されています。これにより、DeviceTick本体のコードを読まずとも、独自のツールやシステム連携を開発することが可能です。これは、DeviceTickの実装そのものよりも、この同期モデルが共通基盤として広く活用されることを意図した設計です。

  5. 自分のサーバーで動かせる、超軽量設計
    データベースの構築や複雑なセットアップは不要で、1コマンドでWeb画面とAPIサーバーが起動します。個人で所有するVPSや社内サーバー、Raspberry Piのような小型デバイスでも運用できるため、タイマー共有のために特定のクラウドサービスに依存する必要がありません。

DeviceTickと他サービスの機能比較

利用シーンの例

DeviceTickは、様々な場面での時間管理を効率化します。

  • 個人のマルチデバイス併用 — デスクのPCで作業しながら、手元のスマートフォンで残り時間を確認・操作

  • リモートチームの集中ブロック共有 — 離れた場所のメンバーと同じ25分のポモドーロを共有

  • オンライン授業・勉強会・ワークショップ — 講師がチャットにURLを貼るだけで、受講者全員の画面のタイマーが揃う

  • 試験運用・ペアプロ・モブプロ — 立会人や進行役が操作、参加者全員の画面に同じ残り時間が表示される

  • 物理ハードウェア連携(将来) — 公開仕様経由で物理ポモドーロタイマーを同じセッションに接続することも将来的に可能になるでしょう。

オープンソースとして公開する理由

DeviceTickは、特定のクラウドサービスやアプリに限定されない「複数端末でタイマーを揃える」という体験そのものを、オープンソースとして提供することを目的としています。API仕様を先行公開しているのは、DeviceTick本体の普及以上に、この同期モデルと仕様が共通基盤として広く活用されることを目指しているためです。

MITライセンスのもと、個人、チーム、組織を問わず、自由に利用、改変、再配布が可能です。独自のクライアント実装、社内システムへの組み込み、商用サービスでの利用も許諾されています。

今後の展望(v0.2以降)

DeviceTickは、今後もさらなる機能強化が予定されています。

  • ルームPINによるアクセス制限

  • 「全員が操作可能」と「特定の端末のみが操作可能」モードの切り替え

  • PWA対応とモバイルブラウザでのバックグラウンド復帰強化

  • デスクトップクライアントの開発

  • 公開デモ環境の提供

  • 物理ポモドーロタイマーとの無線連携

技術的特徴(開発者・技術系メディア向け)

DeviceTickは、技術的な観点からも注目すべき特徴を持っています。

アーキテクチャ概要

  • サーバー権威型モデル: タイマーの状態はAPIサーバーが「単一の真実の源」として保持し、すべてのスナップショットにサーバー時刻を含めて配信します。クライアントはこの情報を基準に時刻オフセットを補正して描画します。

  • 共通ステートマシン: idle → running → paused → running → completedという状態遷移上で、カウントダウンとポモドーロの両モードを扱います。

  • 配信モデル: RESTful APIで状態変更を受け付け、成功した変更はWebSocketを通じて接続中の全クライアントにsession.updatedイベントとしてプッシュ配信されます。

技術スタック

DeviceTickの技術スタック

公開API(抜粋)

DeviceTickの公開API

スナップショットの完全な型定義は、リポジトリ内のprotocol/session.schema.jsonを参照してください。

株式会社NITI Technologyについて

株式会社NITI Technologyは、最先端のAI技術を駆使し、企業のビジネスプロセスを革新するテクノロジーカンパニーです。「面白さ」を追求しながら社会の課題を解決し、新しい価値を創造していくことをミッションに掲げ、エッジAIや小規模言語モデルの開発を行っています。

  • 社名:株式会社NITI Technology

  • URL:https://nititech.jp/

  • 事業内容:AI製品の開発・販売、企業のDX支援、AI受託開発

コメント