カナデKanade

Hanaランタイムとは?

ハリとカナデをコンピューターで実行するHanaランタイムの紹介です。ブラウザではできないファイル、ソケット、HTTP、タイムゾーンを扱います。

Hanaは、カナデ(Kanade)とハリ(Hari)を自分のコンピューターで実行するプログラムです。このドキュメントの実行ボタンやプレイグラウンドはブラウザの中で動くエンジンなので、コンピューターのファイルやネットワークには触れませんが、Hanaはターミナルで実行するプログラムなので、そうしたこともできます。そのため、このドキュメントで「ブラウザでは使えません」と書かれている道具は、すべてHanaランタイムで実行するときに使うものです。

HanaはGoで作られていて、インタープリタ、バイトコードコンパイラとVM、コマンドラインツール、言語サーバーが1つの実行ファイルに入っています。ソースコードはgithub.com/soumt-r/hanaにあり、MITライセンスで公開されています。

できること

コマンド できること
hana run ファイル.knd カナデ(.knd)、ハリ(.hr)、コンパイル済みのバイトコード(.hn)を実行します
hana build ファイル.knd バイトコード(.hn)にコンパイルして保存します
hana pack ファイル.knd プログラムを1つの実行ファイルにまとめます。ほかのOS用も作れます
hana add パス 他の人が作ったパッケージをプロジェクトに追加します(install、remove、listもあります)
hana init フォルダ スタートファイルのある新しいプロジェクトを作ります
hana lsp エディターで補完やエラー表示をしてくれる言語サーバーを実行します

hana runは、標準ではより速いバイトコードコンパイラとVMで実行し、バイトコードが対応していない機能を使ったプログラムならツリーウォーク方式のインタープリタで実行します。--treeを付けるとツリーウォーク方式のインタープリタで、--bcを付けると切り替えずにバイトコードだけで実行します。2つの方式は同じ結果になるように作られています。

プログラムを作って配る

ドキュメント 内容
パッケージを使う・作る hana addで他の人のパッケージを使い、自分のパッケージを作ります
実行ファイルにまとめる hana packでプログラムを実行ファイル1つにします

ブラウザではできないことをする道具

道具 できること
ファイルを扱おう 【ファイル】モジュールでファイルとフォルダを読み書きします
ソケットで会話しよう 【ソケット】モジュールでネットワークを通して文字列をやり取りします
Webのアドレスから取ってこよう 【HTTP】モジュールでWebサーバーにリクエストを送ります
タイムゾーン timezoneパッケージで都市ごとに違う時刻を扱います

【数学】、【テキスト】、【パス】などのほかの標準モジュールは、ブラウザでもHanaでも同じように動きます。それらの道具は基本文法チュートリアルにあります。

信用できないスクリプトを動かすとき

Hanaは標準でファイルとネットワークへのアクセスを許可します。人からもらったスクリプトを動かすときは、--allow-file=falseでファイルアクセスを、--allow-net=falseでネットワークアクセスを止められます。詳しくはファイルを扱おうとソケットで会話しようの最後の節にあります。

エラーもヘルプも自分の言語で

Hanaが表示するヘルプとエラーの文言は、韓国語と日本語に対応しています。スクリプトが出したエラーはそのスクリプトの言語(ハリは韓国語、カナデは日本語)で表示され、コマンドラインのヘルプは--locale koか--locale ja、環境変数HANA_LANG、システムの言語の順に決まります。

プレイグラウンド
結果
コードを書いて「実行」ボタンを押してください。