앱 개발 – Shotgun 지원 
 앱 개발 부터 시작 
 여기 에서 는 앱 개발 과 Shotgun Pipeline Toolkit 이 새 도구 개발 시 일 을 어떻게 좀 더 쉽 게 만들 어 주 는지 간단히 소개 합니다 . 
 초보 자 앱 템플 릿 
 기존 앱 을 활용 한 개발 
 새 앱 을 처음 부터 생성 
 개발 샌드박스 생성 
 초보 자 앱 리포 지토리 분기 ( fork ) 또는 다운로드 
 매개변수 및 프레임워크 추가 
 최소한 으로 필요 한 프레임워크 버전 
 새 리포 지토리 를 환경 에 추가 
 템플 릿 초보 자 앱 의 해부 구조 
 첫 번 째 릴리즈 준비 
 프로덕션 구성 에 변경 사항 설치 
 기존 앱 수정 
 설명서 자료 
 툴킷 에 대한 대화 식 액세스 
 Shotgun Pipeline Toolkit 은 Shotgun 소프트웨어 가 관리 하 는 앱 과 엔진 의 모음 일 뿐 아니 라 커스텀 파이프라인 도구 를 빠르 고 쉽 게 빌 드 할 수 있 도록 해 주 는 프레임워크 이자 개발 플랫 폼 이 기 도 합니다 ! 이 문서 에서 는 이 두 경우 의 워크 플로우 를 알아보 고 , 앱 개발 과 관련 한 몇 가지 기본 사항 에 대해 설명 합니다 . 
 Shotgun 소프트웨어 를 통해 관리 및 릴리즈 되 는 모든 앱 과 엔진 은 오픈 소스 로 , Github 에서 찾아볼 수 있 습니다 . 
 새 앱 을 시작 할 때 는 초보 자 앱 을 살펴보 는 것 이 좋 습니다 . 초보 자 앱 을 살펴보 십시오 . 초보 자 앱 은 새 앱 빌드 시 시작점 으로 활용 할 수 있 는 " 빈 " 앱 입니다 . 이 앱 을 사용 하 면 본인 에게 맞 게 설정 된 모든 표준 툴킷 보일러 플레이트 코드 를 가져올 수 있 습니다 . 
 모든 Shotgun 툴킷 앱 은 오픈 소스 이 기 때문 에 이 소스 코드 를 보다 발전 된 앱 개발 을 위한 기반 으로 사용 해도 됩니다 . 아주 중요 한 기능 이 누락 되 어 있 는 기본 앱 을 발견 하 면 github 에서 이 를 복제 해 자체 적 으로 개발 을 진행 해 볼 수 있 습니다 ! 저희 는 풀 리퀘스트 ( pull request ) 를 환영 합니다 . 다른 사람 에게 도 도움 이 될 만 한 변경 사항 이 있 다면 주저 하 지 말 고 풀 리퀘스트 로 알려 주 십시오 . 그러면 앱 의 메인 버전 에 적용 할 수 있 습니다 . 
 누락 되 었 다고 생각 하 는 기능 이 전반 적 으로 유용 한 기능 이 라고 생각 한다면 support @ shotgunsoftware . com 주소 로 알려 주 시 기 바랍니다 . 물론 그 수정 사항 이 이미 계획 하 고 있 던 것 이 거나 다른 고객 이 처리 한 것 이 거나 아니 면 같 은 동작 을 수행 하 는 다른 방법 이 있 을 수 도 있 습니다 ! 저희 는 고객 여러분 이 앱 의 현재 버전 에서 누락 되 었 다고 느끼 는 것 이 무엇 인지 그 의견 을 듣 고 싶 습니다 . 
 이 섹션 에서 는 초보 자 템플 릿 을 사용 하 여 새 앱 을 생성 하 는 방법 을 살펴봅니다 . 여러분 이 이미 github 및 git 워크 플로우 에 익숙 하 다고 가정 하 기 는 하 지만 git 을 소스 관리 솔루션 으로 사용 하 고 있 지 않 더라도 툴킷 개발 은 얼마 든지 진행 할 수 있 습니다 . 
 시작 하 기 전 에 프로젝트 구성 을 복제 하 여 개발 샌드 박스 를 설정 하 는 것 이 좋 습니다 . 이렇게 하 면 프로덕션 에 포함 된 다른 누구 에게 도 영향 을 미치 지 않 고 개발 및 변경 사항 적용 ( 및 파 기 ! ) 을 수행 할 수 있 는 별도 의 구성 이 만들 어 집니다 . 구성 복제 에 관한 자세 한 정보 는 다음 문서 에서 확인 할 수 있 습니다 . 
 > 툴킷 구성 관리 
 시작 하 는 가장 쉬운 방법 은 초보 자 앱 을 분기 ( fork ) 하 는 것 입니다 . 초보 자 앱 은 여기 에서 찾 을 수 있 습니다 . 
 아직 git 소스 제어 를 사용 하 고 싶 지 않 다면 github 에서 zip 파일 을 다운로드 해서 디스크 에 압축 을 풀 면 됩니다 . 나중 에 다시 git ( 또는 다른 소스 제어 패키지 ) 에 추가 하 는 것 은 쉽 습니다 . git 리포 지토리 가 필요 하 다는 것 을 이미 알 고 있 다면 초보 자 앱 리포 지토리 를 자신 의 git 서버 로 분기 ( fork ) 한 다음 , 로컬 개발 영역 으로 컨텐츠 를 체크아웃 할 수 도 있 습니다 . 어느 방식 을 사용 하 든 로컬 개발 영역 에 초보 자 앱 코드 를 가져와 개발 을 시작 할 수 있 도록 하 는 것 이 목표 입니다 . 
 이 단계 에서 프레임워크 사용법 을 알 고 있 거나 필요 한 특정 매니 페스트 매개변수 가 있 다면 바로 지금 설정 하 면 됩니다 ! 앱 을 환경 에 설치 하 는 다음 단계 에서 는 시스템 이 자동 으로 모든 구성 을 처리 하 기 때문 입니다 . 
 예 를 들 어 , 위젯 및 Shotgun 유틸리티 프레임워크 를 앱 에 사용 하 기 로 한다면 다음 을 info . yml 매 니 페스트 에 추가 하 십시오 . 
 최소한 으로 필요 한 프레임워크 버전 이 있 다면 minimum _ version 설정 을 info . yml 매니 페스트 에서 사용 할 수 있 습니다 . 
 위 내용 은 tk - framework - qtwidgets 의 v 1 . 5 . 0 을 앱 에 사용 할 수 있 도록 해줍니다 . 그렇 지 않 으면 앱 이 시작 시 로드 되 지 않 고 , 콘솔 에 오류 가 표시 됩니다 . tank updates 를 사용 하 여 앱 을 업데이트 하 면 구성 되 어 있 는 프레임워크 중 최소한 으로 필요 한 버전 을 충족 하 지 않 는 프레임워크 는 자동 으로 앱 과 함께 업데이트 됩니다 . 
 프레임워크 와 그 유용 성 에 대한 자세 한 정보 는 다음 링크 에서 확인 하 십시오 . 
 > QT Widgets 프레임워크 
 > Shotgun 유틸리티 프레임워크 
 이제 이 앱 을 툴킷 내 에서 시작 하 고 실행 해 보 겠 습니다 ! 
 개발 샌드 박스 에 는 이 특정 구성 을 처리 하 는 데 사용 할 수 있 는 특정 tank 또는 tank . bat 바이너리 가 있 습니다 . 터미널 을 열 고 개발 샌드박스 로 이동 합니다 . 로컬 tank 명령 을 사용 하 면서 install _ app 명령 을 실행 합니다 . 앱 을 설치 할 때 에 는 이 를 설치 할 환경 과 엔진 을 선택 해야 합니다 . 엔진 은 tk - maya , tk - nuke 등 실행 하 게 될 응용 프로그램 입니다 . 환경 은 특정 작업 영역 을 위해 실행 하 려는 도구 의 모음 입니다 . 기본 구성 에서 는 샷 작업 을 하 는 경우 환경 을 shot _ step 이 라 부르 고 , 에 셋 작업 을 하 는 경우 환경 을 asset _ step 이 라고 부릅니다 . 
 예 를 들 어 , 새 앱 코드 를 / Users / manne / dev / tk - multi - mynewapp 에 배치 하 는 경우 에 는 이 를 설치 하 기 위해 다음 을 실행 하 게 됩니다 . 
 앱 이 필요 로 하 는 모든 프레임워크 는 설치 명령 을 통해 자동 으로 설치 됩니다 . 이제 막 설치 한 환경 에 대해 Maya 를 시작 하 면 메뉴 에 초보 자 앱 이 나타나 야 합니다 ! 
 템플 릿 초보 자 앱 의 기본 구조 는 다음 과 같 습니다 . 
 앱 진입 점 및 메뉴 등록 은 app . py 파일 에서 찾 을 수 있 습니다 . 이 파일 에서 보통 클래스 를 설정 하 고 , 항목 을 초기 화 하 고 , 메뉴 항목 을 등록 합니다 . 
 매니 페스트 는 이 앱 이 설치 될 때 필요 한 다양 한 모든 설정 을 정의 합니다 . 대개 설정 은 재 사용 가능 한 앱 을 원하 고 , 앱 자체 에서 는 어떠 한 값 도 하드 코딩 하 고 싶 지 않 은 경우 유용 합니다 . 
 dialog . py 에 는 메인 앱 창 을 생성 하 는 로직 및 이벤트 콜백 등 이 포함 되 어 있 습니다 . 
 dialog . py 는 UI 폴더 에 상주 하 는 자동 생성 된 위젯 파일 에 로드 됩니다 . 이 파일 에 는 대화 상자 UI 의 기본 레이아웃 및 특성 이 모두 포함 되 어 있 습니다 . 
 리소스 폴더 에 있 는 dialog . ui 파일 은 사용 자 가 열 어서 앱 의 모양 을 빠르 게 디자인 하 고 정의 하 는 데 사용 할 수 있 는 QT Designer 파일 입니다 . 변경 사항 을 처리 하 고 나 면 빌드 스크립트 를 실행 하 여 UI 파일 을 Python 코드 로 변환 해야 합니다 . 
 이제 개발 준비 가 모두 끝 났 습니다 ! 편리 하 게 도 구성 에 하나 이상 의 개발 항목 이 준비 되 는 즉시 툴킷 이 자동 으로 Reload 및 Restart 옵션 을 Maya , Nuke 등 의 내부 메뉴 에 추가 합니다 . 이 옵션 을 클릭 하 면 구성 과 코드 가 다시 로드 되 고 , 엔진 이 다시 시작 됩니다 . 즉 , Maya 를 일단 시작 하 고 , 시도 해 보 려는 코드 나 구성 변경 을 적용 할 때 마다 다시 로드 및 다시 시작 버튼 을 누르 기 만 하 면 변경 사항 을 끌어오 는 과정 을 빠르 게 반복 할 수 있 습니다 . 화면 에 활성 상태 인 UI 가 있 는 경우 이 UI 는 자동 으로 업데이트 되 지 않 으며 , 메뉴 에서 해당 UI 로 이동하 여 다시 실행 해 주 어야 합니다 . 
 코드 를 테스트 하 려면 간단히 다른 사용 자 들 을 Shotgun 의 파이프라인 구성 항목 에 추가 하 여 여러분 의 개발 샌드박스 로 초대 하 면 됩니다 . 추가 된 사용 자 들 은 곧바로 Shotgun 내부 메뉴 에서 새 항목 을 볼 수 있 습니다 . 
 그러면 한 예 로 개발 샌드 박스 에 연결 되 어 있 는 Maya 실행 메뉴 항목 을 클릭 할 수 있 습니다 . Maya 가 시작 되 면 사용 자 들 은 이 를 여러분 의 구성 에서 실행 하 게 되 고 , 여러분 이 진행 중 인 작업 을 여러분 이 보 는 방식 과 동일 하 게 확인 할 수 있 습니다 . 참고 : 사용 자 들 이 앱 코드 에 도 액세스 하 여 볼 수 있 도록 해야 합니다 . 그렇 지 않 으면 앱 이 로드 되 지 않 습니다 . 
 첫 번 째 릴리즈 를 진행할 준비 가 되 었 다면 소스 제어 를 사용 하 여 변경 사항 이 트래킹 되 도록 하 는 것 이 좋 습니다 ( 이미 그렇게 한 것 이 아니 라면 ) . 툴킷 은 처음 부터 git ( http : / / git - scm . com / ) 을 지원 하 기 때문 에 이 를 사용 하 는 것 이 좋 습니다 . 이 문서 의 나머지 부분 에서 는 git 사용 에 익숙 하 며 컴퓨터 에 설정 되 어 있 다고 가정 합니다 . 
 이제 앱 에 대한 git 리포 지토리 가 설정 되 어 있 을 것 입니다 . 그렇 지 않 으면 지금 생성 하 고 첫 번 째 커 밋 을 푸시 하 십시오 . 툴킷 git 리포 지토리 에 는 단일 앱 만 포함 되 어야 합니다 . 기본 적 으로 git 리포 지토리 는 원본 코드 를 가져온 초보 자 앱 리포 지토리 와 구조 가 같 아야 합니다 . 
 개발 을 진행할 때 에 는 툴킷 이 환경 파일 내 에 다음 과 같 은 형식 의 개발 위치 를 사용 합니다 . 
 이렇게 하 면 코드 를 변경 하 고 싶 은 경우 에 는 언제 든지 , 툴킷 이 개발 에 용이 한 지정 된 위치 의 디스크 에서 직접 앱 코드 를 로드 하 게 됩니다 . 
 릴리즈 한 소프트웨어 의 경우 항목 들 이 안 전하 고 쉽 게 업그레이드 될 수 있 도록 버전 이 지정 되 었 는지 확인 해야 합니다 . 모든 툴킷 의 기본 제공 앱 은 툴킷 앱 스토어 를 사용 하 여 업데이트 및 릴리즈 를 트래킹 하 고 , 다음 과 비슷 한 형식 의 위치 태그 를 갖 게 됩니다 . 
 이 태그 를 통해 툴킷 ( 예 : tank updates 명령 ) 은 업데이트 가 있 으면 이 를 확인 하 여 매우 안 전한 방식 으로 구성 을 업데이트 및 관리 할 수 있 습니다 . 새 버전 이 나올 때 마다 툴킷 은 코드 를 자동 으로 다운로드 하 여 , 디스크 의 로컬 " 앱 캐시 " 에 배치 하 고 , 사용 자 들 이 여기 에 액세스 할 수 있 는지 확인 합니다 . 
 내부 도구 의 경우 같 은 원리 를 이용 하 면 되 지만 툴킷 앱 스토어 대신 git 의 태그 를 사용 하 면 됩니다 . 즉 , 새 앱 의 경우 새 태그 를 생성 하 여 git 에 푸시 하 십시오 . 초보 자 앱 을 복제 한 경우 에 는 이미 태그 가 정의 되 어 있 습니다 . 태그 를 생성 할 때 에 는 유의 적 버전 을 사용 하 는 것 이 좋 습니다 ( http : / / semver . org 참조 ) . 툴킷 은 이 버전 번호 를 사용 하 여 어느 버전 이 최신 인지 판단 하 고 , 규칙 vX . Y . Z 를 준수 함 으로써 앱 버전 이 툴킷 과 호환 됩니다 . 
 git 에 첫 번 째 태그 를 생성 하 고 나 면 ( 예 : v 1 . 0 . 0 ) 이 를 프로덕션 구성 에 안 전하 게 설치 할 수 있 습니다 . 즉 , 프로덕션 에 포함 된 모두 가 새 도구 에 액세스 할 수 있 게 됩니다 . 앱 설치 는 앱 설치 명령 을 통해 이루어집니다 . 설치 명령 을 실행 할 때 에 는 기본 프로덕션 구성 에 속한 tank 명령 을 사용 하 고 있 는지 확인 하 십시오 . 
 이렇게 하 면 git 에서 가장 높 은 버전 태그 를 찾 아 환경 에 설치 합니다 . 설치 하 고 나 면 tank updates 를 간단히 실행 할 수 있 고 , 새 태그 가 생성 되 었 다면 업그레이드 할지 묻 는 메시지 가 나타납니다 . 이제 워크 플로우 는 공식 앱 스토어 앱 의 경우 와 동일 합니다 . 
 빈 초보 자 템플 릿 으로 시작 하 는 것 보다 기존 앱 ( 예 : Shotgun 소프트웨어 의 표준 앱 중 하나 ) 에 마이너 한 기능 을 추가 하 는 것 이 좋 을 때 도 있 습니다 . 수정 된 버전 의 앱 으로 작업 할 때 에 는 보통 소스 앱 과 비교 하 여 차이점 을 ' 트래킹 ' 하 면서 변경 사항 이나 버그 픽스 를 정기 적 으로 끌어오 는 방식 을 사용 합니다 . 
 이러 한 유형 의 개발 을 진행할 때 에 는 부모 코드 를 픽업 한 다음 일부 변경 사항 을 적용 하 고 , 이 를 파이프라인 에 릴리즈 합니다 . 릴리즈 는 실질 적 으로 앱 의 기본 버전 과 여러분 이 적용 한 로컬 변경 사항 으로 구성 됩니다 . 기존 버전 번호 에 버전 접미사 를 추가 하 는 것 이 좋 습니다 . 이렇게 하 면 툴킷 과 매끄럽 게 연동 되 고 , 비교 적 직관 적 인 방법 입니다 . 다음 워크 플로우 는 진행 방식 을 보여 주 는 것 입니다 . 
 부모 앱 을 분기 ( fork ) 하 고 , 자체 리포 지토리 를 생성 합니다 . 분기 ( fork ) 를 통해 모든 git 태그 를 가져옵니다 . 최신 태그 는 v 0 . 2 . 12 라고 불리 고 , 마스터 분기 는 기본 적 으로 이 태그 의 컨텐츠 와 동일 합니다 . 
 변경 사항 을 적용 하 고 마스터 로 커 밋 합니다 . 이제 기본 적 으로 v 0 . 2 . 12 및 변경 사항 이 준비 되 었 습니다 . 이 를 프로덕션 으로 릴리즈 할 때 태그 를 생성 해야 합니다 . 태그 이름 을 v 0 . 2 . 12 . 1 로 지정 하 여 코드 가 v 0 . 2 . 12 를 기반 으로 하 고 있 으며 , 이것 이 첫 번 째 릴리즈 임 을 나타냅니다 . 
 누군가 가 수정 사항 에서 버그 를 발견 합니다 . 버그 를 수정 하 고 , 태그 를 지정 한 다음 v 0 . 2 . 12 . 2 를 릴리즈 합니다 . 
 다수 의 중요 한 버그 픽스 가 부모 리포 지토리 에 릴리즈 되 었 습니다 . 이 를 여러분 의 리포 지토리 로 끌 어 옵니다 . 이제 가장 최신 태그 는 부모 리포 지토리 에서 이루어진 릴리즈 로 인해 v 0 . 2 . 15 가 됩니다 . 변경 사항 을 마스터 와 병합 하 고 , 테스트 합니다 . 이제 기본 적 으로 부모 앱 v 0 . 2 . 15 에 변경 사항 이 병합 됩니다 . v 0 . 2 . 15 . 1 에 태그 를 지정 합니다 . 
 위 에서 설명 한 태그 지정 체계 를 따르 면 툴킷 업데이트 가 올바로 작동 하 고 , 분기 ( fork ) 의 각 태그 가 어느 코드 를 기반 으로 하 고 있 는지 빠르 고 쉽 게 확인 할 수 있 습니다 . 
 이 문서 와 별개 로 앱 개발 시 유용 하 게 참고 할 수 있 는 다양 한 설명서 자료 가 있 습니다 . 
 > Core API 참조 
 Core API 참조 설명서 에 는 컨텍스트 , 파일 시스템 템플 릿 , 기타 시스템 내 핵심 메커니즘 을 조작 하 는 데 사용 하 는 모든 명령 이 포함 되 어 있 습니다 . 
 > 플랫 폼 API 참조 
 플랫 폼 API 참조 설명서 는 엔진 및 앱 기본 클래스 를 다루 고 있 으며 , 앱 코드 를 작성 할 때 어떤 옵션 이 있 는지 자세 한 정보 를 포함 합니다 . 
 > 앱 및 엔진 구성 참조 
 앱 구성 참조 설명서 는 앱 의 매개변수 및 구성 을 설정 할 수 있 는 다양 한 방법 을 다룹니다 . 
 단지 , 대화 식 으로 툴킷 을 다뤄 보 고 싶 다면 툴킷 엔진 을 시작 한 다음 예시 Nuke 또는 Maya 내부 에서 간단 한 동작 을 해 보 면서 Shotgun 메뉴 를 확인 하 면 됩니다 . 현재 실행 중 인 엔진 을 통해 모든 툴킷 에 액세스 할 수 있 으며 , 이 엔진 은 다음 과 같이 Maya 또는 Nuke 의 Python 셸 내부 에서 검색 할 수 있 습니다 . 
 엔진 에 액세스 하 고 나 면 현재 로드 된 환경 의 대부분 의 다른 요소 에 도 접근 할 수 있 습니다 . 
 tank 명령 에 액세스 할 수 있 는 명령 셸 에 있 는 경우 간단히 tank shell 명령 을 실행 하 여 대화 식 Python 세션 을 열 수 있 습니다 . 툴킷 은 가능 한 한 많 은 시스템 을 시작 하 려고 하 지만 컨텍스트 에 따라 액 세서 세트 는 제한 될 수 있 습니다 . 
 툴킷 셸 은 빠른 디버깅 을 수행 하 거나 작 은 스크립트 조각 을 실행 하 고 싶 을 때 유용 합니다 . 
 9 명 중 9 명 이 도움 이 되 었 다고 했 습니다 . 
 기술 문서 최종 업데이트 날짜 : : 2019 년 08 월 09 일 11 : 15