最近、AIエージェントに対して指示する文章を音声入力で行うことが多くなりました。いつも画面に表示されてるテキスト入力の小さいアプリがほしくなったので、Claude CodeさんにSwiftUIでさくっと作ってもらいました。
以下の文章は Claude Code が作成したものです。
popinput: macOSテキスト入力アプリ新規開発セッション by Claude Code
2025年7月13日
はじめに
popinputは、macOS用の軽量なテキスト入力アプリケーションです。今回のセッションでは、常時最前面に表示されるシンプルなメモアプリを新規開発しました。Swift + SwiftUIを使用してネイティブmacOSアプリとして実装し、基本機能から高度な機能まで段階的に追加していきました。
今回達成したこと・主な成果
基本アプリケーションの開発
- macOS用の常時最前面表示テキスト入力アプリ「popinput」を新規開発しました
- Swift Package Managerを使用してプロジェクトを構築しました
- SwiftUIベースのネイティブmacOSアプリとして実装しました
- テキスト入力エリアとCopy & Clearボタンを実装しました
- Command+Cショートカットキーによる操作を可能にしました
- コピー実行時の「Copied!」視覚的フィードバックを追加しました
高度な機能の実装
- フォント設定メニュー(サイズ調整: Cmd+/Cmd-、フォント種類選択)を追加しました
- ウィンドウの手動リサイズ機能を実装しました
- アクティブウィンドウの60%幅で中央配置する「幅合わせ」機能(Cmd+W)を開発しました
- UserDefaultsを使用したウィンドウ位置・サイズ・フォント設定の保存・復元機能を追加しました
- メニューバーアイコンによるアプリの表示/非表示制御を実装しました
デザインとUXの向上
- 結城さんが作成したスティッキーノート風のアプリアイコン(透明背景)を組み込みました
- ボタンの内部パディングを調整し、使いやすさを向上させました
- popinputのバナー画像とアプリアイコンを作成・配置しました
セッションの主な流れとAIの貢献
技術選択と初期実装
結城さんから「Electronか、SwiftUIか」という技術選択の相談を受けた際、コマンドラインのみでSwiftUIアプリを開発できることを説明し、軽量でネイティブなSwiftUIを推奨しました。初期の「swift run」でGUIアプリとして動作しない問題を解決するため、NSApplication.shared.setActivationPolicy(.regular)
の設定とアプリバンドルの作成方法を提案しました。
機能拡張における技術的課題の解決
結城さんからフォント設定やウィンドウ幅合わせ機能の要望があった際、NotificationCenterとSwiftUIのonReceive
モディファイアを組み合わせた設計を提案しました。特に、ウィンドウの幅合わせ機能では、CGWindowListAPIを使用して他のアプリケーションのウィンドウ情報を取得するWindowManagerクラスを実装し、60%幅での中央配置というUXの改善も併せて提案しました。
UIの改善とデザイン統合
ボタンのパディング調整では、SwiftUIの.borderedProminent
スタイルがカスタムパディングを上書きする問題を発見し、Buttonの構造を変更してTextに直接パディングを適用する解決策を提示しました。また、結城さんが作成したアイコンの組み込みでは、PNGから各サイズのアイコンを生成し、.icnsファイルに変換してアプリバンドルに統合する一連の手順を自動化しました。
おわりに
結城さん、popinputアプリの開発、とても楽しかったです。実際に開発中から結城さんがpopinputを使ってレポートを書いていらっしゃったのが印象的でした。
(2025年7月13日)