プログラミングの知識がなくても、ChatGPTと会話するだけでWebアプリを作れる。
それは本当でしょうか?
この回では、ブラウザで動くタスク管理アプリを、指示を重ねて育てていった過程を、実際に出した指示とつまずいた点とあわせて紹介します。
アプリ作りに興味がある方は、ぜひ読んで下さい!
一発では、思いどおりにならない
プログラミングの知識がなくても、ChatGPTと会話するだけでWebアプリを作れます。
ただ、一発で思いどおりのものはできないので、指示を重ねて育てていく進め方になります。
タスク管理アプリを例に、どんな指示を出したかを順に紹介します。
最初の指示
最初は、これだけを頼みました。
ブラウザで動く、タスク管理アプリを作ってください。
HTML・CSS・JavaScriptをまとめて1つのファイルにしてください。
使い方の説明つきで、コードが出ました。
タスクを入力して追加でき、クリックすると取り消し線で完了、削除ボタンで消せます。
ただ、入力欄が小さく、リロードすると入力したタスクが消えました。
これではタスク管理に使えません。
見た目と保存を直す(2〜5回目)
2回目の指示は、全体の幅を1,000ピクセルほどにする、入力したタスクをローカルストレージに保存する、削除ボタンは左・タスクは右に置いてその間を50ピクセル空ける、でした。
ページを再読み込みしても、タスクが残るようになります。
ただ、幅が広すぎました。
3回目で、幅を750ピクセルにし、入力欄と追加ボタンを同じ行に、ボタン幅を200ピクセル前後に、削除ボタンとタスクの間隔を30ピクセルにしました。
ところが、入力欄とボタンがくっつきすぎていて、間隔がうまく直っていません。
4回目は、細かい指定です。
入力欄と追加ボタンの間に30ピクセル、行の並び順を「チェックボックス・タスク内容・削除ボタン」の順に、要素の間隔は50ピクセル。
完了したタスクが分かるように、チェックボックスも付けました。
5回目で、タイトルと入力欄の間に当日の日付を「yyyy/mm/dd」で表示、「すべてクリア」ボタンの追加(確認メッセージつき)、チェックを入れたらタスク名と削除ボタンの不透明度を0.5にする、と頼みました。
ここまでで、かなり使えるようになりました。
CSVで書き出し・読み込み(6〜8回目)
ローカルストレージは、ブラウザの中にしか保存されません。
別のブラウザやパソコンでは見られないので、CSVで書き出す機能を頼みました。
見出しは「日付/チェックの有無/タスク内容」です。
書き出したCSVは、文字化けしました。
メモ帳で直して開くと読めたので、7回目で文字コードを「ANSI」にするよう指示しています。
あわせて、次の変更も頼みました。
- 「日付」と「チェックの有無」の順番を逆にし、「タスク完了」に名前を変える
- 完了は「◯」、未完了は「✕」にする
- タスクが0件のときは「タスクがありません。」とエラーを出す
- 書き出しと「すべてクリア」の間に「CSV読み込み」ボタンを作る
ブラウザの制約で、保存先のフォルダは指定できず、ダウンロードフォルダに保存されます。
保存先を変えたいときは、ブラウザの設定でダウンロード先を変えます。
8回目で、読み込みの機能を実装し、ボタンが1行に並んで見づらいので、1行目を「タスクを追加」と「すべてクリア」、2行目を「CSV書き出し」と「CSV読み込み」に分けました。
最後に、ボタンの位置を揃えて、完成です。
レベルアップ:修正・時間・実施日
実際に使うと、足りないところが見えてきます。
タスクの内容を修正できない、日付を指定できない、実行する時間を足したい、の3点でした。
指示は、全体の幅を伸ばす、削除ボタンの左に「修正」ボタンを作る、押すと内容を編集できるようにする、ボタンにカーソルを乗せたときに不透明度を0.7にする、でした。
幅が広すぎたので、あとから100ピクセル狭めています。
修正ボタンを押すと保存ボタンに変わり、押すまで編集画面を維持する、という仕様も入れました。
作業時間は、最初に「チェックボックスと数字(25、50、75、100)」と頼みました。
ところが、意図がうまく伝わりませんでした。
伝え方が悪かったようで、タスクの入力欄を狭くして横にラジオボタンを並べ、選んだ数字を「タスク名(◯分)」のように表示する形に直しました。
さらに、「今日の日付」と「現在時刻」を同じ高さに並べ、間隔は30ピクセル前後にし、その右に「タスク実施日」をカレンダーから選べるようにしました。
CSVの見出しも、「タスク完了/タスク実施日/タスク内容/時間」に変えています。
直らなかった修正機能
最後までうまくいかなかったのが、修正機能です。
保存ボタンを押しても何も起こらず、「保存したら修正内容を反映して、元の状態に戻す」と頼み直しても直りませんでした。
何度か試したあと、修正機能そのものを外しました。
タスクの入力は長文ではないので、書き直すほうが早いからです。
指示を出すときのコツ
- 一度に直す点は、箇条書きで具体的に。
ピクセルや順番など、数字で指定すると伝わる
- うまくいかない部分は、画面の状態を言葉で説明する
- 何度やっても直らない機能は、外す判断もある
この規模のアプリを、私が自分で作ろうとしたら、おそらく3か月はかかっていたと思います。
ChatGPTは、わずか1時間弱で完成させてくれました。