Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

プロジェクトの作成

💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。

Flix プロジェクトは、flix.toml マニフェスト、src 内の Flix ソースコード、test 内のテストを含むディレクトリです。

このようなプロジェクトは init コマンドで作成できます。このコマンドはデフォルトのプロジェクト構造を作成します:

.
├── .github
│   └── workflows
│       └── build-and-test.yaml
├── .gitignore
├── flix.toml
├── LICENSE.md
├── README.md
├── src
│   └── Main.flix
└── test
    └── TestMain.flix

4 directories, 7 files

実際に作業するファイルは flix.toml、src/Main.flix、test/TestMain.flix の 3 つです。残りは編集することを前提とした出発点で、プレースホルダーのテキストが入った README.md と LICENSE.md、.gitignore、そして GitHub Actions のワークフローです。

ヒント: init コマンドは、まだ存在しないファイルのみを作成します。すでにファイルがあるディレクトリで実行しても安全で、既存のプロジェクトに対して不足しているものを追加するためにも実行できます。

マニフェスト

マニフェストはプロジェクトを記述するものです。init が書き出すマニフェストは最小構成です:

[package]
version = "0.1.0"
flix    = "0.76.2"

# repository = "github:<owner>/hello-world"

version はプロジェクトのバージョンです。flix フィールドは、そのプロジェクトをビルドできる最も古い Flix のバージョンで、init は現在実行している Flix のバージョンを設定します。repository フィールドは、パッケージの公開 で説明するように、プロジェクトを公開する際の GitHub リポジトリを表しますが、init はこれをコメントアウトした状態にします。

マニフェストはプロジェクトの成長に合わせて拡張されます。他のパッケージに依存する場合は、依存関係の使用 で説明するように [dependencies] セクションを追加します。

注意: Flix では、バージョン番号は SemVer に従う必要があります。

注意: パッケージは、それが公開されるリポジトリによって名前が決まります。それ以外の要素は一切関係しません。

Flix がソースコードを探す場所

Flix は *.flix、src/**/*.flix、test/**/*.flix のパスからソースファイルを探索します。src と test の中のファイルは好きなように整理でき、Flix はどの深さにあっても見つけます。

生成される src/Main.flix にはプログラムのエントリーポイントが入っています:

// The main entry point.
def main(): Unit \ IO =
    println("Hello World!")

そして、生成される test/TestMain.flix には 1 つのテストが入っています:

@Test
def test01(): Unit \ Assert = Assert.assertEq(expected = 2, 1 + 1)

プロジェクトには resources ディレクトリを置くこともできます。Flix はその中身をコンパイルしませんが、アーティファクトのビルド で説明するように、ビルドする JAR ファイルにバンドルします。

コミットすべきもの

Flix は 3 つのディレクトリを生成します。build にはクラスファイルと生成されたドキュメントが、artifact にはビルドした JAR ファイルやパッケージファイルが、lib には Flix がダウンロードした依存関係が入ります。これらのディレクトリは通常バージョン管理に含めるべきではなく、生成される .gitignore はすでにこれらを除外しています:

*.fpkg
*.jar
.GITHUB_TOKEN
artifact/
build/
lib/
crash_report_*.txt

Flix は flix.toml の隣に packages.lock ファイルも書き出します。ロックファイルには、各依存関係がダウンロードされた時点でのバージョン情報が記録されており、.gitignore がこれを除外していない理由の通り、このファイルはコミットすべきものです。バージョンとアップグレード を参照してください。

警告: .GITHUB_TOKEN ファイルは、Flix が GitHub トークンを探す場所の 1 つです。コミットされたトークンは、そのリポジトリを読み取れる誰にでも使われてしまい、直ちに失効させる必要が生じるため、このファイルは除外されています。

プッシュのたびにチェックとテストを行う

生成される .github/workflows/build-and-test.yaml は、プッシュやプルリクエストのたびにプロジェクトをチェック・テストする GitHub Actions のワークフローです。flix.toml の flix フィールドから Flix のバージョンを読み取り、そのバージョンの Flix をダウンロードして、check に続けて test を実行します。