今回取り上げる「Seed7」はPascalやAdaに似たプログラミング言語です。インタプリタも用意されていますが、C言語に変換して実行ファイルを生成できます。安全性を重視した厳格な静的型付けや、ユーザーによる構文の定義が可能な拡張性の高さが特徴の言語です。今回はSeed7について紹介します。

  • Seed7でFizzBuzzのプログラムを実行したところ

    Seed7でFizzBuzzのプログラムを実行したところ

Seed7について

Seed7は、ソフトウェア開発者のトーマス・メルテス(Thomas Mertes)氏によって設計された汎用プログラミング言語です。Windows/macOS/Linuxで動作するオープンソースの言語であり、GitHubやSourceForgeで公開されています。

Seed7のWebサイト(https://seed7.sourceforge.net/)には、親切なマニュアルがあり、デモとして、ゲームや実用ツールが掲載されています。ゲームは実際にWebサイト上で遊ぶこともできます。

もともと、開発者が1989年に開発したコンパイラ「MASTER」とインタプリタ「HAL」を統合して、2005年にオープンソースの形態でSeed7が公開されました。

テンプレートやジェネリックス、演算子のオーバーロードなど、拡張性の高い機能が実装されています。ユニークなのは、ユーザーが新しい構文を定義できるようになっている点です。

インタプリタの「s7」に加えて、コンパイラの「s7c」が用意されています。s7cを使うと、Seed7のプログラムをC言語に変換したり実行ファイルを作成したりできます。

Seed7のインストール方法

Seed7はWindows/macOS/Linuxに対応しています。インストール方法はそれぞれ異なります。

【Windowsの場合】

Windowsであれば、オープンソースのプロジェクトをホストしているSourceForge( https://sourceforge.net/projects/seed7/files/bin/ )からインストーラーがダウンロードできます。ただし、最新のWindows版のバイナリは提供されていないので、比較的新しいバイナリファイル(seed7_05_20240812_win.exe)をダウンロードしましょう。

「最新版が提供されていないのはなぜ?」と思うかもしれませんが、インストーラーが最新のソースコードを取得して、自動的に最新版にビルドしてくれます。執筆時の最新バージョンは、2025-03-25でした。

画面の指示に従って、キーボードのキーを押していくとインストールされます。なお、最新版にアップデートする際に、画面がフリーズしたように見えるのですが、根気強くコンパイル完了を待ちましょう。「C:\seed7\bin」フォルダに続々と実行ファイルが作成されます。

  • WindowsにSeed7をインストールしているところ

    WindowsにSeed7をインストールしているところ

【macOSの場合】

macOSの場合は、ソースコードを取得してきてビルドできます。ターミナルを起動して、以下のコマンドを実行しましょう。なお、XcodeとHomebrew( https://brew.sh/ja/ )を先にインストールしておく必要があります。

# リポジトリを取得
git clone https://github.com/ThomasMertes/seed7.git
# ビルド
cd seed7/src
cp mk_osxcl.mak makefile
make depend
make
# インストール
sudo make install

なお、上記の手順は簡易版で、GUIなど完全にライブラリをビルドしたい場合には、こちら(https://seed7.sourceforge.net/build.htm)にある「COMPILING UNDER MAC OS」を参考にして作業すると良いでしょう。

Seed7の簡単なプログラムを作ってみよう

それでは、簡単なSeed7のプログラムを作ってみましょう。Seed7のプログラムは、Pascalに似たところがあります。以下が、Seed7の最も簡単なプログラムです。

# 基本ライブラリを取り込む --- (*1)
$ include "seed7_05.s7i";

# メイン関数を定義 --- (*2)
const proc: main is func
  begin
    writeln("Hello, World!");
  end func;

プログラムの(*1)では、基本ライブラリを取り込みます。基本ライブラリが「seed7_05.s7i」という名前なのに驚きますが、このライブラリの中で、基本構文や演算子の宣言などが含まれています。

(*2)ではメイン関数を定義します。そして、面白いことに、メイン関数は定数(const)文として定義します。Seed7では「const 型名: 定数名 is 値;」の書式で定数を定義します。

それで「const proc: main is func…」と書いてありますが「const proc: main」で、戻り値のない関数mainを定数として定義すると言う意味です。そして続く「is func begin … end」というのが関数の定義になります。「writeln(値)」で値を画面に出力します。

プログラムを実行してみましょう。上記のプログラムを「hello.sd7」という名前で保存します。そして、ターミナル(WindowsならPowerShell、macOSならターミナル.app)で下記のコマンドを実行しましょう。

s7 -q hello.sd7

すると、次の画面のように「Hello, World!」と表示されます。

  • 一番簡単なプログラムを実行したところ

    一番簡単なプログラムを実行したところ

なお、Seed7はプログラムをC言語に変換し、実行ファイルを生成することができます。

# コンパイル
s7c hello.sd7
# 実行 - Windowの場合
.\hello
# 実行 - macOSの場合
./hello

FizzBuzzのプログラムを作成してみよう

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら