1-1：ChatGPTを使ってToDoアプリを作ってみた

自学のためにChatGPTを活用してアプリ開発をしていきます。
第1回として __ToDoアプリ__ を作成します。

## 今回実装したい機能（初期機能）
1.タスクの __登録__:hatching_chick:
2.タスクの __削除__:hatched_chick:

## ChatGPTへのプロンプト
Eclipseをインストールしました。
Javaでデスクトップアプリを作成したいです。
手始めにToDoアプリを作成したいです。
手順を小学生でもわかるように教えて。
機能はタスク登録とタスク削除。

## ChatGPTの回答（要約）
（「小学生でもわかるように」と伝えたのでめちゃくちゃ初心者向けに手取り足取り教えてくれました(ﾟ▽ﾟ*)）

### ①準備

1. Eclipseを開く
2. Javaの設定（JDK）を確認
　⇒JDKがよくわからなかったので、JDKが入っているかの確認方法やJDKのダウンロード方法もChatGPTに教えてもらいながら進めました。
 
### ②新しいプロジェクトを作る
1. 新規プロジェクトの作成
2. パッケージの作成

### ③ToDoアプリを作る（コード）
ChatGPTが回答したコード
```java:ToDoApp.java
public class ToDoApp {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		
		// ウィンドウの作成
        JFrame frame = new JFrame("ToDoアプリ");
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());

        // ToDoリストの作成
        DefaultListModel<String> listModel = new DefaultListModel<>();
        JList<String> list = new JList<>(listModel);
        JScrollPane scrollPane = new JScrollPane(list);

        // 入力フィールドとボタン
        JTextField textField = new JTextField();
        JButton addButton = new JButton("追加");
        JButton removeButton = new JButton("削除");

        // 追加ボタンの動作を設定
        addButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String task = textField.getText();
                if (!task.isEmpty()) {
                    listModel.addElement(task);
                    textField.setText("");
                }
            }
        });

        // 削除ボタンの動作を設定
        removeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int selectedIndex = list.getSelectedIndex();
                if (selectedIndex != -1) {
                    listModel.remove(selectedIndex);
                }
            }
        });

        // 入力エリアのパネル
        JPanel panel = new JPanel(new BorderLayout());
        panel.add(textField, BorderLayout.CENTER);
        panel.add(addButton, BorderLayout.EAST);

        // ボタンパネル
        JPanel buttonPanel = new JPanel();
        buttonPanel.add(removeButton);

        // フレームにコンポーネントを追加
        frame.add(panel, BorderLayout.NORTH);
        frame.add(scrollPane, BorderLayout.CENTER);
        frame.add(buttonPanel, BorderLayout.SOUTH);

        // ウィンドウを表示
        frame.setVisible(true);

	}

}
```

## 実際に動かしてみる
### ⓪初期表示
![ToDoApp_1_初期表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3907596/852c31b5-4dab-4d95-b19d-aca015cfc94e.png)

### ①タスク登録
・ウィンドウにタスク名を入力
⇒「追加」ボタンを押下
![ToDoApp_1_タスク登録1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3907596/ddbb76a5-7e10-4268-930f-f040a9b32ecb.png)

・タスクが登録される
![ToDoApp_1_タスク登録2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3907596/3c8252e0-03c6-4914-b881-dc77f80252be.png)
タスクが登録された！(*^o^*)

### ②タスクの削除
・削除したいタスクを選択
⇒「削除」ボタンを押下
![ToDoApp_1_タスク削除1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3907596/68177e09-266f-4e75-99e9-021a8fab20d0.png)

・タスクが削除される
![ToDoApp_1_タスク削除2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3907596/11a52ca4-c434-4eaa-891b-bdeb76c885a3.png)
タスクが削除された！＼(◎o◎)／！

## 今回の感想
初めてChatGPTを使ってアプリを作ってみたけど、
こんなに簡単にできるものなのかと感動。

## 課題と欠点
しかし、重大な欠点が・・・
アプリを一度閉じてしまうと登録したタスクが消えてしまいます(ﾟωﾟ)

・ウィンドウを「×」で閉じてからアプリを再起動
![ToDoApp_1_課題1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3907596/46eb0839-8a7a-4af9-9f2b-772706e93fb8.png)

・登録したはずのタスクが消えている・・・
![ToDoApp_1_課題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3907596/1583b09a-2521-4dde-98be-3e39b5d8c36e.png)

## 次回予告
__保存機能__ を追加します。