ℹ️ 소개
"내가 꿈꾸던 스포츠카를 찾을 수 없어서, 직접 만들었다." — 페르디난트 포르쉐
GeoChemistry Nexus는 제가 장기간 유지보수할 계획인 첫 번째 프로젝트입니다. 앞으로 최소 5년 이상 지속적으로 업데이트할 예정입니다.
흥미롭게도, 이 프로젝트는 처음에 Geo-Thermometer라는 이름이었습니다. 처음에는 지질 온도계와 관련된 기본 프로그램을 개발하여 계산과 그리기를 편리하게 하려는 것이었습니다. 그러나 프로젝트가 진행되면서, 특히 그리기 모듈이 완성된 후 더 큰 목표를 실현할 수 있다는 것을 깨달았습니다. 그래서 프로젝트는 개념과 기능 모두 확장되어 Geo-Thermometer에서 GeoChemistry Nexus로 발전했습니다.
GeoChemistry Nexus가 필요한 이유
지구화학 및 암석학 연구에서 성도 작성과 계산은 종종 서로 다른 도구에 분산되어 있습니다. 데이터 정리는 스프레드시트 소프트웨어, 베이스맵 그리기는 범용 벡터 도구, 온압계 계산은 별도의 스크립트나 오래된 프로그램을 사용해야 합니다. 워크플로가 단절되고 형식이 통일되지 않으며 재현 비용이 높은 것은 많은 연구자들이 일상적으로 겪는 마찰입니다.
한편, 많이 사용되는 판별 도해, 온압계 및 관련 계산 도구는 장기간 지속적인 업데이트가 부족합니다. 새로 발표된 알고리즘과 고전 모델의 개정이 제때 반영되기 어려워, 연구자들은 종종 수년간 정체된 구버전을 계속 사용할 수밖에 없습니다. 더 현실적인 문제는, 연구자가 새로운 알고리즘이나 도해를 직접 개발한 후 편리하고 개방적인 배포 채널이 부족하여, 성과가 논문 부록, 개인 스크립트 또는 소규모 공유에 머물고 동일 분야에서 빠르게 보급되고 재사용되기 어렵다는 점입니다.

또한 연구 과정에서 CorelDRAW로 지질도 베이스맵의 형태를 대략적으로 그리는 등 엄밀하지 않은 관행도 보았습니다. 시각적으로는 큰 차이가 없을 수 있지만, 과학 연구의 관점에서 이러한 방식은 엄밀한 과학 정신에 어긋납니다.
그래서 **왜 직접 도구를 개발하지 않을까?**라는 생각을 했습니다.
대량의 지질 및 지구화학 차트 템플릿을 통합하고, 다양한 지질 온도계/압력계 계산을 지원하며, 지구화학 계산과 현재 유행하는 머신러닝 기능까지 확장할 수 있는 도구. 기존 템플릿이 없다면 시각적 그리기 도구를 제공하여 생성과 공유를 용이하게 합니다. 현대적인 인터페이스 디자인과 다국어 지원을 더하여, 연구자가 하나의 소프트웨어에서 대부분의 과학 그림 작성과 계산의 기본 작업을 완료할 수 있도록 합니다.
GeoChemistry Nexus는 이 워크플로를 한곳으로 모으고자 합니다. 시료 데이터 가져오기, 전처리 및 보정, 판별 도해 그리기, 지온계 계산 및 CIPW 표준 광물 계산, PNG / SVG 등 형식 내보내기까지 가능한 한 동일한 인터페이스에서 완료합니다. 동시에 클라우드 템플릿 생태계와 커뮤니티 협업 메커니즘을 통해 도해와 알고리즘이 지속적으로 개선되고 더 많은 연구자에게 빠르게 전달되도록 합니다.
최초의 개발 아이디어
우연히 C#과 Python 등 프로그래밍 언어에 익숙하고 데스크톱 소프트웨어 개발 기술을 갖추고 있었습니다. 2024년 12월에 Demo 개발을 시작했습니다. 초기 기술 선정 단계에서 **어떤 언어와 아키텍처가 이 목표를 가장 잘 실현할 수 있을까?**를 진지하게 고민했습니다.
첫 번째 생각은 Python이었습니다. 빠른 프로토타이핑이 가능하여 개발자에게는 좋은 소식이었습니다. 그러나 사용자 관점에서는 치명적인 단점이 있었습니다. 첫째, 실행 효율이 낮습니다(데이터량이 적을 때는 영향이 크지 않지만 여전히 성능 차이가 있습니다). 둘째, 설치 패키지가 매우 큽니다. WPF로 처음 작성한 간단한 프로그램을 Python으로 리팩터링한 적이 있는데, 완전히 새로운 가상 환경에서 패키징해도 결과물이 수백 MB였고, .NET으로 패키징한 프로그램은 수십 MB에 불과했습니다. 차이가 큽니다. 간단한 기능을 위해 수백 MB 또는 GB의 설치와 복잡한 구성을 사용자에게 강요하는 것은 최선의 선택이 아닙니다.
그다음 Web 개발을 고려했습니다. 장점은 분명합니다. 설치 없이 바로 사용할 수 있습니다. 그러나 문제는, 한편으로 Web 기술에 대한 이해가 충분하지 않았고, 다른 한편으로 서버의 장기적인 높은 비용이 개인 유지보수 능력을 초과했습니다. 그래서 최종적으로 클라이언트 개발로 다시 초점을 맞췄습니다.

클라이언트 개발에는 많은 기술 방안이 있지만, C++ 기반 QT보다 .NET에 더 익숙했습니다. .NET의 높은 실행 효율과 Windows의 보급률을 고려하여, 최종적으로 .NET을 주요 개발 플랫폼으로 선택했습니다. 처음에는 Avalonia를 사용하여 Windows, Linux, MacOS에 대한 크로스 플랫폼 지원을 구현하는 것도 고려했지만, 개발 과정에서 일부 프로젝트 의존성이 Avalonia와 호환되지 않아 마이그레이션 비용이 매우 높다는 것을 발견했습니다. 개인의 힘으로는 초기 단계에서 이러한 모듈을 리팩터링하기 어렵습니다. 따라서 적어도 현 단계에서는 Windows 플랫폼에 집중하고 있으며, 크로스 플랫폼 버전은 향후 언젠가 구현될 수 있습니다.
연락처
소프트웨어 개발에 관심이 있고 협력하고 싶으시거나, 제안과 피드백, 차트 템플릿, 알고리즘 지원, 심지어 비즈니스 협력을 원하신다면 maxwelllei@qq.com 으로 언제든지 연락해 주세요.
소프트웨어 사용 중 부족한 점이나 문제를 발견하시면 언제든지 피드백을 제공해 주세요. 소프트웨어 기능이 점점 늘어나고 복잡해지면서 테스트가 모든 상황을 커버하기 어려워 누락이나 부정확한 부분이 있을 수 있습니다. 최선을 다해 수정하고 최적화하여 더 안정적이고 신뢰할 수 있는 사용자 경험을 제공하겠습니다.
