準備と最初の実行
目次 → 準備と最初の実行 → コードを書きながら学ぶ
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まで順に書いてみてください。