Shardsは、Crystalのパッケージマネージャであり、外部のCrystalライブラリや依存関係(これを「Shard」と呼びます)をプロジェクトに簡単に追加・管理するためのツールです。Shardsは、Rubyの「Bundler」やJavaScriptの「npm」と同様の役割を果たし、依存関係の宣言と管理、バージョンの整合性などを自動化します。

Shardsの基本機能

編集

Shardsには、以下のような基本機能があります。

  1. 依存関係の定義
    shard.ymlファイルで依存関係を記述し、プロジェクトで必要なShardをリストアップできます。このファイルには、各ShardのバージョンやGitリポジトリURLを指定します。
    name: my_project
    version: 0.1.0
    dependencies:
      kemal:
        github: kemalcr/kemal
        version: ~> 1.0
    
  2. 依存関係のインストール
    shards installコマンドを実行することで、shard.ymlで指定された依存関係がインストールされ、libディレクトリに格納されます。これにより、プロジェクト内でShardを簡単にインポートできます。
  3. 依存関係のアップデート
    shards updateコマンドを使用すると、依存関係を最新の互換バージョンに更新できます。
  4. バージョンの固定
    shard.lockファイルを利用し、プロジェクトの依存関係を特定のバージョンに固定します。これにより、同じ依存関係を再現性高くインストールできるようになります。

Shardsの利用手順

編集
  1. shard.ymlファイルの作成
    新しいCrystalプロジェクトを作成し、依存関係を追加したい場合、まずshard.ymlをプロジェクトルートに配置します。
  2. 依存関係のインストール
    依存関係をインストールするために、以下のコマンドを実行します。
    shards install
    
  3. Shardの追加
    新しい依存関係を追加する場合、shard.ymlに新しいShardを記載し、再度shards installを実行します。

Shardsのバージョン管理

編集

Shardsは、依存関係のバージョン指定に「Semantic Versioning」(セマンティックバージョニング)を採用しており、例えば ~> 1.0 と指定すると、1.x バージョンであれば互換性のある最新のものがインストールされます。これにより、必要なバージョンの範囲を柔軟に設定しつつ、互換性のないメジャーバージョンの変更を回避できます。

まとめ

編集

ShardsはCrystalの依存関係管理を簡単にし、プロジェクトの安定性と再現性を確保するための重要なツールです。