はじめに
私は神奈川県で働く小動物臨床獣医師です。
ソフトウェア開発の経験はありませんでした。
フロントエンド・バックエンド・アーキテクチャ・UI/UX。そうした開発の知識がない状態で、2026年2月4日に開発を始めました。
今日(2026年6月)、VetCalc PROは272薬剤・7動物種対応のPWA(Progressive Web App)として、GitHub Pagesで無料公開されています。
これはその記録です。
なぜ作ったのか
動物病院の現場では、薬剤を投与するたびに計算が発生します。
体重(kg) × 用量(mg/kg) ÷ 濃度(mg/mL) = 投与量(mL)
これを頭の中で、または電卓で、手術中・救急対応中に毎回やります。
「0.5秒で答えが出るツールが欲しい」
それだけでした。
既存のアプリはありました。でも日本語で、多動物種(犬・猫・ウサギ・フェレット等)に対応して、無料で、広告なし、というものがなかった。
ないなら作るしかない。
AIとの試行錯誤
複数の生成AIを試しながら開発を進めました。
コードを書いた経験がなかったため、動かなかった時に何が間違っているのか自分で判断できず、何度も試行錯誤を繰り返しました。試行錯誤を続ける中で開発フローが安定していきました。
AIとの開発が始まる(2026年2月)
最初のメッセージはこれです。
「このファイルを分析してください。動物の薬用量を体重から計算するシートです。」
Excelファイルを渡しました。自分が臨床で使っていた薬用量計算シートです。
この頃から、主にClaudeを利用するようになりました。Claudeはファイルを読んで、構造を説明して、「Webツールに変換できますか?」という私の次の質問に、HTMLファイルを出力しました。
それが動いた。
ブラウザで開いて、体重を入力して、計算結果が出た瞬間、本当に驚きました。
開発の流れ
Phase 1(2月〜3月):単一HTMLの時代
最初は1つのHTMLファイルに全部入っていました。
- 犬・猫から始まり、ウサギ・フェレット・モルモット・ハムスター・ハリネズミを追加
- CRI(持続点滴)計算を追加
- 鑑別診断DB(115項目)を追加
- 中毒データベースを追加
- 血漿浸透圧・K補正・輸血計算・BSA計算…
追加するたびにファイルが大きくなり、最終的に920KB・23,162行になりました。
Phase 2(4月〜5月):限界と試行錯誤
920KBのHTMLは扱いにくくなっていました。この時点ではまだ公開を考えておらず、自分用のツールとして使っていました。
- GAS(Google Apps Script)でホスティングを試みる → ファイルサイズの壁で断念
- Dify(AIアプリ構築プラットフォーム)も試したが、今回の用途には合わなかった
- Pythonも少し触る → ライブラリの壁
色々試して、結局「シンプルなHTMLとJavaScriptで行く」という判断に落ち着きました。
Phase 3(5月〜6月):公開を決断
既存サービスでは自分の求める機能や運用方針(無料・広告なし・多動物種対応)を実現できなかったため、自分で公開することを決めました。
どこで配信するか考えて、GitHubに行き着きました。GitHubアカウントはリリース前から作っていましたが、実際にリポジトリを作ったのは公開を決めたこのタイミングです。
- モノリシックHTML →
drugs_main.js・app_main.js等に分離 - GitHub Pages(無料)でホスティング
- PWA対応(オフライン動作)
- Service Worker実装
技術スタック(最終)
フロントエンド: HTML / CSS / JavaScript(フレームワークなし)
薬剤DB: drugs_main.js(272薬剤)
ホスティング: GitHub Pages
PWA: Service Worker + manifest.json
バージョン管理: Git / GitHub
開発環境: VS Code + Claude AI
ビルドツールなし。npmなし。シンプルの極致です。
作って分かったこと
コードを書けなくても作れる時代になった
私は今でも、JavaScriptの構文を何も見ずにゼロからスラスラ書くことはできません。
しかし、「何を作りたいか」の論理構造を正確に言語化できれば、AIがコードという形にしてくれます。
重要なのは、文法の暗記ではなく以下の3点でした。
- 厳密な条件定義:あいまいな指示は、必ず動かないコードやバグを生みます。
- ステップ・バイ・ステップの検証:欲張って一気に機能を足すと、どこで壊れたか分からなくなります。
- エラーログを読み解く根気:動かない時に、AIへエラー出力をそのまま投げて「何が起きているか」を対話で詰め続ける粘り強さが必要です。
臨床知識と安全性の判断は代替できない
272薬剤の用量データは、添付文書・文献・臨床経験の積み重ねです。
AIはコードを書けますが、「この動物種に、この状況で、この用量を投与して本当に安全か」の最終判断はできません。
「コードの生成とリファクタリング=AI」、**「データの正確性と臨床安全性の担保=自分」**という役割分担が徹底できたからこそ、実用に耐えるツールになりました。
OSSの意味
Dr. Tim Hackettのエクセルワークシート(松葉洋宗先生・小宮山典寛先生による日本語版)を、臨床で何年も使わせてもらいました。タダで。
「タダで使わせてくれるんだ!!」という驚きと感謝が、VCPをOSS・無料・広告なしで公開した直接の動機です。
勝手に恩返しのつもりです。
現在のVetCalc PRO
- URL: https://vetcalcpro.github.io/vetcalc-pro/
- 薬剤数: 272薬剤
- 対応動物種: 犬・猫・ウサギ・フェレット・モルモット・ハムスター・ハリネズミ
- 計算ツール: 血漿浸透圧・K補正・CRI・輸血・チョコレート中毒・BSA等
- ライセンス: コードMIT / 薬剤データ独自ライセンス(個人利用のみ)
- 料金: 無料・広告なし
公開後に起きた意外なこと
公開してから約2週間、GitHubのTraffic(アクセスログ)を見ていて、興味深い傾向に気づきました。
私は当初、現場の獣医師が一番欲しがるのは薬用量データそのもの(drugs_main.js)だろうと考えていました。しかし実際には、薬剤データファイルよりも、アプリのロジック本体(app_main.js)やコミット履歴(commits)の方が多く閲覧されていました。
| ページ | Views |
|---|---|
| Overview | 112 |
| /pulse | 26 |
| /graphs/traffic | 21 |
| /blob/main/src/app_main.js | 19 |
| /commits | 17 |
| /tree/main/src | 12 |
| /blob/main/data/drugs_main.js | 8 |
また、2週間での総クローン数は884回(ユニーククローナー数355人)を記録していました。これらの数値には、開発者による検証目的のアクセスや自動化されたアクセスも含まれている可能性があります。そのため、この数字がそのまま「実際の利用者数」を示しているわけではありません。
ただ、データの閲覧傾向から見ても、「薬用量ツールとしての利便性」だけでなく、「非エンジニアがAIを使ってどうやってこの規模のアプリを構築したのか」という設計構造や開発プロセスそのものに興味を持って見にきている人が一定数いる、ということは実感できました。
完成した成果物だけでなく、その「作り方」や「試行錯誤の軌跡」自体に価値が生まれるのは、AI時代の開発ならではの面白い現象だと感じています。
おわりに
2月4日に「このExcelをWebツールにできますか?」と聞いてから4ヶ月。
フロントエンドもバックエンドも知らないまま、ターミナルにドキドキしながら、利用制限と戦いながら、ここまで来ました。
このアプリは、数か月にわたり100を超えるチャットで試行錯誤を重ねて完成しました。
コードを知らない獣医師と、臨床を知らないAIが、お互いの得意なことを持ち寄って作ったツールです。
臨床現場で誰かの0.5秒を短縮できたら、それだけで十分です。
フィードバック: https://forms.gle/F77zxqSErFUafBAB8
GitHub: https://github.com/VetCalcPRO/vetcalc-pro
Issues: https://github.com/VetCalcPRO/vetcalc-pro/issues