Hello World!

Odinのインストールが無事に終わってodinコマンドが使えるようになったところで、さっそくコードを書いて動かしてみることにします。最初のプログラムは予想される通り、伝統的なHello Worldです。テキストエディタを起動して次のコードを打ち込みます。

package main

import "core:fmt"

main :: proc() {
	fmt.println("Hello, world!")
}

main :: proc()という書き方は、あまり見慣れないものかもしれませんが、main関数を定義しているものだとなんとなく想像がつくのではないでしょうか。他は割と直感的なコードであるかと思います。

インデントのための空白文字はタブ文字にしています。標準ライブラリのソースコードを見るとタブ文字を使われているので、それに合わせることにしました。これはおそらくGoのスタイルを継承しているのではないかと思います。

Odinのソースコードの拡張子は.odinなので、ファイルの名前はhello.odin辺りが妥当かのように思えますが、留意すべきことが一つあります。

odinコマンドのビルドシステムは、ディレクトリ単位で一つのプログラムを構成するのが基本となっています。言い換えると、一つのディレクトリに複数のmain関数を含めることは、可能ではあるけどあまり良い考えとは言えないということです。そういうわけで、今後はプロジェクトごとに一つのディレクトリを作成することにします。

参考までに例を上げると、自分の場合はLinux環境なので、/home/freemikan1)/code/tutorials/odinというディレクトリ以下にこのチュートリアルのコードを格納していくことにしたとします。今回のHello Worldプログラムはそのディレクトリの下にhello-worldという名前で作成することにします。そして、先のソースコードはhello-worldプロジェクトのmain関数となるソースコードなので、hello.odinよりもmain.odinとした方が適切です。したがって、完全なパスは/home/freemikan2)/code/tutorials/odin/hello-world/main.odinとなります。これはあくまで例なので、好きなように色々試してから、一番しっくりくるやり方でやればよいかと思います。

このソースコードを上記の場所に保存したら、ディレクトリツリーは次のようになっています。

hello-world/
└── main.odin

ターミナルアプリケーションを起動して、hello-worldディレクトリに移動してから、odinコマンドを使ってビルドします。

$ cd path/to/hello-world
$ odin build .

ドット「.」を忘れないようにしてください。これはカレントディレクトリを起点にビルドすることを指示するものです。

エラーがなければhello-worldという名前の実行ファイルが生成されます。

hello-world/
├── hello-world
└── main.odin

この実行ファイルを実行すると、Hello, world!というテキストが表示されます。

$ ./hello-world
Hello, world!

これで確かにOdinの環境が整ったことが確認できました。

odinコマンドには、ビルドと実行を同時に行ってくれるrunというサブコマンドがあります。

$ odin run .
Hello, world!

多くの場合はこちらの方が便利です。

単一のファイルとしてビルド及び実行する方法もあります。

ビルド:

$ odin build main.odin -file

ビルドと実行:

$ odin run main.odin -file

状況に応じて使い分けてください。

1) , 2)
実際のユーザー名に置き換えてください