Docsの目次

準備と最初の実行

目次 → 準備と最初の実行 → コードを書きながら学ぶ

Nagiをインストールし、短いプログラムを動かします。WindowsはPowerShell、Linux・macOSは端末アプリでコマンドを実行してください。

1. コンパイラを用意する

インストーラーはビルド済みのNagiを取得します。自分のアプリをnagic buildやnagic runでビルドするときは、別途Rust / CargoとCのビルド環境が必要です。導入済みなら、その環境を使えます。同梱SQLiteのCコードもアプリのビルド時にコンパイルします。

WindowsではRustのMSVC toolchainとVisual Studio Build ToolsのC++環境を使います。LinuxではCコンパイラを用意してください。WSL2もLinuxの手順です。macOSではxcode-select --installでCommand Line Toolsを用意します。macOS版はmacOS 15のCIで検証します。

インストーラーを使う

最新の公開版をGitHubから取得し、SHA-256を確認して、ユーザー用の場所にインストールします。WindowsはユーザーのPATHへ追加し、Linux/macOSはbash/zshの設定へPATHの1行を追記します。管理者権限は使いません。RustやCのビルド環境、VS Code拡張は別途用意してください。

& ([scriptblock]::Create((Invoke-RestMethod 'https://raw.githubusercontent.com/disnana/Nagi/main/scripts/install.ps1')))
(set -o pipefail; curl -fsSL https://raw.githubusercontent.com/disnana/Nagi/main/scripts/install.sh | bash) && export PATH="$HOME/.local/bin:$PATH"

Windowsの保存先は%LOCALAPPDATA%\Nagi\versionsで、PATHに登録する入口はその下のcurrentです。Linux/macOSの保存先は~/.local/share/nagi、コマンドは~/.local/bin/nagicです。更新時も入口の場所は変わりません。VS Codeを開いている場合は、インストール後に再起動してください。

nagic --version
nagic --help

版の表示はnagic 0.1.7です。nagic -Vとnagic versionでも確認できます。版とヘルプの表示にはRustやプロジェクト設定は必要ありません。

2. 自分で1ファイル書く

作業用のフォルダーにhello.nagiを作り、次のコードを保存してください。

def main():
    print("こんにちは、Nagi!")
    count = 3
    print(count * 2)

def main():が入口です。関数の中は空白4つで字下げします。printは1つの値を改行付きで表示します。

nagic run hello.nagi
こんにちは、Nagi!
6

count = 3の整数はi64型です。コードは.nagiファイルへ保存します。

ファイル名に空白がある場合は、nagic run "hello world.nagi"のようにパスを引用符で囲んでください。

3. 検査とビルドを使い分ける

コマンド 何をするか 使う場面
check hello.nagi Nagiの構文・型・所有権を検査 保存したコードの間違いを調べる
lower hello.nagi 検査してLowを出力 変換後のコードを読む
build hello.nagi Rust側の検査を含め、実行ファイルを生成 実行せずにビルドする
run hello.nagi ビルドして実行 書いたプログラムを試す

checkとlowerは現在どちらもHighの生成Lowを保存します。checkが成功しても、Rust側の型・借用などの検査でbuildが失敗する場合があります。

ビルド時のエラーは、対応する元のNagi・Lowファイル名、文や定義の行番号、その行のコードを先に表示します。import先や@replaceの手書きLowも対象です。続くRust backend detailsには生成Rust側の詳しい診断を残します。手書きRustや、元の位置を特定できないエラーはRustの診断を表示します。

nagic check hello.nagi
nagic build hello.nagi
.\native-target\release\nagi-hello.exe

標準の出力先は次のとおりです。

ファイル 内容
build/hello/generated.low Highから変換したLow
build/hello/src/main.rs 生成したRust(build / run時)
build/hello/Cargo.toml 生成したRustプロジェクト(build / run時)
native-target/release/nagi-hello.exe Windowsの実行ファイル
native-target/release/nagi-hello Linux・macOSの実行ファイル

build/<ソースのファイル名から拡張子を除いた名前>/に出力します。別の場所に生成する場合は--out build/my-helloを付けます。実行ファイルの出力先はNAGI_NATIVE_TARGET_DIRで変更できます。

コンパイルには配布されたruntime/も必要です。nagic.exeだけを別の場所にコピーした場合は、環境変数NAGI_ROOTにruntime/のある展開フォルダーを指定してください。生成したアプリexeの配布例はタスク管理デモにあります。

アプリが複数ファイルになったら、nagi.tomlとプロジェクトで入口やRust依存をまとめられます。設定のあるフォルダーでnagic runと実行でき、VS Codeも同じ入口を使います。

4. VS Codeで書く

Nagi拡張のインストール手順に従ってVSIXをインストールし、作業用のフォルダーを開きます。

.nagiを保存すると型検査が走り、エラーがProblemsに表示されます。右上の実行ボタン、またはコマンドパレットのNagiコマンドから実行・ビルドできます。変数名のホバーで型を確認でき、value.を入力するとclassのフィールドが候補に出ます。F12では関数・class・import先・ローカル変数の定義へ移動できます。一度保存したファイルの未保存の編集も対象です。VS Codeで型と補完を使うで試してください。

更新と他の導入方法

更新する

上のインストールコマンドを再実行します。実行した時点の最新公開版を確認し、ダウンロード・検証してからコマンドを切り替えます。mainの未リリース版やVSIXはインストールしません。既に最新版なら、同じ版を増やしません。

更新前にNagiのビルドを止めてください。切り替え後の起動確認に成功したら、旧版を配布時のアーカイブと照合して削除します。使用する1版だけ残し、ロールバック用の旧版は常設しません。追加・変更されたファイルは保護します。配布物の照合不能やWindowsで使用中のファイルなどで削除できない旧版も残し、フォルダーを表示します。更新に失敗した場合は、元のコマンドとPATHを維持します。

以前のnagi-v0.1.6/scripts/install.ps1などのURLは0.1.6固定です。更新にはこのページのmain/scripts/install.ps1を使ってください。Windowsの旧インストーラーが登録した版ごとのPATHも、固定のcurrentへ整理します。VS Codeのnagi.compilerPathに旧版の絶対パスを設定している場合はnagicへ変更し、VS Codeを再起動してください。

版を指定して入れる例です。過去の版を指定して戻す場合も、使う1版だけ残す方針は同じです。

& ([scriptblock]::Create((Invoke-RestMethod 'https://raw.githubusercontent.com/disnana/Nagi/main/scripts/install.ps1'))) -Version 0.1.7
(set -o pipefail; curl -fsSL https://raw.githubusercontent.com/disnana/Nagi/main/scripts/install.sh | bash -s -- --version 0.1.7) && export PATH="$HOME/.local/bin:$PATH"

保存先を変更していた場合は、再実行時も同じ-InstallDir(PowerShell)または--prefixと--bin-dir(bash)を指定します。-NoPath/--no-pathはPATHの永続設定を変更しません。その場合は固定の入口を自分でPATHへ登録してください。別の場所へ手動展開した配布物は自動削除の対象外です。

自分で展開する

GitHub Releasesから、使うOSのファイルを取得します。

使う環境 ダウンロードするファイル
Windows x64 nagi-0.1.7-windows-x86_64.zip
Linux x86_64 nagi-0.1.7-linux-x86_64.tar.gz
macOS Apple Silicon nagi-0.1.7-macos-arm64.tar.gz
macOS Intel nagi-0.1.7-macos-x86_64.tar.gz

アーカイブ全体を展開し、nagicまたはnagic.exeとruntime/の位置を保ってください。展開フォルダーそのものをPATHに追加すると、任意の場所でnagicを使えます。NAGI_ROOTは通常不要です。GitHubの「Source code」はコンパイラ入りの配布物ではありません。

ソースからビルドする場合

Gitでリポジトリを取得します。GitHubの「Code → Download ZIP」を使う場合も、展開先でcargo buildを実行できます。

git clone https://github.com/disnana/Nagi.git
cd Nagi
cargo build --release --locked -p nagic

この場合のコンパイラはtarget/release/nagic(Windowsではnagic.exe)です。target/releaseをPATHに追加するか、以降のnagicをその実行ファイルのパスに置き換えてください。

困ったとき

症状 確認すること
Cargoが見つかりません cargo --versionで確認する。Rust / Cargoが導入済みならPATHを確認し、ターミナルとVS Codeを開き直す
Cargoを起動できません 表示されたOSのエラーを確認する。Cargoの実行権限やファイルの状態に問題がないか
Cコンパイラやlinkerが見つからない WindowsのC++ビルド環境、LinuxのCコンパイラがあるか
nagic.exeが見つからない 配布フォルダーをPATHに追加し、ターミナルを開き直したか
NAGI_ROOTのruntime/Cargo.tomlが見つからない NAGI_ROOTにはruntime/のある展開フォルダーを指定する。通常の配布では設定を解除して自動探索を使う
VS Codeでspawn nagic.exe ENOENTやコンパイラ未検出の警告が出る VSIXにはコンパイラを含まない。Nagi本体をインストールし、VS Codeを再起動したあと「Nagi: 型検査」を実行する。別の場所にある場合はnagi.compilerPathにその実行ファイルを指定する
タブや字下げのエラー インデントを空白4つに統一する
Build failed / Rust backend rejected program 上の診断で原因を確認する。コードのエラーならNagi・Lowのファイル名と行を調べる。依存の取得失敗やビルド環境の問題なら、その診断に従う
Windowsでexeを更新できない そのアプリが実行中なら停止してから再ビルドする
サーバーが終了しない serveはリクエストを待ち続ける。ターミナルのCtrl+Cで終了する

次はコードを書きながら学ぶで、変数からAPIまで順に書いてみてください。

Nagi 0.1のドキュメントこのページのソース