스칼라 개발 환경에 대해서 소개할께요
View: 48
0
0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2025-06-01
수정
2025-06-01
오늘은 스칼라 언어를 사용하는 다양한 개발 환경에 대해 소개해 보려고 합니다.
- REPL (Read - Eval - Print Loop)
스칼라를 설치하면 터미널에서 사용할 수 있는 인터랙티브한 실행환경이에요. 대화형 셸이죠. 파이썬에서도 자주 사용하는 기능이라 많은 분들이 익숙하실 거에요. 간단한 계산, 함수 테스트, 코드 실험 등 다양한 용도로 활용됩니다. 이 툴도 계속 개선이 되면서 기능도 다양해지고 사용하기에 많이 편해진것 같아요. 저는 업무에 활용하고 있는데 계산기 용도로 쓰기도 하고 자주 사용하는 수식 등을 함수로 만들어서 라이브러리 파일에 넣어두고 실행시 포함시켜서 사용하고 있어요. 간단한 작업이나 스칼라 공부를 할 때 주로 사용합니다.
- Scala-cli
스칼라를 쉽게 실행하고 관리할 수 있는 커맨드라인 도구에요. 싱글 모듈 기반의 간단한 프로젝트를 진행하거나 스크립트를 실행할 때 사용합니다. Scala-cli의 역할은 스크립트에 의존성을 추가하고, 스칼라 버전을 명시하고, JVM 옵션을 설정하는 기능을 제공해요. 커맨드라인 명령어로 프로젝트 빌드 시 여러 옵션들을 제공하고 있구요. 스크립트 작성할 때 파일 상단에 간단한 코드로 빌드 환경을 구성할 수 있어서 대부분의 작업들을 스크립트 만으로 구현 할 수 있게 되었어요. 객체지향의 형식을 따를 필요가 없어서 object나 class를 만들 필요없이 절차형으로 코드를 작성할 수 있어요. 특별하게 앱이나 웹을 개발하지 않는 이상 일반적인 작업에 스크립트를 많이 사용하잖아요. 파이썬으로 머신러닝 코드를 작성할 때도 그렇구요. 그래서 저도 간단하게 코드를 작성할 필요가 있을 때는 스크립트를 작성하고 scala-cli로 실행을 시켜요. 업무 자동화에도 좋아요. 복잡한 설정 없이 파일 상단에 //> using 지시문으로 환경을 정의할 수 있어서, 간단한 자동화 작업이나 학습용 코드 실행에 특히 유용해요.
- sbt (Scala build tool)
Scala와 Java 프로젝트를 위한 표준 빌드 도구에요. 대규모 프로젝트 관리에 적합하고, 의존성 관리, 컴파일, 테스트, 패키징 등을 체계적으로 할 수 있어요. 대부분의 스칼라 프로젝트에서 sbt를 채용해서 사용하고 있어요. 프로젝트의 기본 디렉토리 구조를 제공하고, build.sbt와 몇 개 파일에서 빌드 환경설정을 해요. 컴파일, 실행, 테스트, 패키징 등의 기능을 제공하고 있어요. sbt 설정 시 사용하는 코드가 DSL 형태를 가지고 있어서 처음에는 어렵고 낯설게 느껴질 수 있어요. 그렇지만 기본 기능이 자바의 빌드 툴인 Maven과 크게 다르지 않아요. 그리고 대체로 대부분의 프로젝트 형식에 템플릿을 제공하고 있고 설정 항목도 유사해서 최소한의 필요한 기능들은 조금만 공부하면 알수 있을거에요. 기본 문법은 스칼라를 따르고 있구요. 스칼라로 뭔가를 만들어야겠다고 생각하면 스크립트가 아닌 이상 기본적으로 sbt를 고려하고 있어요.
- Mill
Scala를 위한 경량 빌드 도구에요. 설정 파일이 Scala 코드로 작성되고 구조가 직관적이며 빠른 빌드를 제공하는 것이 특징이에요. Mill은 설정이 복잡하고 초기 빌드가 느리다는 sbt에 대한 불만을 해결하기 위해 만들어졌어요. 그래서 build .sc 파일에 스칼라 언어로 빌드 설정을 해요. 일반 스칼라 코드를 사용하기 때문에 쉽게 작성이 가능하고 디버깅이 용이하죠. 사실 sbt는 설정에 사용하는 코드를 이상하게 만들어놔서 이해하기가 어려워요. 새로운 언어를 공부하는 느낌이죠. Mill은 스칼라 언어로 작성할 수 있으니 얼마나 좋아요. 설정 코드의 재활용도 가능하죠. 게다가 디렉토리 구조를 단순화하고 속도도 빨라졌어요. 개발자에게 시간은 소중하잖아요. 한가지 아쉬운 점은 생태계가 sbt보다 작고 sbt에서 지원하는 일부 플러그인이 없어요. 그래서 뭔가 새로운 프로젝트를 진행할 때 참고할 설정 파일을 찾기가 쉽지 않아요. 다행인건 지금은 AI 시대라서 이제는 AI에게 작성해달라고 하면 되겠네요. 저도 Mill을 사용해볼까 하다가 참고 자료 찾기가 어려워서 미뤄뒀는데 다음 프로젝트는 Mill을 써봐야겠어요.
- 이밖에도
Jupyter notebook에 almond 커널을 설치하면 Jupyter에서 Scala를 포팅해서 사용할 수 있어요. 데이터 분석 및 시각화에 유용하죠.
Jupyter notebook과 비슷한 도구로 Apache Zeppelin이 있어요. Web 기반 notebook이죠. Apache Spark와 통합해서 빅데이터 분석에 특화되어 있어요.
Scala는 다양한 환경에서 유연하게 사용할 수 있는 언어에요. 작업의 성격에 따라 도구를 적절히 선택하면 생산성과 효율이 크게 향상되죠.
궁금한 점은 AI 도구나 공식 문서를 통해 쉽게 찾아볼 수 있는 시대인 만큼, 부담 각지 말고 다양한 환경을 시도해 보세요!
There is no article.
