【ITニュース解説】Goose Hello World: print, Then Run It
2026年10月23日に「Dev.to」が公開したITニュース「Goose Hello World: print, Then Run It」について初心者にもわかりやすく解説しています。
ITニュース概要
Goose言語で「Hello World」プログラムを動かす手順を解説する。コンパイラのインストールから、fn mainとprint関数を使った簡単なコードの記述、それをコマンドで実行する方法までを説明。最終的に実行可能バイナリを作成する方法も具体的なステップで示す。
ITニュース解説
Gooseという新しいプログラミング言語が登場し、その基本的な使い方から実行までの手順が紹介されている。この言語は、シンプルさと手軽さが特徴で、プログラミング初心者でも比較的スムーズに学習を始められるように設計されているようだ。
Gooseでプログラムを開発するには、まず専用のコンパイラを準備する必要がある。コンパイラは、人間が書いたプログラムのコードをコンピュータが理解できる形式に変換するツールだ。Gooseコンパイラは、aardappel/gooseという場所からリリース版をダウンロードできる。ダウンロードしたディレクトリをシステムの環境変数PATHに設定することで、コマンドラインからgooseコマンドを実行できるようになる。このコンパイラは、標準ライブラリを自身の隣に配置することで動作する。現在、Windows x64、Linux x64、macOS(Apple siliconおよびIntel)向けのプリビルド版が提供されており、多くの環境で利用可能だ。ただし、Linuxの場合はglibc 2.35以降、macOSの場合はバージョン13.3以降のOSが必要となる点に注意が必要だ。
特にmacOS環境では、ダウンロードしたディレクトリを解凍した後、セキュリティ機能によってバイナリファイルの実行がブロックされることがある。この問題を回避するには、ターミナルでxattr -dr com.apple.quarantine /path/to/unpacked-gooseというコマンドを実行し、検疫設定を解除する必要がある。この作業を行わないと、コンパイラが起動しないため、gooseを使い始めることができない。また、システムに複数のgooseという名前のプログラムが存在する場合があるため、which gooseコマンドを実行して、正しくGooseコンパイラが参照されていることを確認することが重要だ。もしgoose --helpコマンドを実行した際に、LLMプロバイダ(大規模言語モデルの提供者)に関する情報が表示されるようであれば、それはGooseコンパイラとは別のプログラムなので、誤ってそちらが呼び出されないようPATHから一時的に外すか、名前を変更しておく必要がある。
さらに、Gooseで高度な機能を利用したり、実行可能なバイナリを生成したりするには、いくつかの追加ツールが必要になる場合がある。プログラムをコンパイラのプロセス内で直接実行する「インプロセス実行」では、libcのヘッダファイルが求められる。Linuxではlibc6-devまたはglibc-devel、macOSではXcodeコマンドラインツールをインストールすることでこれらのヘッダファイルが利用可能になる。また、goose buildコマンドを使って実行可能なプログラムを作成する際には、GCCやClangといったC言語のコンパイラも必要となる。これらはGooseが内部的にC言語のコードを生成し、それをコンパイルするために利用されるからだ。
開発環境が整ったら、いよいよGooseでプログラムを書いてみよう。まず、プログラムを保存するためのディレクトリを作成する。例えば、mkdir -p ~/src/goose-flisk && cd ~/src/goose-fliskというコマンドで、ホームディレクトリ配下にsrc/goose-fliskというディレクトリを作り、そこに移動できる。次に、そのディレクトリ内にhello.gooseという名前のファイルを作成し、以下の内容を記述する。
1fn main() { 2 print("hello, goose"); 3}
このコードはGooseにおける最も基本的なプログラムの一つだ。Gooseのすべてのプログラムは、fn main()という部分から実行が開始される。これはプログラムのエントリーポイントと呼ばれる。printは画面に文字を出力するための関数で、引数として渡された文字列「hello, goose」を画面に表示する。print関数は任意の数の引数を受け取り、それぞれの値を適切な形式で表示し、最後に改行して1行を完了する。特別なフォーマット文字列を指定する必要はなく、シンプルに記述できるのが特徴だ。
このhello.gooseプログラムを実行するには、コマンドラインでgoose hello.gooseと入力する。すると、期待通りに「hello, goose」という出力が表示されるはずだ。この実行方法では、Gooseコンパイラがプログラムを自身のプロセス内でTinyCCという軽量なCコンパイラを使ってコンパイルし、すぐに実行する。これは開発中にコードの変更を素早くテストしたい場合に非常に便利な方法だ。もしコードの型チェックだけを行いたい場合は、goose check hello.gooseコマンドを使用できる。これにより、文法や型に関するエラーがないかを確認できるが、プログラムは実行されない。
print関数は複数の引数を一度に処理できる。例えば、以下のようなコードを記述してみよう。
1fn main() { 2 print("hello, goose"); 3 print("answer=", 42, " ratio=", 0.75, " yes=", 3 > 2); 4}
この場合、最初のprint関数は「hello, goose」を出力する。次に、2番目のprint関数は「answer=」、「42」(整数)、スペース区切りの「ratio=」、「0.75」(浮動小数点数)、スペース区切りの「yes=」、「true」(3 > 2という比較演算の結果である真偽値)を順に表示する。Gooseのprint関数は、このように整数や浮動小数点数、真偽値といった異なるデータ型の値を、自動的に適切な文字列形式に変換して出力してくれる。さらに、配列のような複雑なデータ構造も[1, 2, 3]といった分かりやすい形式で表示される。これは、今後のプログラム開発でデバッグ情報などを出力する際に役立つ機能だ。
開発の最終段階では、Gooseプログラムを単独で実行できる「リアルなバイナリ」としてビルドすることが一般的だ。これにはgoose build hello.gooseコマンドを使用する。このコマンドを実行すると、ソースファイルhello.gooseと同じディレクトリ内に、helloという名前の実行可能ファイルが生成される。生成されたバイナリは./helloというコマンドで直接実行でき、Gooseコンパイラを介さずにプログラムを起動できる。
もしGooseで書いたプログラムがどのようにC言語に変換されるかを確認したい場合や、自身でCコンパイラを使ってコンパイルしたい場合は、goose -o hello.c hello.gooseというコマンドを使うことで、Gooseコードから生成されたC言語のソースコードをhello.cというファイルに出力できる。また、goose buildコマンドが内部で具体的にどのようなCコンパイルコマンドを実行しているのかを知りたい場合は、goose build --dry-run hello.gooseと入力することで、そのコマンドを表示させることができる。これは、ビルドプロセスの詳細を理解する上で非常に有用なオプションだ。
最後に、作成するプログラムの名前についてだが、コンパイラ自体がgooseという名前であるため、自分の作成するプログラムにはgoose以外の名前を付けることを推奨する。これは、プログラムを実行する際にコンパイラと混同しないようにするためだ。
Goose言語は、このようにシンプルにプログラムを記述し、実行、そして最終的なバイナリの生成までを手軽に行えるように設計されている。今回の解説で「Hello, World」の基本的な構造と実行方法、そしてさまざまなデータ型をprintで出力する方法が理解できたはずだ。次のステップでは、main以外の関数の定義方法など、より複雑なプログラム構造について学ぶことになるだろう。Gooseは、プログラミングの基礎を学ぶ上で非常に良い出発点となる可能性を秘めている。