Angular에 관한 잡설

Angular v4 한국어 검색결과가 1페이지도 안되길래 쓰는 글

Angular2를 처음 접할때 나는 웹 뉴비였다. 물론 지금도 그렇지만, 그때는 기본적인 상식조차 없는 수준이었다. 무식하면 용감하다고 하지 않던가. Google이라는 이름값에 넘어가 미묘한 환상을 가지고 무작정 튜토리얼부터 잡았다.

환상적인 러닝커브에 매번 감탄하며 욕이 목구멍으로 차올랐음에도 정말 열심히 참았다. 이건 Angular의 문제가 아니라 내가 미개해서 차마 이해를 하지 못해 그런것이다, 자기세뇌를 무한반복하며 튜토리얼을 끝마쳤다. 여기까지 1주일이 걸렸다.

무작정 프로젝트를 시작해봤다. 많은 고난을 겪었지만 그중 제일 골때리는건 모듈, 그리고 파일 구조였다. 모듈 컴포넌트 모듈 컴포넌트… 도대체 어떻게 하라는건지 알수가 없었다. 나중에 보니 공식 문서 가이드 12.의 4–06번 항목에 권장하는 구조가 있었다. 난 이 숫자를 외우고 있었는데도 방금 들어가서 찾아보는데 길을 잃고 5분이나 헤맸다.

angular.io에서 자신에게 필요한 정보를 찾는건 미로찾기에 더 가깝다. 문서의 모든 부분이 모든것을 설명하기 위해 모두 길게 늘어져있다. 솔직히 모든 문단에서 첫 문장과 마지막 문장만 남기고 코드만 보여주는게 더 도움될 것이다. F=ma 배우는 중학생에게 근데 사실 이게~ 로 시작해서 특수 상대성이론을 가르치려 드는 격이다.

Angular 4.0.0 소식이 나왔을때도 커뮤니티의 반응은 많이 갈리는 편이었다. 그럴만도 하다. 이쪽에 관심있는 개발자들 대부분은 AngularJS를 써봤을 것이고, 좋아했을 것이다. 시간이 지나고 성능 문제로 까이면서 누군가는 React로 넘어가고 누군가는 남고… 그러다가 Angular 2.0 소식이 나오자 모두들 AngularJS에서 받은 이미지를 기대하며 구경하러 왔다가 시무룩해져서 돌아갔다.

나도 왜 이런 선택을 했는지 모르겠다. 지금도 뭐 하나 찾으려면 검색어 겹쳐서 엄청 불편하다. golang도 그렇고, 검색으로 다 해먹는 분들이 도리어 검색 불편한 네이밍을 해대는건 대체 뭘까. AngularJS의 많은 사용자층을 흡수하려는 생각이 아니였을까 싶지만, 그들의 기대를 열심히 박살내고 오히려 열렬한 Angular 까는층을 만들어내는데 성공한듯 싶다.

차라리 묵-직한 네이밍으로 새로 지어주고 어려운 냄새 풍겨대면서 새로운 프레임워크로 홍보했으면 이렇게까지 되지는 않았을텐데 참 안타깝다. 지금 커뮤니티 반응은 Angular 자체보다 2^n으로 뛰어오르는 버전 네이밍으로 드립치는게 더 뜨거운 수준으로 보인다.

지금까지 열심히 깠지만, 다 애정이 있어서 까는거다. 나는 AngularJS를 써본적도 없고, JS도 자유자재로 다루는 수준이 아니였기에 오히려 Angular2, 그리고 Typescript에 거부감을 느끼지 않고 계속 해나갈수 있었다. RxJS는 무섭긴 했다만. 지금도 Observable을 잘 활용하는건 아니지만, 그 유용함의 끝자락을 살짝 맛보고 나니 돌아갈수 없게 되었다.

Angular 4.0.0 나오면서 선보인 기능은 딱히 별게 없다. *ngElse는 어딘가 더럽게 보이고, 어차피 *ngSwitch로도 다 되는거였다. 차라리 이쪽이 더 깔끔한듯. Angular Universial은 아직 쓸만한게 아니고. 오히려 중요한건 Typescript 2.x 지원, 그리고 StrictNullCheck 지원이다.

나는 최대한 기계님들께서 내 코드를 엄격 근엄 진지하게 바라봐주시길 원한다. 적어도 나보다는 정확하게 판단해줄테니까. Angular 2.x때도 어떻게든 StrictNullCheck 적용시켜서 빌드시키려고 했었다. StrictNullCheck 옵션을 주면 대부분의 상황에 null-safe하도록 에러를 띄워준다. 역시 기계님이 최고다. tsconfig, tslint 관해서 쓰려면 글 한두개는 더 나올거 같으니 일단 미루자.

하여간 내가 Angular 4 릴리즈를 기대한 이유는 Angular 자체에 있지 않다. 여기서 또 크게 뭘 바꿨다간 나같은 사람들까지 떨어져 나갈테니까. 최근 몇주간 angular, @angular/cli의 버전업 주기를 살펴보면서 둘다 RC로 들어가는걸 보고 동시에 나올거라는 것을 거의 확신했다. Angular CLI야 말로 내가 기대하고 있던 물건이다.

Angular 까는 사람들도 Angular CLI는 안깐다. 오히려 Vue가 CLI가 부실한게 약점으로 지적될 정도. 위에서 언급한 가장 고통스러운 부분인 모듈, 파일 구조 관한 문제를 거의 다 해결해준다. 컴포넌트 생성하면 부모 폴더 따라가면서 모듈 찾아서 추가해주고, 컨벤션에 맞게 모든 파일명, 클래스명에 템플릿까지… 개발 속도와 편의성이 완전히 달라진다.

Angular CLI는 베타때부터 계속 프로젝트에 사용하고 있긴 했다. 그래도 베타랑 RC랑 Final은 느낌이 다르니까. 그리고 1.0.0이 나오면 이제라도 공식 문서를 CLI에 맞춰서 갈아엎어 줄거라고 믿고 있기 때문에 기대하고 있었다. 근데 v4 문서를 봐도 별로 다른게 없더라. 그래서 그냥 내가 쓰기로 했다. 다음 글부터 천천히 시작해보도록 하자.

아, 에디터는 Visual Studio Code 쓰자. 지금껏 Atom에 플러그인 달아서 했는데, 자동완성이랑 에러 검출이 느리게 동작해서 Typescript의 장점을 제대로 살려주질 못한다. vscode는 정말 칼같이 동작한다. 내장 git과 터미널도 매우 유용하다. 개발할때 딱 브라우저랑 vscode만 켜면 된다. 이런게 은근히 집중력에 큰 차이를 가져다준다.

Angular의 단점이 크게 느껴지지만, Angular CLI와 Visual Studio Code, 그리고 참고하기 좋은 문서만 있으면 그 단점은 거의 다 묻어진다고 생각한다. 앞의 두개는 구글, 마소가 제공해주고 있으니 마지막 하나는 내가 개미눈물 만큼이라도 도움이 될수 있도록 하겠다. 언젠간 나보다 잘하는 누군가가 내 글을 쓸모없게 만들어주길 바란다.