🤖

【Cline実況】Cornell Note作成記録【Windows Forms】

2025/04/07に公開

最近AIエージェントを導入したのですが、まだちゃんとした(プログラミングらしい)使い方は出来ていなかったので挑戦してみました

導入

最近、Cornell Noteの存在を思い出しました
昔憧れたのですが、Obsidianで再現する方法が有料なので諦めて使ったことがありませんでした

https://x.com/0317_hiroya/status/1908692213137367390

そこでObsidianで再現するのは諦めて、新たにアプリを作成してみることにしました

言語は私が使い慣れているC#(Windows Forms)を使用します
「今時ならもっといい感じのフレームワークを勉強したほうがいいだろうな…」と思いながら、昔の知識から更新できていないのだ


本編

https://www.youtube.com/watch?v=NoPQmKLO9oc

プロジェクト作成以降の作業を録画しておきました
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 を確認し、saveToolStripMenuItemloadToolStripMenuItemClick イベントが正しくイベントハンドラーに紐付いているか確認しました。
  • 結果: イベントハンドラーの紐付けに問題は見当たりませんでした。

11. イベントハンドラーの紐付けコード追加

  • 実行したタスク: Form1.Designer.cs を修正して、saveToolStripMenuItemloadToolStripMenuItemClick イベントハンドラーの紐付けコードを追加しました。
  • 結果: Form1.Designer.cs が更新されました。

12. アプリケーションの再実行

  • 実行したタスク: 保存と読み込み機能が正常に動作するかテストするために、再度アプリケーションを実行しました。
  • 結果: ビルドに失敗しました。

13. コードの再上書き

  • 実行したタスク: write_to_file を使用して、Form1.Designer.cs の内容を正しいコードで完全に上書きしました。
  • 結果: Form1.Designer.cs が更新されました。

14. アプリケーションの再実行

  • 実行したタスク: アプリケーションを実行して、ビルドが成功し、UIと保存/読み込み機能が正常に動作するかテストしました。
  • 結果: エラーが発生して強制終了しました。

15. スクロール同期機能の実装

  • 実行したタスク: NoteとCueのテキストボックスに初期値として改行を100個程度挿入し、NoteとCueのテキストボックスのスクロール値を同期させる機能を実装しました。
  • 結果: スクロールは同期していませんでした。

16. スクロール同期処理の修正

  • 実行したタスク: Form1.cscueRichTextBox_VScroll イベントハンドラーを修正し、notesRichTextBox.VerticalScroll.ValuecueRichTextBox.VerticalScroll.Value に同期させました。
  • 結果: Form1.cs が更新されました。

17. イベントハンドラーの紐付け

  • 実行したタスク: Form1.Designer.cs を修正して、cueRichTextBoxVScroll イベントに 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.csnotesRichTextBox_VScroll イベントハンドラーを追加し、Form1.Designer.cs を修正して、notesRichTextBoxVScroll イベントに notesRichTextBox_VScroll イベントハンドラーを紐付けました。
  • 結果: スクロールは同期していませんでした。

23. パネルによるスクロール同期

  • 実行したタスク: cueRichTextBoxnotesRichTextBox を新しい Panel コントロール内に配置し、その Panel 内でマウスホイールスクロールを感知したら cueRichTextBoxnotesRichTextBox をスクロールするように修正しました。
  • 結果: スクロールしていませんでした。

24. スクロール同期処理の修正

  • 実行したタスク: Form1.cspanel1_MouseWheel イベントハンドラーを修正し、cueRichTextBoxnotesRichTextBox のスクロールを同期させるコードを実装しました。
  • 結果: ビルドに失敗しました。

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.csForm1.Designer.cs の内容を正しいコードで完全に上書きしました。
  • 結果: Form1.csForm1.Designer.cs が更新されました。

29. スクロール同期処理の修正

  • 実行したタスク: Form1.cspanel1_MouseWheel イベントハンドラーを修正し、cueRichTextBoxnotesRichTextBox のスクロールを同期させるコードを実装しました。
  • 結果: スクロールしていませんでした。

30. コードの再上書き

  • 実行したタスク: write_to_file を使用して、Form1.csForm1.Designer.cs の内容を正しいコードで完全に上書きしました。
  • 結果: Form1.csForm1.Designer.cs が更新されました。

31. ビルドの再試行

  • 実行したタスク: アプリケーションを実行して、ビルドが成功し、UIと保存/読み込み機能が正常に動作するかテストしました。
  • 結果: ビルドに失敗しました。

33. 右側パネルの幅調整と背景色設定

  • 実行したタスク: Form1.Designer.cs を修正して、右側パネル (notesPanel) の幅を広げ、背景色を水色に設定しました。
  • 結果: Form1.Designer.cs が更新されました。

34. ノートテキストボックスの幅調整

  • 実行したタスク: Form1.Designer.cs を修正して、ノートテキストボックス (notesRichTextBox) の幅を縮めました。
  • 結果: Form1.Designer.cs が更新されました。

35. スクロール同期機能の実装

  • 実行したタスク: Form1.csnotesRichTextBox_VScroll イベントハンドラーを追加し、Form1.Designer.cs を修正して、notesRichTextBoxVScroll イベントに notesRichTextBox_VScroll イベントハンドラーを紐付けました。
  • 結果: スクロールが同期するようになりました。

感想

久しぶりにプログラミングができて良かったですね
私は1文字も書いてないのですが…
なのでプログラミング欲はあまり消費できてないですね、はい
この欲求は何なのでしょうね、「自分の知識を思い出したい、使用したい、活用したい」みたいなものなのでしょうか?

あとはやっぱりフレームワークに対しての知識が必要になりますね
「知識が無くてもアプリができる!」なんて謳われていますが、半分はそうかもですが、微妙なところですね

Discussion