431 captures
30 Sep 2016 - 05 Mar 2026
Jul
AUG
Sep
22
2018
2019
2020
success
fail
About this capture
COLLECTED BY
Collection:
Common Crawl
Web crawl data from Common Crawl.
TIMESTAMPS
The Wayback Machine - https://web.archive.org/web/20190822120522/https://developers-kr.googleblog.com/
한국의 개발자들을 위한 Google Developers 국문 블로그입니다.
Flutter의 Transform 및 GestureDetector 위젯이 지닌 파워에 대해 알아보세요!
Wednesday, August 14, 2019
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는 조은(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
클래스에 있습니다.
TensorFlow 2.0 베타 발표
Monday, August 5, 2019
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는 전태균 (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의 현재를 정리해보았습니다
Friday, August 2, 2019
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는 이승민(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 세션을 찾고 계신 중이라면 위에서 소개한 목록을 참조하시면 됩니다. 자, 그럼 이제 느긋하게 팝콘이라도 드시면서 관심 있는 개발자 강연을 스트리밍으로 즐기시기 바랍니다.
더 많은 데이터를 수집하지 않고도 더 많은 성과를 거둘수 있도록 지원합니다.
Thursday, August 1, 2019
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는 양찬석(Google) 님이 참여해 주셨습니다>
게시자: Amanda Walker(엔지니어링 디렉터), Sarvar Patel(소프트웨어 엔지니어), Moti Yung(연구원) - Private Computing
Google은 개인정보를 안전하게 보호하기 위해 끊임없이 노력합니다. 동시에 수집된 데이터로부터 중요한 통찰을 얻어내는
연구에 투자
합니다. 올해 초, Google은 사용자가 웹사이트에서 입력하는 사용자 이름과 비밀번호가 이미 노출된 경우, 이를 쉽게 확인할 수 있는
Password Checkup
Chrome 확장 프로그램을 출시했습니다. 이 확장 프로그램은
PSI(Private Set Intersection)
로 알려진 암호화 프로토콜를 기반으로 특정 로그인 사용자 인증 정보와 Google이 안전하지 않은 것으로 파악한 40억 개 이상의 사용자 인증 정보를 비교하여 해당 사용자 이름 및 비밀번호가 안전할지 여부를 확인해 줍니다. 이때 Google을 포함한 그 누구도 실제 사용자 인증 정보는 절대 알아낼 수 없습니다.
추가로 Google은 코어 PSI 프로토콜을 강화하는 새로운 유형의
보안 MPC(Multi-Party Computation)
인 Private Join and Compute의
오픈소스
를 공개하고 배포할 예정입니다. 이는 여러 조직간에 기밀 데이터세트를 기반으로 작업을 하면서도 개인정보 보호의 기준을 높이는 데 도움이 될 수 있습니다.
개인정보를 안전하게 보호하는 방식으로 데이터를 이용한 협업 진행
각각의 독립적 당사자가 공유되는 식별자 집합(예: 이메일 주소)에 관해 자체적으로 고유한 정보(그중 일부는 공통된 정보임)를 보유하는 상황에서, 각 당사자가 제공하는 데이터세트를 결합함으로써 많은 중요한 연구, 비즈니스 및 사회적 문제에 답할 수 있습니다. 하지만 민감한 데이터를 사용할 때, 한 당사자가 데이터세트에 포함된 개인에 대한 어떤 정보도 알아내지 못하는 채로 어떻게 다른 당사자의 데이터에 관해 집계된 통계를 얻을 수 있을까요? Private Join and Compute가 해결에 도움을 주는 문제가 바로 정확히 이런 문제입니다.
두 당사자는 이 암호화 프로토콜을 사용하여 식별자와 관련 데이터를 암호화한 다음 조인할 수 있습니다. 그런 다음, 데이터세트에서 겹치는 부분에 대해 특정 유형의 계산을 수행하여 두 데이터세트를 모두 합쳐 유용한 데이터를 추출할 수 있습니다. 모든 입력 데이터(식별자와 관련 데이터)는 프로세스 전체에 걸쳐 완전히 암호화되고 읽을 수 없는 상태로 유지됩니다. 어떤 당사자든 원시 데이터를 드러내지도 않지만, 계산 결과를 사용하여 당면 문제에 답할 수 있습니다. 이 최종 결과만 복호화되며 집계된 통계 형태로 표현됩니다. 예를 들어 이 결과는 두 데이터세트에 모두 있는 데이터의 개수, 합계 또는 평균일 수도 있습니다.
기술에 대한 더욱 심층적인 이해
Private Join and Compute는 다음 두 가지 기본적인 암호화 기법을 결합하여 개인 데이터를 보호합니다.
PSI(Private Set Intersection)
를 사용하면 두 당사자가 각자의 데이터세트를 비공개로 조인하고 공통적으로 보유한 식별자를 발견할 수 있습니다. 식별자를 단 하나도 학습하지 않고 오직 암호화된 식별자만 표시하는 변형 모델을 사용합니다.
준동형 암호화
를 사용하면 암호화된 데이터에 대해 직접 어떤 유형의 계산을 수행할 수 있는데, 이 계산을 위해 먼저 해당 데이터를 암호 해독할 필요가 없으므로 원시 데이터의 개인정보가 보호됩니다. 이 프로세스 내내 개별 식별자와 값은 숨겨진 상태로 유지됩니다. 예를 들어 개인에 대한 그 어떤 정보도 학습하지 않고 공통 데이터세트에 식별자가 몇 개나 있는지 세거나 표시된 암호화된 식별자와 관련된 값의 합을 계산할 수 있습니다.
이들 기법을 결합하면 조인된 세트의 크기와 관련된 값의 통계(예: 합계) 외에는 아무 것도 드러나지 않습니다. 이 프로세스 내내 개별 항목은 임의의 키로 강력하게 암호화되고 상대방은 물론이고 다른 누구도 원시 형식의 데이터로 활용할 수 없습니다.
아래 동영상을 시청하거나 전체
인포그래픽
을 클릭하면 Private Join and Compute의 작동 방식을 확인할 수 있습니다.
다자간 계산을 사용하여 실제 문제 해결
다자간 연산(MPC)은 오랜 역사를 지닌 분야이지만, 대체로 학계를 뛰어넘어 널리 채택되기까지는 넘어야 할 장애물이 많습니다. 그 중에는 실제 문제를 해결하기 위해 암호화 기법과 도구를 효과적이고도 효율적으로 맞춤화할 방법을 찾는 문제가 포함됩니다.
Google은
개인정보 보호 기술을 더욱 널리 사용할 수 있도록 하여
Google은 물론이고 다른 곳에서도 더 구체적이고 실질적인 문제에 MPC 및 암호화 기술을 적용할 수 있도록 최선을 다하고 있습니다. Google에서는
협업적 머신러닝
(
Federated Learning
), 사용자 보안, 집계된 광고 측정 등의 영역에서 여러 가지 잠재적 사용 사례를 탐구하고 있습니다.
아직은 가능성의 세계에 막 발을 들여놓은 것일 뿐입니다. 이 기술은 데이터에 표현되어 있는 개인에 대한 어떤 정보도 드러내지 않고, 여러 조직이 협력하는게 필수적인 다양한 분야에서 귀중한 연구를 진전시키는 데 도움이 될 수 있습니다.
예:
공공 정책
- 정부가 공립학교에 새로운 건강 프로그램(예: 점심 식단 및 체육 교과 커리큘럼 개선)을 시행하는 경우, 대상 학생의 장기적인 건강 상태에 어떤 성과가 있을까요?
다양성과 포용성
- 산업계에서 성별과 인종에 따른 임금 격차를 해소하기 위한 새로운 프로그램을 만들 때, 이 프로그램이 인구통계를 기준으로 여러 회사에 걸쳐 급여에 어떤 영향을 미칠까요?
헬스케어
- 전국적으로 환자에게 새로운 예방약을 처방할 때 해당 질병의 발병률이 감소할까요?
자동차 안전 기준
- 자동차 제조업체에서 차량에 더욱 발전된 안전 기능을 추가할 때, 자동차 사고 신고 건수가 감소할까요?
Private Join and Compute는 조직에서 수집한 데이터를 정확히 계산하고 집계된 통계로부터 유용한 통찰을 끌어낼 수 있도록 하면서도 개인정보는 안전하게 보호해 줍니다. 우리는 이 기술을 더 널리 공유함으로써 보안 컴퓨팅의 사용 사례가 확대되기 바랍니다. Private Join and Compute와 관련된 이면의 연구 및 방법론에 관해 더 자세히 알아보려면
전문을 읽고
오픈소스 코드와 문서에 액세스
하시기 바랍니다. 다른 조직에서도 MPC와 암호화 기술을 발전시켜 나가면서 어떻게 개인정보를 안전하게 지키면서도 중요한 문제에 답할지, 설레는 마음으로 지켜보겠습니다.
감사의 말
제품 관리자 - Nirdhar Khazanie
소프트웨어 엔지니어 - Mihaela Ion, Benjamin Kreuter, Erhan Nergiz, Quan Nguyen, Karn Seth
연구원 - Mariana Raykova
Tag
ad
AdMob
admob_sdk
Advanced Power Searching
Android
Android App Quality
android back button
Android back end
Android navigation
Android Player API
android server
android up button
androidL
androidtv
androidwear
App Translate Service
Audio Focus
Chrome
Chromecast
Code-in 2012
Core App Quality Guidelines
Daydream
design
designing for Tablets
designsprint
dialog
Drive SDK
Game Developers Conference
GCi
GCi 참가자
GCPNEXT16
GDA
GDC
gdg
gdgkorea
Go
Google Cast
Google Code-in
Google Play
Google Play 스토어
Google Search
Google Summer of Code
Google+ Sign-In
Google+ Sign-In Bootcamps
Google+ 로그인
Google+ 로그인 부트캠프
googleanalytics
googleio
GooglePlay #AndroidDevStory #PlayStore #MaterialDesign #AndroidStudio #DeveloperConsole
GSOC
hackathon
HackFair 출품작
In-app Billing
io
io2014
ioapp
iobytes
ioextended
IRC Talk
IRC 서버
java7
kitkat
launch
Marshmallow
materialdesign
mobile ad
mobile_ads_sdk
multiscreen
NaCl
Native YouTube Player API
NRRN 사용 제한
Power Searching
product launch
SD 카드에 앱 설치
SecureKeyFactory
ux
webview
YouTube
YouTube Android Player API
YouTube API
YouTube API 3.0
YouTube API Update RSS Feed
광고
구글 HackFair
구글 Summer of Code
구글 개발자 사이트 홍보
구글 개발자 아카데미
구글 개발자 온라인 강좌
구글 검색
구글 고급 파워 서치
구글 드라이브 앱
구글 부트캠프
구글 아카데미
구글 코드인
구글 클라우드 플랫폼
구글 플러스 로그인
구글 핵페어
구글로 로그인하기
네이티브 클라이언트
데이드림
멀티 모바일
멀티 플랫폼
모바일 광고
수익화
스마트 브라우저
안드로이드
안드로이드 4.2
안드로이드 Back 버튼
안드로이드 Up 버튼
안드로이드 개인 정보 보호 정책
안드로이드 네비게이션
안드로이드 데이드림
안드로이드 디자인
안드로이드 방향탐색
안드로이드 보안
안드로이드 사용자 데이터
안드로이드 서버 백엔드
안드로이드 앱 품질
안드로이드 원격 제어
안드로이드 태블릿 디자인
안드로이드 현지화
안드로이드 화면 보호기
애드몹
애플리케이션 SD카드 설치
애플리케이션 개발 주민등록번호 사용 제한
애플리케이션 외부 저장 장치
앱 품질 체크리스트
오픈 소스
오픈소스 프로그램
웹 DMB
유튜브
유튜브 API
유튜브 API 3.0
유튜브 API 업데이트
유튜브 모바일
유튜브 안드로이드 플레이어 API
인앱 결제
인터넷상 주민등록번호 수집 이용 제한
주민등록번호 사용제한
추천이미지
출시
크롬브라우저
태블릿 디자인
태블릿용 앱
파워서치
한국 구글 개발자
한국 구글 개발자 사이트
핵심 앱 품질 가이드라인
핵심 태블릿 앱 품질 체크리스트
핵페어
핵페어 출품작
Archive
2019
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2017
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2015
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2014
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2012
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Mar
Feb
Jan
2011
Dec
Nov
Feed