Skip to main content

Creando un Proyecto Básico en Swift

⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.


Swift es un lenguaje de programación creado por Apple con el objetivo de ofrecer una alternativa moderna, segura y veloz a Objective-C. Aunque su adopción se dio inicialmente en el desarrollo de aplicaciones iOS y macOS, Swift ha demostrado ser un lenguaje versátil y multiplataforma: hoy se utiliza también para crear herramientas de línea de comandos, scripts, bibliotecas compartidas e incluso servicios web, tanto en macOS como en Linux y Windows.

Una de sus grandes fortalezas es el Swift Package Manager (SwiftPM), la herramienta oficial para organizar proyectos modulares, compilar código y gestionar dependencias, sin requerir entornos gráficos como Xcode.

En esta lección aprenderás a:

  • Instalar Swift y verificar su disponibilidad en tu sistema.
  • Crear un nuevo proyecto ejecutable con SwiftPM desde la terminal.
  • Comprender la estructura de archivos generada por defecto.
  • Editar el punto de entrada del programa (main.swift) y compilarlo con swift run.

El objetivo es que puedas iniciar cualquier proyecto Swift desde cero, con una estructura sólida y portable, sin depender de herramientas externas. Este conocimiento será especialmente útil si vienes de otros entornos como Kotlin con Gradle, ya que muchas de las ideas —como los módulos, los targets o la compilación desde terminal— se presentan de forma similar pero con convenciones propias de Swift.

🦅 Paso 0: Instalar Swift

Swift es un lenguaje de programación moderno, seguro y de alto rendimiento desarrollado por Apple. Fue diseñado inicialmente para reemplazar a Objective-C en el desarrollo de aplicaciones iOS y macOS, pero su uso no se limita a esas plataformas: también es utilizado para crear herramientas de línea de comandos, servidores web, scripts y bibliotecas reutilizables —incluso en Linux y Windows.

Una de sus principales fortalezas es su compatibilidad con el Swift Package Manager (SwiftPM), que permite gestionar dependencias y organizar proyectos modulares de forma integrada.

Antes de poder compilar y gestionar proyectos en Swift, necesitas instalar el compilador y SwiftPM.

A continuación te mostramos cómo instalar Swift en los sistemas operativos más comunes:

scoop install swift

✅ Verificar la instalación

Una vez instalado, puedes confirmar que Swift esté correctamente disponible ejecutando:

swift --version
Salida esperada (puede variar)
Swift version 6.0.3 (swift-6.0.3-RELEASE)
Target: x86_64-unknown-linux-gnu

📁 Paso 1: Crear el directorio e inicializar el proyecto

Antes de comenzar a desarrollar tu biblioteca o aplicación en Swift, es importante contar con una estructura de proyecto bien organizada. Swift proporciona una herramienta oficial de construcción y empaquetado llamada Swift Package Manager (SwiftPM), que permite crear y administrar proyectos de forma coherente y portable, sin depender de entornos gráficos como Xcode.

A continuación, te mostramos cómo crear un nuevo proyecto básico de Swift desde la terminal en diferentes sistemas operativos:

En PowerShell
'EchoAppSwift' | ForEach-Object {
$project = $_
New-Item -ItemType Directory -Path $project -Force | Out-Null
Set-Location $project
swift package init --type executable
}
¿Qué acabamos de hacer?

Este bloque de PowerShell automatiza la creación e inicialización de un nuevo proyecto Swift desde cero:

  • 'EchoAppSwift' | ForEach-Object { ... }: Usa una única fuente (EchoAppSwift) para que el nombre del proyecto no se repita dentro del bloque.
  • New-Item -ItemType Directory -Force: Crea la carpeta del proyecto, sin errores si ya existe.
  • Out-Null: Suprime la salida del comando anterior.
  • Set-Location: Entra al nuevo directorio.
  • swift package init --type executable: Inicializa el proyecto con una plantilla básica para ejecutables.

El resultado es un proyecto Swift listo para compilar y ejecutar desde la terminal.

¡Atención!

Si omites la opción --type executable al crear el proyecto, Swift generará una biblioteca en lugar de una aplicación ejecutable.
En ese caso, el comando swift run fallará con un mensaje como:

error: no executable product available

Para evitar este problema, asegúrate de incluir --type executable al usar swift package init.

Convención de nombres

Swift sigue una convención de nombres muy clara para proyectos y módulos: se prefiere PascalCase, es decir, palabras unidas con mayúscula inicial.

Por ejemplo:

EchoAppSwift → forma recomendada
echo-app-swift → forma desaconsejada (estilo más común en sistemas de archivos o en otros lenguajes como JavaScript)

Adoptar PascalCase mejora la coherencia con las herramientas del ecosistema y evita problemas al generar carpetas y targets automáticamente con SwiftPM.

🗂️ Estructura generada del proyecto

Cuando ejecutas swift package init --type executable, SwiftPM genera automáticamente la siguiente estructura básica:

Explicación de la estructura
  • Package.swift: Archivo central de configuración del proyecto SwiftPM. Declara los módulos (targets), sus dependencias y los productos que se exponen.
  • .gitignore: Archivo que indica a Git qué archivos o carpetas deben ignorarse (por ejemplo, archivos de compilación o entornos temporales).
  • Sources/: Carpeta que contiene el código fuente del ejecutable principal.
    • main.swift: Punto de entrada del programa, similar a main() en Kotlin. Aquí comienza la ejecución del ejecutable.

Esta estructura es mínima, pero funcional. SwiftPM puede expandirse fácilmente para incluir bibliotecas, pruebas y múltiples módulos conforme evolucione tu proyecto.

📦 Archivo de configuración del proyecto

Cuando creas un proyecto con swift package init, SwiftPM genera un archivo llamado Package.swift. Este archivo es el corazón del proyecto: define su nombre, sus módulos (llamados targets), sus productos y dependencias externas si las hay.

Aquí tienes un ejemplo mínimo generado automáticamente para un proyecto ejecutable:

Archivo de configuración inicial (Package.swift)
// swift-tools-version: 6.1
import PackageDescription

let package = Package(
name: "EchoAppSwift",
targets: [
.executableTarget(
name: "EchoAppSwift"
)
]
)
¿Qué acabamos de hacer?

Este archivo declara la configuración del proyecto SwiftPM:

  • // swift-tools-version: 6.1: Indica la versión mínima del Swift Package Manager necesaria para interpretar este archivo. Debe estar en la primera línea.
  • import PackageDescription: Importa la biblioteca necesaria para construir la descripción del paquete.
  • name: "EchoAppSwift": Define el nombre del paquete (y del proyecto). SwiftPM usará este nombre como base para el ejecutable y los módulos generados.
  • targets: Especifica los componentes que se compilarán dentro del paquete. En este caso, hay un único módulo:
    • .executableTarget(name: "EchoAppSwift"): Declara un target ejecutable llamado EchoAppSwift. SwiftPM buscará su código en Sources/EchoAppSwift/.

Aunque este ejemplo no tiene aún dependencias ni productos explícitos, es suficiente para compilar y ejecutar un programa simple.

🌪️ Paso 2: Modificar y ejecutar el Hello, World

Al crear el proyecto, Swift genera automáticamente un archivo llamado main.swift dentro del directorio Sources/. Este archivo contiene una función principal simple que imprime el mensaje "Hello, world!".

Vamos a editarlo para que imprima un mensaje memorable inspirado en Uzumaki de Junji Ito.

Punto de entrada del ejecutable (Sources/main.swift)
print("Spirals.... this town is contaminated with spirals.")

Aquí tienes algunas sugerencias de título para ese bloque, dependiendo del enfoque que quieras destacar:

▶️ Ejecutar el proyecto

Una vez que hayas modificado el archivo main.swift, puedes compilar y ejecutar el proyecto con:

swift run
Salida esperada (puede variar)
Building for debugging...
[8/8] Linking EchoAppSwift
Build of product 'EchoAppSwift' complete! (5.10s)
Spirals.... this town is contaminated with spirals.
¿Qué acabamos de hacer?

El comando swift run realiza dos pasos clave:

  1. Compila el proyecto automáticamente si no ha sido compilado antes, o si detecta cambios recientes.
  2. Ejecuta el binario generado de inmediato.

Esto lo convierte en una herramienta ideal para ciclos rápidos de desarrollo, ya que evita tener que compilar (swift build) y buscar el ejecutable manualmente.
También garantiza que siempre se esté ejecutando la versión más actualizada del proyecto.

🎯 Conclusiones

En esta lección aprendimos a instalar Swift en distintos sistemas operativos, crear un proyecto desde cero usando Swift Package Manager (SwiftPM), comprender su estructura base, y ejecutar un programa sencillo desde la línea de comandos.

Aunque el programa resultante es minimalista, los conceptos y herramientas que utilizamos representan el punto de partida para cualquier proyecto profesional en Swift —ya sea una biblioteca, un ejecutable o una aplicación multiplataforma.

Dominar la estructura de Package.swift y entender cómo se organizan los módulos es clave para escalar de forma ordenada y mantener una base de código limpia y sostenible.

🔑 Puntos clave

  • Swift es un lenguaje moderno, seguro y multiplataforma, con una sintaxis expresiva y un enfoque fuerte en la seguridad y el rendimiento.
  • Swift Package Manager (SwiftPM) permite crear proyectos modulares sin depender de Xcode, lo que lo hace ideal para entornos multiplataforma o de línea de comandos.
  • El comando swift package init --type executable crea una estructura básica funcional para comenzar rápidamente.
  • El archivo Package.swift es el centro de configuración de todo proyecto SwiftPM: allí se declaran los módulos, productos y dependencias.
  • La convención de nombres en PascalCase no es solo estilística, sino que garantiza compatibilidad con las herramientas del ecosistema.
  • swift run compila y ejecuta el proyecto en un solo paso, ideal para desarrollo iterativo.

🧰 ¿Qué nos llevamos?

Esta lección sienta las bases para trabajar de forma profesional con Swift en cualquier contexto: desde pequeños scripts hasta aplicaciones modulares de gran escala.

A partir de aquí, podrás:

  • Añadir nuevos módulos al proyecto.
  • Separar tu código en bibliotecas reutilizables.
  • Escribir pruebas unitarias.
  • Preparar tus paquetes para distribución o publicación.

Además, lo aprendido en esta lección no solo es útil para usar Swift como lenguaje, sino también para entender cómo organizar y estructurar cualquier proyecto modular de forma clara y escalable.

📖 Referencias

🔥 Recomendadas

  • 📰 Crea tu primera Swift app de línea de comandos y ejecútala en tu terminal en SwiftBeta: Un tutorial completo que muestra cómo crear una command line tool en Swift con swift package init, realizar peticiones HTTP, y automatizar tareas con Shortcuts.app. Es útil para complementar esta lección porque lleva los conceptos vistos —como el uso de SwiftPM y la estructura básica del proyecto— a un caso más avanzado y práctico.

🔹 Adicionales

  • 🎥 How to Make a Swift Command Line Tool - Swift CLI in Terminal de Paul Solt: Un video introductorio que guía paso a paso la creación de un CLI en Swift usando SwiftPM. Explica cómo estructurar el proyecto, compilar desde terminal, añadir dependencias como Swift Argument Parser, y ejecutar el binario desde cualquier ubicación. Relevante para quienes desean profundizar en el desarrollo de herramientas de terminal y comprender mejor el archivo Package.swift.