メインコンテンツへスキップ
アプリを育てる① 機能を足す
レッスン 11 / 15|16分で読めます

アプリを育てる① 機能を足す

薬の種類選択、計算履歴、見た目調整。Claude Codeで一気に3つの機能を追加する回。

第5回でChatGPTで作ったツール、まだ手元にありますか。 体重を入れると、薬の目安量が出る、あれです。

第4段からは、それをClaude Codeで「育てて」いきます。 第11回(今日)と第12回の2回で、機能を足し、見た目を整え、最後には複数のファイルに分けていきます。

今日のゴールは、3つの機能を足すこと。

  1. 薬の種類を選べるようにする
  2. 計算結果の履歴を画面に残す
  3. 見た目をもう一段整える
今日足す3機能のbefore/after。①薬種類ドロップダウン追加 ②計算履歴表追加 ③スマホ対応
3機能を、Claude Code に1つずつ追加してもらいます。
薬の種類を選び、禁忌は警告にし、計算履歴が増えるところまでを実画面で確認します。

所要時間12分。 道具は、第10回で動かせるようになったClaude Codeです。

準備

ターミナルで、第5回のツールを置いてあるフォルダに移動します。

cd ~/Desktop/vibe-test

そして、claude を起動します。

claude
ターミナルで cd → ls → claude の3ステップで Claude Code が起動した画面
前回作ったフォルダで、Claude Code を起動します。

ここから、会話だけで進めます。

ステップ1 薬の種類を増やす

Claude Codeに、こう話しかけます。

今あるindex.htmlを見てください。 このツールに、薬の種類を選択できるドロップダウンを追加してください。

候補は3つ: ・アセトアミノフェン(10〜15mg/kg、最大500mg/回) ・イブプロフェン(5〜10mg/kg、最大400mg/回) ・アスピリン(小児には推奨されません、と表示)

選んだ薬に応じて、計算式が切り替わるようにしてください。 アスピリンを選んだ場合は、計算結果ではなく赤字の警告を表示します。

Claude Code に薬種類追加の詳細プロンプトを送信している画面
詳細な指示をそのまま貼って送ります。Claude Code は既存ファイルを読んで、必要な箇所だけ追記。

「ドロップダウン」というのは、クリックすると選択肢がペロンと出てくる、よくある入力部品のこと。 プルダウンとも呼ばれます。

数秒で、ファイルが書き換わります。

ブラウザで index.html を開き直してみます。 ドロップダウンが追加されていて、薬を選ぶと計算式が切り替わるはずです。

ドロップダウン追加前と追加後のアプリ画面の左右比較
1機能追加で、ぐっと使い勝手が上がります。
アスピリン選択時に赤い警告ボックス「アスピリンは小児には推奨されません」が表示される画面
条件分岐で、安全側に倒す。AI に「禁忌は警告で」と頼むだけで実装してくれます。

「動いた」を確認できたら、次に進みます。 動かなかった場合は、Claude Codeに状況を伝えます。

ブラウザで開きましたが、ドロップダウンが表示されません。 何が起きているか、見て直してください。

これで、たいてい直してくれます。

ステップ2 履歴を画面に残す

次に、計算した結果を画面に残しておく機能を足します。

計算ボタンを押すたびに、結果を画面の下半分に履歴として残してください。 「日時」「薬の名前」「体重」「計算結果」の4つを表に並べます。 履歴は、ページを閉じるとリセットされてOKです。

計算履歴が表として表示されている画面。日時・薬名・体重・結果の4列、5行のゼブラ表
履歴機能を追加するだけで、外来での「さっき計算したやつ」が辿れるようになります。
薬の種類をアスピリンにしたときに赤い警告が表示され、計算履歴に結果が残っている実画面
機能を足したら、警告と履歴の両方が期待どおり出るかを画面で見ます。

ここで、ブラウザの中でデータを覚えさせる、という新しい概念が登場します。

データを長く残したい場合は、データベース(第4回で出てきた)が必要になりますが、今日は「ページを開いている間だけ」覚えておく、というシンプルな仕組みで作ります。

localStorage と sessionStorage の比較図。localStorage(長期保存・piggy bank)vs sessionStorage(一時データ・memo)
ブラウザの中で覚える方法は、2種類。今回はタブを閉じると消えるsessionStorage を使います。

数秒後、index.html が更新されます。 何回か計算してみて、表が増えていくのを確認します。

ステップ3 見た目を整える

ここまでで、機能は揃いました。 最後に、見た目をもう一段整えます。

全体のデザインを、もう少し読みやすくしたいです。 ・余白を増やして、要素ごとにゆったりさせる ・タイトルと注意書きを目立たせる ・ボタンを大きく、押しやすくする ・履歴の表に、薄い線とゼブラ(行ごとの色違い)を入れる ・スマホで見ても崩れないようにする

「スマホで見ても崩れない」という指定を、レスポンシブデザインと呼びます。

レスポンシブというのは、画面の大きさに応じて、自動でレイアウトが変わってくれる作りのこと。 私のイメージは、伸び縮みする服。 パソコンでもスマホでも、同じURLで快適に見られる、現代のWebの基本です。

見た目を整える前と後の比較。before(地味)/after(余白・タイポ・ゼブラで読みやすく)
同じ機能でも、見た目で印象がぐっと変わります。
iPhone のスマホ画面で完成した解熱薬計算ツールが表示されている画面。レスポンシブ対応で要素がきれいに収まっている
スマホでも崩れない。外来で iPhone から使えるレベルになりました。

これも、AIに一言伝えるだけで対応してくれます。

今日のつまずきポイント

実際にやってみると、よくぶつかる場面が2つあります。

1. ブラウザに反映されない

ブラウザは、ファイルを「キャッシュ」(前に見たもののコピー)して表示することがあります。 新しい変更が反映されないときは、キーボードのCtrl + F5(MacならCmd + Shift + R)で「強制再読み込み」をかけます。

Mac(Cmd+Shift+R)と Windows(Ctrl+F5)の強制再読み込みショートカット早見カード
このショートカットをスクショして、いつでも見返せるように。

2. 想定と違うものが出てくる

これは指示の曖昧さが原因です。 返ってきたものを見ながら、AIに「ここはこうしたい」と追加で具体的に伝えます。

ドロップダウンの位置が、入力欄の下にあります。 入力欄の上に表示してください。

事実と希望を分けて書く(第6回・第7回でも触れた、3行ルール)。 これだけで、修正の精度が上がります。

今日のまとめ

3行で振り返ります。

  • アプリは「育てる」もの。1本目を作ってからが本番
  • 機能追加・履歴・見た目の3つを、それぞれ独立に頼む
  • 直してほしいときは、事実と希望を分けて伝える

次回予告

第12回は、今日育てたアプリを、ファイル分割という工程に通します。 1枚のHTMLに全部詰まっている状態から、設計図(HTML)、見た目(CSS)、動き(JavaScript)の3つに分けます。

リファクタリングという、ちょっと中級っぽい言葉が、実はそんなに怖くない、という話です。


1本目を作るのは、大変。 2本目から、爆発的に楽になります。

連載の更新は、メルマガ「おかもんだより」でもお知らせします。 よかったら登録してお待ちください。


演習:30分の宿題

第11回は、自分のアプリに機能を1つ追加する回。

自分のアプリに、機能を1つ足す

第5回・第10回で作ったアプリのうち、どちらか1つを Claude Code で開いて、機能を1つだけ足してください。

候補機能(職種別)

医師

  • 薬の選択肢を増やす(5種類以上)
  • 計算結果に「腎機能補正」のオプションを追加
  • 「印刷ボタン」で PDF出力できる機能

看護師・薬剤師

  • チェックリストの保存機能
  • 完了率のプログレスバー表示
  • 異常値検出時のアラート機能

PT/OT・ST・検査・栄養・事務

  • 過去の入力履歴を表で保持
  • グラフ描画機能(時系列で結果を視覚化)
  • 結果のCSVエクスポート

1つだけ」がポイント。一気に3つ足すと、どれが原因で不具合が出たか分からなくなります。1機能ずつ動作確認、を習慣にすると事故が減ります。


医療職別 実例ギャラリー:機能の足し方が分かれた3例

例1:「機能を足しすぎて使いにくくなった」失敗例(架空)

外来で使う薬計算ツールに、欲張って 15機能を一気に追加。 「ドロップダウン × 入力欄 × チェックボックス × タブ × 履歴 × グラフ × 印刷 × エクスポート × 共有 × ...」。 結果、外来で「どこを押せばいいか分からない」状態に。

教訓:機能は足し算より引き算。最も使う1機能だけにフォーカスする方が、現場で実用的。

例2:「最小構成で続けて成功」例

別の医師は、解熱薬計算ツールを1機能のみで運用。「体重を入れる、目安量が出る」だけ。 ただし毎日使うから、改善要望が現場から自然に出てきて、必要な分だけ機能を追加。 3ヶ月後に5機能に成長、しかし全部使われている状態。

教訓:使う頻度が高いツールほど、自然に機能が育つ

例3:「保護者にも使えるように」改造例

私の解熱薬計算ツールを、保護者向けに改造した版。 体重入力 + ボタンのほかに、「いつ飲ませたか」の記録機能を追加。 6時間ルールの自動チェック(次回投与可能時刻が表示される)まで実装。

外来で「これで管理できますよ」と URL を渡すと、保護者の安心感がぐっと上がるそうです。


もっと深く:localStorage の制限と、個人情報

第11回で出てきた「ブラウザの中で覚える」機能(履歴)は、localStorage / sessionStorage という仕組みで実装されます。

localStorage の制限

  • 容量上限:5MB 程度(ブラウザによって異なる)
  • ブラウザ・端末ごとに別々:別のPCからは見えない
  • ブラウザの「閲覧履歴削除」で消える

入れていい情報・悪い情報

✓ 入れていい:自分用の設定、計算履歴(自分しか見ない)、UI の状態 ✗ 入れたら危険:氏名、ID、連絡先、診療情報、APIキー

理由は、localStorage の中身は「ブラウザのDevToolsから誰でも読める」から。 PC を共有している、家族と PC を使っている、職場 PC で個人情報を入れている、などのケースで漏洩リスクがある。

localStorage は自分専用のメモ帳」と捉えて、他人に見られて困る情報は入れない。 これだけ守れば、活用範囲はぐっと広がります。


動画で見る