FileMaker Magazin Award 2026 수상작: FM-Lab
요약
FileMaker Magazin Award 2026 수상작인 FM-Lab은 FileMaker 솔루션의 XML 구조를 DuckDB 카탈로그로 변환합니다. 이를 통해 모든 객체와 의존성을 포함하는 메모리상의 디지털 트윈을 구축하여, 대규모 심층 분석 및 AI 지원 개발에 활용할 수 있습니다. 이 아키텍처는 기존의 독점 형식 문제를 해결하고, 솔루션 구조를 프로그램적으로 쿼리 가능하게 만듭니다.
핵심 포인트
- FileMaker XML을 DuckDB 카탈로그로 변환하여 디지털 트윈 구축
- 대규모 심층 분석 및 AI 기반 개발에 활용 가능한 아키텍처 제공
- 솔루션의 객체와 의존성을 프로그램적으로 쿼리 가능하게 함
- 오픈 소스이며 확장성을 고려한 모듈식 설계가 특징
🏆
FileMaker Magazin Award 2026 — Best FileMaker Tool 수상작
신뢰할 수 있는 FileMaker 개발은 인간과 AI 에이전트 모두에게 FileMaker 원칙과 현재 솔루션의 구조에 대한 공유된 이해에서 시작됩니다.
FM-Lab은 **FileMaker SaXML 내보내기(exports)**를 쿼리 가능한 DuckDB 카탈로그로 변환하여 이러한 기반을 제공합니다. 이는 FileMaker 솔루션의 XML 구조를 모든 객체 유형과 그 의존성을 포함하는 빠르고 메모리상의 디지털 트윈으로 변환하며, 대규모 심층 교차 참조 분석, 문서화 및 AI 지원 개발에 활용할 수 있습니다.
⚡ 빠른 시작(QUICKSTART) — 클론에서 카탈로그까지 단 하나의 명령어로.
“FM-Lab을 사용한 에이전트 기반 분석은 메타데이터를 검색하는 느낌보다는 솔루션 구조를 모든 세부 사항까지 이해하고 있는 선임 개발자에게 질문하는 느낌에 가깝습니다.”
“DuckDB는 여기서 핵심적인 구현 요소입니다. 이 아키텍처에서 그 역할은 아무리 강조해도 지나치지 않습니다. 이는 코드 분석을 정적 파일들을 파헤치는 것에서 메모리 상의 솔루션 라이브 맵(live map)을 쿼리하는 것으로 바꿉니다.
이 RAM 가속형, 인프로세스 아키텍처는 디스크 기반 워크플로우의 부담을 제거하고 심층적인 카탈로그 및 그래프 분석을 실용적으로 만듭니다.”
“Katana-XML 엔진은 변환 속도에서 큰 도약을 제공하여 대규모 FileMaker 카탈로그를 빠른 반복 주기로 상호작용하며 분석할 수 있도록 합니다.”
FileMaker 개발은 새로운 패러다임에 직면해 있습니다: 솔루션 구조는 인간과 AI 에이전트 모두에게 읽고 이해 가능해야 합니다. 많은 주요 프로그래밍 환경들이 코드 분석, 문서화 및 리팩토링을 위한 잘 확립된 생태계를 가지고 있지만, FileMaker의 독점 형식은 이러한 생태계에 참여하기 어렵게 만듭니다. 즉, 솔루션 구조를 프로그램적으로 쿼리할 수 있는 네이티브 API가 없습니다.
여러 도구들이 이 격차를 메우려고 시도합니다. 일부는 인간 개발자 워크플로우에는 매우 잘 작동하지만, 대규모 에이전트 기반 분석이나 개방형 확장을 위해 설계되지 않은 경우가 많습니다. 대부분은 클로즈드 소스(closed source)이며, 이는 빠르게 진화하는 환경에서 적응성을 제한합니다.
이 프로젝트는 다른 접근 방식을 취합니다. FileMaker 솔루션의 구조를 SaXML로 내보내어 쿼리 가능한 DuckDB 데이터베이스로 변환하는 것입니다. 관련 객체 유형(스크립트, 필드, 레이아웃, 관계, 값 목록 등)은 전용 테이블에 저장되며, 솔루션 전체의 객체와 그 의존성을 연결하는 범용 카탈로그를 갖춥니다. DuckDB의 인프로세스 엔진은 이 카탈로그를 데이터베이스 서버 설정 없이도 대화형 쿼리와 대규모 AI 기반 분석 모두에 충분히 빠르게 만듭니다. REST API와 웹 클라이언트는 GUI 및 통합 워크플로우를 위한 추가 접근 계층을 제공합니다.
첫 번째 버전은 다음 핵심 기능에 중점을 둡니다: 신뢰할 수 있는 XML 변환, 포괄적인 객체 카탈로그, 그리고 오픈 소스이며 확장을 위해 설계된 모듈식 아키텍처입니다. 향후 버전들은 이 기반 위에서 구축될 것이며, 장기적인 목표는 FileMaker 영역을 위한 견고한 개발자 도구 플랫폼이 되는 것입니다.
추가 정보: Claris는 다가오는 릴리스를 위해 FileMaker에 에이전트형 코딩(agentic coding) 기능을 발표했습니다. 이는 이 프로젝트의 목표와 모순되지 않으며, 오히려 FileMaker 생태계에서 코드 분석 및 도구링을 위한 견고한 기반의 필요성을 강조합니다. fm-lab의 아키텍처는 유연하고 적응 가능하도록 설계되었기 때문에, Claris의 AI 코딩 기능이 발전함에 따라 통합될 수 있을 뿐만 아니라 오늘날 자신의 워크플로우에서 AI 도구를 활용하려는 개발자들에게도 가치를 제공할 수 있습니다.
FM-Lab은 FileMaker 솔루션을 분석하는 네 가지 보완적인 접근 방식을 지원합니다:
인터랙티브 탐색 (Interactive exploration) - 풍부한 내비게이션, 시각화 및 드릴다운 뷰를 갖춘 웹 프런트엔드를 통해 솔루션을 탐색합니다. 정적 코드 분석 (Static code analysis) - 목표 카탈로그 질의를 통해 알려진 패턴, 문제점 및 구조적 신호를 감지합니다. 그래프 기반 분석 (Graph-based analysis) - 그래프 알고리즘, 시각적 맵 및 LLM 지원 추론을 사용하여 객체 관계를 검사합니다. 에이전트 기반 분석 (Agent-based analysis) - AI 에이전트에게 지식 그래프, 메타데이터 및 문서화 컨텍스트에 대한 직접적이고 구조화된 접근 권한을 부여합니다.
XML 수집 파이프라인 (XML Ingestion Pipeline) — FileMaker XML 내보내기를 유연한 SQL 템플릿 시스템을 사용하여 DuckDB 데이터베이스로 변환하며, FileMaker의 진화에 따라 유지보수 및 업데이트가 용이하도록 설계되었습니다. ♻️ Katana-Engine — 최소 메모리 사용량과 최대 병렬성을으로 대규모 카탈로그를 처리하기 위한 XML 청킹 및 스트리밍 기능을 제공합니다. 🔪 상세 객체 카탈로그 (Detailed Object Catalog) — 관련 FileMaker 객체 유형에 대한 상세 테이블과, 객체와 그 종속성을 연결하여 빠른 교차 참조 질의가 가능한 범용 카탈로그를 결합했습니다. 🔗 상세 참조 카탈로그 (Detailed Reference Catalog) — 문서화된 FileMaker 스크립트 단계 및 함수에 대한 현지화된 참조 테이블을 제공하며, 최대 11개 로케일에서 린팅(linting) 및 인라인 도움말 기능을 가능하게 합니다. 📄 DuckDB 백엔드 (DuckDB Backend) — 서버 설정 없이 빠르고 유연한 질의를 위한 인프로세스 분석 데이터베이스 엔진으로, 대규모 솔루션에서도 종종 밀리초 단위로 결과를 제공합니다. 🚀 REST API — 분석 데이터베이스에 대한 HTTP 접근을 제공하는 Express 서버로, 외부 도구 및 서비스와의 통합을 가능하게 합니다. 🧩 웹 클라이언트 (Web Client) — 풍부한 시각화를 통해 솔루션 구조 및 종속성을 인터랙티브하게 탐색할 수 있는 React/Vite 프런트엔드입니다. 🔎 대시보드 시스템 (Dashboard System) — 사전 정의된 분석 패턴 라이브러리를 제공하며, 사용자 지정 질의 및 대시보드 지원 기능을 갖추고 있습니다. 📁 분석 테스트 (Analysis Tests) — 간결한 결과 모델을 가진 선별적이고 선언적인 검사 항목입니다: 정적 코드 분석 규칙, 오류 확인 및 두 축 플랫폼 테스트가 포함되며, 솔루션, 파일, 객체 또는 클러스터 단위로 실행 가능합니다. ✅ 다중 사용자 및 다중 세션 지원 (Multi-user & multi-session support) - 동시 사용자가 각각의 세션을 가집니다.
솔루션 🙌Graph Explorer— 솔루션 전체 객체 그래프를 대화형으로 탐색하며, 자동 커뮤니티 감지 기능을 통해 솔루션 전반에 걸쳐 명명된 클러스터를 드러내고 수천 개의 객체와 링크를 탐색 가능한 그래프 맵 🕸️로 변환합니다. Claude Skills— Claude Code에서 에이전트 기반 분석 워크플로우를 위한 슬래시 명령어이며, XML 변환 및 문서화 설정을 지원하는 도우미(helpers)가 포함되어 스크립팅된 분석을 넘어선 깊고 솔루션 인지적인 검사가 가능하게 합니다. 🤖Comprehensive Docs— FileMaker Pro와 MBS 플러그인 기능에 대한 설치가 쉬운 문서입니다. 📚Plugin System— 새로운 도구 및 통합 기능을 추가할 수 있는 개방형 아키텍처로, fmIDE를 일급 시민(first-class citizen)으로 제공하여 FileMaker의 스크립트 워크스페이스로 직접 탐색할 수 있게 합니다. 🛠️AI 코드 생성— AI 기반 코드 생성을 위해 구축된 아키텍처 및 데이터 모델: 모든 생성된 결과물은 객체 카탈로그의 신뢰할 수 있는 컨텍스트에 근거하며, 다단계 검증 파이프라인을 통해 통합된 기계 판독 가능한 FileMaker 구문 및 문법과 비교하여 검증됩니다. 🧠
SaveAsXML → Parser → DuckDB → REST API ←→ Tools
←→ UI
←→ AI Agent
FM-Lab이 FileMaker XML 내보내기를 구조화된 객체 카탈로그로 변환하고 이를 분석, 문서 조회 및 에이전트 워크플로우의 기반으로 사용하는 방법을 알아봅니다. 이 가이드에서는 스택의 계층 구조, 수집부터 상호 작용까지의 흐름, 그리고 왜 이 아키텍처가 단순한 텍스트 기반 RAG 접근 방식과 다른지를 설명합니다.
SQL Templates(ingestion/sql/)
— 범용 카탈로그를 위한 변환 템플릿 및 파서 템플릿입니다. REST API(rest-api/)
— 분석 데이터베이스에 대한 HTTP 접근을 위한 Express 서버입니다. Web Client(apps/web/)
— React/Vite 프론트엔드입니다. Solution Bundles(solutions/)
— 탐색할 하나의 또는 여러 개의 FileMaker 솔루션입니다. 각 솔루션은 자체 번들(bundle)에 존재합니다: solutions/<id>/ (XML 인박스, 데이터베이스, 상태); 기본값인 default가 즉시 존재합니다.XML (입력)(solutions/<id>/xml/)
) — 솔루션에서 추출된 FileMaker 객체와 그 관계를 포함하는 생성된 DuckDB 데이터베이스입니다.fm-spec(reference/fm_spec.duckdb
)
— FileMaker 스크립트 단계 및 함수에 대한 참조 테이블로, 린팅(linting)을 위한 질의 가능한 구문 및 문법 정의를 제공합니다.Docs(docs/
)
— FileMaker Pro 및 MBS 플러그인 기능에 대한 문서 파일로, 웹 프런트엔드 또는 Skills를 통해 설치할 수 있습니다.Tools(tools/
)
— 다양한 작업을 위한 유틸리티 스크립트입니다.Claude Skills(.claude/skills/
)— 설치, 변환, 조회, 분석 및 코드 생성을 위한 Claude Code skills와 슬래시 명령어를 포함합니다.Plugin registry(.fmlab/
)— FM-Lab 플러그인의 레지스트리 및 환경 설정을 담고 있습니다.
사용자 기기에서 필요한 유일한 전제 조건은 Docker입니다. 여기에는 DuckDB, Node.js 및 PATH 설정이 컨테이너 내부에 모두 포함되어 있습니다.
git clone https://github.com/marcel-more/fm-lab.git
cd fm-lab
bash tools/fmlab.sh up # 두 가지 질문에 답한 후 시작합니다
fmlab.sh up은 **“Docker 사용?”**과 **“Claude Code 에이전트와 함께 시작할까요?”**라는 질문을 하고, 스택을 백그라운드에서 올린 다음 제품(브라우저의 웹 클라이언트 또는 터미널의 라이브 Claude Code 세션)으로 바로 진입하게 합니다. 그런 다음 FileMaker XML 내보내기를 solutions/default/xml/에 넣고
(FileMaker Pro ▸ 도구 ▸ XML로 복사본 저장 — “분석 도구를 위한 상세 정보 포함” 활성화; 솔루션 파일당 하나의 파일)
후 웹 클라이언트에서 XML 변환을 클릭합니다. 완료입니다. 객체 카탈로그, 의존성 및 그래프 탐색기(Graph Explorer)를 살펴보세요.
FM-Lab을 실행하는 방법은 세 가지 방식이 있습니다. 이들은 복제된 저장소에서 동일한 카탈로그와 설정을 공유하므로 자유롭게 전환할 수 있습니다 (예: 나중에 에이전트를 추가해도 아무것도 손실되지 않습니다).
셸에서 실행하는 경우(Docker 사용 여부와 관계없이), 래퍼가 단일 진입점 역할을 합니다. 이 래퍼는 두 가지 질문을 한 후 올바른 작업을 수행합니다. 숨기는 것이 없습니다. 실행되는 모든 docker compose … 명령어는 먼저 출력됩니다.
# Docker를 사용하시겠습니까? [Y/n]
→ 예 = Docker 시작 (방식 a)
→ 아니요 = 호스트의 네이티브 설정 (방식 c)
...
플래그를 사용하여 프롬프트를 건너뛰세요: --docker / --native, --claude / --no-claude, -d (백그라운드 전용). bash tools/fmlab.sh down은 스택을 중지하고, … logs는 로그를 추적하며, … agent는 Claude를 실행 중인 스택에 재연결합니다.
“Docker 사용하시겠습니까?”에 예라고 답하거나, 원시 명령어를 실행하세요:
docker compose up
이미지에는 모든 필수 전제 조건이 테스트된 버전(DuckDB CLI + 웹 기반 확장 프로그램 + Node/npm + Leiden 클러스터링 엔진)으로 고정되어 포함되며, 호스트는 Docker만 필요합니다. 두 서버가 모두 시작됩니다:
웹 클라이언트→ http://localhost:5173
REST API→ http://localhost:3003
카탈로그(db/), 변환 및 설정은 클론된 저장소 에 호스트에 존재하므로 재시작에도 살아남습니다. 업데이트는 간단한 git pull로 가능합니다 (저장소가 이미지 내부에 포함되는 것이 아니라 마운트되기 때문입니다). 이는 Windows 경로에서도 마찬가지입니다. 전체 POSIX 계층이 Linux 내부에서 실행되므로 호스트 OS가 더 이상 중요하지 않습니다.
VS Code에서 Dev Containers 확장 프로그램을 설치한 후 저장소를 열고, **“컨테이너에서 다시 열기(Reopen in Container)”**를 선택하고 fm-lab 또는 **.**을 선택하세요. 모든 것이 자동으로 시작됩니다 — 부트스트랩, 두 서버, 그리고 브라우저가 웹 클라이언트를 엽니다. Claude 변형의 경우 시작 시 나가는 방화벽과 자격 증명 사전 점검(preflight)이 실행되며, fm-lab + Claude Code라는 Claude Code for VS Code 확장 프로그램을 통해 에이전트에 접근할 수 있습니다 — 터미널 단계가 필요 없습니다. 이미 VS Code를 사용하고 있다면 권장됩니다.
Docker 없이 호스트에 설치하려면 “Docker 사용하시겠습니까?”에 아니요라고 답하거나, 바로 다음 명령어를 실행하세요:
bash tools/fmlab.sh up --native # tools/init.sh로 전달됨
init.sh
사전 요구 사항을 확인하고, 종속성을 설치하며, 환경에 시드(seed)를 공급하고, 서버를 시작하며, solutions/default/xml/에 이미 있는 모든 XML 파일을 변환합니다.
Windows: 네이티브 Windows는 지원되지 않습니다. 대신 Docker Desktop과 WSL2 백엔드를 사용하여 a) 또는 b) 방식으로 사용하고, 클론된 리포지토리를 WSL2 배포판 내부 (예: ~/projects/…)에 유지하십시오. Windows 드라이브 (/mnt/c/…)가 아닌 곳이어야 합니다. /mnt/c에 있는 리포는 느린 바인드 마운트와 파일 감시자(inotify) 문제를 겪습니다.
Claude 변형은 동일한 도구 위에 Claude Code CLI를 추가하며, duckdb-skills 플러그인이 번들링되고 영속적인 로그인을 제공합니다. bash tools/fmlab.sh up --claude 또는 Dev Container “+ Claude Code” 변형, 또는 다음의 원시 오버레이로 시작하십시오:
docker compose -f docker-compose.yml -f docker-compose.claude.yml up
docker compose exec -it api claude # 한 번 로그인; 이후 로그인은 유지됩니다
최초 실행 시 **“Claude 계정 구독”**을 선택하고 브라우저에 한 번 로그인하여 완료하십시오. 이 정보는 이름이 지정된 볼륨에 저장되므로 재시작에도 살아남습니다.
에이전트 스택은 또한 선택적 아웃바운드 방화벽(Dev Container에서 자동으로 제한된 허용 목록 적용)을 제공합니다.
자세한 설명은 설치(Installation)를 참조하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기