4時間で作ったはずが、なぜか7時間溶けた。Windowsで動くログ記録アプリ自作で学んだ現実

geminiでアプリ作る 暇つぶし

Geminiで、Windowsで動くログ記録アプリを作りました。

やっていることはシンプルで、キー操作をただ数えるだけです。毎日の生産性を見たいだけで、中身を監視したいわけではないからです。

ところが、作り始めると案外つまずきます。コードが動くのと、配布できる形にするのは別競技でした。気づけば、4時間の予定が7時間コースです。

なぜキー操作を数えるだけのアプリが欲しかったのか

生産性の話で、今日は手を動かしたのか。集中できたのか。何となく忙しかった気はするが、成果物が少ないのはなぜか。こういうモヤモヤを、できるだけ数字で眺めたかったのです。

キー操作数は完璧な指標ではありません。けれど、ゼロよりはマシです。特に、文章を書く仕事や、コードを書く仕事だと、自分の手の動きがそれなりに反映されます。

設計で一番大事にしたのはプライバシー

キー操作を扱う時点で、キーロガーになることを忘れていました。だから、最初に決めたルールはこれです。キー操作の内容は絶対に保存しない

あくまでカウントだけ。たとえば1000回叩いた、という数字だけを残す。これなら、入力内容の漏えいリスクをなくしました。パスワードを打ったりはしませんが、打つこともたまにはありますよね。

豆知識:「何を記録するか」よりも先に「何を絶対に記録しないか」を決めると、設計の迷いが減ります。

それでも疑われる現実がある

皮肉な話ですが、内容を保存しない設計でも、挙動だけで疑われることがあります。

理由は簡単で、キーボード入力のフック周りは、悪用されやすい領域だからです。つまり、こちらが善良でも、OSのWindows側は慎重になります。ここが今回のハマりどころの伏線でした。

AIで作ると爆速。ただし仕様が長いと忘れる

今回、まず仕様書を作りました。ところが複雑な仕様にすると、AI側が前提を落とします。

こちらは仕様を守らせたいのに、途中から別の話を始める。地味に苛つきます。結局、効いたのは大きな仕様書よりも、短いチェックリストでした。

忘れさせない工夫はチェックリスト化

  • 絶対に保存しないものを先に列挙して固定する。
  • 入出力を最小にして、画面遷移や例外処理を後回しにする。
  • 完成定義を一行で言える形にして、迷子を防ぐ。

こうすると、AIとの会話が「仕様の相談」ではなく「部品の組み立て」に変わります。

Pythonで動いた。ここからが本番だった

元になるPythonコードはできました。問題はそこからです。自分のPCで動くのは当たり前で、exe化して、さらにインストールできる形にするとなると、別の地雷が出ます。今回は、ここに時間を吸われました。

exe化で詰まる理由はだいたい環境

ハマった大きな原因は、Pythonのバージョンが新しすぎたことでした。周辺ツール側が追いついていなかったので、3.14から3.12へと下げました

結果として、exe化やインストーラー化で失敗する。これは作っている本人の腕というより、組み合わせ問題です。

実務のコツ:開発用のPythonと、配布用のビルド環境は分けると安全です。配布用は安定版で固定すると、再現性が上がります。

cmdでビルドできるようにしたのが地味に偉い

途中で、cmdでexeビルドできるように整えました。

これ、やっている最中は面倒です。なぜなら、半年後に修正したくなった時、手順を思い出すのが一番の敵だからです。ビルドが一発で回ると、改善の腰が軽くなります。

インストーラー化の壁。Inno Setupで3時間溶ける

インストールできるセットアップ形式のexeにしたかったので、アイコンを作って、Inno Setupでインストーラー化しました。

ここでハマりました。3時間くらいです。作業としては、ファイルをまとめて、ショートカットを作って、アンインストールまで用意する。やっていること自体は素直なのに、どこかで噛み合わないと一気に迷宮入りします。

豆知識:Inno Setupはスクリプトでインストール手順を定義します。ファイル配置やショートカット作成など、配布に必要な作法を一通り面倒見てくれます。

完成したのに止められる。ウィルス扱い問題

さらに追い打ちが来ます。exeの挙動がウィルスと間違われて停止される。これがストレスでした。ただ真面目に作っているのに、警告ならわかりやすいのですが、エラーと表示されるので、コード側に問題があると思いそちらばかり見ていました。結果は、セキュリティで問題ないという除外設定をする必要がありました。

キーボード周りを扱うアプリは、悪用されやすい領域です。加えて、署名のない新しい実行ファイルは、Windowsの保護機構から見ると信用が低い。結果として止められることがあります。つまり、個人開発あるあるでもあります。

開発中の対処と、配布する時の対処は分ける

  • 開発中は除外設定などで作業を止めない工夫をする。
  • 配布するなら、署名や配布手順を整えて誤検知の確率を下げる。
  • 機能説明に「内容は保存しない」などの設計思想を明記する。

特に最後が効きます。技術より文章です。何をしないアプリなのかを、先に宣言する。利用者の安心感が変わります。

それで生産性は上がるのか。数字の扱い方が本題

ここまで苦労して作ったのだから、毎日キー操作数を見て一喜一憂したくなります。ですが、指標は扱い方を間違えると毒にもなります。数を増やすことが目的化すると、意味もなくキーボードを叩く未来が待っています。人間は、数字があるとゲーム化してしまう生き物です。

おすすめは、キー操作数を評価ではなく、観察に使うことです。たとえば、集中できた日のパターンを探す。逆に、やたら忙しいのに数が少ない日は、会議や調整が多かったのかもしれない。こういう振り返りに効きます。

7時間溶けたけれど、手元に残ったものは大きい

結果として、うまく完成しました。今後のPCでの活動を記録できるようになりました。4時間で作ったつもりが、完成まで7時間かかった。ですが、その追加の3時間は、ただの遠回りではありません。配布という現実を踏む時間でした。

AIでアプリを作る時代は、確かに来ています。コードを書けたら終わりではない。今回の経験は、その縮図でした。次に同じことをやる時は、もっと早く作れます。2時間で終わります。

コメント

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