SW 배움터/앱인벤터2

앱인벤터2 강좌 27: 허니비 암송법 구현하기

kusson 2017. 12. 15. 15:36
반응형
728x170

암송법 중에서 아주 효과가 좋기로 소문난 허니비 암송법이라는 것이 있다. 꿀벌이 붕붕붕 소리를 내며 부지런히 날라다니는 것에 착안해서 개발한 암송법으로 특히 교회 다니는 사람들이 성경 구절 암송하는데 유용하다고 한다. 이 방법은 학생들이 암기 과목을 공부할 때나 영어 단어 외울때도 효과가 좋은 것으로 알려져 있는데 이번 시간에는 앱인벤터로 바로 이 허니비 암송법을 구현해서 설명하겠다. 


허니비 암송법이란 긴 문장을 4~5개의 문단으로 끊어서 반복하는 것인데 예를 들어 설명해 보도록 하자.

윤동주 시인의 서시를 외운다고 가정하자.


        서시

죽는 날까지 하늘을 우러러 (A)/

한 점 부끄럼이 없기를(B)/ 

잎새에 이는 바람에도 (C)/ 

나는 괴로워했다(D) / 

별을 노래하는 마음으로(E) / 

모든 죽어가는 것을 사랑해야지(F) / 

그리고 나한테 주어진 길을(G) / 

걸어가야겠다.(H)/ 

오늘 밤에도 별이 바람에 스치운다.(I)/


그러면 먼저 첫 문장 A를 다섯번 빠르게 반복한다. 꿀벌이 붕붕 거리듯이.

두번째는 두번째 문장 B를 다섯번 빠르게 반복한다. 

그 다음은 첫 문장과 두번째 문장을 이어서 다섯번 반복한다. AB/AB/AB/AB/AB

그 다음은 CCCCC

그 다음은 ABC/ABC/ABC/ABC/ABC

서시는 I까지 있으니까 마지막에는 ABCDEFGHI를 다섯번 반복하는 것으로 끝난다.

이런식으로 이어서 끝까지 반복하는 방식이다. 한번 해 보면 생각보다 암기가 잘된는 것을 알 수 있을 것이다. 머리보다는 입이 먼저 기억하는 방식이다.


이제 위의 방식을 앱인벤터로 구현해 보자. 편의상 필자가 예전에 작성해둔 프로그램으로 설명한다.

위와 같이 디자이너 에디터를 구성한다. 물론 얼마든지 다른 형식의 화면을 구성해도 상관없다. 여기서는 앱인벤터에서 제공해 주는 'TextToSpeech'를 이용해서 글자를 음성으로 들려주는 방식을 이용하겠다.  상단에는 5개의 버튼을 배치해서 'A허니비 암송시작',  'B허니비 암송시작',  'A구절 전체 반복', 'B 구절 전체 반복', 'AB구절 전체 반복'이란 이름을 붙였다. 중단의 '장절'과 '성구' 부분에는 실제 성경의 장절, 그리고 성구가 들어갈 Label이다. 하단에는 버튼을 하나 더 배치해서 소리를 끄는 버튼으로 사용할 예정이다.


실제 스마트폰 화면에 나타나는 화면이다. 시편 127편 1절 말씀과 전도서 9장 9절의 말씀을 허니비 암송법으로 암기해 보는 화면이다. 'A허니비 암송시작' 버튼을 누르면 A로 지정된 시편 127편 1절의 말씀을 허니비 암송법으로 음성이 출력된다. 사용자는 부지런히 따라하면 된다. 'A구절 전체 반복' 버튼을 누르면 시편 127편 1절을 계속 반복한다. 'AB구절 교차 반복' 버튼을 누르면 시편 127편 1절 말씀과 전도서 9장 9절 말씀이 교대로 반복된다. 소리를 끄고 싶다면 언제든지 하단의 '소리제거' 버튼을 누르면 소리가 꺼진다.


먼저 이 프로그램에 사용할 변수와 리스트를 설정한다. soundOffValue는 소리를 끄기 위해 필요한 변수이다.

시편 127편 1절 말씀과 전도서 9장 9절 말씀을 각 버튼에서 쓰기 편한 형식으로 준비한다. grade1AChapter, grade1BChapter, grade1View리스트는 스마트폰 화면에 보이는 성경 장절과 성구를 나타내기 위해서 필요한 리스트이다.  grade1A와 grade1B리스트는 'A구절 전체 반복'과 'B구절 전체 반복'에 필요한 리스트이다. grade1리스트는 'AB구절 교차 반복'에 쓰이는 리스트이다.


'grade1A_hunyBee'리스트가 실제 허니비 암송을 구현하기 위해 필요한 리스트가 되겠다. 위의 서시를 설명하면서 말한 대로 AAAAA, BBBBB, ABABABABAB, CCCC, ABCABCABCABCABC방식으로 입력했다. 이렇게 하는 이유는 앱인벤터에서 제공하는 'TextToSpeech'에서 소리를 음성으로 변환해 주는 서비스를 이용하기 위해서이다.


이제 각 버튼을 눌렀을 때 어떤 원리로 허니비 암송법이 실현되는지 알아보자. 각 버튼을 누르면 소리를 끄기위한 'soundOffValue'를 설정하면서 'TextToSpeech'로 각 버튼에 설정된 리스트를 음성으로 출력한다. 'afterSpeaking' 블럭은 리스트의 음성출력이 끝났을때 'soundOffButton'이 클릭되냐 아니냐에 따라 음성출력을 중지할 것인지 계속 반복할 것인지를 판단하는 블럭이다. 'soundOffButton'을 클릭하면 'soundOffValue'가 10으로 설정된 것을 기억하자. 이것이 설정되어야 음성을 제거할 수가 있다.


'afterSpeaking' 블럭은 'soundOffValue'가 10이 들어오면 음성출력을 중지한다(1~5 이외의 Vlaue가 들어오면 중지). 'Screen2.Initialize'에는 스마트폰 초기 화면에 성경 장절과 성구를 표시하는 블럭이 포함되어 있다.


위의 프로그램은 필자가 '부부행복학교 성구암송'이란 타이틀로 구글 플레이 스토어에 출시한 앱의 일부분이다.  여기서는 성경을 암송하는 방식으로 설명했지만 허니비 암송법은 공부하는 학생이나 어떤것을 암기해야 하는 직장인에게도 꼭 필요한 기술이다. 다음에는 허니비 암송법을 실생활에서 사용할 수 있도록 사용자가 직접 암송하고 싶은 문장을 입력해서 사용하는 프로그램을 설명해 보도록 하겠다. 


*글자를 계속 반복해서 읽어주는 루틴을 어떻게 코딩하는지 질문하시는 분이 계셔서 간단히 설명드리겠습니다.

글자를 반복해서 읽어주는 방법은 2가지 방법을 생각할 수 있습니다. 첫째는 위의 그림과 같이 타이머를 이용해서 타이머 안에 읽기 블럭을 넣어 주는 방법과 또 한가지는 무식하게 make a list 속에 반복하기 원하는 글자를 계속 반복해서 넣어 주는 방식이 있습니다. 두번째 방식도 반복되는 형식을 블럭을 이용해서 우아하게 코딩할 수도 있지만 제일 좋은 방식은 역시나 타이머를 이용하는 방법입니다. 위의 보라색 타이머를 보시면 조인 블럭을 이용해 2번 반복하는 루틴을 만들었습니다. 더 많은 반복을 원하시면 원하는 만큼 조인블럭안에 리스트를 추가하면 됩니다. 여기서 주의할 점은 블럭안에 타이머의 중지를 명령하는 코드를 추가해 주어야 한다는 것입니다. 중지코드가 없다면 타이머의 인터블에 따라 해당 시간만큼만 소리가 나오고 또 처음으로 돌아가서 처음부터 음성을 출력하는 상황이 됩니다. 위와 같이 타이머의 중지 명령이 있으면 speak 블럭을 실행한 다음 중지가 되기 때문에 원하는 만큼만 소리를 반복해 줄 수 있습니다. 이때 타이머의 인터블은 500정도가 좋습니다. 시작 버튼을 누르면 0.5초 후 부터 소리가 나오기 시작해  원하는 횟수만큼 소리를 반복해 줍니다. 이런 기능이 필요하신 분은 위의 코드를 참고하셔서 직접 프로그램을 작성해 보신 후 시험해 보시기 바랍니다. 해 보시고 또 질문이 있으시면 댓글이나 메일 남겨주시기 바랍니다.






반응형
그리드형