Sky Archive

프로그래밍

[프로그래밍] 모달과 모달리스는 무엇이고 어떤 차이가 있을까? (Modal & Modeless)

Zero Line 2021. 7. 30. 11:27

모달과 모달리스는 무엇이고 어떤 차이가 있을까?

 

• 모달 (Modal)

모달은 대화상자(dialog)가 실행될 때 제어권을 독점하게 되어,

대화 상자가 종료되기 전까지는 기존 화면을 제어할 수 없는 방식을 뜻합니다.

예를 들어 JavaScript의 confirm과 alert이 이에 해당됩니다.

• 모달리스(Modeless)

흔히 모달리스 혹은 모드리스라고 부르며, 모달과 반대되는 개념으로 생각하면 쉽습니다.

모달리스는 대화 상자(dialog)가 실행되더라도 기존 화면을 제어할 수 있는 방식을 뜻합니다.

예를 들어 웹 사이트들의 알림 메시지 등으로 흔히 사용되는 토스트 메시지(Toast Message)를 생각하면 도움이 되실 것 같습니다.

 


번외. 모달과 모달리스의 작명에 대한 개인적인 궁금증

프로그래밍 용어들은 직관적인 단어를 사용하는 경우가 흔한데,

모달과 모달리스라는 단어는 좀처럼 실생활에서 쓰이지 않는 단어이기 때문에

단어만 듣고 무슨 의미인 지 파악이 되지 않았습니다.

 

그래서 모달과 모달리스의 작명 이유에 대해 궁금증이 생겼는데,

개인적인 생각으로는 모달 동사(Modal Verbs)에서 따온 네이밍이 아닐까 생각했습니다.


Modal
법조동사(가능성·허락·의도 등을 나타내는 can·may·will 같은 조동사)

 

반대의 개념인 Modeless는 사용자의 허락(확인, 종료) 등의 행위가 필요하지 않기 때문에

Modeless라는 네이밍을 하지 않았을까 라고 개인적으로 생각해봤습니다.

 

 

Modal의 작명 이유에 대해 검색 중에 타 블로그에서

Modal과 Modeless 작명 이유에 대한 질문에 대한 한 가지 답변을 해석한 내용이 있어 가져와봤습니다.

제 생각과는 다르게 Mode에서 따온 이름이라는 의견으로, 내용은 다음과 같았습니다.


With a modal dialog, you set your application in a particular mode (a different "state" if you will), whereby only actions pertaining to that "mode" are accepted, hence preventing UI actions outside of the dialog.

At Andreas' prompting I thought I may have to dig dusty Windows API books, as often, the etymology/origin of a word or expression that has became broadly accepted is only found in early documentation, but in fact we still see this referenced in an online glossary from MS. The Modal entry reads (emphasis is mine):
modal
Restrictive or limited interaction due to operating in a mode. Modal often describes a secondary window that restricts a user's interaction with the owner window. See also: modeless.

Modal에서는 새로운 뷰가 열렸을 때 기존의 뷰를 사용할 수 없습니다.
이 경우 뷰를 관리하는 앱 입장에서는 새로운 상태(곧, 모드)에 진입한 셈이고,
새로운 뷰로만 이벤트를 건네주고 이전 뷰로는 이벤트가 넘어가지 않습니다.

Modeless는 새로운 뷰가 열린다고 하여 새로운 모드에 진입하는 것은 아닙니다.
기존 뷰와 새로운 뷰 각각이 이벤트를 받을 수 있습니다.
그렇기에 별도의 모드가 없다고 하여 모달리스라 명명된 것입니다.

 

출처 : https://storycompiler.tistory.com/220

원글 : https://stackoverflow.com/questions/1607783/why-is-a-modal-modeless-dialog-called-modal-modeless

 

하지만 이 의견 또한 제 생각엔 완벽한 해답은 아닌 것 같았습니다.

원글에도 Modeless 방식으로 새로운 뷰를 연다고 해서 별도의 모드가 없다고 볼 수는 없는 것이란 의견이 있으며

 

이 의견 외에도 저처럼 언어학에서 유래했을 것이라는 답변도 있었기 때문입니다.

 

언젠가 최초 Modal의 이름을 명명한 개발자가 나타나서 제 궁금증을 속 시원하게 해결해주길 바라봅니다...😅