メインコンテンツへスキップ
AMPL/ dev
開発系講座一覧

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

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

このレッスンで

終わる頃には、次ができるようになります

  • Claude Codeに薬の種類選択ドロップダウンの追加を具体的に指示できる
  • 計算履歴をsessionStorageで画面に残す仕組みを説明できる
  • レスポンシブデザインなど見た目の改善点をAIに具体的に伝えられる

第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行ルール)。 これだけで、修正の精度が上がります。

ㅤ

演習: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 は自分専用のメモ帳」と捉えて、他人に見られて困る情報は入れない。 これだけ守れば、活用範囲はぐっと広がります。


動画で見る

このレッスンは役に立ちましたか?