라라벨은 현재 가장 인기 있는 PHP 프레임워크다. 현대적인 코딩 관례를 사용하며, 문법 구조가 쉽고 가독성이 뛰어나다. 또한 코드 낭비 없이 아이디어를 실현하게 돕는 막강한 생태계를 갖췄다.
이 책은 라라벨을 제대로 활용하기 위해 탄탄한 기본기를 갖추고, 다양한 기능과 도구를 제대로 활용하려는 독자를 위한 실전 바이블이다. 웹 애플리케이션 개발 과정을 시간 순서대로 따라가며 필요한 개념을 알기 쉽게 설명하고, 구체적인 사례를 제시해 실무에 적용할 수 있게 돕는다. 다양한 기능과 하위시스템을 가진 라라벨 코드에 적용할 수 있는 유용한 내용도 담았다. 국내 독자를 위해 원서에는 없는 라라벨 8 최신 내용도 반영했다. 이 책을 마치고 나면 라라벨로 애플리케이션을 개발하는 데 자신이 생길 것이다.
■ 대상 독자
프로그래밍 경험이 있고, 객체지향 프로그래밍을 이해하며, PHP나 C 계열 언어의 일반 문법을 아는 사람을 독자로 가정한다. 웹사이트와 웹 애플리케이션을 개발하는 방법은 알지만, 어떻게 하면 더 잘할 수 있는지 고민하는 사람에게 제격이다. 물론 라라벨의 다양한 기능과 서드파티 도구를 익히고 싶은 이에게도 추천한다.
■ 라라벨 버전 및 실행 환경
라라벨 5.5~8을 포괄한다. 모든 예제는 라라벨 8을 기준으로 한다. 예제 실행을 위해 라라벨 8이 요구하는 PHP 버전과 익스텐션이 필요하다. 리눅스와 맥 OS를 기본 실행 환경으로 하며, 윈도우 사용자를 위해서는 리눅스 가상 머신인 홈스테드 사용 방법을 안내한다.
■ 주요 내용
- 라라벨 개발 환경 구축
- 라우팅과 컨트롤러
- 블레이드 템플릿
- 데이터베이스와 엘로퀀트
- 프런트엔드 컴포넌트
- 사용자 데이터 조회 및 처리
- 아티즌과 팅커
- 사용자 인증과 인가
- 요청, 응답, 미들웨어
- 컨테이너
- 테스트
- API 작성하기
- 스토리지와 검색
- 메일과 알림
- 큐, 잡, 이벤트, 브로드캐스팅, 스케줄러
- 헬퍼와 컬렉션
추천사
지난 1년 동안 회원 수가 14만 명 정도인 커뮤니티 사이트를 라라벨 기반으로 탈바꿈했고, 그 과정에서 라라벨의 웬만한 기능은 활용해봤다고 생각했다. 하지만 이 책을 읽으며 전에는 몰랐던 기능을 알게 되었고 서비스에 새롭게 적용해볼 수 있었다. 이 책은 라라벨의 기능, 구조, 원리를 버전에 따른 차이점과 함께 잘 설명한다. 라라벨을 처음 접하는 초심자부터 라라벨의 ‘숲과 나무’를 모두 살펴보고 싶은 숙련자에게 모두 추천한다.
_김재동, 인디스쿨 기술연구팀장
기존에 라라벨 코리아에서 매뉴얼 번역을 진행하며 느꼈던 아쉬움이 해결되는 책입니다. 매뉴얼상에서는 표현하지 못했던 기능의 의미와 활용 방법 등을 더욱 자세히 살펴볼 수 있습니다. 라라벨 5.6버전부터 8버전의 차이에 대한 설명이 추가되어 있어 구버전을 유지 보수하는 사람부터 신버전으로 시작하려는 사람 모두에게 도움이 됩니다.
_김종운, 라라벨 코리아 운영자
국내 라라벨 사용자가 많이 증가했고 커뮤니티도 활성화되었지만 발전하는 라라벨에 대응하는 도서 출간이 되지 않아 늘 안타까운 마음이었습니다. 국내에서 라라벨 커뮤니티를 만들고 이끌어온 두 분께서 훌륭한 서적을 번역해주셔서 이제 그간의 갈증이 해소될 것이라 생각합니다.
_정광섭, 『쉽게 배우는 라라벨 5 프로그래밍』 저자
저자소개
저자
맷 스타우퍼
개발자이자 교사. 타이튼(Tighten)의 기술 부문 이사다. 블로그(mattstauffer.com)를 운영하며 라라벨 팟캐스트와 <Five-Minute Geek Show(5분 긱 쇼)>를 진행한다.
역자
이현석
모던 PHP 유저 그룹 모임을 통해 라라벨을 알게 됐다. 이후 블로그, 뉴스레터, 강의 등을 통해서 라라벨 관련 지식을 꾸준히 공유하고 있다. 현재는 메쉬코리아에서 라라벨로 백엔드 애플리케이션을 개발한다. 『바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서』(업투데이트북스, 2018)를 집필했고 『클린 아키텍처 인 PHP』(leanpub, 2019)를 번역했다.
역자
안정수
숭실대학교를 졸업하고 여러 회사를 거쳐 현재는 카카오에서 블로그 플랫폼을 개발하는 12년 차 개발자다. 레거시 PHP 애플리케이션의 모더나이징 작업을 진행하면서 라라벨 프레임워크를 처음 접했다. 라라벨 한국어 매뉴얼을 업로드하며 라라벨 코리아(laravel.kr)를 운영한다.
목차
CHAPTER 1 왜 라라벨인가
__1.1 프레임워크의 장점
__1.2 웹과 PHP 프레임워크의 짧은 역사
__1.3 라라벨 프레임워크만의 장점
__1.4 라라벨의 작동 방식
__1.5 왜 라라벨일까?
CHAPTER 2 라라벨 개발 환경 구성하기
__2.1 시스템 요구 사항
__2.2 컴포저
__2.3 로컬 개발 환경
__2.4 라라벨 프로젝트 생성하기
__2.5 라라벨 디렉터리 구조
__2.6 설정
__2.7 라라벨 애플리케이션 구동하기
__2.8 테스트
__2.9 마치며
CHAPTER 3 라우팅 및 컨트롤러
__3.1 MVC, HTTP 메서드, REST 훑어보기
__3.2 라우트 정의하기
__3.3 라우트 그룹
__3.4 서명된 라우트
__3.5 뷰
__3.6 컨트롤러
__3.7 라우트 모델 바인딩
__3.8 라우트 캐싱
__3.9 폼 메서드 스푸핑
__3.10 CSRF 보호
__3.11 리다이렉트
__3.12 요청 중단하기
__3.13 커스텀 응답
__3.14 CORS 처리
__3.15 테스트
__3.16 마치며
CHAPTER 4 블레이드 템플릿
__4.1 데이터 출력
__4.2 제어 구조
__4.3 템플릿 상속
__4.4 뷰 컴포저와 서비스 주입
__4.5 커스텀 블레이드 지시어
__4.6 테스트
__4.7 마치며
CHAPTER 5 데이터베이스와 엘로퀀트
__5.1 설정하기
__5.2 마이그레이션
__5.3 시딩
__5.4 쿼리 빌더
__5.5 엘로퀀트 소개
__5.6 엘로퀀트 이벤트
__5.7 테스트
__5.8 마치며
CHAPTER 6 프런트엔드 컴포넌트
__6.1 라라벨 믹스
__6.2 프런트엔드 프리셋
__6.3 페이지네이션
__6.4 메시지 백
__6.5 문자열 처리를 위한 Str 클래스, 복수 표기, 다국어 처리
__6.6 테스트
__6.7 마치며
CHAPTER 7 사용자 데이터의 조회 및 처리
__7.1 Request 객체를 사용한 데이터 조회
__7.2 라우트 데이터
__7.3 파일 업로드
__7.4 유효성 검증
__7.5 폼 요청 객체
__7.6 엘로퀀트 모델의 대량 할당
__7.7 {{와 {!!의 차이
__7.8 테스트
__7.9 마치며
CHAPTER 8 아티즌과 팅커
__8.1 아티즌 소개
__8.2 기본적인 사용법
__8.3 아티즌 명령어 생성 방법
__8.4 일반 코드에서 아티즌 명령어의 호출
__8.5 팅커
__8.6 테스트
__8.7 마치며
CHAPTER 9 사용자 인증과 인가
__9.1 User 모델과 마이그레이션
__9.2 auth() 글로벌 헬퍼와 Auth 퍼사드 사용하기
__9.3 인증 컨트롤러
__9.4 Auth::routes()
__9.5 인증 스캐폴드
__9.6 remember me로 사용자 로그인 유지하기
__9.7 비밀번호 재확인
__9.8 수동으로 인증하기
__9.9 수동으로 로그아웃하기
__9.10 인증 미들웨어
__9.11 이메일 검증
__9.12 블레이드 인증 지시어
__9.13 가드
__9.14 인증 이벤트
__9.15 인가
__9.16 테스트
__9.17 마치며
CHAPTER 10 요청, 응답, 미들웨어
__10.1 라라벨 요청 생명주기
__10.2 요청 객체
__10.3 응답 객체
__10.4 라라벨과 미들웨어
__10.5 신뢰할 수 있는 프록시
__10.6 테스트
__10.7 마치며
CHAPTER 11 컨테이너
__11.1 의존성 주입 훑어보기
__11.2 의존성 주입과 라라벨
__11.3 app() 글로벌 헬퍼
__11.4 컨테이너는 어떻게 의존 객체를 연결하는가?
__11.5 컨테이너에 클래스 바인딩하기
__11.6 라라벨 프레임워크의 주요 클래스의 생성자 주입
__11.7 메서드 주입
__11.8 퍼사드와 컨테이너
__11.9 컨테이너와 서비스 프로바이더
__11.10 테스트
__11.11 마치며
CHAPTER 12 테스트
__12.1 테스트 기초
__12.2 테스트 이름 짓기
__12.3 테스트 환경
__12.4 테스트 트레이트
__12.5 간단한 유닛 테스트
__12.6 애플리케이션 테스트: 동작 원리
__12.7 HTTP 테스트
__12.8 데이터베이스 테스트
__12.9 라라벨 내부 시스템 테스트하기
__12.10 목킹
__12.11 아티즌 명령어 테스트하기
__12.12 브라우저 테스트
__12.13 마치며
CHAPTER 13 API 작성하기
__13.1 RESTful JSON API 기초
__13.2 컨트롤러 구성과 JSON 응답
__13.3 헤더 읽기 및 전송
__13.4 엘로퀀트 페이지네이션
__13.5 정렬과 필터링
__13.6 API 리소스
__13.7 라라벨 패스포트를 이용한 API 인증
__13.8 API 토큰 인증
__13.9 라라벨 생텀을 이용한 API 인증
__13.10 404 응답 변경하기
__13.11 테스트
__13.12 마치며
CHAPTER 14 스토리지와 검색
__14.1 로컬과 클라우드 파일 관리자
__14.2 기본적인 파일 업로드와 조작
__14.3 단순 파일 다운로드
__14.4 세션
__14.5 캐시
__14.6 쿠키
__14.7 로그
__14.8 라라벨 스카우트를 이용한 풀 텍스트 검색
__14.9 테스트
__14.10 마치며
CHAPTER 15 메일과 알림
__15.1 메일
__15.2 알림
__15.3 테스트
__15.4 마치며
CHAPTER 16 큐, 잡, 이벤트, 브로드캐스팅, 스케줄러
__16.1 큐
__16.2 라라벨 호라이즌
__16.3 이벤트
__16.4 웹소켓과 라라벨 에코를 이용한 이벤트 브로드캐스팅
__16.5 스케줄러
__16.6 테스트
__16.7 마치며
CHAPTER 17 헬퍼와 컬렉션
__17.1 헬퍼
__17.2 컬렉션
__17.3 레이지 컬렉션
__17.4 마치며
CHAPTER 18 라라벨 생태계
__18.1 이 책에서 다룬 도구
__18.2 이 책에서 다루지 않은 도구
__18.3 기타 자료
출판사리뷰
출판사 리뷰
라라벨은 전 세계에서 널리 사랑받는 웹 프레임워크다. 라라벨은 이 책을 번역하기 시작할 시점에도 이미 인기가 많았는데, 그 사이에 인기가 더욱 높아져서 깃허브에서 별을 가장 많이 받은 웹 프레임워크 소스 코드 리포지터리가 되기도 했다. 여러분이 이 책에 관심을 가진 이유도 아마 라라벨의 높은 인기 때문일 것이다.
2015년에 ‘XECon’에서 라라벨 학습 전략에 대해 발표해달라는 요청을 받고 ‘Learning Laravel’이라는 제목으로 발표를 한 적이 있다. 내용의 핵심은 처음부터 잘하려고 하다가는 시작도 못 할 수 있으니 되도록 최소한으로 배우고 일단 써먹어보라는 것이었다. 이후로 5년이나 지났다. 하지만 이 전략은 아직도 유효하다. 라라벨은 여전히 시작하긴 쉽고 잘하긴 어렵다.
일단 라라벨을 시작하는 데 성공했다면, 한 번은 제대로 학습할 필요가 있다. 프로그램을 작성하는 방법에 정답은 없다지만, 라라벨이 사용하는 개념과 제공하는 기능, 도구를 잘 이해하고 활용하면 더 나은 구조로 더 생산성 높은 개발을 할 수 있다.
이 책은 라라벨을 제대로 활용하기 위해 탄탄한 기본기를 갖추고자 하는 이들을 위해 쓰여졌다. 온라인 튜토리얼들은 사용 방법을 익히는 데 그쳐 개념 설명이 부족하고, 공식 매뉴얼은 기반 지식까지 설명할 만큼 충분히 친절하지 않다. 이 책은 그 둘이 제공하지 못하는 부분을 훌륭히 채워준다.
번역하면서 어려운 개념을 쉽게 설명하는 저자의 능력에 연신 감탄했다. 이 감동을 여러분이 조금이라도 느낀다면 그보다 더 큰 보람이 없을 것이다.
- Modern PHP에 기본적인 지식이 있는 자 - MVC 패턴에 대한 지식이 있는 자 - 라라벨을 처음 시작하거나 이미 사용하는 자
좋은 점
- 프레임워크가 생기게 된 이유에서 철학 그리고 커뮤니티까지 설명함으로써, 처음 접한 사람들에게 쉽고 호기심을 유발하게 만든다. - NOTE를 통해 버전 별 차이점을 설명해준다. 기존 유져와 입문자 모두에게 도움이 된다. - 두꺼운 책의 두께에 비해 비유들이 너무 적절하여 쉽게 읽히고 이해가 쉽다. 특히 5.9.9장 엘로퀀트의 관계에 대해서 이렇게 쉽게 설명한 책은 처음 봤다. - 용어 정리 페이지의 존재 개인적으로 책을 읽기 전 먼저 한번 가볍게 읽어보고 책을 시작하길 추천한다. 왜냐하면 기술서는 용어의 정의가 함축하고 있는 의미가 크기에 중요한 포인트라 생각한다.
아쉬운 점
- 굳이 찾자면 가격
총평
라라벨을 사용하겠다면 꼭 읽어야 할 필독서 여담으로 개인적으로 국내에서 구할 수 있는 라라벨 서적이 극히 적었고, 추천 일 순위였던 책은 실전 PHP 웹 프로그래밍이었으나, 이젠 이거다!
PHP는 이전 버전에서 작성한 코드를 최신버전에서도 큰 문제없이 사용가능하다. 하위 호환성 때문인데, PHP는 하위 호환성을 중요시하는 언어 중 하나다. 하위 호환성이란 하위 버전의 언어, 프레임워크에서 사용가능한 기능, 특성을 최신버전에서도 사용할 수 있게 환경을 지원해주는 것이다. 이 점이 PHP의 장점이자 단점으로 작용한다. 장점은 인터넷, 책 등을 참고할 때 오래된 버전에서 동작하던 코드를 가져와서 사용해도 큰 문제가 없다는 뜻이다. 단점은 최신 버전에서는 깔끔하게(보안성 측면 등 문제 없이) 작성 가능할 코드를 사용자가 이전 버전 스타일을 고집하는 경우도 있다는 것이다.
이런점때문에 나는 PHP에서 프레임워크는 무시할 수 없는 중요한 부분이라고 생각한다. 발생가능한 문제점들을 고려해서 코드를 잘 작성하는것은 어렵다. 하지만 최소한의 코드 품질을 유지하는데에 도움이 된다.
PHP에서는 라라벨 프레임워크가 대표적이다. JetBrain에서 시행한 설문조사 결과를 보면 PHP 프레임워크를 사용하는 사용자 중 67%가 라라벨 프레임워크를 쓰는것이 이것을 뒷받침한다.
이번에 리뷰하는 <처음부터 제대로 배우는 라라벨>은 PHP 8(리뷰 작성일 기준 최신 메이저 & Stable 버전) 환경에서 사용가능한 예제들로 구성되어 있다. 난이도는 PHP를 사용해봤다면 학습에 큰 어려움이 없게 구성이 되어 있다고 느꼈다. 이 한 권으로 라라벨 프레임워크의 모든, 세부적인 기능을 100% 설명하기보다 프레임워크의 특징과 전반적인 기능들을 소개해주고 있다. 핵심이 되는 키워드들은 내용에 포함되어 있기 때문에 구글링을 통해 찾아본다면 심화학습이 충분할 것 같다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." 리뷰를 위해 한빛미디어에서 책을 제공받았지만 주관적인 생각을 그대로 적었습니다.
내가 전문분야로 삼고 있는 안드로이드도 하나의 거대한 프레임워크이며, 백엔드로 널리 쓰이고 있는 스프링도 당연히 프레임워크이다.
이렇게 많은 프레임워크를 접하면서 서서히 잊고 있던 하나의 언어가 있었다.
바로 php이다. 예전에 제로보드가 한창이던 시절에 php를 지원하는 웹 호스팅을 찾아서 간단한 mysql DB와 결합하여 제로보드 설치하고, 주변사람들과 간단하게 게시판을 공유하며, 홈페이지를 운영하던 시절이 있었는데, 그러한 php 기술이 이제는 사장되어 많은 사람에게 서서히 점유율을 뺏기는 중이라고만 생각했었다.
그러던 중 우연한 기회로 다른 사람들의 프로젝트를 몇 개 둘러볼 기회가 있었는데, 그 중 많이 쓰이는 프레임워크인 라라벨로 개발했다는 것을 보게 되었다.
이름도 생소한 라라벨로 진행한 프로젝트라는 것이 어떤 것인지 궁금하여 이렇게 책을 접하고, 리뷰를 적게 되었다.
> 책에 대한 간단한 정보
이 책은 php를 기반으로 한 프레임워크인 라라벨에 대한 책이다.
기본서의 느낌이 많이 났지만, 생각보다 두꺼운 분량에 놀라기도 하였다.
라라벨 전반에 대해 다루고 있으며, 실습을 중심으로 기록되어있을 것처럼 보였지만, 그런걸 의도하고 구성한 것으로 보이지는 않았다.
그래도 라라벨의 처음부터 필요한 거의 모든 기본 지식들을 다룸으로써, 알고자 하는 이들에게 정보가 누락되지 않도록 노력한 흔적이 보였다.
> 인상깊은 부분들
우선, 대상 독자는 처음에 읽었을 때 와 닿지는 않았는데, 책을 한번 가볍게 읽고 난 뒤에 다시 찾아보게 되었다.
대상 독자는 아무래도 이 곳에 적힌 것이 맞는지 모르겠다. 웹사이트를 한번도 만들어 본 적이 없지는 않은데, 어려움이 느껴졌기 때문이다. 기본적인 프로그래밍 경험도 있다고 생각이 되는데 어려웠다.
라라벨의 장점이라기 보다는 프레임워크를 써야 하는 이유에 나온 챕터이다.
이 내용을 보고나서 정리된 생각으로는, PHP 개발자의 입장에서 라라벨을 사용하지 않고 그냥 PHP 개발자로서 커리어를 쌓고 개발할 수도 있지만, 라라벨이라는 프레임워크를 도입하면 어떠한 이점이 있는지 서술해 주는 쪽에 가까운 느낌이다.
자바의 스프링, 파이썬의 장고나 플라스크 등 타 프레임워크와 비교하여 어떠한 장점이 있는지 알려주지 않아서 아쉬움이 있었다.
다른 프레임워크에서도 있는 개념인 라우트라는 개념에 대해 언급하면서 Hello World를 시작하게 된다.
다행히도 이 부분은 실습하면서도 정상적으로 띄울 수 있었으며, 그래도 시작은 어렵지 않다는 것을 알 수 있게 하였다.
클로저로 표현하거나 컨트롤러로 표현할 수 있다는 점을 알려준 것이 특이하게 와 닿았다.
백엔드 프로그래밍에서 중요하고 항상 찾게 되는 REST API를 만드는 과정에 대한 설명이다.
컨트롤러로 구현하는 것이 편리하고 구조적인 측면에서 장점을 가져올 수 있기 때문에 이 부분을 강조하며 설명하고 있다.
프로그래밍 좀 해 본 사람이라면 알 수 밖에 없는 MVC 패턴도 사용하고 있다.
초중반 부분에서 엘로퀀트에 대한 설명이 나오는데, 사실 처음 언급된 것은 초반 부분이었다. 그 부분에서는 엘로퀀트가 뭔지 알지도 못하는 상황에서 이러한 용어를 쓰기에 다들 아는건가 싶었는데, 이 부분에서 제대로 설명하고 있었다. 물론 제대로라기 보다는 이런게 있다는 정도라고 보였다.
REST API를 구성할 때 JSON으로 응답값을 주는 것은 이제 일반적이다. 많은 곳에서 JSON으로 데이터를 주고 받기 때문에, 이러한 부분은 찾아보기 좋은 부분이다. 라라벨을 사용할 때 인상깊게 본 독특한 점은 프레임워크 내에서 이렇게 필요한 일부 기능을 위해서 php artisan 명령을 사용하면 즉석으로 코드 템플릿이 생성된다는 점이다.
PHP에 대한 책이 관련도서로 나와있다. 당연히 도움이 될 것이다.
또한 많은 주제를 가지고 책을 쓴 것이 보인다. 라라벨 개발 환경 구축부터 시작하여, 사용자 인증, API 작성, 스케줄러, 헬퍼와 컬렉션 등 기본적으로 백엔드 프로그래밍에서 사용하는 개념에 대한 것을 포함하고 있다.
이 책을 읽으며, 라라벨을 익히고자 많은 시간을 실습에 할애해 보았다.
집에서 쓰는 메인 피씨는 윈도우즈10 환경이기에 이 환경에서 잘 돌아가는지 궁금하여 열심히 nginx와 php를 설치하였고, composer와 laravel을 설치하여 진행해 보았다.
그 결과... 처참하게 에러들을 보았고, 결국 실패하였다.
대신, macOS 환경에서는 Homebrew를 사용하여 비교적 쉽게 환경을 구축할 수 있었고, 이것을 IntelliJ에서 열고 간단하게 코드 편집 및 실행을 할 수 있었다. 하지만, 제대로 진행하기엔 매우 어려웠다.
애초에 코드 스니펫이 아무것도 모르는 사람을 타게팅하게 되어있는 것으로 보이지는 않았으며(에러 핸들링에 대한 부분은 거의 언급되지 않음), 설치에 대한 부분도 알아서 다 진행했기 때문에, 이 책에서 구축한 환경과 차이가 있다 하더라도 알 수가 없었기 때문이다.
> 괜찮은 부분
1. 라라벨이라는 프레임워크의 매력을 느끼게 해 주었다.
사실 라라벨이라는 프레임워크는 백엔드 개발자 사이에서는 유명한지는 모르겠지만, 클라이언트 개발자로서는 생소하였다. 그리고 PHP 개발에 대해서도 이렇게 발전되고 있다는 사실 자체도 잘 모르고 있었기 때문에 이 책에서 다루었던 다양한 부분과 설명으로 인해, 모던 프로그래밍 프레임워크들에서 다루고 있는 개념들도 잘 도입되어 있다는 것을 알게 되었다. PHP 언어 자체를 한 때 열심히 익혀본 1인으로서, 라라벨 프레임워크는 지금 뿐 아니라 언젠가 다시 익혀보고 싶다는 충동이 들게 만들었다.
2. 백엔드라면 필요한 전체적인 개념에 대해 다루었다.
이 책에는 라라벨의 라우팅, 컨트롤러, 블레이드 템플릿, 데이터베이스, 엘로컨트, 아티즌, 요청, 응답, API 등에 대해 다루고 있다. 정말 많은 요소에 대해서 다루었기 때문에 책의 두께도 상당한 편이다.(700페이지가 넘는다.) 각 개념에 대해서 짧다면 짧겠지만, 나름 충실히 설명하고 있다. 이러한 설명이 없었다면 라라벨은 아직은 상용에는 부족한 정도로 발전중인 프레임워크로 여겼을지도 모르겠다. 하지만, 현재 충분히 상용 서비스에 문제없을 정도의 기능을 내포하고 있기 때문에, 일단 학습이 잘 되지는 않았더라도 충분히 도입을 고민하게 만드는 정도로 기능을 나열하고 있다.
3. 많은 양의 짧은 코드 스니펫으로 개념에 대한 핵심만 잘 전달하고 있다.
짧은 코드 스니펫이 많기 때문에 어찌보면 실습에는 매우 부적절하기도 하다. 하지만, 각 하나의 개념들에 대해서는 군더더기 없는 예제코드를 보여주고 있기도 하다. 어느정도 라라벨을 알거나 익히는 데 문제가 없는 사람이라면 이러한 코드 스니펫들로 인해 확실히 어떤 부분이 영향을 주는 코드인지 헷갈리지 않고 알 수 있을 것이다.
> 아쉬운 부분
1. 처음 라라벨을 접하는 사람에게는 매우 어려운 책이다.
이 책의 궁극적인 아쉬움이다. 이 책은 처음부터 제대로 배우는 라라벨이라는 책의 이름처럼, 처음 접하는 사람이 그렇게 어렵지 않을 것이라고 예상했다. 하지만, 그와는 정반대로 어느정도 라라벨을 알고 있는 사람이 보기에 좋았다. 그래서 이 제목을 다시 해석하게 되었다. '처음부터'가 중요한 것이 아닌 '제대로'가 중요한 부분이었다. 그래서 제대로 배우는 라라벨을 위해 처음부터 모든 내용을 담은 책이라는 뜻에 가깝게 보인다. 결국 이 학습을 위해서는 반드시 인터넷의 또다른 자료나, 다른 책이 필요하다고 생각이 든다. 신규 용어도 많이 나오는데 이에 대한 설명이 충분치 않게 느껴진다.
2. 실습하기에 적절하지 않은 구성이다.
윈도우로 실습을 시작했던 나의 잘못인가 모르겠지만, 일단 책에는 애초에 라라벨을 설치하는 방법에 대한 가벼운 튜토리얼조차 나오지 않는다. 알아서 웹서버와 컴포저까지는 설치를 해야, 아니 라라벨도 알아서 설치를 해야 하는 상황이다. 그래서 윈도우에서는 제대로 실행하기 어려웠으며, 그나마 macOS에서는 정상적으로 설치하여 진행할 수 있었다. 하지만, 이 이상은 어려웠다. 각 실습을 위해 페이지를 넘기며 진행하는데, 제대로 실행이 되지 않는 부분도 많았고, 무슨 결과를 기대해야 하는지, 확인은 어떻게 해야하는지도 어려웠다. 그 결과 애초에 이 책은 코드가 많이 나오지만 실습을 위한 책은 아니라는 생각을 하게 만들었다.
3. 구성을 통해 말하고자 하는 점이나 강조점이 보이지 않는다.
앞서 설명한 것에 의하자면, 라라벨의 다양한 주제에 대해 말하고 있다고 하였다. 하지만, 이것이 다양하게 많아서 그런지는 모르겠지만, 전체적으로 뿐 아니라 각 책터마다도 강조하고자 하는 점이 잘 보이지 않는다. 그래서 마치 발췌하여 보는 책은 아니지만, 사전처럼 발췌해서 보는것이 적절해 보일 정도이다. 잘 모르는 입장에서 보자면 그러한 강조점들이 눈에 들어온다면 훨씬 집중도가 올라갈 것 같다.
> 개인적인 평점
- 가격: 6 / 10
- 내용: 7 / 10
- 디자인: 6 / 10
- 구성: 4 / 10
결론적으로는 라라벨을 처음 익히는 사람에게는 추천하고 싶지 않다. 최소한 혼자 좌충우돌 인터넷을 뒤지든, 쉬운 책을 한번 접하고 오든, 그 이후에 이 책을 읽었으면 하는 바람이다.
먼저, PHP가 아니더라도 절차적 프로그래밍만 하셨다면 조금 낯설 수 있습니다. 다른 언어의 프레임워크를 사용해 보았다면 라라벨을 알아가는데 꽤 많은 도움이 되리라 생각합니다.
이렇게 하면 될 것 같다고 생각했던 아이디어들을 이미 구현해 놓았습니다. 많이 사용하는 기능은 기본 기능을 제공합니다. 변화하는 사용 환경에 적절하게 대응하고 있습니다. 예를 들어, 인증은 대부분의 웹 애플리케이션이 필요로 하지만 여러 가지 생각해야 할 부분이 많은 기능입니다. 그래서 라라벨 6까지는 이러한 기능의 뼈대를 잡아주는 인증 스캐폴딩 기능이 내장되어 있었다고 합니다. 하지만, 최근에는 React나 Vue 같은 프런트엔드 프레임워크 사용이 많아져 인증 스캐폴딩 기능이 별도의 패키지로 분리되었고, 필요하면 추가로 설치하여 사용할 수 있도록 되었다고 합니다.
프레임워크의 기본과 활용에 중점을 두고 있습니다. 프레임워크가 어떤 방식으로 개발을 지원하는지 알려줍니다. 기본적으로 제공하는 기능과 그 기능들을 어떻게 확장할 수 있는지 알려줍니다.
개념이나 소프트웨어 아키텍처는 간단하게 언급하고 넘어갑니다. 아키텍처나 개념을 라라벨에서는 어떻게 구현하여 적용하고 있으며, 사용자가 어떻게 확장할 수 있는지에 알려주는데 더 무게를 두고 있습니다.
중간중간 아직 설명하지 않은 기능이나 개념을 미리 언급하는 경우도 있습니다. 프레임워크가 가진 특성으로 인해 각각을 완전히 떼어내어 설명하기는 어렵다고 봅니다. 그렇더라도 뒤에 다시 설명한다는 얘기와 함께 대략 윤곽을 알려주고 그 가운데 어떤 부분을 적용하는지 설명합니다.
예쁜 애 옆에 예쁜 애는 기분 좋지만, 모르는 얘기 옆에 모르는 얘기가 있으면 기운이 빠질 수 있습니다. 하지만, 조금 시각을 바꿔보면, 적어도 무엇을 모르는지 알았으니 이제부터 알아가면 됩니다. 더구나 그 모르는 것을 알려주겠다는 책을 보고 있으니 덤벼들기만 하면 됩니다.
전체를 가볍게 읽으며 라라벨의 윤곽을 대충 그린 뒤, 고민했던 부분을 풀어가는 곳이나 내용 가운데 끌리는 곳부터 익숙해져 가면 될 듯합니다.
라라벨이 있다는 건 알았지만 차일피일 적용을 미뤄왔던 게 아쉽습니다. 미리 알아서 익숙하게 쓸 수 있었더라면 지금까지 많은 도움이 되었을 거라 생각합니다. 이제 알았으니 여러 상황에 적용해보며 손에 착 달라붙는 도구 가운데 하나로 만들어 가야겠습니다.
프레임워크 도입이 망설여지는 분이라면, 토이 프로젝트에 라라벨을 적용하고 책에서 설명하는 부분을 조금씩 확인해 보시기 바랍니다. 어느새 프레임워크와 가까워져 있는 자신을 만날 수 있으리라 생각합니다. 알면 알수록 알아야 할게 많아지는 게 함정이긴 합니다만.
'많이 고민하고 힘들게 구현했던 부분을 이렇게 우아하게 풀어나갈 수 있구나!' 깨달음과 놀라움에 탄성하는 순간을 무수히 만나기 기원합니다.
1.국내에는 라라벨 프레임 워크를 배울 수 있는 서적이 별로 없었는데 이 책의 경우 라라벨을지난 버전부터 최신버전까지 포괄하며 기능에 대한 깔끔하게 설명 및 라라벨의 다양한 기능을 설명해 책의 두께가 두터운 편임
2.기존 웹 프레임워크에 대한 상식이 있는 상태에서 이 책을 접한다면 가독성과 생산성이 되게좋다고 느끼며 필요한 일반적인 작업을 모두 심플하게 구현할 수 있음
단점
1.처음부터 제대로 배우는 라라벨이라서 일반적인 다른 책과 마찬가지로 초반부는 세팅 및 간단한php 언어를 설명하는 일반화된 생각을 가졌으나 라라벨에 대해서 세세히 설명하는 특수화된 책인 것을깨달았으며 모르고 들어오면 php를 배우고 입문하겠다는 의욕이 생김
2.해당 기능에 대해서 이런 방식으로 쓴다는 내용이지만 원칙 주의자가 보면 왜 이렇게 써야하는지 설명이 잘 안되어 있고 시각적이해를 돕는 그림이 하나도 없어 답답할 수 있음
후기
1.난이도가 초, 중급이고 대상 독자가 일반 문법을아는 사람들을 독자로 가정하였는데 상향 시킬 필요가 있다고 느끼며 대상 독자는 웹 프레임 워크대한 경험이 있으며 php를 기본적으로 다루는 사람이 읽었으면 좋겠다. 위의 해당사항에 속한 사람이 읽으면 엉청난 효과를 제공하는 책이라고 생각한다.