====== 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/freemikan((実際のユーザー名に置き換えてください))/code/tutorials/odin__というディレクトリ以下にこのチュートリアルのコードを格納していくことにしたとします。今回のHello Worldプログラムはそのディレクトリの下に__hello-world__という名前で作成することにします。そして、先のソースコードはhello-worldプロジェクトのmain関数となるソースコードなので、__hello.odin__よりも__main.odin__とした方が適切です。したがって、完全なパスは__/home/freemikan((実際のユーザー名に置き換えてください))/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
状況に応じて使い分けてください。