🪶

GitHub Copilot for Xcode に @workspace が追加された

に公開

What @workspace?

どんな意味かしらず今まで気にしてなかったのですが、これは...
同じMicrosoftの解説を読んでみると👀

Visual Studio Codeワークスペースとは、VS Code ウィンドウ(インスタンス)で開かれる 1 つ以上のフォルダの集合です。ほとんどの場合、ワークスペースとして開かれるフォルダは 1 つだけです。ただし、開発ワークフローによっては、「マルチルート ワークスペース」と呼ばれる高度な設定を使用して、複数のフォルダを含めることもできます。

フォルダの集合、別の解説だと複数のディレクトリを1つの作業場所にまとめたものです。ここを見てコードベースで全体に関数質問ができるようです。

https://code.visualstudio.com/docs/editing/workspaces/workspaces

https://github.blog/changelog/2025-04-18-github-copilot-for-xcode-adds-workspace-and-support-for-claude-3-7-sonnet-and-gpt-4-5/

リンク先のサイトを日本語に翻訳して見ました
解説する動画も作ってみた。
https://www.youtube.com/watch?v=PqchksFhu2E

GitHub Copilot for Xcode拡張機能では、@workspaceコンテキストを使用してコードベース全体に関する質問ができるようになりました。さらに、Claude 3.7 SonnetやGPT 4.5などの新しいモデルのサポートを追加し、チャットでの会話を強化し、生産性を向上させるUXの改善も行いました。

新着情報✨

@workspace コンテキスト: Copilot Chat で @workspace を参照することで、コードベース全体について質問できます。GitHub Copilot はプロジェクトのコードベースを分析し、関連するファイルやシンボルへの参照を含む詳細な回答を提供します。@workspace コンテキストは、探しているコードを見つけたり、機能がどのように実装されているかを理解し、その他多くのことに役立ちます。
新しいモデルオプション: Claude 3.7 SonnetとGPT 4.5がCopilot Chatのモデルセレクターで利用可能になりました。利用可能なモデルの詳細については、ドキュメントをご覧ください。

UXの改善とバグ修正⚡️

このアップデートには、その他の UX の改善とバグ修正もいくつか含まれています。

ワークフローの簡素化: Copilot for XcodeアプリからワンクリックでCopilot Chatを起動できるため、アクセスが簡単かつ迅速になります。これにより、開発プロセスが効率化され、さまざまなメニューの操作にかかる時間が短縮されます。
バグ修正:クラッシュや応答しない状態に対処するためにバックグラウンド機能を有効にするための通知。

参加しよう🛠

GitHub Copilot for Xcode拡張機能の最新バージョンをお試しいただき、フィードバックをお寄せください。皆様からのご意見は、製品の改良と改善に非常に役立てさせていただきます。

議論に参加してください🚀

Copilot for Xcodeで私たちや他の開発者とつながり、経験を共有したり、質問したり、問題を作成したり、フィードバックを提供したりしてください。

本当にできるんかいな???

SwiftDataを使用したデモアプリについて全体像を知りたく質問してみました!

SwiftData用のモデルを作成。

MemoModel.swift
import Foundation
import SwiftData

@Model
class MemoModel {
    @Attribute(.unique) var id: UUID
    var title: String

    init(title: String) {
        self.id = UUID()
        self.title = title
    }
}

ContentViewにメモアプリを操作するロジックとデータを表示する処理を作成。

ContentView.swift
import SwiftUI
import SwiftData

struct ContentView: View {
    @Environment(\.modelContext) private var modelContext
    @Query private var memos: [MemoModel]
    @State private var showAlert = false
    @State private var newMemoTitle = ""

    var body: some View {
        NavigationStack {
            List {
                ForEach(memos) { memo in
                    Text(memo.title)
                }
                .onDelete(perform: deleteMemo)
            }
            .navigationTitle("Memos")
            .toolbar {
                ToolbarItem(placement: .navigationBarTrailing) {
                    Button(action: { showAlert = true }) {
                        Image(systemName: "plus")
                    }
                }
            }
            .alert("New Memo", isPresented: $showAlert) {
                TextField("Enter title", text: $newMemoTitle)
                Button("Save", action: saveMemo)
                Button("Cancel", role: .cancel, action: {})
            }
        }
    }

    private func saveMemo() {
        guard !newMemoTitle.isEmpty else { return }
        let newMemo = MemoModel(title: newMemoTitle)
        modelContext.insert(newMemo)
        newMemoTitle = ""
    }

    private func deleteMemo(at offsets: IndexSet) {
        for index in offsets {
            modelContext.delete(memos[index])
        }
    }
}

GithubCopiloForXcodeAppAppに、SwiftDataの設定をする。

GithubCopiloForXcodeAppApp.swift
import SwiftUI
import SwiftData

@main
struct GithubCopiloForXcodeAppApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .modelContainer(for: MemoModel.self)
    }
}

最後に

GitHub Copilot for Xcodeが、Microsoftのチームによって機能追加と品質の向上が日々されており新機能の追加や開発者の体験が今後も向上していくと思われます。

Discussion