Lazarus (統合開発環境)

Lazarus（）は、クロスプラットフォームのビジュアルプログラミング統合開発環境である。オープンソースのPascalコンパイラであるFree Pascal向けに開発された。これはPascal及びObject Pascalプログラマのために、RADの一つであるDelphiに良く似たフリーの開発環境を作ろうとするものである。
概要.
Free Pascalはオープンソースのコンパイラで、 Linux、Win32、OS/2、macOS、BSD、"68K"といった幅広い環境に対応している。Free Pascalは、Pascalのコンパイラであるが、Object指向の拡張がなされた"Delphi"の文法に従って書かれたソースもコンパイルすることができるように開発された。「一度プログラムを書けば、どこでも走る」というのは Java のキャッチフレーズであるが、Lazarusは「一度プログラムを書けば、どこでもコンパイルできる」を合言葉に、Free Pascalをベースとしたクロスラットフォームのコンパイラとライブラリの統合を目指している。Free Pascalは上記のような多くのプラットフォーム向けのコード生成が可能なので、Lazarusは、その特徴をいかした、GUIライブラリ (LCL) と、統合開発環境を提供している。Lazarusでは、コンポーネント等を用いるアプリケーションであれば、たとえGUIアプリケーションでも、プラットフォーム別にプログラムを書き換えなくてもいいように設計されている。
PascalのRAD-GUIアプリケーション開発言語としては、Windowsでは、ボーランドのDelphiが歴史が古く、安定しており、サンプルや資料も多い。だが、DelphiはWindows(最新版はmacOSを含む)でしか動作しない。Free PascalとLazarusを用いると、日本語部分の処理を除けば、多少の修正でLinuxやmacOSなどでDelphiで書かれたプログラムをコンパイルすることができる。
特に最近の流れとして、海外では、DelphiやPascalで書かれた優れた多くのコンポーネントが、LazarusやFree Pascal向けに移植され、同じソースからコンパイルできるようになっている。
修正可能かどうか、また修正量はプログラムに依存するので、どういう部分が異なっているか、LazarusのWikiが参考になる。特に日本語については、UTF-8にするという方針になっているものの、IDEまわりを含め、クロスプラットフォームでの実装が充分されていない。LazarusでASCII文字以外を扱う際は、注意して利用すべきである。Lazarus 0.9.22でも、まだ日本語を完全に扱えていない。
Lazarus 0.9.25から、公式にUTF-8をサポートされているが、全角文字が3バイトになるUTF-8でのストリング処理は、依然として容易とは言えない。
ユーザインタフェースの利用.
LCL.
LazarusのGUIサブシステムはLCL (Lazarus Component Library) と呼ばれ、基本的にウィジェット・ツールキット関連部分を構成するクラスをまとめたものである。LCLはVCLを手本にしているが、100%互換ではない。
LCLは、Delphiとの互換性よりも、Windows以外のプラットフォームでのプログラミングを想定している。DelphiやWindowsに依存したVCLは手本にしつつ、幅広いクロスプラットフォームプログラミング、および、ソースが全て公開されたものを理想にしている。
インターフェース - ウィジェット・ツールキット依存部分.
Lazarusでは単に「インターフェース」と呼ぶ。事実、ウィジェット・ツールキットあたり一つのインターフェースがあるようなものである。
ウィジェット・ツールキットインターフェースに関する現状はおおむね以下の通り。
PDAのサポート.
PDA用には、いまのところ良いクロス開発環境やRADツールがない。LazarusはPDAをサポートすべく実装作業中であり、この穴を埋めることになろう。
LCL移植作業中のプラットフォーム
将来は
にも移植されるだろう。
文字コードに関する問題.
日本語の場合、プラットホームによって、文字コードが違うが、LazarusではユニコードのUTF-8を標準として、各プラットホームでのインターフェースでそれをプラットホームに変換して吸収しようとしている。
しかし、この方針は最近決められたことであり、実装 0.9.22 ではそのようにはなっていない。UTF-8で今後開発が進むにつれ、日本語でもクロスプラットホームが実現できるようになるだろう。
現在のIDEのエディタでは、日本語やIME/XIMの処理が不十分である。LazarusのWindows版は、シフトJISでの編集になっているが、FreePascalJpプロジェクトでは暫定的にIDEエディタの日本語パッチを公開している。
開発プロセス.
Lazarusプロジェクトには多くのプログラマとテスタが集まり、良いコミュニティと高度な開発プロセスをもたらしている。問題点があればディスカッションボードで解決され、プログラマがそれを修正するパッチを投稿する。毎晩テスト前のビルドが作られ、ベータテスタに渡される。Lazarusの開発は大変ダイナミックである。
データベースのサポート.
Lazarusはいくつかの外部データベースをサポートしているが、それらを利用するにはデータベースに応じたパッケージをインストールする必要がある。ソースコードを用いても、フォーム上のコンポーネントを用いてもデータベースにアクセスすることができる。データ関連コンポーネントはデータのフィールドを表し、TDataSourceオブジェクトのプロパティを正しく設定することで実際に接続される。TDataSourceはテーブル（表）を表し、これにも対応するコンポーネントがある（TPSQLDatabase、TSQLiteDataSetなど）。
サポートされている外部データベースは次のとおり:
クロス開発.
Free Pascalはクロス開発環境をサポートする。Lazarusのアプリケーションも、マイクロソフトWindows、Linux、FreeBSDでクロスコンパイルが可能である。macOSでコンパイルしてWindows、Linux、FreeBSDで利用することもできる。macOSへのクロスコンパイルは可能になっているが、まだ一般公開されていない。
限界.
DelphiのRADにいろいろな点で似てはいるものの、パフォーマンスや仕様上の制限がある。
使用条件.
LazarusはGPLライセンスだが、Lazarusで開発したソフトウェアはこのライセンスに縛られず、どのようなライセンスであってもいい。LCLはプログラムに静的リンクされるが、modifiedLGPLというライセンスにより、必要に応じてリンクされたバイナリを配布してもよいことになっている。