CLI版

コマンドラインで動く版です。Android版とは別にデータを持ちます。

動作環境

  • Linux(Ubuntu 24.04 で確認)

  • Python 3.9 以上(3.9〜3.14 でテストが通ることを確認。3.8 以前は動きません)

  • 標準ライブラリだけで動きます。追加のパッケージは不要です

インストール

$ git clone https://github.com/kuma35/eyedrop.git eyedrop
$ cd eyedrop
$ ./install.sh
$ eyedrop --version
$ man eyedrop

install.sh は次のものを入れます(既定は PREFIX=$HOME)。

  • $PREFIX/bin/eyedrop: コマンド

  • $PREFIX/share/eyedrop/drugdb/: 本体(Python のファイル)

  • $PREFIX/share/man/man1/eyedrop.1: man ページ(eyedrop(コマンド) と同じ内容)

PREFIX=~/.local ./install.sh のように入れる場所を変えられます。 $PREFIX/bin が PATH に入っていないときは、PATH に追加するか、ログインし直してください (Ubuntu では ~/bin と ~/.local/bin は、あればログイン時に PATH に入ります)。 更新するときは、git pull してからもう一度 ./install.sh を実行します。 ./install.sh --uninstall で取り除きます(データベースは残します)。

インストールせずに、リポジトリから drugdb/cmd_drugdb.sh``(または ``python3 -m drugdb)で同じように使うこともできます。

データベース

データベースは、既定では ~/.local/share/eyedrop/eyedrop.db です ($XDG_DATA_HOME があれば $XDG_DATA_HOME/eyedrop/eyedrop.db)。 無ければフォルダごと新しく作り、そのことを知らせます。

別の場所を使う場合は -f オプションか環境変数 EYEDROP_DB で指定します。 指定したファイルが無いとエラーになります(打ち間違いで空のデータベースを見てしまわないため)。 新しく作るときは --create を付けます。 Android版のバックアップのファイルも、そのまま指定して使えます。

$ eyedrop -f ~/eyedrop-backup-20261001.db drugs
$ eyedrop -f ~/new.db --create add 目薬A
$ export EYEDROP_DB=~/eyedrop.db

使用例

以下の例は、説明用の架空のデータ(目薬A・B・C)です。

日付は -d 2026-07-10・-d 2026/7/10・-d 7/10(今年)で指定できます。省略すると今日です。

目薬を登録する

$ eyedrop add 目薬A
登録しました: 1 目薬A
$ eyedrop add 目薬B --max-days 28     # 開封後4週間で廃棄(廃棄期限)
登録しました: 2 目薬B
$ eyedrop add 目薬C --as-needed       # 随時使用
登録しました: 3 目薬C

処方された(入庫)・開封した

$ eyedrop in 目薬A 3 -d 2026-07-10    # 3本処方された
在庫: 3
$ eyedrop open 目薬A -d 2026-07-21    # 新しい1本を開封
在庫: 2

open は、在庫から1本減らし、使っていた1本を「使い切り」にして、 新しい1本の使用を開始します。間違えた開封は undoopen で取り消せます。

一覧・履歴を見る

$ eyedrop drugs
  1 目薬A  在庫0
  2 目薬B  在庫0  (廃棄期限28日)
  3 目薬C  在庫2  (随時使用)

$ eyedrop life 目薬A
    1 2026-05-01 〜 2026-05-27  26日
    2 2026-05-27 〜 2026-06-24  28日
    3 2026-06-24 〜 2026-07-21  27日
    4 2026-07-21 〜 2026-08-15  25日
    5 2026-08-15 〜 2026-09-11  27日
    6 2026-09-11 〜 (使用中)       20日

$ eyedrop stock 目薬A
    1 2026-05-01 入庫  3  残 3
    2 2026-05-01 出庫  1  残 2
    3 2026-05-27 出庫  1  残 1
    4 2026-06-24 出庫  1  残 0
    5 2026-07-10 入庫  3  残 3
    6 2026-07-21 出庫  1  残 2
    7 2026-08-15 出庫  1  残 1
    8 2026-09-11 出庫  1  残 0

life の左端の番号はライフタイム(開封から使い切りまで)の ID、stock の左端は在庫記録の ID です。 使用中の1本の日数は、実行した日までの日数です。

受診前サマリーを出す

受診の直前に report を実行します。出力は Markdown です(--plain でテキスト版、-o ファイル でファイルにも出力)。

$ eyedrop report -v 2026-09-25

出力(抜粋)はこうなります。

# 目薬 受診前サマリー

- 来院日 2026-09-25
- 次回来院日 2026-11-24(60日後)

## 次回来院までに必要な本数

| 代表目薬名(目薬名) | 必要本数 | 足りない日数 | 在庫残日数 | 未開封 | 通常期間 | 開封分残日数 |
|---|---:|---:|---:|---:|---:|---:|
| 目薬A | 3 | 48 | 12 | 0 | 26 | 12 |
| 目薬B | 3 | 50 | 10 | 0 | 31 | 10 |
| 目薬C | 随時 |  |  | 0 |  |  |

## 目薬在庫

| 代表目薬名 | 未開封個数 | 開封分開封日 | 経過日数 | 推定残日数 | 日数 |
|---|---:|---|---:|---:|---:|
| 目薬A | 0 | 9/11 | 14 | 12 | 27 |
| 目薬B | 0 | 9/4 | 21 | 10 | 30 |

このほか、各項目の説明と「推定の根拠」(廃棄期限超過などの注意点があれば「注意」も)が出力されます。 計算のしかたは 推定のしくみ を参照してください。

出力した Markdown は、そのまま Evernote Web のノートなどに貼り付けられます。 --ai を付けると、チャットAI に貼り付ける指示と JSON を出力します。

来院日・次回来院日を指定する

-n(--next)で次回来院日を日付か期間で指定できます。 省略すると来院日の2ヶ月後です(interval で変更できます)。

$ eyedrop report -n 11/20       # 次回来院日を日付で
$ eyedrop report -n 4週間       # 来院日から4週間後
$ eyedrop interval 8週間        # 既定の期間を8週間に

期間は「2ヶ月」「8週間」「60日」「60」のように指定できます(1ヶ月=30日)。

-v(--visit)で来院日を指定すると、その日時点の在庫・開封中の1本・実績で計算します。 過去の受診日で試して、実際に処方された本数と比べるのに便利です。

$ eyedrop report -v 2026-09-20 -n 2026-11-15

対話シェル

引数なしで起動すると対話シェルになります。help でコマンド一覧、コマンド -h でそのコマンドのヘルプが出ます。 対話シェルでは visit・next で来院日・次回来院日を設定しておくと、以後の report はその日付で計算します。

$ eyedrop
目薬管理 (help でコマンド一覧、 q で終了)
eyedrop> visit 9/25
来院日 2026-09-25
次回来院日 2026-11-24(60日後)(既定: 2ヶ月後)
eyedrop> next 11/20
来院日 2026-09-25
次回来院日 2026-11-20(56日後)
eyedrop> report

コマンド一覧

eyedrop> help
各サブコマンドの詳しいヘルプは -h(例: drugs -h、または help drugs)
  add        薬を登録  [-d DATE] [--max-days MAX_DAYS] [--default-days DEFAULT_DAYS] [--as-needed] [-m MEMO]
  alias      目薬名を追加(代表目薬名はそのまま。-d で開始日)  [-d DATE] [-m MEMO]
  dellife    ライフタイムを削除(訂正用)
  delstock   在庫記録を削除(訂正用)
  drugs      薬の一覧  [-a]
  end        薬の使用を終了(サマリーに出さない)  [-d DATE]
  endname    目薬名の利用終了日を設定(全部終了した代表目薬名は利用終了扱い)  [-d DATE] [--clear]
  finish     開封中の1本を使用終了(次を開封しない場合)  [-d DATE] [-m MEMO] [-i]
  help       help [コマンド]: コマンド一覧またはコマンドのヘルプ
  import     スプレッドシート(eyedrop-stock.ods)を取り込む
  in         入庫(処方された)  [-d DATE] [-m MEMO]
  interval   次回来院日の既定(来院日から何日後か)を設定・表示
  inv        棚卸し(未開封の在庫数を qty とする)  [-d DATE] [-m MEMO]
  irregular  ライフタイムをイレギュラー(推定に使わない)にする  [--clear] [-m MEMO]
  life       ライフタイムの履歴
  next       次回来院日を設定・表示(既定は来院日 + interval の期間)  [-r]
  note       日付付きメモを追加  [-d DATE]
  open       開封(在庫から1本出して使い始める。前の1本は使用終了)  [-d DATE] [-m MEMO] [--no-stock]
  out        出庫(開封以外で在庫が減った。開封は open)  [-d DATE] [-m MEMO]
  pattern    点眼パターン変更(直近の開封をイレギュラーにし、それより前を推定に使わない)  [-d DATE] [-m MEMO]
  q          終了
  quit       終了
  report     受診前サマリー(来院日から次回来院日までの必要本数)  [-v DATE] [-n 日付|期間] [--margin MARGIN] [--plain] [--ai] [-o FILE]
  rollover   年次更新(バックアップ・エクスポート・在庫繰越)  [-o OUT]
  set        薬の項目を変更(例: set キサラタン max_days 28)
  show       薬の詳細
  stock      在庫の履歴
  undoopen   一番新しい開封を取り消す(在庫を戻し、前の1本を使用中に戻す)
  visit      来院日を設定・表示(report の基準日。既定は今日)  [-r]

よく使うその他のコマンド

コマンド

内容

inv 目薬A 2

棚卸し。未開封の在庫数を2本とする

alias 目薬A ジェネリック名

ジェネリックなどで実際にもらう目薬の名前が変わったとき

irregular 5 -m 紛失

ライフタイム(ID は life で表示)をイレギュラーにし、推定から外す

pattern 目薬A -m 1日2回→1回

点眼パターン変更。直近の1本をイレギュラーにし、それより前の実績を推定に使わない

finish 目薬A -i -m 中止

次を開封せずに使用中の1本を終わらせる(中止・紛失など)

end 目薬A

目薬の使用をやめた(サマリーに出さない)

set 目薬C as_needed yes

随時使用に変更

rollover

年次更新。一昨年以前の記録をバックアップ・CSV に退避