Ubuntu Weekly Recipe

第408回 Ubuntuで現代芸術を体感する

この記事を読むのに必要な時間:およそ 5 分

「Pascal」

Pascalもまた歴史のあるプログラミング言語の一つです。Ubuntuで使えるPascalコンパイラとしてはFree Pascalが存在します。しかしながら今回はGUIのウィンドウを表示する必要があります。LazarusはFree Pascal向けの統合開発環境であり,さらに独自のGUIライブラリを持っています。よってこれを使うことにしましょう。

$ sudo apt-get install lazarus

グラフィック関連の開発パッケージも必要になるため,かなりの量のパッケージがインストールされます。sdlBasicと同様にdesktopファイルもインストールされますので,たとえばUnityならアプリレンズを開いて「lazarus」と 入力して表示されるLazarusのアイコンをクリックして起動しましょう。⁠パッケージファイルが見つかりません」ダイアログが表示されたら「OK」ボタンを押しておきます。

自動的にテンプレートコードが設定されますが,すべて削除した上で作者のサイトにある以下のコードを入力し,保存します。

unit Unit1;
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
  { TGrey }
  TGrey = class(TForm)
    procedure FormPaint(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
var
  Grey:     TGrey;
  idx:       integer;
  shades:    integer;
  step:      integer;
  col:       integer;

implementation
{$R *.lfm}
{ TGrey }

procedure TGrey.FormPaint(Sender: TObject);
begin
     shades := 50;
     step := Round(Grey.width/shades);

     for idx:= 0 to (shades-1) do
     begin
       col := 255-Round(idx*255/shades);
       canvas.Brush.Color := RGBToColor(col, col, col);
       canvas.FillRect(0, 0, (shades-idx)*step, Grey.height);
     end;
end;
end.

図4 マルチウィンドウ形式のLazarus。

画像

次にフォームの名前をコードにあわせて変更します。⁠Form1」というタイトルのウィンドウを右クリックし,⁠ソース(.lfm)を表示」を選択します。ソースを保存するかどうかは「Yes」と回答してください。unit1.lfmが表示されるので,以下の内容に更新します。

object Grey: TGrey
  Left = 182
  Height = 800
  Top = 243
  Width = 800
  Caption '50. Shades of Grey'
  OnPaint = FormPaint
  LCLVersion = '1.0.10.0'
end

さらにLazarusのアイコンが並んだウィンドウを選択し,メニューの「プロジェクト」から「プロジェクトソースを表示」を選択します。18行目の「Application.CreateForm」の行を次のように変更してください。

Application.CreateForm(TGrey, Grey);

ここまでの編集内容を「Ctrl-S」で保存したらF9キーで実行します。

図5 Pascal on Lazarusによる「50. Shades of Grey」

画像

Lazarusが使っているFree Pascalは,オリジナルのPascalよりはDelphi(Object Pascal)の書式を使えるような実装になっています。そのため上記のコードもどちらかというとObject Pascalです。またcanvasやlfmファイルなどはLazarus独自の実装です※3⁠。

※3
よってsdlBasic同様「これがPascalだ」って言われるとちょっと心にひっかかるものがある方もいるかもしれません。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。