Elmagyarázzuk, mi az Atomic Design — Brad Frost által 2013-ban javasolt interfésztervezési módszertan, amely az atomok, molekulák és organizmusok metaforáját kölcsönzi a UI-komponensek hierarchiájának felépítéséhez. Ellentétben az oldal-alapú megközelítéssel, ahol a felület képernyőnként kerül kialakításra, az Atomic Design a UI-t a legkisebb újrafelhasználható elemekre (atomokra) bontja, és azokból épít összetettebb struktúrákat. Brad Frost (2016) szerint a módszertant a nagyvállalatok 67%-ának tervezési rendszerei használják, beleértve az IBM-et, az Airbnb-t és a Google-t.
Főbb pontok
Atomic Design — hierarchikus felületrendszerek létrehozásának módszertana, amelyben minden UI-elem az öt szint egyikéhez tartozik: atomok (alapelemek), molekulák (atomok kombinációi), organizmusok (összetett blokkok), sablonok (oldalvázak) és oldalak (konkrét adatokkal rendelkező képernyők). Az analógia a kémiából származik: az atomok molekulákká, a molekulák organizmusokká, az organizmusok sablonokká egyesülnek, a sablonok tartalommal töltődnek fel és oldalakká válnak.
A módszertant Brad Frost webtervező javasolta 2013-ban, válaszul az "oldal-alapú gondolkodás" problémájára — amikor minden új képernyőt a semmiből terveznek, figyelmen kívül hagyva a meglévő komponenseket. Az "Atomic Design" (2016) című könyvében Frost leírja a módszertan bevezetését nagyvállalati projektekben: IBM, GE, Starbucks. A Nielsen Norman Group (2022) szerint az Atomic Design 30–50%-kal csökkenti az új képernyők tervezési idejét a kész komponensek újrafelhasználásának köszönhetően.
Az Atomic Design — nem annyira technológia, mint inkább a UI-szervezés filozófiája. Nem kötődik egy adott keretrendszerhez, és alkalmazható mind a weben (React, Vue), mind a mobilfejlesztésben (Jetpack Compose, SwiftUI). Az IT Sectr-nél az Atomic Design-t használjuk az ügyfelek tervezési rendszereinek felépítéséhez: az atomi komponenseket a tervezési szakaszban azonosítjuk, és átültetjük őket Compose/SwiftUI kódkomponensekbe.
Az Atomic Design minden szintje megoldja a saját feladatát, és szigorú felelősségi körrel rendelkezik. Atomok — a felület legkisebb építőkövei, amelyek nem bonthatók tovább jelentésvesztés nélkül: gomb, szövegmező, ikon, címke, jelölőnégyzet. Az atomok nem tartalmaznak üzleti logikát, és nem függnek a kontextustól. Meghatározzák az alapvető vizuális jellemzőket: szín, méret, margók, tipográfia.
Molekulák — két vagy több atom kombinációi, amelyek egyszerű funkcionális egységeket alkotnak. A beviteli mező címkével és hibaüzenettel — molekula. A termékkártya képpel, névvel és árral — molekula. A molekulák tartalmazhatnak alapvető logikát (hiba megjelenítése/elrejtése), de nem tartalmaznak üzleti folyamatokat. A molekulák az első szint, ahol a komponensek újrafelhasználhatóvá válnak a különböző képernyők között.
Organizmusok — összetett felületi blokkok, amelyek molekulákból és atomokból állnak, és az alkalmazás egy konkrét funkcióját valósítják meg. A bejelentkezési űrlap (e-mail mező, jelszó mező, küldés gomb, "elfelejtett jelszó" link) — organizmus. A fejléc logóval, kereséssel és navigációval — organizmus. Az organizmusok tartalmazhatnak üzleti logikát és hozzáférhetnek az API-hoz, de csak a saját funkciójuk keretein belül.
Sablonok — oldalvázak, amelyek meghatározzák az organizmusok elhelyezkedését a képernyőn konkrét tartalom nélkül. A sablon meghatározza a rácsot, oszlopokat, tartalomzónákat — wireframe kód szinten. A sablonok nem tartalmaznak adatokat, csak helykitöltőket. Lehetővé teszik az oldal szerkezetének értékelését a tartalommal való feltöltés előtt.
Oldalak — az alkalmazás konkrét képernyői, ahol a sablon valós adatokkal van feltöltve. Ezen a szinten ellenőrzik, hogy a komponensek hogyan néznek ki valódi tartalommal (hosszú sorok, adatok hiánya, hibák). Az oldalak az egyetlen szint, amelyet a végfelhasználó lát. Az oldalak szintjén végzett változtatások nem érinthetik az atomokat, molekulákat és organizmusokat — ha egy komponenst módosítani kell, a változtatást annak szintjén kell elvégezni, és az oldal automatikusan átveszi azt.
Előnyei az Atomic Design-nak a felületek skálázásakor mutatkoznak meg. Az egységes komponenskönyvtár vizuális konzisztenciát garantál: a gomb minden képernyőn ugyanúgy néz ki, mert ugyanaz az atom. Brad Frost (2016) szerint az Atomic Design-t bevezető vállalatok 30–50%-kal csökkentik az új képernyők fejlesztési idejét a kész molekulák és organizmusok újrafelhasználásának köszönhetően.
| Jellemző | Atomic Design | Oldal-alapú megközelítés |
|---|---|---|
| Komponensek újrafelhasználása | Magas (atomok, molekulák, organizmusok) | Alacsony (minden képernyő a semmiből) |
| Vizuális konzisztencia | Garantált | Kézi ellenőrzés |
| Új képernyő létrehozásának sebessége | Magas (összeszerelés kész blokkokból) | Alacsony (tervezés + kódolás a semmiből) |
| Bevezetés összetettsége | Magas (komponenskatalógus szükséges) | Alacsony (ismert modell) |
| Tesztelhetőség | Magas (minden atom elkülönített) | Integrációs (teljes képernyő egyszerre) |
Korlátai — az Atomic Design nem írja le, hogyan kell kezelni az alkalmazás állapotát. A módszertan csak arra a kérdésre válaszol, hogy "hogyan szervezzük a UI-komponenseket", de nem érinti az üzleti logikát, az útválasztást vagy az adatkezelést. Második korlát — a határok meghatározásának nehézsége: hol végződik a molekula és hol kezdődik az organizmus? A gyakorlatban a határok elmosódottak, és különböző csapatok eltérően osztályozhatják ugyanazt a komponenst. Javasolt a szabályok rögzítése a tervezési tokenekben és a komponenskatalógusban (Storybook, Jetpack Compose Preview).
Harmadik korlát — túlzott absztrakció kis projektek esetén. Ha az alkalmazás 5 képernyőből áll, az atomok és molekulák hierarchiájának létrehozása felesleges munka. Az Atomic Design akkor válik előnyössé, ha a képernyők száma meghaladja a 20-at, és a komponensek több oldalon is újrafelhasználásra kerülnek.
Atomic Design és Feature-Sliced Design (FSD) különböző feladatokat oldanak meg, és együtt is használhatók. Az Atomic Design a UI-komponensek szervezésének módszertana, az FSD — az üzleti rétegek és a teljes alkalmazás szervezésének módszertana. Az Atomic Design arra a kérdésre válaszol, hogy "hogyan osszuk fel a UI-t újrafelhasználható részekre", az FSD — "hogyan szervezzük a kódot az üzleti funkciók köré". Nem versenyeznek: lehet FSD-struktúrája features és entities rétegekkel, és minden rétegen belül használni az Atomic Design-t a UI-komponensek szervezésére.
| Kritérium | Atomic Design | Feature-Sliced Design |
|---|---|---|
| Terület | UI-komponensek | Alkalmazásarchitektúra |
| Csoportosítási egység | Kémiai metafora (atom → molekula → organizmus) | Üzleti funkció (szelet) |
| Függőségek | Atomoktól az oldalakig (alulról felfelé) | App-tól a shared-ig (felülről lefelé) |
| Adatkezelés | Nincs leírva | Model + api szegmenseken keresztül |
| Skálázás | Vízszintes (több komponens) | Függőleges (több funkció) |
Tipikus kombináció: az FSD meghatározza az alkalmazás moduláris szerkezetét (rétegek, szeletek), az Atomic Design — a UI-komponensek belső szerkezetét az egyes szeleteken belül. Például a feature.auth szelet molekulákat (LoginForm, PasswordInput) és organizmusokat (AuthPage) tartalmaz, amelyek az Atomic Design szabályai szerint épülnek fel. A shared réteg atomokat (Button, Input, Label) tartalmaz, amelyek minden funkcióban újrafelhasználhatók.
A Jetpack Compose és a SwiftUI természetes módon támogatja az Atomic Design hierarchiát a komponenskompozíción keresztül. Atomok a Compose-ban — alapvető @Composable függvények: AppButton, AppTextField, AppCheckbox. Minden függvény testreszabási paramétereket fogad (szín, méret, állapot), és nem tartalmaz üzleti logikát. Az atomok a shared rétegben vannak meghatározva és UI-kitként exportálva.
Molekulák — @Composable függvények, amelyek több atomot kombinálnak: LabeledTextField (címke + beviteli mező + hibaüzenet), ProductCard (kép + név + ár). A molekulák tartalmazhatnak alapvető állapotot (mező érvényessége), de nem férnek hozzá az API-hoz vagy a ViewModel-hez. Különböző organizmusokban használhatók újra.
Organizmusok — @Composable függvények funkció szinten: LoginForm (LabeledTextField e-mailhez + LabeledTextField jelszóhoz + AppButton küldés + helyreállítási link). Az organizmusok Intent függvényeken keresztül dolgoznak a ViewModel-lel, és tartalmazhatnak üzleti logikát. A SwiftUI-ban hasonló hierarchia építhető @ViewBuilder és egyedi View struktúrák segítségével.
A SwiftUI-ban az atom — egyedi View struktúra AppButton, a molekula — beviteli mező címkével HStack-ben, az organizmus — bejelentkezési űrlap. Ez a struktúra lehetővé teszi a komponensek újrafelhasználását minden képernyőn — egy atom módosítása (gomb színe) automatikusan alkalmazódik az összes képernyőre. Az Atomic Design és a tervezési rendszer kombinációja garantálja a felület konzisztenciáját minden képernyő kézi ellenőrzése nélkül.
Gyakran Ismételt Kérdések
Az öt szint ajánlás, nem törvény. Sok tervezési rendszer (Material Design, IBM Carbon) 3 vagy 4 szintet használ: alapkomponensek, összetett komponensek és sablonok. Fő szabály — minden komponens egy szinthez tartozik, és a következő szinteken újrafelhasználható. Ha úgy látja, hogy a "molekula" és "organizmus" szintek a projektjében nem különböznek — vonja össze őket. Az atomok és az oldalak az egyetlen kötelező szintek.
Az atomokat vizuálisan tesztelik (SnapShot tesztek, Compose Preview) — ellenőrzik, hogy a megadott tulajdonságokkal rendelkező gomb helyesen jelenik-e meg. A molekulákat atomok kombinációjaként tesztelik — ellenőrzik az állapotot (hiba, siker, letiltva). Az organizmusok integrációs teszteket igényelnek — ellenőrzik a ViewModel-lel való interakciót (űrlap elküldése, adatok betöltése). Az IT Sectr-nél Compose Test-et használunk Androidhoz és XCTest-et iOS-hez; vizuális teszteléshez — Paparazzi (Android) és SnapshotTesting (iOS).
Használható, de a hatékonyság csökken. Tervezési rendszer és tervezési tokenek nélkül az atomoknak nincs egységes stílusuk — minden fejlesztő saját atomokat hoz létre tetszőleges színekkel és margókkal, ami vizuális rendezetlenséghez vezet. Az Atomic Design és a tervezési rendszer — kiegészítő fogalmak: az Atomic Design meghatározza a hierarchiát, a tervezési rendszer — a vizuális nyelvet. Javasolt együtt bevezetni őket: először tervezési tokenek (színek, tipográfia, margók), aztán atomok, majd molekulák és organizmusok.
"Atomi zóna" — olyan helyzet, amikor az atomok száma meghaladja az ésszerű határt (100+), és a szükséges komponens megtalálása több időt vesz igénybe, mint a semmiből való megírása. Megoldás — atomok elhelyezése funkciók szerint: a csak egy funkció által használt atomot tároljuk a funkción belül, ne a shared-ben. A shared-be csak a globális atomok kerülnek (Button, Text, Input). Brad Frost szerint az atomok funkciók szerinti elhelyezése 60–70%-kal csökkenti a shared atomok számát az újrafelhasználhatóság elvesztése nélkül.
Az Atomic Design eredendően interfésztervezési módszertan (design), de a modern gyakorlatban kód szervezésére is használják (code). Tervezőeszközökben (Figma, Sketch) az atomok könyvtári komponensek; kódban — függvények és osztályok. A módszertan nem tesz különbséget design és code között — az atom ugyanaz a makettben és a megvalósításban. Az IT Sectr-nél a supernova.io-t használjuk a design atomok és kód atomok szinkronizálására, ami kiküszöböli a makett és a végleges felület közötti eltérést.
Összegzés
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is