1. 저장 도구의 역할
데이터의 지속적인 유지와 저장 및 활용은 스마트폰 앱을 포함한 컴퓨터 프로그램에서 기본적이면서도 중요한 기능이다. 프로그램 내에서 데이터를 저장하기 위해 변수(전역변수, 지역변수 등)라는 개념을 사용하지만, 변수(에 저장된 값은 프로그램이 종료되면 사라진다. 비슷하게 앱 인벤터2를 이용해서 앱을 만들 때, 변수에 있는 값들은 화면이 바뀌면 사라지게 된다.
만일 다른 화면으로 값을 전달하길 원한다면 제어 블록 목록의 '시작 값을 전달하여 다른 스크린 열기' 블록을 이용해 값 하나를 다른 화면으로 보낼 수 있다. 그렇기 때문에 프로그램에서 다루던 데이터를 프로그램 종료 후에도 지속적으로 유지하기 위해서는 프로그램이 종료되더라도 지속적으로 남아 있는 저장매체에 데이터를 저장할 수 있는 도구가 필요하다. 이를 앱 인벤터2에서는 저장 도구 컴포넌트를 모아둔 저장소 팔레트를 이용해 만들어 낼 수 있다.
2. 앱 인벤터2의 저장소(Storage) 팔레트 구성 요소
앱 인벤터2에서의 저장소 팔레트에 포함된 컴포넌트는 총 6개로, 클라우드DB 컴포넌트, 데이터파일 컴포넌트, 파일 컴포넌트, 스프레드시트 컴포넌트, 타이니DB 컴포넌트, 타이니웹 DB 컴포넌트가 포함된다. 센서 팔레트의 모든 컴포넌트와 마찬가지로 이 저장소 팔레트에 소속된 저장 도구 컴포넌트는 모두 보이지 않는 컴포넌트라는 특징이 있다.
2-1. 클라우드DB 컴포넌트
클라우드DB(CloudDB) 컴포넌트는 레디스 소프트웨어(Redis software)를 사용하는 인터넷 연결 데이터베이스 서버에 데이터를 저장할 수 있게 하는 컴포넌트로, 저장소 팔레트에 속해 있다. 이 컴포넌트는 앱 사용자 사이에서 서로 데이터를 공유할 수 있게 허락한다. 기본적으로 데이터는 MIT가 관리하는 서버에 저장되는데, 앱 개발자는 자신의 서버를 설정하고 실행할 수 있다. 이 땐 레디스서버(RedisServer) 속성과 레디스포트(RedisPort) 속성을 설정해 자신의 서버에 데이터를 엑세스할 수 있다.
블록에서는 클라우드DB에 오류, 첫번째 값 삭제, 값 및 태그리스트 받기와 같은 이벤트가 발생했을 때, 어떤 대상을 어떻게 호출할 건지를 지정할 수 있다. 여기서는 지정 블록을 제외한 이벤트 블록, 호출 블록, 속성 블록을 쓸 수 있다.
2-2. 데이터파일 컴포넌트
데이터파일(DataFile) 컴포넌트는 말 그대로 데이터 파일용 컴포넌트로, 저장소 팔레트에 속해 있다. 자신의 PC 등에서 원하는 파일을 업로드해 사용할 수 있다.
블록에서는 어떤 파일을 호출할지, 그리고 데이터파일의 어떤 속성을 정할지를 설정할 수 있다. 여기서는 이벤트 블록과 지정 블록을 제외한 호출 블록, 속성 블록을 쓸 수 있다.
2-3. 파일 컴포넌트
파일(File) 컴포넌트는 파일 저장 및 검색을 위한 컴포넌트로, 저장소 팔레트에 속해 있다.
장치에서 파일을 쓰거나 읽기 위해서 사용한다. 스코프(Scope)의 설정 값을 통해 외부 파일이 배치되는 정확한 위치를 정할 수 있으며, 앱이 AI 컴페니언(AI Companion)에서 실행 중인지, 컴파일 중인지, 그 앱이 실행되는 안드로이드 버전은 얼마인지에 대한 정보를 확인한다. 그래서 안드로이드의 최신 버전에서는 앱별 디렉토리에 파일을 저장해야 하기 때문에 디폴트스코프(DefaultScope)는 앱으로 설정된다. 만일 이전 버전의 안드로이드를 사용 중이고 기존 공용 스토리지에 대한 접근 권한이 필요한 경우 디폴트스코프(DefaultScope)를 레거시(Legacy)로 변경해야 한다.
블록에서는 파일의 스코프, 경로, 디렉토리 등을 지정할 수 있으며, 파일에 이벤트가 발생한 경우라는 조건을 달아줄 수 있다. 여기서는 이벤트 블록, 호출 블록, 지정 블록, 속성 블록을 모두 쓸 수 있다.
2-4. 스프레드시트 컴포넌트
스프레드시트(Spreadsheet) 컴포넌트는 구글 시트(Google Sheets) 문서에서 데이터를 저장하거나 수신할 수 있는 컴포넌트로, 저장소 팔레트에 속해 있다.
이 컴포넌트를 활용하려면 구글 개발자 계정(Google Developer Account)이 있어야 하며, 그 계정은 이 사이트(https://developers.google.com/)에서 만들 수 있다. 계정을 만든 뒤 해당 계정에서 새 프로젝트를 만들고 해당 새 프로젝트에서 구글 시트 API(Google Sheets API)를 사용하도록 설정한 다음, 마지막으로 해당 사이트의 [API 및 서비스]-[사용자 인증 정보]에 들어가 서비스 계정(Service Account)을 만들어야 한다.
블록에서는 이렇게 다양한 이벤트 조건과 호출 방법 등을 정할 수 있다. 여기서는 이벤트 블록, 호출 블록, 지정 블록, 속성 블록을 모두 쓸 수 있다.
2-5. 타이니DB 컴포넌트
타이니DB(TinyDB) 컴포넌트는 스마트폰 내에 앱 데이터를 저장하는 소형 저장소 컴포넌트로, 저장소 팔레트에 속해 있다.
앱 인벤터2로 만든 앱은 실행될 때마다 초기화된다. 이는 앱에서 변수값을 설정한 수 사용자가 앱을 종료하는 경우 해당 변수의 값은 다음에 앱이 실행될 때 기억되지 않는다는 말이다. 이런 변수 설정 방식과 대조적으로 이 타이니DB는 앱의 영구적인 데이터 저장소이며, 높은 점수를 저장하고 있는 게임처럼 타이니DB에 저장된 데이터는 앱이 실행될 때마다 사용할 수 있다. 다만 클라우드DB와는 다르게 서로 다른 앱 간에 데이터를 전달할 수는 없다. 단지 같은 앱에서 서로 다른 화면 간에 데이터 공유는 가능하다.
여기서 주의할 점은 타이니DB는 스마트폰 내부에 앱(프로젝트) 하나마다 하나씩 만들어지게 되어 있는데, 이러면 스마트폰의 AI 컴패니언으로 앱을 테스트 하는 경우 여러 앱에서 타이니DB에 저장한 데이터들을 모두 보여주는 일이 발생한다는 것이다. 왜나면 앱 인벤터2로 개발 중인 여러 앱들은 AI 컴패니언으로 테스트할 때, 그 AI 컴패니언이 소유하고 있는 타이니DB를 공동으로 사용하기 때문이다. 그래서 한 앱 개발이 끝나 정식으로 스마트폰에 저장했다면 다른 앱을 개발하기 전에 기존 AI 컴패니언에 있는 타이니DB를 모두 비우는 것이 좋다.
블록에서는 이렇게 다양한 이벤트 조건과 호출 방법 등을 정할 수 있다. 여기서는 이벤트 블록을 제외한 호출 블록, 지정 블록, 속성 블록을 모두 쓸 수 있다.
2-6. 타이니웹 DB 컴포넌트
타이니웹DB(TinyWebDB) 컴포넌트는 타이니웹 DB 웹 서비스(http://tinywebdb.appinventor.mit.edu)와의 통신을 통해 정보를 저장하고 검색할 수 있게 돕는 컴포넌트로, 저장소 팔레트에 속해 있다.
이 컴포넌트 자체는 다른 저장소 컴포넌트에 비해 매우 제한적이며, 주로 웹과 대화하는 자체적인 컴포넌트를 만들고자 하는 개발자를 위한 데모 서비스라고 보면 된다. 여기서는 모든 태그와 값은 문자열(텍스트)로만 쓸 수 있다는 특징이 있다. 아직 개발 중이므로 향후 버전이 업데이트 되면 다양한 기능을 사용할 수 있을 것이라고 MIT가 발표했다.
블록에서는 이렇게 다양한 이벤트 조건과 호출 방법 등을 정할 수 있다. 여기서는 이벤트 블록, 호출 블록, 지정 블록, 속성 블록을 모두 쓸 수 있다.
'용어 정리, 이슈 > 과학&기술' 카테고리의 다른 글
앱 인벤터2 - 코드를 이미지 파일로 저장하는 법 (0) | 2022.12.06 |
---|---|
구글 OTP 등록을 해보자 (0) | 2022.12.01 |
앱 인벤터2 - 레이아웃 팔레트 구성 요소 (0) | 2022.11.12 |
앱 인벤터2 - 스크린 컴포넌트 (0) | 2022.11.12 |
앱 인벤터2 - 센서 팔레트 구성 요소 (0) | 2022.11.11 |