SlideShare une entreprise Scribd logo
1  sur  39
Hanjp Input Method
한글로 하는 일본어 타이핑
목차
1. 개요
2. 기본 지식
3. 알고리즘
4. 컨트리뷰션
5. 과제
개요
• 한글로 일본어 히라가나, 가타카나, 한자 입력
• 한국인 사용자의 빠른 적응
• 높은 생산성
개요
• JIS 배열 키보드
개요
• 입력 방식은 크게 kana와 romaji입력이 있다.
• Kana는 kana를 글쇠에 1대1 대응
• Romaji입력은 발음을 로마자로 입력한 것을 실시간으로 변환
개요(uim-anthy)
• 입력 메소드와 출력 형식
개요(uim-anthy)
• 입력 메소드
1. 로마자 입력
2. KANA
3. AZIK
4. ACT
5. KZIK
• 출력 형식
1. 직접 입력
2. 히라가나
3. 가타카나
4. 반각 가타카나
5. 반각 영수
6. 전각 영수
개요(uim-anthy)
• Uim이 제공하는 라이브러리를 기반으로 한글 입력 메소드를 만
든다.
• sudo apt-get install uim-hanjp같은 방식으로 설치 후 이용
기본 지식
1. 컴퓨터 키 입력
2. 문자 인코딩
3. 폰트
4. Uim입력기의 문자 변환
기본 지식(컴퓨터 키 입력)
• 키보드에는 메모리가 있어서 키보드의 메모리 주소가 RAM주소
와 mapping된다.
• 키보드를 치면 글쇠 값들이 메모리에 버퍼링 된다.
• 입력기가 키 바인딩을 한다.
• 입력기에 사전화된 키 조합이 들어오면 적절한 인코딩 값으로
바꿔준다.
기본 지식(컴퓨터 키 입력)
• 키 코드 확인: https://www.w3.org/2002/09/tests/keys.html
기본 지식(문자 인코딩)
• 문자에 대해서 값을 코드화 한 방법
• A = 64, B = 65 …..
기본 지식(문자 인코딩)
• ISO 646
-ASCII
• 일본어
-Shift JIS
-EUC-JP
-ISO-2022-JP
• 한국어
-KS X 1001
-EUC-KR
-ISO-2002-KR
• 유니코드(UTF-8)
https://ko.wikipedia.org/wiki/%EB%AC%B8%EC%9E%90_
%EC%9D%B8%EC%BD%94%EB%94%A9
기본 지식(리눅스 파일 인코딩)
• 내 PC의 인코딩 확인
-echo $LANG
• 사용 가능한 인코딩 확인
-locale –a
기본 지식(리눅스 파일 인코딩)
• 파일 인코딩 확인
-file –bi 파일명
• 파일 인코딩 변환
-iconv –c –f utf-8 –t ‘인코딩’ ‘원본’ > ‘수정본’
기본 지식(리눅스 파일 인코딩)
기본 지식(리눅스 파일 인코딩)
• 영어
-1byte(양수)
• 한글
-3byte(음수)
• 히라가나
-3byte(음수)
• 가타카나
-3byte(음수)
기본 지식(폰트)
• 애플리케이션이 요청하는 폰트가 시스템에 없을 때는 문자가
깨짐
• /usr/share/fonts확인
기본 지식(UIM)
• 쉬운 입력 메소드를 개발하기 위한 라이브러리이다.
• 키 조합을 사전화 시키면 UIM엔진이 알아서 문자로 바꾸어준다.
• 포터블 하다
• Client/server방식이 아니다.
기본 지식(UIM)
• uim/scm/byeoru.scm
기본 지식(UIM)
• uim/scm/anthy.scm
기본 지식(UIM)
• uim/doc/00INDEX
알고리즘
• 여러게의 키 조합으로 하나의 글자를 만듬
• 아 = あ, 와 = わ
• 중성과 종성을 제한한다.
알고리즘(오십음도)
알고리즘(오십음도)
ㅏ ㅣ ㅡ/ㅜ ㅐ/ㅔ ㅗ
ㅇ あ [a] ぁ [a] い [i] ぃ [i] う [u] ぅ [u] え [e] ぇ [e] お [o] ぉ [o]
ㅋ か [ka] き[ki] く [ku] け [ke] こ [ko]
ㄱ が [ga] ぎ [gi] ぐ [gu] げ [ge] ご [go]
ㅅ さ [sa] し [si] す [su] せ [se] そ [so]
ㅈ ざ [za] じ [zi] ず [zu] ぜ [ze] ぞ [zo]
ㅌ/ㅊ た [ta] ち [chi] つ [tsu] て [te] と [to]
ㄷ だ [da] ぢ [di] づ [du] で [de] ど [do]
촉 っ
ㄴ な [na] に [ni] ぬ [nu] ね [ne] の [no]
ㅎ は [ha] ひ [hi] ふ [hu] へ [he] ほ [ho]
ㅂ ば [ba] び [bi] ぶ [bu] べ [be] ぼ [bo]
ㅃ ぱ [pa] ぴ [pi] ぷ [pu] ぺ [pe] ぽ [po]
ㅁ ま[ma] み [mi] む [mu] め [me] も [mo]
야 や [ya] ゃ [lya] ゆ [yu] ゅ [lyu] よ [yo] ょ [lyo]
ㄹ ら [ra] り [ri] る [ru] れ [re] ろ [ro]
와 わ [wa] ゎ [lwa] を [wo]
ん
알고리즘(발음 ん)
• ん은 한글의 받침역할을 하는 발음으로 뒤의 음에 영향을 받음
• 뒤에 さ(사), ざ(자), た(타), だ(다), な(나), ら(라)행이 오면 ‘ㄴ’으
로 발음
-せんせい(센세-), でんし(덴시), てんし(텐시)
• ん은 뒤에 ま(마), ば(바), ぱ(파)행이 오면 ‘ㅁ’으로 발음
-さんま(삼마), しんぱい(심빠이), じんぶつ(진부츠)
• ん으로 끝나거나 あ(아), は(하), や(야), を(오)로 끝나는 경우
‘ㅇ’과 ‘ㄴ’ 중간 으로 발음
-ほん(홍), でんわ(뎅와), れんあい(렝아이)
알고리즘(촉음 っ)
• 한글의 받침 역할을 한다.
• か(카)행 앞에서는 ‘ㄱ’으로 발음한다.
-いっき(익끼), いっかい(익카이)
• さ(사)행 앞에서는 ‘ㅅ’으로 발음한다.
-いっさい(잇사이), ざっし(잣시)
• た(타)행 앞에서는 ‘ㄷ, ㅌ’으로 발음한다.
-きって(킫테), ぜったい(젣타이)
• ぱ(파)행 앞에서는 ‘ㅂ’으로 발음한다.
-いっぱい(입빠이)
알고리즘(한글 문자 조합)
• 자음 + 모음 + 자음
-괌, 값
• 위 순서를 벗어나는 순간 문자가 완성됨
-가ㅏ, 기.
알고리즘(가나 문자 조합)
• 초성은 자유롭게 하되 중성, 종성은 제한한다.
• 중성으로 올 수 있는 음
-ㅏ, ㅑ, ㅣ, ㅜ, ㅠ, ㅡ, ㅔ, ㅗ, ㅛ
• 종성으로 올 수 있는 음
-ㄱ, ㄴ, ㄷ, ㅁ, ㅂ, ㅅ, ㅇ
• 다른 음이 오면 문자를 완성시킨다.
알고리즘(Tie braker)
• 다음 음을 보지 않는다.
• だ、ぢ、づ、で、ど는 다, 디, 두, 데, 도로 한다.
• ち、つ는 치(찌), 츠(쯔, 쓰)로 한다.
컨트리뷰션
• Git으로 페키지 관리
• Github로 페키지 관리
컨트리뷰션(Git)
• https://github.com/uim/uim/wiki/DevelopUim
• 저장소 복제
-git clone https://github.com/uim/uim.git
• 사용자 설정
-git config --global user.name <your name>
-git config --global user.email <your email address>
컨트리뷰션(Git)
• https://opentutorials.org/course/2708
과제
• uim, uim-byeoru, uim-anthy 설치해 한글, 일본어 타이핑 환경
경험
-sudo apt-get install uim uim-byeoru uim-anthy
• uim이 어떻게 페키징 되어있는지(apt공부)
• 사전화 시키는 방법
• 유닛 테스트
• 약간의 gtk프로그래밍
• Client/Server vs. Library
과제(cont.)
• 입력기를 uim으로 바꾸고 uim-toobar-gtk를 시작 프로그램에
추가
과제(Cont.)
• uim-pref-gtk에서 단축키 설정
과제
• apt-get source uim-byeoru
과제
• uim, uim-byeoru, uim-anthy 설치해 한글, 일본어 타이핑 환경
경험
-sudo apt-get install uim uim-byeoru uim-anthy
• uim이 어떻게 페키징 되어있는지(apt공부)
• 사전화 시키는 방법
• 유닛 테스트
• 약간의 gtk프로그래밍
• Client/Server vs. Library
감사합니다.
• 김광연: hemool123@naver.com
• 한영빈: sukso96100@gmail.com

Contenu connexe

En vedette

En vedette (10)

Snaps on Ubuntu Desktop
Snaps on Ubuntu DesktopSnaps on Ubuntu Desktop
Snaps on Ubuntu Desktop
 
How and why we have integrated Slack and IRC
How and why we have integrated Slack and IRCHow and why we have integrated Slack and IRC
How and why we have integrated Slack and IRC
 
게임해킹의 관심을 끄는데 미연시만한게 없죠
게임해킹의 관심을 끄는데 미연시만한게 없죠게임해킹의 관심을 끄는데 미연시만한게 없죠
게임해킹의 관심을 끄는데 미연시만한게 없죠
 
How to manage Azure with open source
How to manage Azure with open sourceHow to manage Azure with open source
How to manage Azure with open source
 
LTE-M 을 이용한 IoT 통신
LTE-M 을 이용한 IoT 통신LTE-M 을 이용한 IoT 통신
LTE-M 을 이용한 IoT 통신
 
개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX
개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX
개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX
 
FPGA 개발하면서 겪은 삽질에 대한 총 정리
FPGA 개발하면서 겪은 삽질에 대한 총 정리FPGA 개발하면서 겪은 삽질에 대한 총 정리
FPGA 개발하면서 겪은 삽질에 대한 총 정리
 
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
 
Pratik
PratikPratik
Pratik
 
synthetic aperture radar
synthetic aperture radarsynthetic aperture radar
synthetic aperture radar
 

Plus de Ubuntu Korea Community

Plus de Ubuntu Korea Community (20)

권총 사격하러 우분투 써밋 참가한 썰.txt
 권총 사격하러 우분투 써밋 참가한 썰.txt  권총 사격하러 우분투 써밋 참가한 썰.txt
권총 사격하러 우분투 써밋 참가한 썰.txt
 
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
 
우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리
 
우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회
 
Ubuntu Korea at FOSSASIA Summit 2022
Ubuntu Korea at FOSSASIA Summit 2022Ubuntu Korea at FOSSASIA Summit 2022
Ubuntu Korea at FOSSASIA Summit 2022
 
Overview of the Flatpak
Overview of the FlatpakOverview of the Flatpak
Overview of the Flatpak
 
Usage of the MQTT
Usage of the MQTTUsage of the MQTT
Usage of the MQTT
 
Open Source and the License
Open Source and the LicenseOpen Source and the License
Open Source and the License
 
Memory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesMemory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack Techniques
 
Python을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationPython을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop Application
 
나의 우분투 이야기
나의 우분투 이야기나의 우분투 이야기
나의 우분투 이야기
 
Malware Dataset & Ubuntu
Malware Dataset & UbuntuMalware Dataset & Ubuntu
Malware Dataset & Ubuntu
 
케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티
 
우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고
 
새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조
 
스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기
 
기계들의 소셜 미디어, MQTT
기계들의 소셜 미디어, MQTT기계들의 소셜 미디어, MQTT
기계들의 소셜 미디어, MQTT
 
모바일에 딥러닝 심기
모바일에 딥러닝 심기모바일에 딥러닝 심기
모바일에 딥러닝 심기
 

HanJP IM Project 개요