한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
Flutter의 Transform 및 GestureDetector 위젯이 지닌 파워에 대해 알아보세요!
2019년 8월 14일 수요일
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는 조은(Web Technology GDE)님이 참여해 주셨습니다
저는 화면의 마지막 픽셀까지 남김없이 모든 것을 완벽히 제어할 수 있는 Flutter를 처음 접하자마자, 대부분의 앱 UI가 보여주는 예측 가능하고 틀에 박힌 세상에서 벗어나 새로운 세상으로 나아가고싶었습니다. 저는
CustomPaint
를 사용하여 전형적인 ScrollView나 Container에서 벗어나 완전히 커스텀한 위젯을 그릴 수 있었습니다. Flutter를 통해 자유롭게 돌아다니며 원하는 부분을 확대하는 등의 Flutter가 열어준 새로운 가능성의 세계를 맘껏 항해하고 싶었습니다. 이처럼 놀라운 신세계를 탐험하는 데 동반자가 되어 줄 이동 수단이 바로
Transform
위젯이었고, 자유자재로 조정할 수단을 제공해 준 것이 바로
GestureDetector
였습니다.
GestureDetector를 통해 대부분의 제스쳐에 손쉽게 접근할 수 있고, Transform을 통해 하위 위젯을 보는 관점을 변경할 수 있습니다. 두 가지 다 Flutter의 결합성 패턴을 따르는 독립된 위젯이므로 간단합니다. 이 둘을 결합하면 위젯에서의 모든 동작이 탐색 수단이 됩니다.
변환(transformation) 소개
Transform 위젯은 본연의 능력에도 불구하고 실제로 수행하는 작업이라곤 변환 행렬을 취해 그 하위 요소에 적용하는 것이 전부입니다. 그 결과로서 평행 이동, 스케일, 회전 그리고 심지어는 상위 요소를 기준으로 하위 요소 기울이기와 같은 조작이 가능하며, 이 모든 것이 간단한
Matrix4
객체 하나로 지정됩니다.
행렬은 합성 가능하므로 변환을 수행할 때 매우 편리하게 사용할 수 있습니다. 평행 이동, 스케일, 회전 및 기울이기 매개변수를 따로 저장하는 것은 처음에는 직관적인 것처럼 보이지만, 차수와 같은 문제로 인해 모호해지기 쉽습니다.
사용자가 일련의 동작을 연이어 수행한다고 생각해 보십시오. 그런 동작이 단순히 드래그의 연속이라면 최종 변환을 결과 위치 Offset으로 쉽사리 저장할 수 있습니다. 하지만 사용자가 드래그한 다음 새 위치에서 회전하고 이 동작을 여러 차례 반복할 경우에는 어떻게 최종 상태를 계속 추적할 수 있을까요? 초점까지 포함해 생각하지 않더라도, 오프셋과 중복되는 라디안으로는 충분치 않습니다. 사용자가 수행한 작업이 나열되면서 계속 늘어나는 작업 목록을 계속 추적하고 전체 과정을 반복해야 최종 상태를 파악할 수 있을 것입니다.
한 변환 행렬을 임의 개수의 다른 변환 행렬과 무한정 결합할 수 있으며, 그 결과는 항상 같은 크기의 또 다른 단일 행렬입니다. GPU는 화면상의 모든 픽셀에 대해서처럼, 이런 종류의 수학 연산을 매우 빠르게 수행하며 동시에 많은 양도 빠르게 계산해 냅니다. 따라서 Transform과 같은 위젯의 상태를 저장하기에 적합하고, 그 결과 Flutter 개발자가 사용하기에 적합한 매우 간단하고 직관적인 위젯이 됩니다.
제스쳐 감지
GestureDetector를 사용하여 사용자 제스쳐를 변환 행렬의 업데이트에 연결하면 사용자는 우리가 표시하는 화면을 자유롭게 이동할 수 있습니다. GestureDetector는 드래그와 같은 동작에 쉽게 액세스하는 기능을 제공하므로, 평행 이동, 손가락 모으기, 확대/축소, 더 나아가 두 손가락 회전 동작에도 사용할 수 있습니다.
GestureDetector는 다양한 동작과 시작, 업데이트 및 종료 상태에 대해 수많고 다양한 콜백을 제공합니다. 하지만 여러 동작을 결합하여 사진으로 찍은 데모와 같은 것을 구현할 경우에는 스케일 콜백만 필요합니다. onScaleUpdate 콜백은 focalPoint, 가로 및 세로 방향 스케일 둘 다, 그리고 회전을 모두 한 곳에서 제공합니다. 따라서 사용자가 한 번의 동작으로 회전하고 확장하는 경우와 같이, 여러 동작에 동시에 대응할 수 있습니다. onScaleUpdate 콜백에서 제공되는 모든 기능은
ScaleUpdateDetails
를 참조하세요.
이와 같은 물리적 변환에서 종종 구현되는 또 다른 것은 바로 관성입니다. 사용자가 어떤 동작을 끝낸 후 얼마간은 계속 변환이 이어진 후에 천천히 중지하는 시점에 이를 것으로 예상할 수 있습니다. Flutter는 스케일을 포함한 이러한 모든 동작의 종료 콜백에 'velocity' 매개변수를 제공합니다. 물리학 기반의 운동에서 추측할 수 있듯이, 이 값은 사용자가 손가락을 빠르게 움직이면 크고 느린 동작을 취하면 작을 것입니다.
Flutter 인프라의 또 다른 훌륭한 기능인
Tween
애니메이션으로 이 관성 효과를 생성할 수 있습니다. 동작이 끝날 때의 속도 및 위치와 기본적인 물리학 지식을 사용하여 Tween에 제공할 최종 위치와 지속 시간을 제시하고 Tween이 다른 모든 것을 처리하도록 할 수 있습니다. Flutter에는 이런 계산을 자동으로 처리하고 여기서 이루어지는 일이 매우 현실적으로 느껴지게끔 하기 위해
마찰 시뮬레이션 클래스
도 포함됩니다.
결론
Transform과 GestureDetector를 결합하면 놀랍도록 강력한 도구가 탄생합니다. 스크린샷에 나타낸 바와 같이, 이 도구를 사용하면 게임 보드 주위를 이동하는 것부터 지도를 탐색하고 대화식 이미지 뷰어를 제공하는 등의 다양한 기능을 구현할 수 있습니다.
여기에서 보여주는 앱은 현재
Flutter Gallery 앱
에서 데모로 제공됩니다. 모든 코드는 Flutter의 주요 오픈소스 저장소에 속한 것으로,
변환 데모 소스
에서 찾을 수 있습니다. 대부분의 변환 로직은
관성 애니메이션
을 비롯하여
GestureTransformable
클래스에 있습니다.
G Suite를 사용하여 새 팀원의 적응을 돕기 위한 5가지 팁
2019년 8월 13일 화요일
새로운 직원을 고용하는 일은 회사 발전을 위한 중요한 단계이지만, 다소 두렵고 걱정스러운 일일 수도 있습니다. 새로 들어온 직원이 바로 업무 생산성을 내도록 준비하는 것은 말할 것도 없이, 교육과 오리엔테이션에 소요되는 시간이 있습니다. 그 외에도, 계속 비즈니스를 운영하면서 고객을 만족시켜야 합니다.
가뜩이나 이런저런 역할을 많이 맡고 있는데 거기에다가 'HR 관리자'라는 직책까지 더해지는 게 걱정이라면, 이제 더는 걱정하지 않으셔도 됩니다.
G Suite
의 사용하기 간편한 도구를 사용하면 기존의 바쁜 일정에 크게 지장이 있을 만큼 많은 작업을 추가하지 않고도 1~1,000명의 직원을 신속히 고용하고 신입 직원이 원활하게 현업에 적응하도록 할 수 있습니다.
다음은 신입 직원의 현업 적응 지원을 위해 할 일을 정리한 목록이며, 다 끝내면
여기서
더 많은 관련 팁을 찾아보세요.
1. 비즈니스 이메일 주소를 만듭니다.
신입 직원이 바로 이메일을 사용할 수 있도록 하고 싶겠지만, 개인 이메일 계정이 아니라 회사 이메일 계정을 사용하도록 해야 합니다. 직원들이 개인 이메일 계정으로 작업하지 못하도록 하는 것이 중요합니다. 그럴 경우 파일을 회수하기 어려울 수 있기 때문입니다. 또한 누가 회사 정보에 액세스하는지 추적하기 더 어려워집니다.
준비가 되었으면 전문가다운 이미지를 풍기고 자신과 신입 직원이 한 팀이라는 점을 보여주기 위해 맞춤 도메인으로
Gmail에서 이메일 주소를 만드세요
.
G Suite의 Admin 콘솔을 사용
하면 쉽게 할 수 있는 일입니다.
2. 일정을 공유합니다.
물론, 직원들과 함께 협의하여 일정을 조정해야 할 것입니다. 회의를 예약하거나 외출 시간을 기록하기 위해 이메일을 주고받는 대신,
공유 Google 캘린더
에 직원을 추가하세요. 공유 Google 캘린더에서는 개인이 아니라 전체 팀의 일정을 추적할 수 있습니다. 일정 변경 및 추가 사항이 모든 직원에게 즉시 표시되므로, 자신과 신입 직원이 처음부터 같은 페이지에서 일정을 손쉽게 공유할 수 있습니다.
3. 온라인 공유 폴더를 만들어 잡다한 문서 작업을 줄입니다.
서류 양식을 규칙에 따라 계속 기록하는 건 골치 아픈 일입니다. 틀에 박힌 양식과 직원 핸드북을 디지털 문서의 템플릿으로 옮기고 신입 직원이 자유롭게 액세스할 수 있도록 그런 양식을
공유 Drive 폴더
에 저장해 보세요. 또한 Google Keep 또는 Docs에 온라인 체크리스트를 만들어 신입 팀원이 작업을 신속히 처리할 수 있도록 하세요. 체크리스트에는 신입 직원을 위한 오리엔테이션 미팅이나 건강보험의 의료 보장을 받을 수 있도록 작성할 양식의 목록이 포함될 수 있습니다.
4. 교육 허브를 만듭니다.
처음 직원을 고용할 때는 당연히 더 큰 규모의 팀, 더 나아가 글로벌 규모의 팀까지도 확장해나가는 첫 단계에 불과하리라는 희망과 포부를 품고 계실 것입니다. 미래에 대비하려면 오리엔테이션 자료를 작성하여 공유 Drive에 저장하는 작업을 시작하세요. 예를 들어 Slides를 사용하여 현금 취급 정책 또는 고객 주문 처리 방법에 관한
슬라이드 프레젠테이션을 작성
할 수 있습니다.
오리엔테이션 자료를 작성할 때 Google 사이트 도구에서 미니 온보딩 포털을 만들어 해당 자료를 저장하는 방안을 생각해 보세요. 사이트 도구에서 웹사이트를 빌드하기 위해 코딩 전문 기술이 필요한 건 아니니 걱정하지 마세요.
여기
에서 시작하는 방법에 관한 팁을 찾아보실 수 있습니다.
5. 이동 중에도 업무에 관한 채팅을 나눕니다.
사무실뿐 아니라 자택에서도 일하거나 외근이 잦은 경우와 같이, 온종일 신입 직원과 같은 공간에서 일하지 않을 경우, 채팅과 화상 회의가 문제를 재빨리 해결하는 데 도움이 될 수 있습니다. Gmail이 우선순위가 낮은 이메일로 채워지지 않도록 관리하는 것도 훌륭한 방법입니다.
데스크톱 컴퓨터, 태블릿, 스마트폰에
행아웃 채팅
앱을 설치하면 언제든 바로 메시지를 주고받을 수 있습니다. 정보를 얻을 목적으로 이전의 대화를 검색하고 채팅하다가 바로 화상 회의를 시작할 수도 있습니다.
직원을 더 뽑는 방안을 고려 중이라면 인사 관리 수준을 한 단계 높일 준비가 되었다는 신호일 수 있습니다. 직무 설명서 작성, 후보자에 대한 정보 파악, 화상 인터뷰 수행 방법에 관해서는 G Suite Learning Center에서
이 글
을 확인해 보세요.
Keep calm and query on! - GCP에서 데이터베이스 실행
2019년 8월 7일 수요일
많은 애플리케이션의 기본이 되는 것이 데이터베이스인데, 그 점은 클라우드 기반 솔루션에 대해서도 마찬가지입니다. 클라우드에서 데이터베이스를 실행하는 것은 많은 면에서 on-premises 환경에서 데이터베이스를 실행하는 것과 유사하지만 중요한 차이점과 이점이 있습니다.
Google Cloud의 데이터베이스 솔루션 아키텍트로 구성된 우리 팀에서는 개발자가 클라우드에 있는 데이터베이스의 모든 측면, 즉 배포, 이전, 관리를 이해하는 데 도움을 드리고자 노력하고 있습니다. 우리는 개발자가
Google Cloud Platform
(GCP)에서 데이터베이스를 실행하는 알맞은 방법을 선택하도록 돕고 싶습니다.
GCP에서
데이터베이스
를 실행할 때 관리형 서비스 중에서 선택하거나 우리가 개발자를 위해 관리하는 인프라에서 데이터베이스를 실행할 수 있습니다. 관리형 서비스를 사용하면 데이터베이스 운영에 필요한 운영 오버헤드 중 일부를 덜어낼 수 있는 반면, 직접 실행하면 데이터베이스의 배포 방식을 완벽히 제어할 수 있습니다. 두 가지 옵션에서 모두 Google의 네트워크를 사용하여 글로벌 연결 기능과 함께 신뢰성, 보안, 탄력성을 기본적으로 확보하게 됩니다.
우리 팀은 사용자가 클라우드에 있는 데이터베이스의 모든 측면, 즉 배포, 이전, 관리를 이해하는 데 도움을 드리고자 계속 노력하겠습니다. 다음은 배포부터 모니터링까지 클라우드 데이터베이스를 사용하기 위한 최신 솔루션의 몇 가지 예입니다.
IBM Db2 배포
클라우드 기반 데이터베이스의 첫 번째 단계는 물론 데이터베이스를 가동하고 실행하는 것입니다. IBM Db2는 공용 엔터프라이즈 데이터베이스이므로, 우리는 GCP에 IBM Db2를 배포하는 방법을 설명하는 종합적인 솔루션 문서
자동 클라이언트 경로 재지정 및 네트워크 타이브레이커로 Compute Engine에 고가용성 IBM Db2 11.1 배포
를 최근에 게시했습니다. 이 솔루션은 Db2를 실행하기 위해 Compute Engine 인스턴스(VM)를 설정하는 작업으로 시작됩니다. 제목에서 알 수 있듯이, 이 문서의 내용은 기초적 수준의 배포를 훨씬 넘어서는데, 아래에 표시된 것처럼 트랜잭션 복제와 자동화된 장애 조치로 클러스터에 가용성이 뛰어난 배포를 생성하는 방법을 안내합니다.
이 솔루션은 모든 것을 설정했다고 해서 끝나지 않습니다. 목표는 고가용성이므로, 저자인 Ron Pantofaro는 모든 것이 올바로 작동하도록 하기 위해 기본 클러스터 노드를 일시적으로 중지하는 방법을 보여줍니다. 그러면 데이터베이스가 적절히 장애 조치하고 대기 노드가 기본 클러스터 노드의 역할을 이어받는다는 것을 확인할 수 있습니다.
기존 데이터베이스를 GCP로 이전
데이터베이스를 처음부터 배포하는 경우는 많지 않습니다. 대신, 기존 데이터베이스를 GCP로 이전하고 싶은 경우가 많을 것입니다. 데이터베이스를 한 플랫폼에서 다른 플랫폼으로 이전하는 것만으로도 쉽지 않은 일일 수 있습니다. 하지만 이전 외에도 NoSQL 데이터베이스에서 관계형 데이터베이스로 변경하고 싶은 경우는 어떻게 해야 할까요?
SA Sami Zuhuruddin은 이 흥미롭고도 까다로운 전환 문제를 해결하기 위해 최근에
DynamoDB에서 Cloud Spanner로 이전
이라는 솔루션을 제시했습니다. 그는 NoSQL 데이터베이스인 Amazon DynamoDB에서 트랜잭션 지원 기능이 있는 완전 관계형의 내결함성 SQL 데이터베이스인 Cloud Spanner로 데이터를 이동하는 방법을 설명합니다.
Sami의 솔루션을 읽어보면 그의 전문적 안내에 따라 이 작업을 수행하고 싶어질 것입니다. 이 프로세스는 Amazon S3, Google Cloud Storage, AWS Lambda, Cloud Pub/Sub, Cloud Dataflow를 포함한 여러 중간 단계를 거친 후에 Cloud Spanner에 이르게 됩니다. Sami는 키, 데이터 형식, 색인을 포함하여, 이전의 두 측면에서 모두 데이터 모델을 설명합니다. 각 단계를 수행하기 위해 어떤 사용자 권한이 필요한지 알게 될 것입니다. 이 솔루션은 최종적으로는 확인을 포함한 전체 프로세스를 안내해 줍니다. 다음은 관련 아키텍처의 모습입니다.
데이터베이스 백업
온프레미스 환경에서 데이터베이스를 백업하는 것만큼이나 클라우드에서도 데이터베이스를 백업하는 것이 중요한 일입니다. 최근에 제시된 두 솔루션에서 이를 수행할 방법을 논합니다.
Compute Engine에서 특정 시점 복구를 위해 Microsoft SQL Server 백업 사용
에서, SA Ron Pantofaro는 관심의 초점을 배포에서 백업으로 옮겨 Compute Engine에서 실행 중인 SQL Server 인스턴스를 위한 백업 구성 방법을 보여줍니다. 데이터와 데이터베이스 로그를 둘 다 Cloud Storage에 백업하는 방법을 볼 수 있습니다. 또한 (우리는그러지 않기를 바라지만) 그는 백업을 복원해야 할 경우 그 방법도 설명합니다. 그런데 이것으로 작업이 끝나는 게 아닙니다. 백업을 예약하고 더는 필요하지 않은 백업을 정리하는 방법도 설명되어 있습니다.
물론, 다른 데이터베이스를 사용할 수도 있습니다. SA 팀은
Percona XtraBackup과 Cloud Storage를 사용하여 MySQL 핫 백업 수행
에서 백업, 복원, 예약, 정리로 구성된 유사한 작업 집합을 보여주지만, 이는 MySQL 데이터베이스를 위한 것입니다.
GCP 기반 데이터베이스에 추적 추가
GCP에서 데이터베이스를 실행하는 이점 중 하나는 Stackdriver와 같은 서비스를 사용해 추적 정보를 수집할 수 있다는 점입니다. SA Karthi Thyagarajan은 자신의 커뮤니티 가이드인
OpenCensus로 Redis 작업 부하에 대한 Cloud Memorystore의 클라이언트측 추적
에서 데이터 검색 지연 시간을 측정할 수 있게 해주는 추적 기능의 추가 방법을 설명합니다. 이 솔루션에서는 Cloud Storage의 지원을 받는 Cloud Memorystore로 구성된 데이터 저장소를 사용합니다. 그의 말대로, 이를 통해 "데이터베이스 배포 및 관련 구성과 같은 점에 대한 걱정 없이 클라이언트측 추적의 핵심적인 측면에 집중"할 수 있습니다.
Karthi가 자바 클라이언트 앱으로 만든 앱을 GitHub에서 다운로드할 수 있는데, 이 앱에는 데이터 저장소에서 읽고 추적 출력을 생성하기 위한 로직이 이미 들어 있습니다. 데이터 저장소를 설정한 후 클라이언트 앱을 실행하여 데이터를 읽습니다. 설정한 계측의 이점 중 몇 가지를 볼 수 있는데, Stackdriver 콘솔로 이동하고 캐시된 읽기와 캐시되지 않은 읽기의 대기 시간을 시각적으로 비교합니다.
더 많은 GCP 데이터베이스 솔루션
이 글에서는 우리 솔루션 아키텍트 팀에서 제작한 데이터베이스 지향적 솔루션 중 몇 가지만 살펴봤습니다. 더 많은 솔루션을 찾아보려면 GCP 솔루션 갤러리에서
데이터베이스
및
이전
항목도 확인해 보세요.
TensorFlow 2.0 베타 발표
2019년 8월 5일 월요일
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는 전태균 (MachineLearning GDE)님이 참여해 주셨습니다>
TensorFlow 2.0 베타 버전은 다음과 같은 방법으로 설치할 수 있습니다.
> pip install tensorflow==2.0.0-beta0
Keras를 빠르고 쉬운 모델 디자인과 학습을 위한 상위 레벨 API로 사용
빠르고 직관적인 개발과 디버깅을 위해 기본적으로 Eager 실행 사용
그래프 성능 및 이식성을 위해 @tf.function 사용
우리는 알파 릴리스에서 이루어진 이런 사용성 개선이 사용자가 시작하는 데 어떤 도움이 되고 있는지 이미 눈으로 확인하고 있으며, TensorFlow 커뮤니티가 성장하는 모습을 무척 흐뭇한 기분으로 지켜보고 있습니다. 130,000여 명의 학생이 알파 버전과 함께 시작된
deeplearning.ai
와
Udacity
과정에 등록했고,
GitHub 저장소
는 128,000여 개의 별표를 받았고 75,000회 이상 포크되었습니다.
이번 베타 릴리스에서는 2.0 API용 기호의 이름 바꾸기 및 사용 중단 작업을 완료했습니다. 즉, 현재 API가 최종 API이며
TensorFlow 1.14 릴리스
내에서 v2 호환성 모듈로도 제공된다는 뜻입니다. (모든 기호 변경 사항을 정리한 목록은
여기
에서 확인하실 수 있습니다.) 우리는 또한 모델 하위 클래스화와 같은
Keras 기능
을 위한 2.0 지원을 추가하고, 사용자설정 학습 루프를 위해 API를 단순화하고, 다종의 하드웨어를 위한
배포 전략
지원을 추가하는 등의 작업도 수행했습니다.
TensorBoard, TensorFlow Hub, TensorFlow Lite 및 TensorFlow.js와 같은 TensorFlow 제품 생태계의 핵심 컴포넌트는 베타 버전과 함께 작동합니다. TensorFlow Extended(TFX) 컴포넌트와 종단 간 파이프라인에 대한 지원은 여전히 진행 중입니다.
우리는 개발자 여러분이 알파 릴리스에 대해 보고된 100여 건의 이슈를 해결했고, 남은 문제에 관해서는 계속 반복하며 해결 방안을 찾고 있습니다. 개발자 여러분의 고견이 우리가 오늘과 같은 성과에 이르는 데 큰 도움이 되었기에, 보내주시는 모든 의견을 소중히 여깁니다. 계속 좋은 의견 많이 보내주시기 바랍니다!
우리는 최종 2.0 버전을 위한 릴리스 후보(RC)와 베타 사이에서 Cloud TPU와 TPU 포드에 관한 Keras 모델 지원과 성능에 대한 추가 작업을 완료하고 훨씬 더 많은 문제를 해결해 나갈 것입니다. 공개된 TensorFlow 2.0에서 알려진 문제의 목록은
Issue Tracker
에 나와 있고,
출시 노트
에서 진행 상황을 추적할 수 있습니다.
TensorFlow 2.0에 대한 자세한 내용을 알고 싶으시면
개발자 메일링 리스트
에 가입하고, 2.0 태그를 이용해
문제
를 제기하고, 저희
문서
도 참조하세요.
I/O에서 발표된 Android의 현재를 정리해보았습니다
2019년 8월 2일 금요일
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는 이승민(Android GDE)님이 참여해 주셨습니다>
Google I/O 2019
Google I/O에 관해 가장 놀라운 점으로 이벤트 현장의 모습을 고스란히 담아낸 라이브스트림/동영상을 꼽을 수 있습니다. 물론, 이벤트에 직접 참가할 수 있다면야 더할 나위 없이 좋을 것입니다. 특히 직접 대화하면서 어떤 문제점이나 의문점이 있는지 바로 확인하고 해소할 수 있기 때문입니다. 하지만 모든 사람이 입장권을 얻거나 행사장까지 직접 오거나 시간을 따로 낼 수 있는 건 아닙니다. 그래서 어느 곳에 있는 누구라도 이벤트에서 진행된 프레젠테이션을 시청하고 행사의 주요 사항과 Android의 현황을 파악할 수 있도록, 거의 모든 콘텐츠를 라이브스트림으로 제공하고 모든 기술 세션 녹화 영상을 게시합니다.
올해 들어서는, 이 업무를 담당한 프로덕션 팀이 강연이나 토론회가 끝난 직후에 바로 동영상을 게시하는 실력이 눈에 띄게 좋아졌습니다. 머지않아 프로덕션 팀은 실제 프레젠테이션보다도 일찍 녹화 영상을 게시하게 될 예정인데, 그러면 강연자의 부담이 훨씬 줄어들게 됩니다.
하지만
동영상 콘텐츠가
너무 많다는 점
이 문제임을 알아차렸습니다. 다양한 YouTube 재생목록에서 내가 찾는 동영상이 무엇인지 정확히 모른다면, 그걸 찾아내느라 시간을 허비하거나 이내 포기해 버리고선 그저 귀여운 고양이의 모습을 담은 동영상이나 찾아 보게 될지도 모릅니다. (그나저나 정말 귀엽긴 하죠?)
그래서 올해는 Android 개발자를 위해 컨퍼런스에서 발표한 내용을 체계적으로 잘 분류해 개발자가 시청하고 싶은 동영상을 재생목록에서 쉽게 찾을 수 있도록 하고, 적절히 다른 관련 콘텐츠로도 연결할 수 있도록 개편하는 과제에 착수해야겠다고 생각했습니다. I/O가 끝난 지 벌써 두 달이 다 되어 가는 시점이라 좀 뒤늦은 감은 있지만, 아직도 I/O 동영상을 시청하지 않고 차일피일 뒤로 미루고 있는 분들에겐 유용하리라 기대해 봅니다.
재생목록에서 쉽게 찾는 데 도움이 된다면 앞으로도 이런 방향으로 재생목록을 관리하도록 하겠습니다. 아쉽게도 여러분께는 도움이 되지 않는다 할지라도, 저는 재생목록을 이런 식으로 계속 정리할 생각입니다. 그렇지 않으면 앞으로도 또 다시 길고 긴 재생목록을 지루하게 살펴보면서 도대체 내가 원하는 동영상이 어디에 있는지 찾느라 헤맬 게 뻔하기 때문입니다.
제가 나름대로 분류한 2019 Android I/O 재생목록을 아래와 같이 소개합니다. 몇몇 세션은 여러 차례 표시되는데, 세션에서 다루는 내용이 여러 카테고리에 걸쳐 겹치거나 어떻게 분류할지 마음을 정하지 못해서 그런 것입니다. 일부 세션에는 필요할 것 같아 설명을 붙여 두었지만, 대부분의 세션은 제목 그 자체로도 어떤 주제를 다루는지 파악하는 데 충분합니다.
재생목록
Google I/O 2019 전체 세션
- Android에 대해 거의 경험이 없는 개발자를 위해
Google I/O 2019의 Android 및 Play 세션
기조연설
Google 기조연설
- 내부적으로는 이를 소비자 기조연설이라 부릅니다
개발자 기조연설
- Android… 그리고 다른 모든 주제에 대한 개발자 하이라이트
개요
보통은 심층적인 주제를 다루는 세션을 통해 기술적인 세부 사항을 알고 싶으시겠지만, 개요 세션은 전반적으로 어떤 일이 일어나고 있으며 자신이 원하는 세부적인 내용을 어디서 찾을 수 있을지 파악하는 데 도움이 됩니다.
Android의 새로운 기능
- 이 세션에서는 개발자가 플랫폼과 Jetpack 라이브러리에서 주의해야 할 점을 대부분 다루면서 무척 폭넓게 개괄적으로 설명하고 있으며, 관련 강연과 기타 리소스로 연결되는 링크가 추가되어 있습니다.
Android 개발 도구의 새로운 기능
- 아래에서 보듯이 많은 도구 세션이 있지만, 이 세션을 통해 새로운 기능의 개요를 폭넓은 시각으로 확인할 수 있습니다.
Google Play의 새로운 기능
- 인앱 업데이트와 같은 다양한 정책 변경 사항과 배포 기능을 소개합니다.
Jetpack
Jetpack에서는 귀찮은 API 확인 과정 없이 이전 릴리스에서도 새 기능이 작동할 수 있도록 하는 호환성 API를 제공하고, API 레벨 14까지 작동하는 새로운 개발용 라이브러리를 도입합니다. 이 세션들은 일반적인 Jetpack 아키텍처 안내와 함께 아키텍처 컴포넌트와 기타 유틸리티 라이브러리에 대한 강연을 포함합니다.
Architecture Components의 새로운 기능
- Lifecycles, Room, Paging, Navigation, WorkManager와 같은 Architecture Components에서 많은 일들이 일어나고 있습니다. 개요를 살펴보면 헷갈리거나 오해하지 않고 올바로 이해할 수 있습니다. 특히 세부 주제별 세션에서 다루지 않는 내용도 있으므로 유용할 것입니다.
Android Jetpack: CameraX 카메라 지원 라이브러리의 이해
- CameraX는 카메라 앱을 훨씬 더 쉽게 개발할 수 있게 해주는 새로운 라이브러리(현재 알파 버전)로서, 이전의 Lollipop 버전에서도 작동합니다.
Jetpack Navigation
- Navigation은 올해 버전 1.0으로 출시되었으며, 해당 API와 도구를 사용하기 위한 훌륭한 개요 정보를 얻을 수 있습니다.
모듈식 Android 앱 아키텍처 빌드
- 이 세션은 Jetpack 또는 Architecture Components에만 관한 세션이 아니라, (Jetpack에서 제공하는 API나 도구 등을 사용하는) 최신 Android 앱 아키텍처에 대한 가이드입니다.
벤치마킹으로 앱 성능 향상
- 벤치마킹은 앱 성능을 테스트하고 향상할 수 있는 새로운 Jetpack 라이브러리입니다.
도구(Android Studio)
IDE는 개발의 최전선 입니다. 아래 세션에서는 Android 도구의 향상된 기능뿐 아니라, 이들 도구에서 제공하는 기능의 사용을 개선할 수 있는 방법을 다룹니다.
Android 개발 도구의 새로운 기능
Constraint Layout의 새로운 기능
Android Studio UI 디자인 및 디버깅 도구의 새로운 기능
더 크고, 더 나은 빌드: 대규모 프로젝트를 위한 Gradle
Android Studio: 팁과 트릭
Android Studio 빌드 시스템의 새로운 기능
Android Emulator 사용의 모범 사례
Kotlin
Android는 2년 전에 Kotlin 언어를 지원한다고 발표했고, 우리는 Kotlin 교육과 API에 대한 투자를 늘려가고 있습니다. 아직 Kotlin을 잘 모르신다면 이제는 이 새로운 언어를 확인해보고 그 작동 방식을 살펴볼 때가 된 것 같습니다.
Android에서 2년간 나온 Kotlin의 새로운 기능
Android의 Kotlin 코루틴에 대한 이해
Kotlin의 내부 작동 방식 이해
- 이 언어의 사용 방법에 관해 그다지 많이 다루는 건 아니며, Kotlin의 몇 가지 놀라운 기능이 어떻게 작동하며 언제 이런 기능을 사용해야 하거나 사용하면 안 되는지에 관해 알아볼 수 있습니다.
UI
Android에서의 UI 개발은 UI Toolkit API부터 System UI, 앱 개발의 단순화를 지향하는 새로운 개발 라이브러리까지, 모든 것을 아우릅니다.
선언적 UI 패턴
- 이 프레젠테이션은 Android UI 프로그래밍을 위해 개발 중인 API인 Jetpack Compose에서 사용하는 UI 프로그래밍의 선언적 패러다임에 관한 내용입니다.
모션 인텔리전스: 더욱 스마트한 애니메이션 빌드
Android OS 사용자 인터페이스의 새로운 기능
- Bubbles 및 알림과 같은 System UI 기능에 관한 세부 사항
다크 테마 및 제스처 탐색
Android에서 텍스트를 사용하기 위한 모범 사례
플랫폼
아래의 강연에서는 프레임워크 API, Android 런타임(ART), NDK, 미디어를 포함한 Android 코어 플랫폼의 변경 사항이나 기능에 관해 소개합니다. Q 프리뷰 릴리스에는 여러 가지 중요한 정책 관련 변경 사항이 있는데, 이들에 관해서는 서로 다른 세 가지 플랫폼 세션에서 다룹니다.
Android Q에서 개인정보 보호 변경 사항의 개요
Android Q에서 위치 권한 변경 사항에 대한 앱 업데이트
- 개인정보 관련 변경 사항
공유 저장공간의 새로운 기능
- 개인정보 관련 변경 사항
더 빠른 앱을 위한 Android 런타임(ART)의 이해
Android의 보안: 다음 단계는?
소닉 붐! Android와 Chrome에서의 오디오 프로그래밍
Android C++ 개발의 새로운 기능
- NDK에서 향상된 기능에 관해 들어보세요.
Android 메모리 및 게임
- 메모리 관리는 게임의 경우에 특히 까다로울 수 있는데, 이 세션에서는 Android 메모리의 작동 방식과 이에 도움이 되도록 제공하는 도구에 관해 설명합니
Android
파이어사이드 챗
- Android 개발, 플랫폼 및 생태계와 관련된 랜덤한 주제에 관한 공개 Q&A입니다.
접근성
올해는 핵심적인 플랫폼 기능인 접근성에 관해 유난히 많은 강연이 진행되었기에, 플랫폼과는 별도의 카테고리로 분류합니다.
Android Accessibility의 새로운 기능
Android Accessibility 개발 파헤치기
액세스 가능한 오디오: Android 청각 보조 도구 지원 및 오디오 프레임워크
Android 개발자를 위한 Chrome OS Accessibility
Play
다음은 Google Play Store에서 애플리케이션의 더 나은 배포를 위해 사용할 수 있는 특징, API, 기능에 관한 강연입니다.
Google Play의 새로운 기능
- 인앱 업데이트와 같은 다양한 정책 변경 사항과 배포 기능을 소개합니다.
Android Vitals로 앱 및 게임 품질 향상
앱 번들로 사용자 지정 가능한 제공과 테스트 빌드의 간편한 공유
Google Play에서 앱 크기를 최적화하고 설치 횟수를 늘리기 위한 새로운 도구
앱 성장 모범 사례와 Google Play Console을 사용한 의사결정
Google Play Billing의 새로운 기능
Play Store Discovery 적극 활용하기
기타(스마트폰 이외의) 폼 팩터
Android는 스마트폰에만 사용되는 OS가 아닙니다. 노트북(Chrome OS)은 어떨까요? TV나 자동차는 또 어떨까요? ...
자동차용 Android의 새로운 기능
- Android Auto에 관한 최신 정보
자동차용 Android 앱을 빌드하는 방법
Android TV 기반의 개발 모범 사례
폴더블, 다중 디스플레이, 대형 화면 기기용 앱 빌드
Chrome OS 생태계용 Android 앱 빌드
Android 개발자를 위한 Chrome OS Accessibility
게임
게임과 게임 개발에 관한 다양한 강연이 있었습니다. 그중 일부 강연에서는 일반적인 Android 성능 관련 주제를 넘나들며 다루었고, 일부는 게임에 관해서만 다루었습니다.
Android 메모리 및 게임
- 메모리 관리는 게임의 경우에 특히 까다로울 수 있는데, 이 세션에서는 Android 메모리의 작동 방식과 이에 도움이 되도록 제공하는 도구에 관해 설명합니다.
Vulkan으로 양질의 Android 게임 제작하기
Android 게임 성능 최적화
스마트폰의 영역을 벗어난 Android 게임의 적응
- Chrome OS, Android TV와 같은 다양한 폼 팩터로 게임을 확장합니다.
Android에 세워진 Unity의 세계
오픈소스를 이용한 대규모 멀티플레이어 게임
Systrace에서 Safetynet까지: Android 게임 개발 사례 연구
기타
이 카테고리에는 다른 카테고리로 분류하기엔 어울리지 않아, 필자가 '잡동사니 모음'으로 따로 모아놓은 세션들이 포함됩니다. 어쩌면 테스트나 ML과 같이, 어떤 카테고리에 해당하는 세션이 하나만 있는 것만 따로 모아놓은 카테고리라 할 수도 있겠습니다.
Firebase로 Android 앱에 서버리스 기능 추가
Android 앱용 로그인을 사용하기 위한 모범 사례
디지털 웰빙 개선: 개발자를 위한 Google의 접근 방식과 팁
Android 머신러닝의 새로운 기능
- ML Kit, TensorFlow 등, ML과 관련된 모든 분야에서 어떤 일이 일어나고 있는지 들어보세요.
새롭게 늘어날 10억 명의 사용자를 위한 앱 빌드
Android용으로 테스트 가능한 앱 빌드
Android 긴급 위치 서비스: 무선 통신이 지배하는 세상에서 긴급 전화 찾기
여기까지입니다. 다른 훌륭한 Android 개발자 콘텐츠도 분명히 엄청나게 많이 있습니다. 하지만 Google I/O Android 세션을 찾고 계신 중이라면 위에서 소개한 목록을 참조하시면 됩니다. 자, 그럼 이제 느긋하게 팝콘이라도 드시면서 관심 있는 개발자 강연을 스트리밍으로 즐기시기 바랍니다.
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google I/O
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2026
9월
8월
7월
6월
5월
4월
3월
2월
1월
2025
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2024
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed