2. 목차
1. 들어가기 앞서 ( 구글의 오픈소스에 관한 preface)
2. 구글 오픈소스
3. 구글 오픈소스 장려 사업
3. 구글이 오픈소스를 장려하는 이유
1. 더 많은 사람들이 함께 기술에 참여하면
더 좋은 기술이 만들어질 것이라고 보기 때문에
2. 마케팅 효과를 노리려는 이유도 있다. 새로운 기술을 오픈소스 기술로
공개함으로써 구글 내부의 기술력이 공개되고, 기술 생태계가 구성될 확
률이 높다.
4. 이 세미나의 이유
1. 오픈소스도 굉장히 다양한 종류의 오픈소스들이 존재하고
숫자도 어마어마하게 많다. 그 중에서 오픈소스 기술을 적극적으로 지원
해주는 구글 오픈소스를 소개하고자 함.
2. 다른 학우들도 구글 오픈소스와 장려 사업에 관해서 한번 알아두면 좋
은 내용이 될것 같아서
5. 2. 구글 오픈소스 소개
* 프로그래밍 언어 - Go, Dart
* 웹 기술 - Angular js, Polymer, Chromium
* 디자인 자료 - 노토 폰트
* 기타 오픈소스 - TouchTime
6. Go란?
간단하고 안정적이며 효율적인 소프트웨어를 쉽게 만
들 수있는 오픈 소스 프로그래밍 언어입니다.
Go 프로그래밍 언어는 프로그래머의 생산성 향상을
위한 오픈 소스 프로젝트입니다.
Go는 표현력 있고, 간결하며, 깨끗하고 효율적입니
다. 동시성 메커니즘을 통해 멀티 코어 및 네트워크
컴퓨터를 최대한 활용하는 프로그램을 쉽게 작성할
수 있으며 소설 유형 시스템은 유연하고 모듈 식 프로
그램 구성을 가능하게합니다. Go는 기계 코드로 빠
르게 컴파일되지만 가비지 수집의 편의성과 런타임
반영 기능을 제공합니다. 이것은 동적으로 타이핑되
고 해석되는 언어처럼 느껴지고 정적으로 타이핑되고
컴파일 된 언어입니다.
7. go의 특징
• 정적 타입, 강 타입
C/C++, Java 와 같이 Compile Time 에 Type 결정이 이루어 지며, 코드 내에서 암시적 형변환이 일어나지 않는다.
• 컴파일 언어
C/C++, Java, C# 등과 같이 컴파일이 필요한 언어임. Java 나 C# 과 달리 실행파일을 만들어냄. 별도의 Runtime 환경이 필요없어 실행 환경이
복잡하지 않음.
• 가비지 컬렉션
실행파일 내에 Garbage Collector 가 탑재 됨.
• 병행성(Concurrency)
Multi Thread, Multi Core 에 Go Routine 이라는 단위의 함수실행을 한 Thread 나 Core 별로 동시에 실행시킬 수 있다. Thread 와 Go
Routine 은 1:N 관계를 이룰 수 있다.
• 멀티코어 환경 지원
Go Routine 간에 “채널” 을 통해 통신하여 데이터를 공유하고 실행 순서를 제어할 수 있다. 제어는 Multi Thread 의 동기화와 비슷하다.
8. Go는 단순함과 실용성을 지향하는 언어입니다. keyword가 25개밖에
되지 않고 문법 또한 간결해 입문이 쉬운 편입니다.
Go의 키워드
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
•C의 키워드
9. Go 언어는 컴파일 언어이기에 문제 해결 능력 역시
컴파일 언어들과 대체로 비슷합니다.
10. Go의 추가적인 장점
1. 가벼운 고 루틴
2. 간결한 코드 사용으로 생산성 항샹
3. Interface의 편리성
4. 빠른 컴파일 속도와 실행 속도 덕분에 테스트가 빠르고 쉽다
5. 코딩 스타일을 알아서 맞춰준다.
17. Dart
다트는 생산적이고 안정적이며 놀라움
없는 언어로 설계되었습니다.
Dart는 Google에서 개발하고 Ecma가
표준으로 승인 한 프로그래밍 언어입니
다.
웹 개발에 이상적이며 JavaScript로 트
랜스 컴파일 될 수 있지만 서버, 데스크
탑 및 모바일 응용 프로그램을 작성하
는데도 사용할 수 있습니다.
다트는 '배터리 포함'철학으로 설계되
었으며 대형 응용 프로그램을 개발할
때 예기치 않은 상황을 피하기 위해 자
동 유형 강제 변환과 같은 마술을 최소
화합니다.
18. Dart는 Javascript를 대체하기 위해 나왔을까?
구글은 왜 Dart를 개발했을까요 ? Dart 개발진은 Javascript를 대체하기 위해서라는 말은 하지
않습니다. 단지 거대한 웹 애플리케이션을 개발하는 개발자들을 위해 개발했다고 얘기합니다 .
즉, 표준화 된 언어와 잘 정리된 도구들 그리고, 이 모든 것이 통일 된 환경에서 나오는 향상된
개발 경험을 개발자에게 주고자 개발되었다는 겁니다.
구글은 이러한 새로운 개발 환경을 통해 개발자들이 더 빠르고 쉽게 거대한 웹 어플리케이션 개
발을 할 수 있을 것이라고 믿고 있습니다. 실제로, Dart를 개발하고 있는 팀은 V8엔진을 개발하
던 개발진이며 , Google의 경우 여전히 Javascript를 발전시키기 위해 TC39와 협조하고 있으
며 여전히 V8엔진을 발전시키고 있습니다.
이 말은 현재 “Javascript를 대체하기 위해”라는 자극적인 주제보다는 “더 나은 웹 개발을 위한
새롭고 발전 된 개발환경을 제공한다 ”는 명분이 Dart와 어울린다고 볼 수 있습니다. 정리하자
면, Dart는 개발자에게 기존의 개발경험을 살리면서 더 명확하게 웹 애플리케이션을 개발할 수
있는 기회를 주기 위해 탄생 되었다고 할 수 있습니다.
19. Dart 특징
•Java처럼 main 함수에서 시
작하며 클래스와 인터페이스
사용이 가능합니다.
•JavaScript 의 동적 타입과
Java의 정적 타입 사용이 가능
합니다.
20. •Optional Types라는 좀 더 편안한
기능을 제공하고 있습니다. 변수
Type을 확정하지 않고, 기능이 제공
될 수 있도록 코드를 작성을 할 수 있
는 방법입니다.
21. •Dart는 Javascript와 마찬가지
로 Single Thread로 동작합니다.
Javascript에서는 Multi-Thread
효과를 위해 여러 방법들이 사용
되어 왔습니다.
바로 ‘Isolate’ 기능 입니다.
22. 처음에는 굉장히 떴다가 현재는
점유율이 점점 낮아지고 있습니다.
2014년에는 17위에 있었으나
2017년 현재에는 25위까지 떨어
졌으며, 점유율 역시 감소했습니
다.
23. 그 이유로는
굳이 Dart를 쓰지 않더라도
Javascript로도 원하는 기술을
적용할수 있고 퍼포먼스 차이
가 심하지 않다는 점입니다.
(예를 들어 psuedoclass로 객
체지향 구현 가능)
24. Angular JS
Angular는 모바일, 데스크톱 및 웹용 웹 응
용 프로그램 프레임 워크입니다.
Angular는 개발자 생산성, 속도 및 테스트
용이성에 중점을 둔 웹 개발을 손쉽게 할 수
있게하는 개발 플랫폼입니다. Angular로 구
축 된 응용 프로그램은 웹 사이트 및 기본 응
용 프로그램으로 모바일 장치 및 데스크톱에
배포 할 수 있습니다.
28. Chromium
Chromium이란? 더 안전하고 빠르며 안정적인
웹 브라우저입니다.
Chromium은 Google 크롬이 구축 한 웹 브라
우저입니다. 이는 경량감과 빠른 느낌을 암시합
니다. 출시되었을 때, 다른 많은 브라우저에서
채택한 샌드 박스 보안 모델, 최소한의 사용자
인터페이스 및 탭 창 관리자를 가져 왔습니다.
29. Polymer
Polymer란?
웹 컴포넌츠 표준을 따르면서 구축된 간단한
라이브러리를 말합니다.
Polymer는 사용자가 재사용 할 수 있고 캡슐
화 된 HTML 요소를 만들 수 있도록 웹 구성
요소 표준을 기반으로 웹 응용 프로그램을 보
다 쉽게 구조화 할 수있는 라이브러리입니다.
Polymer는 복잡한 새로운 추상화와 마술을
발명하지는 않지만 사용자 정의 요소의 생성
을 간단하게 설득하는 간단한 방법으로 웹 플
랫폼의 최상의 기능을 사용합니다. 현대식 브
라우저에서 작동하는 다른 프레임 워크 또는
라이브러리와 함께 사용할 수있는 모듈 식 라
이브러리입니다.
30. Kubernetes
Kubernetes는 자동화 된 컨테이너 배포, 확
장 및 관리를 위한 시스템입니다.
Kubernetes는 여러 호스트에서 컨테이너
화 된 응용 프로그램을 관리하고 응용 프로
그램의 배포, 유지 관리 및 확장을위한 메커
니즘을 제공하는 클러스터 관리 시스템입니
다. 이것은 응용프로그램을 구성하는 요소들
을 쉽게 관리하고 발견할 수 있도록 논리적
단위로 그룹화합니다.
31. Firebase SDK
Firebase SDK란? 고품질 앱을 개발하고 사용
자 기반을 확대하며 더 많은 수익을 올릴 수있는
도구를 갖춘 앱 개발 플랫폼입니다.
Firebase는 앱 개발, 성장 및 수익 창출에 도움
이되는 통합 도구를 제공하는 앱 개발 플랫폼입
니다. Firebase SDK를 사용하면 여러 플랫폼에
서 직관적이고 관용적 인 방식으로 Firebase 서
비스에 액세스 할 수 있습니다.(ios, java, go 등
다양한 언어 지원)
32. 1. cloud-hosted database의 사용으로 개발 시간 단축
database가 실시간으로 연동된다는 것은 모바일 개발에 있어서 backend개발에 조금은 덜 집중해도 괜찮다는 이야기입니
다. 따로 서버를 구축하지 않고 데이터베이스를 사용할 수 있다는 이점은 상당한 메리트로 다가옵니다.
2. Offline을 대비한 내부 캐시
여기서는 Offline을 위한 설정을 다루지는 않았지만, 몇몇 설정을 통해 네트워크 연결이 불안정 했을때를 대비해서 내부 캐
시에 데이터를 저장할 수 있습니다. 연결이 끊겼을때 수정된 데이터들을 큐에 저장해 두고 다시 연결 되었을때 동기화합니
다.
3. 크로스 플랫폼 지원과 개발 환경의 통합
Android뿐만 아니라 iOS와 Web을 지원합니다. 또한 소개한 database의 기능 뿐만 아니라 Authentication이나 Crash
Reporting같은 서비스가 하나의 SDK에서 가능하고, 모두 Firebase 콘솔에서 관리할 수 있습니다. 기능을 이리저리 조합해
서 원하는 것을 쉽고 빠르게 만들 수 있다는 점이 강점입니다.
33. Noto Fonts
•Noto Fonts는 조화로운 모양과
느낌으로 모든 언어를 지원하는 것
을 목표로하는 글꼴입니다.
컴퓨터로 텍스트를 렌더링 할 때 문
자가 "두부"로 표시되는 경우가 있
습니다. 당신의 장치에 텍스트를 표
시 할 글꼴이 없다는 것을 나타내는
작은 상자입니다.
34.
35.
36. TouchTime
Android 스마트 시계의 진동 패턴을 통해 시간
을 알려줍니다.
TouchTime은 터치하여 시간을 알려주는
Android Wear 스마트 시계 응용 프로그램입니
다. 시각 장애인 및 시간을 은밀히 말하고자하는
사람들에게 유용하도록 고안되었습니다.
이 패키지에는 스마트 폰 버전의 소프트웨어가
포함되어있어 스마트 시계 없이도 응용 프로그
램을 테스트 할 수 있습니다.
37. 손가락을 화면 주위로 밀면 가상 손 중 하나를 터치 할 때 시계가
진동합니다. 진동 패턴은 손으로 만져집니다
(시침에 대한 지속적인 진동, 분침에 대한 진동 펄싱 및 손이 서로
겹쳐있을 때 긴 짧은 펄스 패턴)
46. 이 프로그램은 18세 이상의 학생이 참여할
수 있는 프로그램으로, 참가자들은 3개월이
라는 시간 동안 하나의 오픈소스 프로젝트를
집중적으로 담당합니다.
따라서 취업 이전에 오픈소스 프로젝트를 체
계적으로 배워보고 실무에서 필요한 지식을
얻을 수 있습니다.
구글은 이프로그램에서 오픈소스 전문업체
의 개발자를 멘토로 지정해서 참가자가 언제
든지 질문할 수 있도록 지원합니다.