Lazarus


2016.11.25更新

Lazarus Free Pascal RAD
上の画像はくっつけて置いてますが複数のばらばらのウィンドウです。

Lazarusとは
LazarusはDelphi/Kylixの非公式クローン(パクリ製品)です。
オープンソースのフリーソフトです。
最初のLCL(GUIライブラリ)を使ったバージョンは2001年1月からあり歴史は古いです。
今は無きKylixのObject Pascalの唯一の代替環境になっています。
残念ながら言語はObject PascalでありC/C++に対応していません。
C/C++を使わせない統合開発環境(IDE)という珍しいジャンルに属しています。
Delphi/Object Pascalのファンのクロスプラットフォーム開発環境に最適かも知れません。
C++ Builder同等というかそっくりのRAD(ビジュアルプログラミング)ができます。
C++ Builderの経験者であれば使い方を調べなくても操作できるぐらい似ています。
クロスプラットフォームであり、Windows、GNU/Linux、Mac OS、X Window system採用のOS、Android、iOSに対応しています。
VCLと互換性が高く且つクロスプラットフォームのLCLというGUIライブラリを採用。
ただし、C/C++は使えないのでObject Pascalを使いたくない人には無理がある環境です。
メジャーな言語を採用していないのでObject Pascalファン以外にはおすすめできません。

Lazarusで作成したプログラムのライセンス
Lazarusで作成したプログラムはLCLが静的リンクされ、
FPC modified LGPLというライセンスの影響を受ける。
FPC modified LGPLで配布しなければならないという意味ではない。
FPC modified LGPLは、Free Pascal側でLGPLに変更を加えたライセンス。
Lazarusで作成したプログラムは、次の二択で配布する必要がある。
  1. ソースファイルを公開する。
  2. ソースファイルを非公開にし、リバースエンジニアリングを許可しオブジェクトファイル(*.objや*.o)を公開する。
リバースエンジニアリングは逆アセンブル、逆コンパイルなどによる解析のこと。
逆コンパイルはソースに変換することなので、 逆コンパイルがもし可能ならソースを公開をしてなくてもソースを公開しているのとほぼ同等になる。
オブジェクトファイルがあると逆コンパイルしやすくなる。
ただし逆コンパイル技術は現在それほど進んでおらず、実用レベルで逆コンパイルすることは将来的にもできない可能性が高い。
どちらにしろ、リバースエンジニアリングを禁止したい場合はLazarusを公開ソフト用の開発環境として使用することはできない。

完成度
かなり高い。
もしC/C++に対応したらすぐにメジャーになると思う

知名度
かなり低いです。
Qt、Gtk+、WxWidgets、Xamarinなどは聞いたことあっても、Lazarusを聞いたことない人は多いと思います。
「知ってるよ」という言う人も、どんなものか知らなかったりシャープのZaurusと勘違いしているかも知れません。

Object Pascalのファンでない人には
正直使えない。
GUI主体でコードをほとんど書かないようなプログラムなら使えるかも知れませんが。
C/C++で作ったオブジェクトファイルをスタティックリンクさせたり、
C/C++で作ったダイナミックライブラリを呼んだりすることはできなくもないですが、
煩雑な作業が必要ですしプラットフォームごとにやり方が違ったりして大変です。

Object Pascalの普及度
非常にマイナーで普及していません。
DelphiとLazarus/Free Pascalでしか使われていません。
C/C++にあるような標準規格もありません。
各OSの標準開発言語に採用されたことが一度もありません。

クローズド、閉鎖的
ソースは公開されていてクロスプラットフォームであるのに関わらず閉鎖的な印象を受けます。
メジャーな言語に対応することもなければ、複数の言語に対応することもなく、マイナーな言語とされるObject Pascalのみに対応しているのは閉鎖的だと思います。
完成度は非常に高いのにマイナーで知名度がかなり低いのはこのためでしょう。
プロジェクトのMakefileの出力もできずコンパイル方法はブラックボックス化されクローズドです。

HTML表示、リッチテキスト表示のコンポーネントがない
TWebBrowser、TRichEdit、TTextBrowser(CLX)がありません。
クロスプラットフォームでこういう処理が必要ならQtがいいと思う。

Delphiとの比較
まず無料という優位性がありましたが、DelphiのほうもStarter Editionが無料になったのでWindowsプラットフォームにおいてはその優位性も薄れて来ました。
クロスプラットフォームではGNU/Linux対応という部分ではDelphiに勝っています。
無料でMac OSやAndroid、iOSに対応しているというのも大きな優位性です。
DelphiはC++版に相当するC++ Builderがありますが、LazarusはC++に対応していません。
DelphiはLGPLの影響を受けないため、ソースまたはオブジェクトファイルの公開は不要です。

VCLとの比較
Windowsでしか使えないVCLに比べ、LazarusのLCLはクロスプラスプラットフォームです。
ただし、VCLはLazarusが対応していないC/C++に対応しています。
使える機能はVCLのほうが多いです。
VCLはLGPLの影響を受けないため、ソースまたはオブジェクトファイルの公開は不要です。

FireMonkey(FMX)との比較
FireMonkeyよりもLazarusのLCLのほうがずっとVCLに似ています。
TStringGridもFireMonkeyよりLazarusのLCLのほうが使い物になります。
LCLにはFireMonkeyにないTColorDialog、TFontDialogなどがあるので、LCLのほうが高機能、実用的かも知れません。
(Lazarusは使い込んでないのでよくわかりませんが)
対応プラットフォームもFireMonkeyが対応していないGNU/Linuxに対応しているのは大きな利点です。
ただし、FireMonkeyはLazarusが対応していないC/C++に対応しています。
FireMonkeyはLGPLの影響を受けないため、ソースまたはオブジェクトファイルの公開は不要です。

Qtとの比較
Qt CreatorよりLazarusのほうがRAD(ビジュアルプログラミング)は優れています。
機能はQtのほうが上で、例えばQTextBrowserのようなHTMLを表示し各種イベントにも対応しているコンポーネントはLazarusにはありません。
QtはLGPLライセンスの他、高額ですが商用ライセンスも用意されています。
Lazarusには商用ライセンスがありませんが、Windowsで開発しGNU/Linuxに対応しなくてよい場合はDelphiまたはC++ Builderを使うことでLGPLを回避することができます。
(100%の互換性があるわけではないですが類似品ということで。)
LazarusはC++に対応していないため、いくらRADやクロスプラットフォームに優れていても結局のところ多くの人はLazarusではなく別の開発環境を使っているようです。
GNU/Linuxの開発やクロスプラットフォームではLazarusではなくC/C++が使えるQtやGtk+が一般的です。
Lazarusは、C++に対応していないため、選ぶところまでいかず、名前すら知られていない、最初から候補にあがらないといった状況です。

今後の期待
2001年1月からLCLを使うバージョンのLazarusがあり、すでに16年ぐらい経っています。
新しいソフトなら今後の展開を期待できますが、そうではないので大きな変化は期待できないと思います。

Lazarusを使ったソフト
たくさんあるでしょうが調べていません。
私がたまたま知っているのは十進BASICのWindows Delphi版(記事を書いた時点でVer 7.7.8)ではない、Lazarus版(Windows、GNU/Linux、Mac OSで記事を書いた時点でVer 0.6.5.1)です。
Lazarusで作られたものはクロスプラットフォームですが、Delphiで作られたものより低機能になっているようです。
十進BASICの各版の機能比較
普通、クロスブスプラットフォームのプログラムではひとつのOSだけを動作対象としたプログラムより低機能になりやすいです。
それは各OSのどれでも使える最大公約数の機能で満足しなければならないし、各OSで実現できるとしても開発環境が対応していなければ独自で各OSごとに固有を機能を使うプログラムを追加していかなければならず手間暇かかります。
また、OS固有の機能を呼び出すことが難しい開発環境では諦めざるを得ないこともあります。

Kylixの終焉
Kylixは、Delphi/C++ Builderの公式のGNU/Linux版の開発環境です。
同じ会社が発売したのに関わらずGNU/Linux版は名称をDelphi/C++ BuilderではなくてKylixにしました。
十進BASICのGNU/Linux版は昔はKylix3のObject Pascalで作られていました。
私も昔はC++でですがKylix3を使っていたため十進BASICの名前を知っていました。
Kylixは、Kylix3が最後のバージョンでそれ以降バージョンアップされることはなくGNU/Linuxの進化についていけずまともに使うことができなくなりました。
Kylix3のObject Pascalのほうは、Lazarusが唯一の代替環境になったようです。
Kylix3のC++のほうは、Lazarusが使えませんから、一番近い代替環境はg++とQtだと思います。
KylixはQtを内部で使っていたためLCLでは使えないKylixのTTextBrowserも、Qtには相当するQTextBrowserがあり移植が可能です。


C言語の話


あーすブラウザ
オンライン鍋田辞書
鍋田辞書トップ