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]
invall 一括棚卸し(使用中の目薬を順に聞く。空 Enter で記録上の本数のまま、q で中止) [-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]
よく使うその他のコマンド
コマンド |
内容 |
|---|---|
|
棚卸し。未開封の在庫数を2本とする |
|
一括棚卸し(来院の直前に)。使用中の目薬を順に聞くので未開封の本数を入れる。 空 Enter で記録上の本数のまま。本数が同じ目薬も棚卸しとして記録する |
|
ジェネリックなどで実際にもらう目薬の名前が変わったとき |
|
ライフタイム(ID は |
|
点眼パターン変更。直近の1本をイレギュラーにし、それより前の実績を推定に使わない |
|
次を開封せずに使用中の1本を終わらせる(中止・紛失など) |
|
目薬の使用をやめた(サマリーに出さない) |
|
随時使用に変更 |
|
年次更新。一昨年以前の記録をバックアップ・CSV に退避 |
一括棚卸し(invall)の例です。使用中の目薬を順に聞くので、未開封の本数を入れます
(空 Enter で記録上の本数のまま、q か Ctrl-D で中止して何も記録しない)。
-d で日付、-m で全部の記録に入るコメントを指定できます。
eyedrop> invall -m 来院前
1 コソプト(現在:ドルモロール) [3]:
2 キサラタン(現在:ラタノプロスト) [3]: 2
3 グラナテック [3]:
4 シアノコバラミン [3]:
2026-10-06 4件を記録(うち本数の修正 1件)
キサラタン: 3 → 2