자 열 세번째 키워드인 '직렬화'를 알아보겠다.
음 이론은 대충 알고있었지만 상세하게 알아보겠다.
일단 내가 알고있는 정보는 각종 정보를 읽을 수 있는 파일형식으로 변환하고
이어주는 작업으로 알고 있다.
이 지식이 맞는건지 한번 알아보겠다.
컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터
환경에서 저장(파일이나 메모리 버퍼에서, 또는 네트워크 연결 링크 간 전송)하고 나중에
재구성 할 수 있는 포맷으로 변환 하는 과정이라고 한다.
오브젝트를 직렬화 하는 과정은 오브젝트를 마샬링한다고도 한다. 반대로 직렬화가 된 데이터들을
데이터 구조로 추줄하는 것을 역직렬화(Deserialization)이라고 한다.

위 사진으로 개념을 소개하겠다.
이렇게 직렬화를 거쳐 일련의 형태를 가진 데이터를 파일로 저장하거나
클라이언트에게 전송할 수 있다.
일반적으로 직렬화의 단계는 다음과 같이 이루어 진다고 한다.
객체나 데이터 구조 준비 : 직렬화할 데이터나 객체를 준비한다. 이는 일반적으로 메모리에 저장된 프로그램의 변수나 데이터 구조이다. 이 데이터들은 일반적으로 클래스의 인스턴스나 배열, 맵 등의 형태를 가질 수 있다.
직렬화 : 준비된 데이터나 객체를 직렬화 하는 과정이다. 이 과정에서는 데이터나 객체의 내용을 파일 또는 네트워크로 전송 가능한 형식으로 변환한다. 이는 주로 바이트 스트림이나 문자열로 변환이 된다. 직렬화된 원래데이터의 구조와 내용을 포함하며, 나중에 다시 역직렬화하여 복원할 수 있다.
역직렬화 : 직렬화된 데이터를 원래 형태로 복원하는 과정이다. 이 과정에서는 직렬화된 데이터를 다시 원래의 데이터 구조나 객체로 변환한다. 이렇게하면 원래의 데이터 객체를 사용하여 프로그램에서 다시 작업을 수행할 수 있다.
언어나 각종 프레임워크에 따라 직렬화, 역직렬화를 위한 라이브러리 또는 모듈이 있는데 프로세스 수행을 하는데 도움을 준다. 일반적으로 JSON, XML 등의 형식이 사용된다고 한다..
Unity 코드에서 [SerializeField] 를 써본 경험이 있는데 이번 키워드를 공부한 이후로
확실히 개념이 잡히게 되었다. 유튜브에서 왜 private인데 에디터에서 보이는지, 왜 사용하는지,
등등을 알게 되었는데 확실히 사람은 모르면 공부를 해야한다.
벌써 열두번째 키워드인데 앞으로 100번째의 키워드까지 정리하는 것이 내 목표다.