템플릿

나무위키에서 사용되는 템플릿 목록에 대해서는 문서를 참조하십시오.

1 일반적 의미

Template. 형판, 견본, 본보기. 무언가를 만들기 위해서 시초가 되는 양식, 혹은 천편일률적으로 쓰이는 요소 등을 말한다.
다른 식으로 말하자면 왕도, 양식, 블루프린트 등등의 의미로 쓸수있지만 반대로 지루하고 뻔하다는 의미로도 사용될 수 있는 단어.
일반적인 공감을 얻기는 편한 형태지만 너무 여기에 맞추면 양산물이 된다.

애프터 이펙트 등의 동영상 프로그램이나 파워포인트 등의 문서 작업에 사용되도록 미리 예쁘장하거나 전문적인 모양으로 틀을 만들어놓은 것도 템플릿이라고 한다. 프로그램을 조금만 다룰 줄 알면 이 템플릿을 받아 이미지나 글만 조금 넣어서 완성도 높은 결과물을 낼 수도 있다.

2 나무위키에서의 템플릿

보통 위키위키에서 사용할 때는 "틀"이라고 번역되지만 나무위키 한정으로 템플릿이라는 어휘를 그대로 쓴다. 왜냐하면 "틀"이라고 하면 문서나 절의 상단에 넣기 위한 상자 틀과 의미가 겹치기 때문이다.

나무위키에서의 템플릿 생성과 사용법에 대한 자세한 설명은 분류:템플릿을 참고하도록 하자.

3 인터넷 용어로서의 '템플릿'

テンプレ(템프레)

일본 웹 용어로 템플릿Template. 즉 틀이라는 의미가 확장된 것으로 특히 니코동의 영상에 대해서 같거나 비슷한 장면에 동일한 코멘트를 남기는 행위를 뜻한다.
악마성 TAS 등에서 코멘트 탄막을 덧붙이고 마지막에 여기까지 템플릿(テンプレ)이었다고 코멘트 하던게 다른 비슷한 영상에도 적용되기도 한다.

4 도형자

자주 쓰이는 도형을 쉽게 그릴 수있게 도형모양으로 구멍을 뚫어 놓은 자.
예를 들면 아래의 컴퓨터 도형자는 순서도에 사용되는 기호를 그리는데 특화되어 있다.

파일:Attachment/ibm-flowchart-template.jpg

5 미니어처 게임의 게임용 도구

m1610234_99220199038_40kTemplateSetMain_445x319.jpg
Warhammer 40,000의 템플릿.

'템플릿'이라는 말처럼 여러 가지 모양을 한 얇고 평평한 플라스틱 판. 사실 규격만 맞는다면 재질은 종이가 되었든[1] 금속제든 간에 상관 없지만, 일반적으로 게임 회사에서 공식적으로 파는건 보통 투명한 플라스틱 판이다. 이는 템플릿이 광역 공격 등에 주로 사용되므로, 적이 공격에 얼마나 얻어맞는가를 보는 데에는 투명한 재질이 게임 플레이에 보다 유리하기 때문.

Warhammer 40,000에서는 폭발 공격이나 화염방사기 등의 광역 공격을 할 때 템플릿을 사용한다. 이러한 광역 공격 무기는 무기의 사정거리에 '템플릿(Template)'이라 씌여있거나 혹은 무기 옵션에 '블라스트(Blast)'가 들어 있으며, 전자의 경우 길다란 물방울 모양의 것을, 후자는 동그란 것을 사용한다.

'템플릿'으로 판정하는 무기들은 화염방사기 계열의 무기들로, 공격 선언 후 템플릿의 좁은 부분을 공격자의 무기 총구에, 넓은 부분을 적으로 향하게 배치한 후 명중 판정을 하지 않고 템플릿에 겹쳐있는 모든 적에게 자동으로 명중한 것으로 간주한다.그러니까 리그 오브 레전드의 스킬 범위 표시를 생각하면 쉽다

블라스트 무기는 착탄점을 기준으로 반경 3인치(일반 블라스트) 혹은 5인치(라지 블라스트) 내에 범위로 데미지를 주는 무기인데, 특이하게도 블라스트 무기는 추가로 스캐터 다이스[2]를 이용해서 무기가 얼마나 빗나갔는지를 판정해야 한다. 이 경우 무기가 원하는 대상에 명중할 확률은 모델의 BS에 상관없이 3분의 1이며, 나머지의 경우 스캐터 다이스에서 나온 화살표 방향에 아틸러리 다이스[3]를 추가로 굴려 주사위에 나온 수만큼 블라스트 템플릿을 이동시킨 후 데미지 판정을 한다. 이 경우 BS 수치만큼 빗나간 거리를 보정할 수 있다.[4][5]

6 C++에서의 템플릿

C++에서 템플릿은 전반적으로 동일한 기능을 하는 함수나 클래스가 사용되는 자료형에 따라 여러번 정의되어야 할 때 사용된다. 이러한 기법을 일반적으로 Generic Programming이라고 하는데 JavaC\# 등 많은 객체지향언어에서도 채용하여 사용되고 있다.

템플릿화 하려는 함수나 클래스 정의 앞에서 template<typename T> 또는 template<class T>라고 정의한 후, 해당 코드에서 자료형에 따라 달라지는 부분의 자료형 선언을 앞에서 정의한 T형 으로 바꾸어준다. 여기서 T는 정의되지 않은 자료형 이라는 의미로 템플릿 매개변수, 나중에 int, float같이 이 자리에 전달되는 자료형의 정보를 템플릿 인자 라고 한다.[6]

간단한 예시로 만일 두 값의 합을 반환하는 Add함수를 다양한 자료형에 대응시켜야 한다면 단순히 원하는 자료형 갯수만큼 함수 오버로딩을 통해 구현할 수 있지만, 템플릿을 사용하는 경우 하나의 Add함수에 변수에 따라 달라지는 부분을 템플릿 매개변수로 선언 후 나중에 실질적으로 함수를 부를 때 자료형을 지정해서 간단히 끝낼 수 있다.[7] 컴파일러는 이렇게 T같은 템플릿 매개변수로 정의되어 있는 부분을 실질적인 자료형을 채워넣어 코드를 완성한다.

다만 앞에서 정수 또는 실수의 숫자를 더하는 Add함수와는 달리 두 문자를 입력받고 문자를 이어주는 Add함수가 필요하다면, 그 기능이나 구현이 앞의 숫자만를 사용하는 함수와는 차이가 있음으로. 이 때는 특정 자료형에 따라 사용자가 미리 작업을 지정해주는 특수화 과정을 추가로 정의해주어야 한다.

한가지 주의점은 템플릿으로 선언한 클래스는 나중에 실질적인 사용시 특정 자료형으로 템플릿 인자를 채워넣는 방식으로 동작함으로, 컴파일러가 해당 템플릿 클래스의 모든 부분을 알고 있어야 한다. 때문에 클래스의 선언과 실질적인 구현이 헤더와 다른 소스 파일로 분산되어 있다면 컴파일 오류가 발생한다. 해결법으로 클래스의 선언과 정의를 하나의 헤더 파일 안에 모두 끝내거나 해당 클래스를 사용하는 소스의 전처리 부분에 클래스 선언이 들어가 있는 헤더 파일과 실질적인 구현이 들어있는 소스 파일을 모두 포함시키는 간단한 방법으로 해결 할 수 있다.
  1. 가령 Warhammer 40,000 룰북에는 템플릿 모양이 나와있는 페이지가 있어서, 이걸 복사해서 잘라 쓸 수 있도록 되어있다.
  2. 2개의 명중 표시와 4개의 화살표 표시가 있는 주사위.
  3. 2, 4, 6, 8, 10, 12의 숫자가 표시된 주사위. 이건 그냥 일반 주사위를 하나 굴린 후 2배를 해도 된다.
  4. 가령 BS4짜리 모델이 스캐터 판정이 나온 후 아틸러리 다이스에서 8이 나왔다고 하자. 그러면 이 공격의 경우 아틸러리 다이스의 수 8에서 BS 수치 4를 뺀 4값만큼만 블라스트 템플릿을 이동시켜 판정한다. BS 수치가 아틸러리 다이스의 눈수보다 높을 경우 빗나감 판정을 무시할 수 있다.
  5. 다만 전혀 명중할 수가 없는 상황에서 명중 판정이 난 경우 명중 주사위 면에 있는 작은 화살표 방향으로 템플릿을 이동시킨다.
  6. 물론 T 말고 다른 문자도 상관 없다.
  7. 사실 템플릿 함수를 부르는 과정에서 자료형이 명확하다면 명시를 안해도 컴파일러가 자동으로 알맞는 자료형으로 만들어준다.