Skip to content

UI/UX デザイン

GitHub Issue: #3 UI/UXデザイン#53 設計書更新

画面一覧

メインウィンドウ

画面ファイル種別説明
MainViewMain/MainView.swiftRootNavigationSplitView (Sidebar + Detail)
SidebarViewMain/SidebarView.swiftSidebarカテゴリナビゲーション + キー数バッジ
KeyListViewMain/KeyListView.swiftDetailキーグリッド + 検索 + インポート
KeyRowViewMain/KeyRowView.swiftCellサービスアイコン + 名前 + ステータス

エディタ・シート

画面ファイル種別説明
KeyEditorViewEditor/KeyEditorView.swiftSheetキー追加・編集フォーム
ExportViewExport/ExportView.swiftSheet.zshrc / .env エクスポート
ShareKeysViewShareKeysView.swiftSheetP-256 暗号化キー転送 (3 タブ)
EnvImportViewEnvImportView.swiftSheet4 ステップ env インポートウィザード
CategoryManagerViewCategoryManagerView.swiftSheetカスタムカテゴリ CRUD

モード・設定

画面ファイル種別説明
ModeSelectViewModeSelectView.swiftSheetStandard / Proxy モード選択カード
CleanupViewCleanupView.swiftSheet.zshrc クリーンアップガイド
RecoveryViewRecoveryView.swiftSheetプロキシ復旧ガイド (3 手段)
HelpViewHelpView.swiftSheetユーザーマニュアル

オンボーディング

画面ファイル種別説明
OnboardingViewOnboarding/OnboardingView.swiftSheet5 ステップウィザードコンテナ
SetupViewOnboarding/SetupView.swiftStepシェル設定ガイド

メニューバー

画面ファイル種別説明
MenuBarViewMenuBarView.swiftMenuBarExtraプロキシ状態・モード切替・ポート変更

画面フロー

mermaid
graph TB
    Launch["アプリ起動"]
    Launch --> Check{初回起動?}

    Check -- Yes --> Onboarding
    Check -- No --> Main

    subgraph Onboarding["オンボーディング (Sheet)"]
        Welcome["Welcome"] --> ModeSelect["モード選択"]
        ModeSelect --> RegisterKeys["キー登録案内"]
        RegisterKeys --> SetupShell["シェル設定"]
        SetupShell --> Completion["完了"]
    end

    Onboarding --> Main

    subgraph Main["メイン画面"]
        direction TB
        Sidebar["SidebarView<br/>カテゴリ一覧"] --> KeyList["KeyListView<br/>キーグリッド"]
    end

    Main --> Editor["KeyEditorView<br/>追加・編集"]
    Main --> Export["ExportView<br/>エクスポート"]
    Main --> Import["EnvImportView<br/>4ステップインポート"]
    Main --> Share["ShareKeysView<br/>暗号化転送"]
    Main --> Mode["ModeSelectView<br/>モード切替"]
    Main --> Help["HelpView<br/>ヘルプ"]
    Main --> Cleanup["CleanupView<br/>クリーンアップ"]
    Main --> Recovery["RecoveryView<br/>復旧ガイド"]
    Main --> CatMgr["CategoryManagerView<br/>カテゴリ管理"]

    MenuBar["MenuBarView<br/>(常駐)"] --> Mode
    MenuBar --> Recovery
    MenuBar --> Cleanup

    style Onboarding fill:#E8D5FF,stroke:#7C3AED
    style Main fill:#DBEAFE,stroke:#0284C7
    style MenuBar fill:#D1FAE5,stroke:#059669

メイン画面構成

┌─────────────────────────────────────────────────────────┐
│ ツールバー: [Proxy ● Active] [Transfer] [Help ▾]        │
├──────────────┬──────────────────────────────────────────┤
│ Sidebar      │ KeyList                                   │
│              │                                           │
│ All Keys (20)│ AI API                    3 keys          │
│              │ ┌─────────────────────────────────────┐  │
│ AI API    (4)│ │ 🧠 Anthropic (Claude)    ✅        │  │
│ AI Web    (5)│ │    ANTHROPIC_API_KEY                │  │
│ Code&Git  (2)│ ├─────────────────────────────────────┤  │
│ Cloud     (3)│ │ 🤖 OpenAI (GPT)         ⚠️        │  │
│ Comm      (2)│ │    OPENAI_API_KEY                   │  │
│ DevTools  (1)│ ├─────────────────────────────────────┤  │
│              │ │ ...                                  │  │
│ ─────────── │ └─────────────────────────────────────┘  │
│ Custom Cat   │                                           │
│              │                                           │
│ [Manage]     │                                           │
│ ✅ 12  ⚠️ 8 │ [Import .env]              [+ Add Key]   │
└──────────────┴──────────────────────────────────────────┘

キー編集シート

要素内容
サービス選択Picker (追加時のみ変更可)
カテゴリ選択ビルトイン + カスタムカテゴリ
環境変数名サービス選択で自動入力 (編集可)
トークン入力SecureField + 目のアイコンで表示/非表示
プレフィックス警告トークンが期待プレフィックスと不一致の場合に表示
セットアップリンク"Get Token" ボタンで発行ページを開く
削除ボタン編集時のみ表示 (赤色)
保存ボタン"Keychain に保存"

メニューバー UI

┌──────────────────────────┐
│ 🔑 AI KeyChain           │
├──────────────────────────┤
│ Mode: 🛡️ Proxy           │
│ Status: 🟢 Running       │
│ Port: 18121               │
│ Requests: 42              │
├──────────────────────────┤
│ Change Mode...            │
│ Stop Proxy                │
│ Change Port...            │
│ Recovery Guide            │
├──────────────────────────┤
│ Open KeyChain             │
│ Open Keychain Access      │
│ ☑ Launch at Login         │
│ Shell Cleanup             │
│ Show Tutorial             │
├──────────────────────────┤
│ Quit                      │
└──────────────────────────┘

モード選択カード

モードアイコン特徴
Standard🔑 key.fillKeychain 直接参照、シンプル、常駐不要
Proxy🛡️ shield.lefthalf.filled環境変数にキーが露出しない、アプリ常駐必要

Proxy モード選択時は 同意シート を表示:

  • プロキシの常時起動が必要な旨の警告
  • 復旧方法の案内
  • チェックボックスで同意後に有効化

ShareKeysView (3 タブ)

タブ内容
My KeysP-256 キーペア生成・公開鍵エクスポート
Sendキー選択 → 相手の公開鍵で暗号化 → .aikeychain ファイル生成
Receive.aikeychain ファイル読込 → 秘密鍵で復号 → Keychain インポート

EnvImportView (4 ステップ)

Step内容
1env コマンドのコピーガイド
2出力ペースト → 認識キーの自動スキャン
3インポート対象のプレビュー
4Keychain インポート結果表示

カラーパレット

カテゴリカラー

カテゴリカラーHex
AI APIPurple#7C3AED
AI WebPink#DB2777
Code & GitOrange#EA580C
Cloud & InfraBlue#0284C7
CommunicationGreen#059669
Developer ToolsGray#6B7280

ステータスカラー

ステータスカラーHex
設定済みEmerald#10B981
未設定Amber#F59E0B

アクセントグラデーション

#7C3AED (Purple) → #0284C7 (Blue) → #059669 (Green)

タイポグラフィ

用途フォントサイズ
ページタイトルSystem Bold28pt
セクションタイトルSystem Semibold20pt
本文System Regular14pt
コード・トークンSF Mono13pt
バッジSystem Medium11pt
キャプションSystem Regular12pt

アニメーション仕様

対象種類時間
オンボーディング遷移slide + fade0.3s (spring)
モード選択カードscale (spring)0.3s
ステータスバッジ変化scale + color0.2s (easeInOut)
シート表示system default-
保存成功フィードバックcheckmark scale0.5s (spring bounce)

ダークモード

  • システムデフォルトの背景色を使用
  • カテゴリカラー・ステータスカラーは明度自動調整
  • アイコンは SF Symbols のため自動対応

AI開発チームのための鍵管理ツール