クロスプラットフォームのGUI開発環境の一つに「Lazarus」があります。Lazarusは、Delphi7によく似たオープンソースの開発環境です。Pascal(Free Pascal Compiler)を利用してプログラムを開発します。長年継続して開発が続けられており、2024年5月に3.4がリリースされました。多くのコンポーネントを組み合わせてネイティブなGUIアプリを作成できます。今回は、WindowsとmacOSで使う方法を紹介します。
Lazarusとは?
Lazarusは、Delphi7によく似た開発環境です。クロスプラットフォームの開発環境であり、Windows/macOS/Linuxなど幅広い環境で動作します。一般的なLinuxをはじめ、Raspberry Piなどで動作させることもできます。
そもそも、Lazarusの開発は1999年2月に始まりました。当初はLinuxを中心に開発が行われており、Windows版には多くのバグが多かったようです。その後、多くの開発者が参加して、Windows版やその他のOSでも安定して動作するように改良されていきました。
なお、本連載の22回目では、Pascal言語の歴史について紹介し、その中でLazarusについても言及しました。
Lazarusはその見た目からも分かる通り、開発当初はDelphiのオープンソースの代替版のようなものとして始まっていました。しかし、長年の継続開発により、ただのDelphiの代替版ではなく、独自の強力な開発ツールに育ってきました。
WindowsへLazarusのインストール
Lazarusには、Windows用のインストーラーが用意されています。こちら(https://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2064%20bits/Lazarus%203.4/)からダウンロードできます。いくつかファイルがありますが、「lazarus-3.4-fpc-3.2.2-win64.exe」をクリックしてダウンロードしましょう。
そして、ダウンロードしたインストーラーをダブルクリックして、Lazarusをインストールしましょう。
インストールが完了したら、Windowsメニューから「すべてのアプリ > Lazarus > Lazarus」を選んで起動します。
macOSへLazarusのインストール
macOS用のLazarusのインストーラーも用意されています。こちら(https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20x86-64/)からインストーラーをダウンロードします。
ただし、macOS用のインストーラーは少し注意が必要です。と言うのも、Windows用のインストーラーには、Lazarusを実行するのに必要なFree Pascalが最初から含まれているのですが、macOS版には、Free Pascalが含まれていません。そのため、下記のようなファイル一覧が表示されますが、一つずつクリックしてダウンロードして、インストールしましょう。この時、「不明な開発者」のエラーが表示される場合は、PKGファイルを右クリックして「開く」をクリックして実行しましょう。
ダウンロードした3つのpkgファイルを順にダブルクリックしてインストールします。インストール自体は簡単で、「続ける」ボタンをクリックしていくだけでインストールできます。
Lazarusを起動するには、Finderで「アプリケーション > Lazarus」ディレクトリを開いて「lazarus.app」を起動します。繰り返しになりますが、Lazarusだけでは動きませんので、Free Pascal Compiler(fpc)のインストールを完了させた上で、Lazarusを実行する必要があります。
ちなみに、Homebrewを使ってFree Pascalだけをインストールしている場合には、一度アンインストールして、上記のインストーラーを使って、Free Pascalをインストールするとトラブルが少ないようです。
一番簡単なLazarusアプリを作ろう
最初に、一番簡単なアプリを作ってみましょう。上記の手順で、Lazarusを起動すると、Form1というウィンドウが表示されることでしょう。
最初にプロジェクトを保存しましょう。メニューから「ファイル > 保存」をクリックして、プロジェクトを保存しましょう。何度か保存ダイアログが表示されます。最初がプロジェクト名なので、「hello.lpr」という名前で保存し、次に、プロジェクト内のメインフォーム(Form1)に関するプログラムファイルを保存します。そのため、「frmMain.pas」という名前で保存しましょう。
次に、フォーム上にボタンを配置してみましょう。Lazarusではボタンやエディタなどの部品を「コンポーネント(Component)」と呼びます。画面上部にあるコンポーネントパレット[Standard]からボタン(TButton)をダブルクリックして配置します。
ボタンを配置したら、ボタンをクリックして選択状態にして、オブジェクトインスペクタにある「Caption」プロパティに「挨拶ボタン」と入力しましょう。すると、ボタンのラベル(キャプション)が変更されます。もしも、オブジェクトインスペクタが表示されていない場合は、画面上部のメニューより「表示 > オブジェクトインスペクタ」をクリックして表示させます。
そして、オブジェクトインスペクタの「イベント」のタブを開きます。すると、「OnClick」という項目があるので、これをダブルクリックします。そうすることで、ソースエディタに「Button1Click」というメソッドが自動的に挿入されます。
続いて、ソースエディタのButton1Clickを下記のように編集しましょう。
procedure TForm1.Button1Click(Sender: TObject);
begin
// === ここにボタンをクリックした時の処理を記述 ===
ShowMessage('こんにちは');
end;
すると、下記のようになるでしょう。
編集したら、画面上部の保存ボタンを押して、プロジェクトを保存します。その後、実行ボタンを押すか、メニューから「実行 > 実行」をクリックしてプログラムを実行してみましょう。
すると、ボタンが配置されたウィンドウが表示されます。「挨拶ボタン」をクリックすると、「こんにちは」とメッセージボックスが表示されます。
WindowsでもmacOSでも全く同じ手順で作成できる
なお、ここまでの手順は、macOSの画面で紹介しました、Lazarusはマルチプラットフォームのツールです。全く同じ手順で、Windowsでも実行できます。Windowsで実行すると、下記のように表示されます。
FizzBuzzを出力するプログラムを作ってみよう
それでは、本連載で恒例のFizzBuzzを出力するプログラムを作ってみましょう。FizzBuzz問題とは次のような問題です。
Windowsで実行したところ1から100までの数を出力するプログラムを書いてください。ただし、3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」と表示してください。3と5の倍数の時は「FizzBuzz」と表示してください。
それでは、Lazarusを操作してみましょう。
メニューから「プロジェクト > 新規プロジェクト」をクリックして、新規プロジェクトを作成しましょう。そして、プロジェクトを保存したら、Form1にTListBoxを配置しましょう。
コンポーネントパレットから次の図のようなTListBoxを探してフォームに貼り付けましょう。このリストボックスの中にFizzBuzzの一覧を表示するようにしてみます。
続いて、フォームのサイズなどを調整してボタンを一つ配置してみましょう。先ほどと同じ手順で、オブジェクトインスペクタでCaptionを「FizzBuzz出力」と変更して、イベントの「OnClick」をダブルクリックしましょう。
そして、コードエディタに追加されたButton1Clickメソッドを、以下のように書き換えましょう。これは、ボタンをクリックすると、FizzBuzz問題を解いて結果をListBox1に出力するプログラムです。
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
isFizz: Boolean;
isBuzz: Boolean;
begin
ListBox1.Items.Clear; // ListBoxを空っぽにする
for i := 1 to 100 do begin // 1から100まで繰り返す
isFizz := (i mod 3) = 0;
isBuzz := (i mod 5) = 0;
if isFizz and isBuzz then begin // FizzBuzzの判定
ListBox1.Items.Add('FizzBuzz'); // リストボックスに追加
end else if isFizz then begin
ListBox1.Items.Add('Fizz');
end else if isBuzz then begin
ListBox1.Items.Add('Buzz');
end else begin
ListBox1.Items.Add(IntToStr(i));
end;
end;
end;
プログラムを書き換えて保存したら、プログラムを実行しましょう。