本連載では、オープンソースの開発ツール「Lazarus」を使って、いろいろなデスクトップアプリを開発する方法を紹介します。Lazarusは、Pascal言語を利用したアプリの開発ツールです。かつてのPascal/Delphi好きに刺さること間違いなく、モダンなスクリプト言語しか知らない皆さんにもオススメです。
Lazarusとは?
Lazarusはオープンソースの統合環境です。Pascal言語を利用して気軽にデスクトップアプリの開発が可能です。マルチプラットフォームであり、Windows/macOS/Linuxで動作します。画面上のパレットに、テキストボックスやボタンなど、さまざまなコンポーネントが配置されており、これをフォームにドラッグ&ドロップすることで、デスクトップアプリを開発できます。
上記の画面のように、Lazarusを使うとドラッグ&ドロップで画面をデザインしてデスクトップアプリを手軽に開発できるのがポイントです。そして、本家Webサイトでも明言されているのですが、2001年頃にボーランドから発売されていた「Delphi」と似た画面構成となっています。
Lazarusをインストールしよう
Lazarusをインストールするには、公式Webサイト(https://www.lazarus-ide.org/)で配付されている各OS向けのインストーラーを利用します。ブラウザでWebサイトにアクセスし、「Download Now」をクリックして、SourceForgeからインストーラーをダウンロードできます。
なお、Lazarusのインストールについては、こちらの姉妹連載でも紹介していますので参考にしてください。また、記事の中でも紹介していますが、Lazarusバージョン3.4のmacOS版は少々不安定なところがあります。そこで、できれば、開発にはWindows版を利用すると良いでしょう。
インストールの方法は一般的なアプリと代わりありません。インストーラーをダブルクリックして起動したら、言語に「English」を選び「Next」ボタンを数回押すだけで、インスト−ルが完了します。
完全オリジナル - 自分だけの画像付きメモ帳を作成しよう
それでは、実際にLazarusを利用して、メモ帳を作成しましょう。今回作成するのは、次のような好きな画像を貼り付けたオリジナルメモ帳です。「読み込み」ボタンを押して既存のテキストファイルを読み込んだり、「保存」ボタンを押してファイルの保存ができます。
画面に画像を配置しよう
まずは、メモ帳の基本機能を作成しましょう。気持ちよくアプリを開発するために、最初に横長の画像を用意しましょう。今回は、ChatGPTに対して雑に「日本のオタクが喜ぶ絵を描画してください。美少女が教室にいる風景で…」などと注文を入れて次のようなイラストを描いてもらいました。
そして、Lazarusを起動させたら、マウス操作で適当なサイズにフォームの大きさを変更して、画面にTImageを配置します。TImageは画面上部の「コンポーネントパレット」の[Additional]のタブに配置されています。ダブルクリックするか、ドラッグ&ドロップしてフォーム上に配置しましょう。
続いて、画面右側にある「オブジェクトインスペクタ」の「プロパティ」から「Picture」を探しましょう。そして、右側にある「(TPicture) [...]」のボタンをクリックします。すると、イメージ読み込みダイアログが開くので「読み込み」ボタンを押して、素材画像を読み込みます。「OK」を押すとフォームに画像が貼り付けられます。
続いて、TImageを選択したままで、プロパティの「Stretch」を探してチェックを入れます(値をTrueにします)。すると、フォーム上のTImageをマウスでドラッグすると、それに従って画像も拡大できます。メモ帳のサイズにうまく入るように、リサイズしておきます。
メモ帳の機能を配置しよう
次に、フォームにメモ(TMemo)とボタン(TButton)を貼り付けましょう。TMemoは複数行の入力が可能なエディタで、TButtonはその名の通りボタンです。いずれも画面上部のコンポーネントパレットの[Standard]のタブにありますので、探して貼り付けましょう。
その後、メモやボタンのプロパティを設定しましょう。画面左側のオブジェクトインスペクタを操作して、貼り付けたオブジェクトの名前(Name)やキャプション(Caption)を設定しましょう。オブジェクトのプロパティを変更するには、まず、フォーム上でボタンをクリックし、その後、オブジェクトインスペクタ上のプロパティを変更します。
ここでは、次のように設定しましょう。
一つ目のボタン:
- Name: btnLoad
- Caption: 読み込み
二つ目のボタン:
- Name: btnSave
- Caption: 保存
メモ:
- Name: memoMain
ファイルダイアログを貼り付けよう
そして、画面上部のコンポーネントパレットの[Dialogs]から保存用と読込用の2つのダイアログをフォームに貼り付けましょう。「保存用(TSaveDialog)」、「読込用(TOpenDialog)」の二つです。
ここまで作業したら、一度、プロジェクトを保存しておきましょう。 画面上部のメニューから「プロジェクト>名前を付けてプロジェクト保存」をクリックして「memopad」など適当な名前をつけて保存しましょう。また、何度かファイルの保存ダイアログが表示されますが、今回は、あまり考えずデフォルトの名前のまま「保存」ボタンを押して、プロジェクトやユニットを保存しましょう。このようにして保存したプロジェクトは、メニューから「プロジェクト>プロジェクトを開く」から読み込むことができます。
なお、マシン環境によって動作が不安定になってしまう場合もあるようです。その場合は、メニューの「ファイル>保存」をクリックして、こまめに作業を保存しましょう。加えて、プロジェクトを保存した後で、メニューの「ファイル>再起動」をクリックして、Lazarus IDEを起動し直すと改善する可能性があります。試してみてください。
いよいよプログラムを記述しよう
以上で、全ての要素が出そろいました。プログラムを記述しましょう。まずは、フォーム上にある「保存」ボタン(btnSave)をクリックして選択状態にします。そして、オブジェクトインスペクタの「イベント」タブを開きましょう。
その後、「OnClick」の右側をダブルクリックします。すると、コードエディタに、ボタンをクリックした時に記述すべきコードが自動的に挿入されます。
そして、赤枠の部分に以下のプログラムを記述しましょう。
procedure TForm1.btnSaveClick(Sender: TObject);
begin
// --- ここから記述 --->
if SaveDialog1.Execute then begin
memoMain.Lines.SaveToFile(SaveDialog1.FileName);
end;
// <--- ここまで記述 ---
end;
続けて、読み込みボタン(btnLoad)も、同じように選択して、オブジェクトインスペクタで「OnClick」をダブルクリックして、下記のコードを記述しましょう。
procedure TForm1.btnLoadClick(Sender: TObject);
begin
// --- ここから記述 --->
if OpenDialog1.Execute then begin
memoMain.Lines.LoadFromFile(OpenDialog1.FileName);
end;
// <--- ここまで記述 ---
end;
実行してみよう
以上で、ほぼ完成です。画面上部にある実行ボタン「▶」をクリックするか、メニューから「実行>実行」をクリックしましょう。初回実行時には、次のようなデバッグダイアログが表示されます。これは、デバッグレベルを指定するダイアログです。こだわりがなければデフォルトのまま「OK」ボタンをクリックしましょう。
すると、下記のように実行されます。メモ帳の部分(memoMain)に、テキストを記入して「保存」ボタン(btnSave)を押すと、保存用のファイルダイアログが出てファイルを保存できます。また「読み込み」ボタンを押すと、読み込み用のファイルダイアログが出てきて、テキストファイルを選択すると、内容を読み込みます。