🤖
【Cline実況】Cornell Note作成記録【Windows Forms】
最近AIエージェントを導入したのですが、まだちゃんとした(プログラミングらしい)使い方は出来ていなかったので挑戦してみました
導入
最近、Cornell Noteの存在を思い出しました
昔憧れたのですが、Obsidianで再現する方法が有料なので諦めて使ったことがありませんでした
そこでObsidianで再現するのは諦めて、新たにアプリを作成してみることにしました
言語は私が使い慣れているC#(Windows Forms)を使用します
「今時ならもっといい感じのフレームワークを勉強したほうがいいだろうな…」と思いながら、昔の知識から更新できていないのだ
本編
プロジェクト作成以降の作業を録画しておきました
Clineとのやりとりなどが記録されています
タスク一覧
Cornell Note アプリケーション開発タスク
1. プロジェクト設定と基本UI構築 ✅
- Windows Forms プロジェクトの作成(既存のプロジェクトを使用)
-
メインフォーム (
Form1
) のレイアウト設計- ノートエリア (RichTextBox) の配置
- キューエリア (RichTextBox) の配置
- サマリーエリア (RichTextBox) の配置
- 各エリアのサイズ調整と区切り線の描画 (PanelやLabelを使用)
- メニューバーまたはボタンの追加 (保存、読み込みなど)
2. テキスト編集機能 ✅
- 各エリア (ノート、キュー、サマリー) へのテキスト入力機能の実装
- (オプション)基本的な書式設定機能(太字、斜体など)
3. ノート保存機能 ✅
- 保存ボタンまたはメニュー項目のイベントハンドラ実装
-
SaveFileDialog
を使用した保存場所とファイル名の選択 - 各エリアのテキストデータをファイルに保存するロジック (例: プレーンテキスト、JSON、XML)
4. ノート読み込み機能 ✅
- 読み込みボタンまたはメニュー項目のイベントハンドラ実装
-
OpenFileDialog
を使用した読み込みファイルの選択 - ファイルからテキストデータを読み込み、各エリアに表示するロジック
Cornell Note アプリケーション開発タスク
5. UI改善
- 右側パネルの幅調整
- 右側パネルの背景色設定
- ノートテキストボックスの幅調整
6. スクロール同期機能
- NoteとCueのテキストボックスのスクロール値を同期
7. 追加機能
- ノートのタイトルテキストボックスの追加
- Ctrl+Sでノートの保存機能
- タブリストの追加
- 文章の範囲を選択し、右クリックのメニューに「AI要約」「AIのコメント」を追加
- (オプション) 印刷機能の実装
- (オプション) ノート内検索機能の実装
8. テストとデバッグ
- 各機能の動作テスト
- バグ修正とパフォーマンス改善
開発記録
Cornell Note アプリケーション開発記録
1. タスクリストの作成
- ユーザーからの指示: Windows Formsを使ってCornell Noteを作成したい。まず、それを作成するために必要なタスクを書き出してください。タスクを書き出すファイルは新しくMardownファイルを作成してください
- 実行したタスク: Cornell Noteアプリケーションを作成するためのタスクをリストアップし、それを
tasks.md
という新しいMarkdownファイルに書き出しました。 - 結果:
tasks.md
ファイルが正常に作成されました。
2. 基本UI構築
- 実行したタスク: メインフォーム (
Form1
) にCornell Noteのレイアウトに必要なコントロール(MenuStrip、TableLayoutPanel、RichTextBox x3)を追加しました。 - 結果:
Form1.Designer.cs
の更新に失敗しました。
3. UIコントロールの追加 (write_to_fileを使用)
- 実行したタスク:
write_to_file
を使用して、UIコントロールを含む完全な内容でForm1.Designer.cs
を置き換えました。 - 結果:
Form1.Designer.cs
が更新されました。
4. 保存/読み込み機能の実装
- 実行したタスク:
Form1.cs
を編集して、保存と読み込み機能を実装しました。 - 結果:
Form1.cs
が更新されました。
5. アプリケーションの実行とテスト
- 実行したタスク: アプリケーションを実行して、UIと保存/読み込み機能が正常に動作するかテストしました。
- 結果: ビルドに失敗しました。
Form1.cs
に構文エラーがあるようです。
6. コード重複の修正
- 実行したタスク:
Form1.cs
のコード重複を修正しました。 - 結果:
Form1.cs
が更新されました。
7. ビルドの再試行
- 実行したタスク: アプリケーションを実行して、ビルドが成功し、UIと保存/読み込み機能が正常に動作するかテストしました。
- 結果: ビルドに成功したかどうか不明です。
8. 詳細なビルドログの出力
- 実行したタスク:
dotnet build
コマンドを使用して、ビルドの詳細なログを出力しました。 - 結果: ビルドに成功しました。
9. アプリケーションの再実行
- 実行したタスク: UIと保存/読み込み機能が正常に動作するかテストするために、再度アプリケーションを実行しました。
- 結果: 出力がありません。
10. イベントハンドラーの紐付け確認
- 実行したタスク:
Form1.Designer.cs
を確認し、saveToolStripMenuItem
とloadToolStripMenuItem
のClick
イベントが正しくイベントハンドラーに紐付いているか確認しました。 - 結果: イベントハンドラーの紐付けに問題は見当たりませんでした。
11. イベントハンドラーの紐付けコード追加
- 実行したタスク:
Form1.Designer.cs
を修正して、saveToolStripMenuItem
とloadToolStripMenuItem
のClick
イベントハンドラーの紐付けコードを追加しました。 - 結果:
Form1.Designer.cs
が更新されました。
12. アプリケーションの再実行
- 実行したタスク: 保存と読み込み機能が正常に動作するかテストするために、再度アプリケーションを実行しました。
- 結果: ビルドに失敗しました。
13. コードの再上書き
- 実行したタスク:
write_to_file
を使用して、Form1.Designer.cs
の内容を正しいコードで完全に上書きしました。 - 結果:
Form1.Designer.cs
が更新されました。
14. アプリケーションの再実行
- 実行したタスク: アプリケーションを実行して、ビルドが成功し、UIと保存/読み込み機能が正常に動作するかテストしました。
- 結果: エラーが発生して強制終了しました。
15. スクロール同期機能の実装
- 実行したタスク: NoteとCueのテキストボックスに初期値として改行を100個程度挿入し、NoteとCueのテキストボックスのスクロール値を同期させる機能を実装しました。
- 結果: スクロールは同期していませんでした。
16. スクロール同期処理の修正
- 実行したタスク:
Form1.cs
のcueRichTextBox_VScroll
イベントハンドラーを修正し、notesRichTextBox.VerticalScroll.Value
をcueRichTextBox.VerticalScroll.Value
に同期させました。 - 結果:
Form1.cs
が更新されました。
17. イベントハンドラーの紐付け
- 実行したタスク:
Form1.Designer.cs
を修正して、cueRichTextBox
のVScroll
イベントにcueRichTextBox_VScroll
イベントハンドラーを紐付けました。 - 結果:
Form1.Designer.cs
が更新されました。
18. アプリケーションの再実行
- 実行したタスク: 保存と読み込み機能が正常に動作するかテストするために、再度アプリケーションを実行しました。
- 結果: ビルドに失敗しました。
19. コードの再上書き
- 実行したタスク:
write_to_file
を使用して、Form1.Designer.cs
の内容を正しいコードで完全に上書きしました。 - 結果:
Form1.Designer.cs
が更新されました。
20. アプリケーションの再実行
- 実行したタスク: アプリケーションを実行して、ビルドが成功し、UIと保存/読み込み機能が正常に動作するかテストしました。
- 結果: テキストボックスもダイアログも正常に動作していました。
21. 追加機能の実装
- 実行したタスク: NoteとCueのテキストボックスに初期値として改行を100個程度挿入し、NoteとCueのテキストボックスのスクロール値を同期させました。
- 結果: スクロールは同期していませんでした。
22. スクロール同期処理の修正
- 実行したタスク:
Form1.cs
にnotesRichTextBox_VScroll
イベントハンドラーを追加し、Form1.Designer.cs
を修正して、notesRichTextBox
のVScroll
イベントにnotesRichTextBox_VScroll
イベントハンドラーを紐付けました。 - 結果: スクロールは同期していませんでした。
23. パネルによるスクロール同期
- 実行したタスク:
cueRichTextBox
とnotesRichTextBox
を新しいPanel
コントロール内に配置し、そのPanel
内でマウスホイールスクロールを感知したらcueRichTextBox
とnotesRichTextBox
をスクロールするように修正しました。 - 結果: スクロールしていませんでした。
24. スクロール同期処理の修正
- 実行したタスク:
Form1.cs
のpanel1_MouseWheel
イベントハンドラーを修正し、cueRichTextBox
とnotesRichTextBox
のスクロールを同期させるコードを実装しました。 - 結果: ビルドに失敗しました。
25. コードの再上書き
- 実行したタスク:
write_to_file
を使用して、Form1.cs
の内容を正しいコードで完全に上書きしました。 - 結果:
Form1.cs
が更新されました。
26. イベントハンドラーの修正
- 実行したタスク:
Form1.Designer.cs
を修正し、panel1_MouseWheel
イベントハンドラーの紐付けで、Wheel
イベントではなくMouseWheel
イベントを使用するように修正しました。 - 結果:
Form1.Designer.cs
が更新されました。
27. アプリケーションの再実行
- 実行したタスク: アプリケーションを実行して、マウスホイールによるスクロール同期が正常に動作するか、再度確認しました。
- 結果: ビルドに失敗しました。
28. コードの再上書き
- 実行したタスク:
write_to_file
を使用して、Form1.cs
とForm1.Designer.cs
の内容を正しいコードで完全に上書きしました。 - 結果:
Form1.cs
とForm1.Designer.cs
が更新されました。
29. スクロール同期処理の修正
- 実行したタスク:
Form1.cs
のpanel1_MouseWheel
イベントハンドラーを修正し、cueRichTextBox
とnotesRichTextBox
のスクロールを同期させるコードを実装しました。 - 結果: スクロールしていませんでした。
30. コードの再上書き
- 実行したタスク:
write_to_file
を使用して、Form1.cs
とForm1.Designer.cs
の内容を正しいコードで完全に上書きしました。 - 結果:
Form1.cs
とForm1.Designer.cs
が更新されました。
31. ビルドの再試行
- 実行したタスク: アプリケーションを実行して、ビルドが成功し、UIと保存/読み込み機能が正常に動作するかテストしました。
- 結果: ビルドに失敗しました。
33. 右側パネルの幅調整と背景色設定
- 実行したタスク:
Form1.Designer.cs
を修正して、右側パネル (notesPanel
) の幅を広げ、背景色を水色に設定しました。 - 結果:
Form1.Designer.cs
が更新されました。
34. ノートテキストボックスの幅調整
- 実行したタスク:
Form1.Designer.cs
を修正して、ノートテキストボックス (notesRichTextBox
) の幅を縮めました。 - 結果:
Form1.Designer.cs
が更新されました。
35. スクロール同期機能の実装
- 実行したタスク:
Form1.cs
にnotesRichTextBox_VScroll
イベントハンドラーを追加し、Form1.Designer.cs
を修正して、notesRichTextBox
のVScroll
イベントにnotesRichTextBox_VScroll
イベントハンドラーを紐付けました。 - 結果: スクロールが同期するようになりました。
感想
久しぶりにプログラミングができて良かったですね
私は1文字も書いてないのですが…
なのでプログラミング欲はあまり消費できてないですね、はい
この欲求は何なのでしょうね、「自分の知識を思い出したい、使用したい、活用したい」みたいなものなのでしょうか?
あとはやっぱりフレームワークに対しての知識が必要になりますね
「知識が無くてもアプリができる!」なんて謳われていますが、半分はそうかもですが、微妙なところですね
Discussion