claude로 어떻게 공부를 할 수 있을까 궁금해서 기존에 필터 앱을 업데이트 하고자 다음과 같이 요청 하였습니다.
"새로운 질문을 하지 swift 언어로 iOS 15 이상에서 카메라앱을 만들거야 동영상 촬영 앱이고 기능은 다음과 같아 1. 동영상 촬영 버튼을 누르면 촬영이 되고 10초뒤에 촬영이 자동 종료 되 2. 동영상 필터는 2개가 제공될거야 3. 필터는 흑백하고 카툰 필터 4. 녹화된 영상은 앱내에 저장하는데 사진앱으로 내보내기 기능을 제공 5. 녹화사에는 전면 카메라 녹화나 후면 카메라 녹화 둘중 하나만 되게 할거야 6. 고급 카메라는 PIP 기능으로 영상이 녹화되게 할거야 7. 카메라 촬영중에는 화면에서 10초 타이머가 보여지면서 촬영된 영상이 실시간으로 보이게 할거야 여기까지 "
이렇게 요청 하니 CIFilter 기반 이 나왔다.....
CIFilter로는 퍼포먼스가 안나오는걸 알고 있기에... 다시 요청 했다.
"아 미안해... metal framework로 구현해줘 CIFilter는 퍼포먼스 안나와"
다음과 같이 안내해 주었다.
코드를 보니.... 분류가 안되어 있어 재차 요청 했다.
"파일명 별로 구분좀 해줄 수 있을까?"
위와 같이 프로젝트 구조도 알려주었다.
그래서 각각의 소스코드는 다음과 같다.
// MARK: - Models/ShaderTypes.swift struct Vertex { var position: SIMD3<Float> var textureCoordinate: SIMD2<Float> }
enum FilterType { case normal case grayscale case cartoon }
// MARK: - Shaders/CameraShaders.metal """ #include <metal_stdlib> using namespace metal;
struct VertexIn { float3 position [[attribute(0)]]; float2 textureCoordinate [[attribute(1)]]; };
struct VertexOut { float4 position [[position]]; float2 textureCoordinate; };
// MARK: - Controllers/MetalCameraController.swift class MetalCameraController: NSObject { private var captureSession: AVCaptureSession? private var videoOutput: AVCaptureMovieFileOutput? private var textureCache: CVMetalTextureCache?
private let metalDevice: MTLDevice private let metalCommandQueue: MTLCommandQueue private let pipelineState: MTLRenderPipelineState private let vertexBuffer: MTLBuffer
private var currentFilterType: FilterType = .normal
// MARK: - ViewControllers/MetalCameraViewController.swift class MetalCameraViewController: UIViewController { private var cameraView: CameraView! private var cameraControls: CameraControls! private var cameraController: MetalCameraController!
private var currentFilter: FilterType = .normal private var recordingTimer: Timer? private var remainingTime: Int = 10
안녕하세요 이번에 AI를 활용하여 프로그래머와 소통이 어려운 이유에 대해서 좀 더 쉽게 소통하는 법과 문제를 해결하는 법에 대해 알아 보고 있습니다.
이번 시간에는 제가 유로 구독중인 Claude를 이용하여 이전과 동일하게 질문을 해보았습니다.
제가 한 질문 : 프로그래머와의 효과적인 소통을 위한 실제 대화 예시
Claude 의 답변 :
"프로그래머와의 효과적인 소통을 위한 실제 대화 예시"를 제공해 드리겠습니다. 이는 프로그래머와 비 기술 팀원 간의 소통을 개선하는 데 도움이 될 수 있습니다.
기능 요청 시: 비 기술 팀원: "사용자 프로필 페이지에 '친구 추천' 기능을 추가하고 싶어요." 프로그래머: "알겠습니다. 이 기능의 구체적인 요구사항은 무엇인가요? 예를 들어, 추천 기준이나 표시할 친구의 수 등이 있을까요?" 비 기술 팀원: "네, 사용자의 관심사를 기반으로 5명의 친구를 추천하고 싶어요."
버그 보고 시: 비 기술 팀원: "로그인 페이지에서 문제가 발생했어요." 프로그래머: "어떤 종류의 문제인가요? 특정 오류 메시지가 표시되나요?" 비 기술 팀원: "비밀번호를 입력하고 로그인 버튼을 클릭하면 화면이 새로고침되고 다시 로그인 페이지로 돌아가요."
일정 관련 대화: 비 기술 팀원: "새 기능 개발이 언제쯤 완료될까요?" 프로그래머: "기능의 복잡도와 현재 진행 중인 다른 작업들을 고려해야 합니다. 대략적인 추정을 위해 기능 명세를 자세히 살펴보고 팀 회의를 통해 일정을 조율해보는 게 어떨까요?"
기술적 제약 설명 시: 프로그래머: "요청하신 기능을 구현하려면 서버 인프라를 크게 수정해야 해서 시간이 많이 걸릴 것 같습니다." 비 기술 팀원: "어떤 점에서 시간이 많이 걸리나요? 대안은 없을까요?" 프로그래머: "현재 서버 구조로는 대량의 데이터 처리가 어렵습니다. 기능을 단순화하거나 단계적으로 구현하는 방법을 고려해볼 수 있겠네요."
우선순위 조정 시: 비 기술 팀원: "이 기능이 정말 중요해서 다른 작업보다 먼저 처리되면 좋겠어요." 프로그래머: "현재 진행 중인 프로젝트의 일정과 리소스를 고려해야 합니다. 이 기능의 구체적인 비즈니스 가치를 설명해주시면, 우선순위 조정을 팀과 논의해보겠습니다."
기술 선택에 대한 설명 시: 프로그래머: "이 기능을 구현하기 위해 새로운 프레임워크를 도입하려고 합니다." 비 기술 팀원: "새 프레임워크를 사용하면 어떤 이점이 있나요?" 프로그래머: "개발 속도가 빨라지고, 향후 유지보수가 더 쉬워질 것입니다. 다만, 팀원들의 학습 시간이 필요할 수 있어요."
이러한 대화 예시들은 상호 이해와 명확한 의사소통을 촉진하며, 프로젝트의 원활한 진행을 돕습니다. 효과적인 소통은 기술적 세부사항과 비즈니스 요구사항 사이의 균형을 맞추는 데 중요합니다.
확실히 차이가 있어 보이긴 합니다.
한 두개 정도의 AI 서비스에서 결과를 더보고 비교 분석 자료를 만들어 공유 하도록 하겠습니다.
안녕하세요 이번에 AI를 활용하여 프로그래머와 소통이 어려운 이유에 대해서 좀 더 쉽게 소통하는 법과 문제를 해결하는 법에 대해 알아 보고 있습니다.
이번 시간에는 가장 유명한 ? 챗 지피티를 이용하여 Gemini와 동일하게 질문을 해보았습니다.
제가 한 질문 : 프로그래머와의 효과적인 소통을 위한 실제 대화 예시
Chat GPT 의 답변 :
프로그래머와의 소통에서 가장 중요한 요소는 명확하고 구체적인 설명입니다. 목표, 문제점, 요구 사항을 명확하게 전달하는 것이 매우 중요하며, 이와 동시에 프로그래머의 의견을 경청하고 그들의 언어를 이해하려는 노력이 필요합니다. 아래는 효과적인 소통을 위한 대화 예시입니다.
예시 1: 요구 사항 전달
당신: "현재 고객들이 회원 가입 절차에서 시간을 너무 많이 소비하고 있다고 합니다. 이 문제를 해결하기 위해 회원 가입 단계를 간소화하고 싶습니다. 현재 5단계로 나눠져 있는데, 이를 2단계로 줄일 수 있을까요? 예를 들어, 이름과 이메일만 입력하면 다음으로 넘어가게 하고, 추가 정보는 나중에 입력하도록 유도하는 방식으로요."
프로그래머: "그렇게 하려면 회원 가입 양식을 두 개의 단계로 나누고, 첫 번째 단계에서 최소한의 정보만 받아야 합니다. 두 번째 단계에서는 선택적으로 나중에 추가 정보를 입력하도록 구현할 수 있습니다. 혹시 두 번째 단계로 넘어갈 때 특정 알림이나 팝업을 보여주길 원하시나요?"
당신: "네, 첫 번째 단계 완료 후 추가 정보를 입력하지 않더라도 계속 진행할 수 있다는 안내 팝업을 넣으면 좋겠습니다. 추가 정보를 입력할 수 있도록 나중에 프로필 설정 페이지로 유도하는 알림도 추가해 주세요."
프로그래머: "알겠습니다. 추가 정보 입력 유도는 회원 가입 후에도 설정할 수 있게 알림 시스템을 추가하고, 회원 가입 시 단계는 2단계로 간소화하겠습니다."
예시 2: 버그 리포트
당신: "저희 웹사이트의 로그인 기능에 문제가 있는 것 같습니다. 몇몇 고객들이 비밀번호를 정확하게 입력했는데도 로그인에 실패했다고 보고했습니다. 특히 Chrome 브라우저에서 발생하는 것 같아요."
프로그래머: "로그인 시 어떤 에러 메시지가 뜨는지 확인할 수 있을까요? 혹시 특정 시간대에 문제가 발생하거나 공통점이 있나요? 그리고 해당 문제가 발생한 Chrome 버전도 확인해 주실 수 있나요?"
당신: "에러 메시지는 '비밀번호가 틀렸습니다'라고 나오고 있어요. 그런데 고객들이 비밀번호를 맞게 입력했음에도 불구하고 발생한 거라 문제인 것 같아요. 시간대나 공통점은 아직 파악되지 않았고, Chrome 최신 버전에서 주로 발생하는 것 같아요."
프로그래머: "알겠습니다. Chrome 최신 버전에서 로그인 처리 관련 문제를 확인해 보겠습니다. 혹시 비밀번호 입력 과정에서 자동완성 기능이 작동하고 있는지 확인해 보실 수 있을까요? 그 부분도 원인일 수 있습니다."
당신: "네, 고객들에게 확인 요청하겠습니다. 감사합니다."
예시 3: 기능 구현 논의
당신: "사용자들이 프로필 사진을 업로드할 때 이미지 크기 제한을 2MB로 설정해 주셨으면 합니다. 그리고 업로드 가능한 이미지 형식을 JPG, PNG로 제한해 주세요."
프로그래머: "2MB 제한과 파일 형식을 JPG와 PNG로 설정하는 것은 문제없습니다. 혹시 이미지 업로드 실패 시 보여줄 오류 메시지가 따로 필요하신가요? 그리고 업로드한 이미지를 자동으로 크기 조정하거나 압축하는 기능도 필요하신가요?"
당신: "네, 이미지 크기나 형식이 맞지 않을 때는 '이미지 크기나 형식이 맞지 않습니다. 2MB 이하의 JPG 또는 PNG 파일을 업로드해 주세요.'라는 메시지를 보여주면 좋겠습니다. 자동 크기 조정 기능은 지금은 필요 없을 것 같아요."
프로그래머: "알겠습니다. 그럼 오류 메시지를 설정하고, 업로드 형식 및 크기 제한을 적용하겠습니다."
이런 방식으로 구체적인 요구 사항과 문제를 설명하고, 프로그래머가 필요로 하는 추가 정보를 제공함으로써 소통의 효율성을 높일 수 있습니다.