【AI】バイブコーディングでWindowsアプリを作ってみる

本ページはプロモーションが含まれています

AIエージェント元年と呼ばれる2025年に私もバイブコーディングに挑戦してみました!

せっかくなのでどうでもいいアプリを作るのではなくてちゃんと利用価値がありそう(個人的に)なアプリを作りましたので2025年末時点のバイブコーディングに対する評価などをまとめていきます

まず結論

今回のチャレンジでアプリを作成することは出来ました

が、AI使えば誰でもアプリを作れるは多分幻想(少なくとも2025年末時点)なので、作れたけど一定のリテラシーが必要だよってことが伝わればいいなと思う記事になっています

完成したアプリは下記からダウンロードできます

アプリ庫
ファイルのダウンロード TaskChatcher とは AI...

私のスキルセット

完全な素人ではありませんが、かと言ってこれだけでご飯を食べていくような専任職ではありません

イメージとして総合職の中ではIT詳しい人、ぐらいの立ち位置だと思っています(もうちょっと上かも)

具体的な経験やできることはプロフィール画面にも書いているので目安にしてみてください

続いて肝心のAIについての練度は初級編レベル・・

主には職場でCopilotさんに壁打ちで相談、他は優秀な検索エンジンぐらいな感覚で調べ物に利用するぐらいで、AIに興味はあるんだけどなかなかきっかけに出会わず年末まで来てしまいました

Geminiも触ったことはあるけど職場はCopilot、プライベートはGeminiで何となく分けてるだけであまり深い意味はなく、職場は無償AI利用がNGなので有償版Copilot使ってるだけって感じです

最後に今回利用した言語はC#ですが私は一度も触ったことがありません

バイブコーディングでは基本コピペだけで済むので個別の知識なくても何とかなりますがさすがにプログラミング自体を未経験ではさすがに厳しいかなってところです

今回利用したAI

スマホがGoogle Pixelな圧倒的Google信者の私なので今回は”Google AI Studioの無償版“を利用しました

ちょうどGemini3.0が発表されてメチャメチャ賢くなったそうで試してみたいなと思っていたのでちょうどいいかなと

ただ2.5までほとんど触っていないので比較はできないですが単純に3.0の有能さを伝えられたらいいなと

あとはトークンの限界が来たらちょくちょくCopilotさんにも助けてもらいました

最終的なソリューション構成

本当にC#初挑戦なのでこの構成を見て良し悪しや難易度の判断が全くつかないんですがとりあえずすぐできるものじゃない気がしませんか?

後述するAIの素晴らしさを伝える要素の一つになるのでなんとなく覚えておいてください

まずは環境準備

みんな大好きVisual Studio CodeではなくてVisual Studioです

私は今回初めて利用しますがWindowsアプリを作成するなら言語はC#、Visual Studioを利用するのが推奨とAIさんが言うので無心でインストールしてきました

タイミングがいいのか悪いのか、チャレンジから数週間前の2025年11月11日にVisual Studio 2026がリリースされてさらに同日に.NET 10もリリースされたようです

Visual Studio: ソフトウェア開発向けの IDE およびコード エディター
Visual Studio 開発ツールとサービスによって、開...

Visual Studioは過去のCommunity版を探すのが大変だったので諦めて2026を使いましたが.NETはリリース直後の10が少し怖かったのと後述しますがAIが8を奨めてきたのでLTS版の8を使うことにしました

AIとの対話

全ての会話を貼りだすにはあまりにも長すぎるので最初のやり取り+サマリーを

最初の問いかけ~コーディング開始まで

なんとなく想像したアプリを雑にぶん投げてみました

windowsのデスクトップアプリを作りたいから協力してほしい
今回作成したいのはタスク管理アプリでコンテキストメニューに追加もしくはホットキーで呼び出しして範囲選択している文字をタイトルに引用タスクを登録したい
アプリが呼び出されると日付のFROM、TO、担当者、重要度(10段階)を登録できるようにするイメージ
OutlookやGoogleカレンダー連携できると最高だけど2時開発でいいかな
とりあえずここまでで検討してみて

に対してAIの回答がこちら

素晴らしいアイデアですね!「作業中に気になったことを、思考を中断せずにサッとタスク化する」というのは、生産性向上において非常に強力なツールになります。

Windowsアプリ開発において、ご要望の機能(特に「他アプリで選択中の文字を取得する」部分)を実現するための最適な構成と、開発のロードマップを提案します。

### 1. 技術選定と設計方針

Windowsネイティブの機能(クリップボード操作、グローバルホットキー、レジストリ操作)に深く関わるため、以下の技術スタックを推奨します。

*   **言語:** **C# (.NET 8)**
*   **フレームワーク:** **WPF (Windows Presentation Foundation)**
    *   WinFormsよりもUIのカスタマイズ(モダンな見た目)がしやすく、データバインディングが強力なため。
*   **データベース:** **SQLite**
    *   ローカルファイルで完結し、後でOutlook/Google連携する際やサーバー同期する際にも移行しやすいため。

### 2. 技術的な実現方法(ここがキモです)

ご要望の「選択範囲の文字を引用」には、Windows特有のテクニックが必要です。

#### A. 呼び出し方法:ホットキー vs コンテキストメニュー
*   **推奨:グローバルホットキー (例: `Ctrl + Alt + T`)**
    *   **理由:** 開発難易度が低く、動作が安定します。
    *   どのアプリ(ブラウザ、Word、Slackなど)を開いていても、キーを押すだけで呼び出せます。
*   **コンテキストメニュー(右クリック)の課題:**
    *   Windowsの仕様上、エクスプローラー(ファイル操作)の右クリックメニューへの追加は簡単ですが、「ブラウザ上のテキスト」や「エディタ内のテキスト」の右クリックメニューに独自の項目を追加するのは、アプリごとに仕様が異なるため極めて困難です。
    *   **結論:** 今回は**「ホットキー」をメイン**にし、コンテキストメニューは「テキスト」ではなく「ファイル」をタスク化したい場合(オプション)として検討するのが現実的です。

#### B. 選択文字の取得ロジック
他のアプリから直接テキストを読み取るAPIはセキュリティ上制限されています。一般的なハック方法は以下の通りです。

1.  ユーザーがホットキーを押す。
2.  アプリが裏で**「Ctrl + C」キー入力をシミュレーション**する。
3.  クリップボードに格納されたテキストをアプリが読み取る。
4.  タスク登録画面の「タイトル」欄にペーストする。

### 3. アプリ画面・機能設計 (Phase 1)

UIはポップアップウィンドウのようなシンプルなものを想定します。

*   **タイトル:** テキストボックス(選択テキストが自動入力される。編集可能)
*   **期間:**
    *   **FROM:** DatePicker(デフォルトは今日)
    *   **TO:** DatePicker(デフォルトは今日 or 翌日)
*   **担当者:** コンボボックス(事前登録リストから選択) or テキスト入力
*   **重要度:** スライダー(1〜10) または コンボボックス
*   **ボタン:** 「登録」「キャンセル」

### 4. 開発ステップ(ロードマップ)

一緒に開発を進めるにあたり、以下の順序で作っていくのが良いでしょう。

**Step 1: 土台作り**
*   WPFプロジェクトの作成。
*   グローバルホットキーを検知して、ウィンドウを最前面に表示する機能の実装。

**Step 2: テキスト取得の実装**
*   ホットキー押下時に `SendKeys.Send("^c")` 等でコピーし、クリップボードからテキストを取得する処理の実装。

**Step 3: UIの実装**
*   日付、担当者、重要度の入力フォーム作成。

**Step 4: 保存処理 (SQLite)**
*   入力されたデータをローカルのSQLiteデータベースに保存する。
*   (簡易的な)タスク一覧画面の作成。

---

### まずはどうしますか?

まずは **「Step 1 & 2:ホットキーを押したら、選択中の文字をメッセージボックスに表示する」** というプロトタイプ(試作機)を作ってみるのが一番手っ取り早いと思います。

開発環境(Visual Studio Communityなど)はインストールされていますか?
もしよろしければ、**C# + WPFでの具体的なサンプルコード**を作成して提示することも可能です。いかがでしょうか?

これだけの質問にかなりしっかりと回答してくれていることがわかります(よね?)

この後コーディングを始めるまでにしたやり取りのサマリがこんな感じ

質問回答
右クリックの中に起動メニューを足したいC#じゃなくてC++で作る必要がある
C#とC++のメリデメ教えてほしい6項目の比較項目の結果C#を推奨
Visual Studioのインストールを教えてインストールの仕方とインストール後の対応方法提示(プロジェクトの作成)
.NET 8.0 と.NET 10.0のおススメ教えて世界中で最も広く使われている最新の安定版.NET 8を推奨

AIの情報には少しラグがある(無償版は3カ月くらい?)そうなのでAIの中ではまだ.NET 8.0が最新版のようです

毎回質問に答えるだけじゃなく、背景を教えてくれたりと副操縦士から先生に格上げされた印象を受けました

コーディング開始

世の中でエンジニアはいらなくなるを体感した瞬間がやってきました

AIさんが数秒で作ったコードがコチラ

using System.Windows;
using System.Windows.Input;
using NHotkey;
using NHotkey.Wpf;
using System.Threading.Tasks;

namespace TaskCatcher // ← ★ここがエラーになったら、元のプロジェクト名に合わせてください
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            
            // ホットキーの登録 (Ctrl + Alt + T)
            // "RegisterHotKey" という名前で識別します
            try
            {
                HotkeyManager.Current.AddOrReplace("RegisterHotKey", Key.T, ModifierKeys.Control | ModifierKeys.Alt, OnHotkeyPressed);
            }
            catch
            {
                MessageBox.Show("ホットキーの登録に失敗しました。他のアプリで使われている可能性があります。");
            }
        }

        // ホットキーが押されたときに実行される処理
        private async void OnHotkeyPressed(object sender, HotkeyEventArgs e)
        {
            // ホットキーの処理済みフラグを立てる(お作法)
            e.Handled = true;

            // 1. クリップボードをクリア(前のデータが残っていると誤作動するため)
            Clipboard.Clear();

            // 2. Ctrl + C を送信して、選択中のテキストをコピーさせる
            // ※ System.Windows.Forms.SendKeys を使うのが一般的ですが
            // WPF標準ではないため、ここでは簡易的なSendKeysシミュレーションを使います
            await SimulateCopyCommand();

            // 3. 少し待つ(コピー処理が完了するのを待つため)
            await Task.Delay(100);

            // 4. クリップボードからテキストを取得
            if (Clipboard.ContainsText())
            {
                string selectedText = Clipboard.GetText();

                // アプリを最前面に表示
                this.Show();
                this.WindowState = WindowState.Normal;
                this.Activate();
                this.Topmost = true;  // 一瞬最前面にする
                this.Topmost = false; // 解除

                // 今は確認用としてメッセージボックスを表示
                // 最終的にはここで入力画面のテキストボックスに入れます
                MessageBox.Show($"取得したテキスト:\n\n{selectedText}");
            }
            else
            {
                // テキストが取れなかった場合(何も選択していない場合など)
                // アプリだけ起動する
                this.Show();
                this.Activate();
            }
        }

        // キー入力シミュレーション
        private async Task SimulateCopyCommand()
        {
            // キー送信の実装は少し複雑なので、まずは
            // .NET標準の SendKeys クラスを使うために
            // 参照設定が必要ですが、一旦簡略化のためクリップボード取得確認を優先します。
            
            // ★重要:
            // 本格的にキー送信するには "System.Windows.Forms" の参照追加が必要ですが
            // WPFプロジェクトではデフォルトで入っていません。
            // 
            // 動作テストのために、今回は手動で「Ctrl+C」をしてから
            // ホットキーを押す運用でテストしてみましょう。
            
            // ※次のステップで自動化を実装します!
            await Task.CompletedTask; 
        }
    }
}

ちゃんとコメントも残されていているし他にも部品となるコードが必要だったらその案内をしてくれるとか本当に至れり尽くせりな感じで始まりました

他にも必要なパッケージがあると導入メニューの案内や具体的なパッケージ名の指定もしてくれて、ほとんど迷うことなく進められました

言われた通り途中途中でデバックかけてみるとうまく動作しないこともありましたが事象を伝えることは当然ながら、エラーコードをそのまま貼り付けるだけでも原因を考えてくれてトライ&エラーを数回繰り返せば改善できるものばかり

特筆すべきはVisual Studioの使い方まで教えてくれるし、クラスを跨いだ問題でもちゃんと理解(記憶)して的確な箇所を提示してくれました

コーディング中盤~完了まで

ここからはかなり省略しますが、アジャイル開発のようにパーツを一つ作っては実装、追加機能を思いついて相談しては機能追加を繰り返して2~3日で完成形の9割は完了しました(完成形はアプリのver0.1.0を見てください)

機能の後付けは「どのクラスのどの位置」まで指定(前後のコードが記載されていて○○と○○の間にこのコードを追加、など)してくれたり、改造し過ぎて動かなくなったときは”完全版になるように見直して“のコメントとともに今のコードを全貼りすることで最新の整理されたコードを返してくれる親切対応

例えば会社で

教わった通りにやったらエラーになったんですけど、どこ直していいかわからないんで一から全部作り直してもらっていいですか?

なんて上司・先輩に言えますか?

しかも原因が当該ファイルにあるとは限らず別のところにあることもあり、プロジェクト全体を見て対応してくれるか神対応でした

最後に落とし穴

デバックではほぼ想定通りの動きになっていたのでアプリ化をAIに持ち掛けたところ案内された方法ではアプリが生成されない状況に

何度聞いてもうまくいかず、状況を伝えても3パターンの改善提案をグルグル回るだけで何も改善しない状況

たまにexe化できてもいざ使ってみるとすぐにアプリが落ちてしまう謎状況が続く中わたしがとった行動は・・・

ネット上にするコミュニティを始め、先人たちの知恵はまだまだ偉大でAIに負けない情報がそこにはありました

正攻法な情報はAIでも十分なんですが、何か起こった際のニッチな情報はまだAIじゃ拾いきれないような印象を受けました

結局成功にいたるまでに対応した内容はこちら

  • COMの参照をやめてNuGetパッケージに切り替えた
  • NuGetパッケージへの切替とともに一部コードを修正した
  • Visual Studioの”発行”メニューは使わずPowerShellコマンドでexe化した

AIから提案された内容にもこれらはあったのですが、全てを複合することで改善したのでAIの1度の提案ボリュームが抑えられていたところが仇となったのかも

最後のコマンド実行の部分はAIよりもVisual Studioが画面上成功になってるから原因追求できなかったことの方が大きいかも

完成後の延長線で最大の問題発生

一度完成したと思っても微調整したくなるのが作り手の性じゃないでしょうか

追加機能の相談なんてこれまで何度もしてきてので気にせずどんどん相談していたらついに・・・

はい、使い過ぎです

どちらかと言うと数日に渡って作成していたとは言え、よくここまで利用させてもらえてものだと思うくらいAIさんとキャッチボールを続けていました

まぁまぁ、これだけなら時間をおけばいいかと一度ブラウザを落として時間を空けて再度起動すると・・・

あれ?チャットの履歴が途中で途切れてる

あまり気にせず”まぁいい”かぐらいのテンションで再度使い始めますが、しばらくして事の重大さに気付きます

どうもAIとの会話が嚙み合わないと思ったら直前に修正したことを覚えていない様子の会話が続いて、よくよく考えたらこの途切れてしまった先で修正した部分をすっかり忘れていらっしゃる様子

これじゃデグレ起こしてしまうと思い、AIとの共同作業はここで終了となりました

これからのアップデートでもAIは活用しますが、プロジェクト全てを把握しているチャットは無くなったので今後は部分的なお手伝いをしてもらいつつ、C#を自己学習することになりそうです

あとがき

最後の最後でAIが記憶喪失になるハプニングが起きましたが、奇跡的にも機能としては一通り完成した後だったので事なきを得ました

未経験のC#を使ったアプリ開発を個人的には満足するところまで引き上げてくれたAIの力は十分過ぎると思う取り組みになってよかったです

一方で、”AIを使えば誰でもアプリが作れる”は確かに簡単で責任が伴わないものなら作れる印象を受けつつ、実用的なものはやはり経験がないと何をすべきか判断できないことと、有事の際に対応が取れない危うさを感じました(特に最後)

加えてAIに頼りすぎると地力が付かない危険性も感じました

何事もほどほどなんですかね

コメント

タイトルとURLをコピーしました