Docs

デスクトップ版と PWA

kichijitsu はブラウザで開くだけでも使えるが、PWA として入れれば独立したウィンドウになり、macOS ならデスクトップ版でトレイ常駐とグローバルショートカットが付く。 どれを選んでも中身は同じアプリで、見ているデータも同じだ。

どれを使うか

入口は3つある。ブラウザでそのまま開く、PWA として端末に入れる、macOS ならデスクトップ版を入れる。 どれも表示しているのは同じアプリで、予定も設定も共通だ。違うのは「ウィンドウの出かた」と「OS とどこまで繋がるか」だけ。

ブラウザ PWA デスクトップ版 (macOS)
入れかた 不要。アプリの画面を開くだけ ブラウザのインストール操作 Homebrew Cask
ウィンドウ ブラウザのタブ タブもアドレスバーも無い独立ウィンドウ ネイティブウィンドウ。サイズと位置を覚える
GitHub のデータ ブラウザで GitHub を認可して取得 同じ 手元の gh CLI から取得
OS との連携 無し アプリ一覧やホーム画面にアイコンが並ぶ トレイ常駐・グローバルショートカット
画面の更新 開き直せば新しくなる 同じ 同じ (アプリの入れ直しは不要)

とくにデスクトップ版は、画面を同梱していないのが特徴。ウィンドウの中身は公式インスタンス https://kichijitsu.love-rox.cc/app をそのまま読み込んでいるだけで、アプリ本体はその外側のガワにすぎない。 そのため、サイトが新しくなればアプリを入れ直さなくても中身は新しくなる。逆に、トレイやショートカットといったガワの部分を新しくするには Homebrew から入れ直す必要がある。

ログインも同じ理屈で、Google の認可はブラウザ版とまったく同じ画面・同じ手順になる。デスクトップ版のためにアカウントを作り直したり、連携をやり直したりする必要は無い。

デスクトップ版を入れる

配布しているのは macOS 版だけ (macOS 13 Ventura 以降。Apple Silicon と Intel の両方で動く universal バイナリ)。Windows / Linux 版は配布していない。

  1. Homebrew で入れる

    brew install --cask love-rox/tap/kichijitsu
  2. 初回起動のブロックを外す

    Apple の署名・公証を行わない無署名配布のため、そのままでは Gatekeeper が初回起動を止める。インストール後に隔離属性を外しておく。

    xattr -rd com.apple.quarantine /Applications/kichijitsu.app

    外さずに起動してブロックされた場合は、システム設定 → プライバシーとセキュリティ → 「このまま開く」からでもよい。

  3. 起動してログインする

    起動するとウィンドウにアプリの画面がそのまま開く。Google アカウントの連携はブラウザ版と同じ手順 (はじめかた)。

  4. GitHub を使うなら gh を用意する

    デスクトップ版は GitHub のデータを、ブラウザ経由の認可ではなく手元の gh CLI の認証で取る。使うなら先に入れてログインしておく (GitHub 連携と実績記録)。

    brew install gh
    gh auth login

デスクトップ版だけの動き

  • ウィンドウを閉じてもアプリは終了しない。 閉じるボタンを押すとトレイに格納されるだけで、常駐は続く。完全に終了するのはトレイメニューの「終了」だけ。
  • トレイアイコンを左クリックすると、ウィンドウの表示/非表示が切り替わる。右クリックで「表示/隠す」「再読み込み」「終了」のメニューが開く。
  • Cmd+Shift+K で、他のアプリを使っているときでもウィンドウの表示/非表示を切り替えられる。
  • Cmd+R で画面を読み直せる。kichijitsu が前面にあるか表示中のときだけ効くので、他のアプリで押しても誤爆しない。
  • ウィンドウのサイズと位置を覚えていて、次に起動したときも同じ大きさ・同じ場所で開く。

予定のリマインダー通知

予定が始まる前に macOS の通知でお知らせする。既定は Google カレンダー側で予定ごとに設定した通知に従う。設定から「通知しない」や「一律 5 分前 / 10 分前 / 15 分前 / 30 分前 / 1 時間前」(Google 側の設定を無視してすべての予定に同じ分数を使う) にも変えられる。デスクトップ版だけの機能で、ブラウザや PWA では通知は出ない。

2026-07-31 に既定が変わった。 それまでは Google 側の設定を受け取っておらず「一律 10 分前」だった。設定画面で分数を自分で選んでいた場合はその選択が引き継がれ、一度も触っていない場合は「Google の設定に従う」になる。Google 側で通知を設定していない予定は、これ以降は通知されない。

  • 1 つの予定に通知が複数設定されていれば、そのすべてで通知する。 Google では 1 つの予定に「1 時間前」と「10 分前」のように複数の通知を設定できる。片方だけを選んだりはしない。
  • 「デフォルトの通知を使用」の予定は、カレンダーごとの既定に従う。 Google カレンダーの既定の通知はカレンダーごとに決まっているので、同じ「デフォルト」でも仕事のカレンダーと祝日カレンダーで結果が変わる (祝日カレンダーのように既定の通知が無いカレンダーでは通知しない)。
  • メールの通知は対象外。 Google 側で「メール」を選んだ通知は Google 自身がメールを送るので、kichijitsu が同じ時刻にデスクトップ通知を重ねることはしない。
  • 1 日より前の通知は出さない。 Google では最大 4 週間前まで設定できるが、kichijitsu の通知はアプリが起動している間しか出せないため、それより前の通知は確実に届けられない。近い時刻に丸めて鳴らすようなこともしない (設定していない時刻に鳴るほうが困るため)。
  • 通知時刻から 15 分以上遅れたぶんは出さない。 久しぶりに起動したときに、通知時刻を過ぎた予定の通知がまとめて飛んでこないようにするため。
  • 通知が届くのはアプリが起動している間だけ。 ウィンドウを閉じてトレイに隠している間は届く (アプリは終了していないため) が、トレイメニューの「終了」でアプリを終わらせている間は届かない。
  • 時刻のない終日の予定は通知しない。 「何分前」の基準になる時刻が無いため。
  • 同じ通知が二重に飛ぶことはない。画面を読み直しても、予定を取り直しても、ウィンドウを開け閉めしても、1 つの通知につき 1 回だけ (「1 時間前」と「10 分前」の両方が設定された予定なら、それぞれ 1 回ずつ)。
  • 予定の時刻を動かせば通知も動いた先に付いてくる。削除した予定の通知は出ない。
  • すでに始まった予定・過去の予定には通知しない。久しぶりに起動しても、過去の分がまとめて飛んでくることはない。

通知が来ないときは、設定の「予定のリマインダー通知」にある「テスト通知を送る」を押してみる。それでも何も出ない場合は macOS の「システム設定 → 通知」で kichijitsu の通知が許可されているか確認する。アプリ側からは通知が許可されているかどうかを知る手段が無いため、拒否されていても画面上は何も起こらない。

GitHub が表示されないとき (gh のパス)

Dock や Finder から起動したアプリは、ターミナルと違って /opt/homebrew/bin を含まない最小限の PATH しか持たない。そのため「ターミナルでは gh が動くのに、アプリからは GitHub が出ない」ことが起きる。

アプリ側は /opt/homebrew/bin/gh/usr/local/bin/gh/usr/bin/gh~/.local/bin/gh の順に自動で探すので、普通に Homebrew で入れていれば何もしなくてよい。それ以外の場所に置いている場合は、設定から手で指定できる。

  1. 設定を開く

    画面右上の歯車 (「設定」) を押す。

  2. 「gh のパス」に絶対パスを入れて保存する

    「GitHub」セクションの「gh のパス(任意)」に gh の場所を入れ、「保存」を押す。この項目はデスクトップ版でだけ表示される。空欄に戻すと自動検出に戻る。

    受け付けられない指定は保存の時点で断り、入力欄の下に理由を出す。ファイル名が gh でない・絶対パスでない・そこにファイルが無い・実行できない、のいずれか。

  3. 再読み込みする

    Cmd+R で読み直すと、次の GitHub 取得から新しい指定が使われる。

指定できるのはファイル名が gh の絶対パスだけ。「gh の置き場所を教える」ための項目であって、別のコマンドを実行させるためのものではない。この決まりは保存のときだけでなく GitHub の取得のたびにも確かめるので、保存を通り抜けた指定が後から効くことはない。

アプリを新しくする

画面の中身はサイト側なので自動で新しくなる。更新が要るのはガワの部分 (トレイ・ショートカット・ウィンドウまわり) だけで、Homebrew から行う。

brew upgrade --cask love-rox/tap/kichijitsu

PWA を入れる

PWA は「ブラウザで開いているアプリを、独立したウィンドウとして OS に登録する」仕組み。追加でダウンロードするものは無く、対応ブラウザさえあれば macOS でも Windows でも Android / iOS でも入れられる。

  1. アプリの画面を開く

    https://kichijitsu.love-rox.cc/app を開く。インストールの情報が付いているのはこのアプリ画面だけで、トップページやこのドキュメントからはインストールできない。

  2. ブラウザのインストール操作を実行する

    Chrome / Edge ならアドレスバー付近に出るインストールのボタン、iOS / iPadOS の Safari なら「共有」→「ホーム画面に追加」。名前は kichijitsu で登録され、アイコンも専用のものが付く。

  3. アイコンから起動する

    以降はアプリ一覧やホーム画面のアイコンから起動する。開くのは常にアプリ画面 (/app) で、タブもアドレスバーも出ない。

アプリとして扱われる範囲は /app 配下だけ。設定画面から開くプライバシーポリシーやこのドキュメントのようなサイト側のページは、PWA のウィンドウではなく通常のブラウザで開く。

更新はどうなるか

アプリの画面には Service Worker が入っていて、一度開いた端末では通信の一部を肩代わりする。おかげでオフラインでも起動できるが、そのぶん「何をどこまで手元に持つか」は決め打ちしてある。

対象 扱い
画面そのもの (HTML) まずネットワークから取りに行き、取れなかったときだけ最後に取れたものを表示する (オフライン起動用)
js / css / アイコンなどの部品 まず手元のキャッシュを返し、その裏で新しいものを取り直して差し替えておく
/api/auth (予定の読み書き・ログイン) 一切触らない。常にネットワークへ直行する
別ドメインへの通信、書き込み系の通信 一切触らない

この作りから言えることが2つある。ひとつは、予定のデータが古くなることは無いということ。同期はすべて /api を通り、Service Worker はそこに手を出さない。オフラインで見えている予定は端末内の IndexedDB にあるもので、ここで言うキャッシュとは別物だ (データの扱い)。

もうひとつは、画面を組み立てる部品は「まず手元のもの」を使うということ。サイトを更新した直後の1回だけ、古い画面が出ることがある。裏では新しいものを取り直しているので、次に開いたときには新しくなっている。

いま見ているものがどのビルドかは、設定画面の一番下に出る (「ビルド」+コミットの短縮 SHA +ビルド日時)。デスクトップ版ではその前にアプリ自身のバージョンも並ぶので、ガワと中身のどちらが古いのかを見分けられる。

なお、デスクトップ版は起動したときのページを持ち続ける。開きっぱなしにしているとサイトの更新に気づかないので、トレイメニューの「再読み込み」か Cmd+R で読み直す (この操作はキャッシュを捨ててから読み直す)。

更新されないとき

開き直しても古い画面のままなら、設定画面からキャッシュを消して読み直せる。ブラウザ・PWA・デスクトップ版のどれでも同じ場所にある。

  1. 設定を開く

    画面右上の歯車 (「設定」) を押す。

  2. 「キャッシュを削除して再読み込み」を押す

    設定画面の一番下、ビルド情報のすぐ下にある。

  3. 確認して「削除する」

    「削除して再読み込みしますか?」と出るので「削除する」を押す。キャッシュを消してから画面が読み直され、新しい部品が取り直される。やめるときは「やめる」。

消えるのは、画面を組み立てるためのファイルのキャッシュだけ。 カレンダーの予定データ・連携している Google / GitHub アカウント・表示設定は消えない。同期をやり直す必要も、ログインし直す必要も無い。

Service Worker の登録自体も残したままなので、削除したあともオフラインで開ける状態は保たれる。

予定の中身がおかしいときは「再同期」

キャッシュ削除が入れ替えるのは画面を組み立てるファイルだけで、予定データには触らない。アプリの外 (Google カレンダー本体や別の端末) で消したはずの予定がいつまでも残る、といった予定の中身の食い違いは、同じ設定画面の「予定を再同期」で直す。キャッシュ削除のすぐ下にある。

ツールバーの「同期」が前回からの差分だけを取りに行くのに対して、「予定を再同期」は表示中のカレンダーの予定を Google から全件取り直して手元の複製を作り直す。差分の取りこぼしが原因で残ってしまった予定も、これで消える。

取り直す対象には取得済みのタスクリスト (Google ToDo リスト) も含まれる。 タスクにはカレンダーのような差分の仕組みが無く、ふだんの「同期」でも毎回そのリストの全件で 置き換わるので、再同期でも同じように全件で入れ替わる。

押すと「予定を全件取り直しますか?」と出るので「再同期する」を選ぶ。やめるときは「やめる」。取り直しが終わると「再同期しました」と出る ―― そのまま待てばよく、あとから「同期」を押し直す必要は無い。全件ぶんの通信になるので、回線が細いときは時間がかかる。

使い分け。 画面の見た目が古いまま → キャッシュ削除 (表示用ファイルの入れ替え)。予定が消えない・内容が合わない → 再同期 (予定データの取り直し)。

再同期で取り直すのは、手元に複製してある予定とタスクだけ。作業実績・連携している Google / GitHub アカウント・表示設定は消えず、サーバーに保存されているデータにも触らない (データの扱い)。

それでも直らないとき

  • デスクトップ版: ガワが古い可能性がある。 brew upgrade --cask love-rox/tap/kichijitsu で新しくする。それでも駄目なら brew reinstall --cask love-rox/tap/kichijitsu で入れ直す。
  • PWA: 一度アンインストールし、ブラウザでアプリ画面を開き直してから入れ直す。
  • ブラウザ: タブを全部閉じてから開き直す。

入れ直しで端末内のデータが消えても困らない。予定の正本は Google 側にあり、連携し直せば同期しなおされる (データの扱い)。

テーマを切り替える

設定画面の「テーマ」で、自動 / ライト / ダーク の3つから選べる。保存ボタンは無く、選んだ瞬間に切り替わる。

「自動」は、お使いの端末 (OS) の外観設定に合わせて自動で切り替わる。OS をダークにすればアプリもダークになり、明るく戻せば一緒に戻る。OS の設定に関係なくどちらかで固定したいときは「ライト」か「ダーク」を選ぶ。

この設定はこの端末のこのアプリ (ブラウザ) だけに保存される。仕事用の PC はライト、手元の PWA はダーク、といった使い分けができる。