Lazarus (統合開発環境)

| 「Lazarus」はこの項目へ転送されています。ミュージカルについては「Lazarus (ミュージカル)」をご覧ください。

|

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。（このテンプレートの使い方）
出典検索?: "Lazarus" 統合開発環境 – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2020年12月)

|

この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に反映させてください。反映後、このタグは除去してください。 (2018年3月)

|

Lazarus

macOS上で動かしているLazarus IDE 1.0

開発元|  ボランティア有志 (Lazarus Team)
最新版|

3.8 / 2025年1月18日 (5か月前) (2025-01-18)

リポジトリ|

* gitlab.com/freepascal.org/lazarus

プログラミング
言語|  Object Pascal
対応OS|  Windows, macOS, Linux, FreeBSD, Solaris and others
プラットフォーム|  IA-32, x86-64, winCE for ARM, PowerPC
種別|  Integrated development environment
ライセンス|  GNU General Public License and modified GNU Lesser General Public License (with static linking exception)
公式サイト|  www.lazarus-ide.org
テンプレートを表示

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では単に「インターフェース」と呼ぶ。事実、ウィジェット・ツールキットあたり一つのインターフェースがあるようなものである。

ウィジェット・ツールキットインターフェースに関する現状はおおむね以下の通り。

* win32 GDI support (win32 ネイティブ) は普通に使える状態である
* GTK+ 1.2.x は普通に使える状態である（macOS含む）
* GTK+ 2.x は開発中である。国際化とフォーカシングの点で改良された
* Qt 4 (C++) のヘッダが移植された。簡単なアプリケーションではインターフェースが利用可能である
* wxWidgets (C++) に関しては、ヘッダの移植が終わっていない
* Aqua（macOS ネイティブのツールキット、Objective C）プレーンなCのインターフェースだが、まだヘッダの移植が終わっていない
* Carbon（macOS ネイティブのツールキット、Objective C）Pascal ヘッダ（呼出規約#Pascal参照）は移植され、ごく簡単なアプリケーションではインターフェースが利用可能である
* wince（Windows CE ネイティブ）は移植作業中である

### PDAのサポート

[編集]

PDA用には、いまのところ良いクロス開発環境やRADツールがない。LazarusはPDAをサポートすべく実装作業中であり、この穴を埋めることになろう。

LCL移植作業中のプラットフォーム

* Windows CE
* Qtopia for Linux-based PDAs

将来は

* PalmOS
* Symbian OS

にも移植されるだろう。

### 文字コードに関する問題

[編集]

日本語の場合、プラットホームによって、文字コードが違うが、LazarusではユニコードのUTF-8を標準として、各プラットホームでのインターフェースでそれをプラットホームに変換して吸収しようとしている。

しかし、この方針は最近決められたことであり、実装 0.9.22 ではそのようにはなっていない。UTF-8で今後開発が進むにつれ、日本語でもクロスプラットホームが実現できるようになるだろう。

現在のIDEのエディタでは、日本語やIME/XIMの処理が不十分である。LazarusのWindows版は、シフトJISでの編集になっているが、FreePascalJpプロジェクトでは暫定的にIDEエディタの日本語パッチを公開している。

* SourceForge.jpのfreepascaljpプロジェクト

## 開発プロセス

[編集]

Lazarusプロジェクトには多くのプログラマとテスタが集まり、良いコミュニティと高度な開発プロセスをもたらしている。問題点があればディスカッションボードで解決され、プログラマがそれを修正するパッチを投稿する。毎晩テスト前のビルドが作られ、ベータテスタに渡される。Lazarusの開発は大変ダイナミックである。

## データベースのサポート

[編集]

Lazarusはいくつかの外部データベースをサポートしているが、それらを利用するにはデータベースに応じたパッケージをインストールする必要がある。ソースコードを用いても、フォーム上のコンポーネントを用いてもデータベースにアクセスすることができる。データ関連コンポーネントはデータのフィールドを表し、TDataSourceオブジェクトのプロパティを正しく設定することで実際に接続される。TDataSourceはテーブル（表）を表し、これにも対応するコンポーネントがある（TPSQLDatabase、TSQLiteDataSetなど）。

サポートされている外部データベースは次のとおり:

* PostgreSQL PSQLパッケージが必要
* dBase、FoxPro TDbfを使って、外部サーバやライブラリなしに利用することができる
* MySQL
* SQLite 一つの外部ライブラリとTSqliteDatasetコンポーネントでアクセスできる
* MSSQL Zeoslibを用いる
* InterBase / Firebird これも最新のZeoslibでサポートされる

## クロス開発

[編集]

Free Pascalはクロス開発環境をサポートする。Lazarusのアプリケーションも、マイクロソフトWindows、Linux、FreeBSDでクロスコンパイルが可能である。macOSでコンパイルしてWindows、Linux、FreeBSDで利用することもできる。macOSへのクロスコンパイルは可能になっているが、まだ一般公開されていない。

## 限界

[編集]

DelphiのRADにいろいろな点で似てはいるものの、パフォーマンスや仕様上の制限がある。

* 実行ファイルの大きさがDelphiよりいささか大きい。GNUリンカとのからみである
* 前述のようにVCLと100%互換なわけではない。これは設計上の相違であるが、ほとんどの場合現在のLCL widgetで問題なく動作する。しかし、今存在するVCL widgetの深いリポジトリに触ろうとするなら、変換作業が必要である。まれに設計上の根本的な相違にぶつかることもあるが、ほとんどの場合は編集ですむ。ライブラリに欠けているunit（モジュール）があることと、COMサポートが実現されていないことが、LCLとVCLの互換性の上で大きな問題になってきた。
* Delphiのコンポーネントを IDE にインストールすることができるが、面倒な変換作業が必要である。
* 重要なライブラリ/widgetである Media ライブラリが存在しない。
* Office との結合性
* Datasnap
* ネットワーク機能
* Indy、ICS、Synapseは動作するが、Indyは100%のプラットフォームで動作している訳ではない（Linux、win32は100%。FreeBSD、macOSは動作しないかテスト前）
* lNet は FPC ネイティブの non-blocking variantである。
* .NET、COMがサポートされていない。.NETをサポートしないのは設計上の問題である。
* パッケージの動的ロードができない

## 使用条件

[編集]

LazarusはGPLライセンスだが、Lazarusで開発したソフトウェアはこのライセンスに縛られず、どのようなライセンスであってもいい。LCLはプログラムに静的リンクされるが、modifiedLGPLというライセンスにより、必要に応じてリンクされたバイナリを配布してもよいことになっている。

## 関連項目

[編集]

* Free Pascal

## 外部リンク

[編集]

* Lazarus, a RAD for FPC (Download at SourceForge.net)
* Lazarus CCR知識ベース
* Lazarus開発者むけドキュメントを集積している。VCLからLCLに移植する際のヘルプなどがある。
* LCL はVCL/CLXと似たような感じでLazarusで利用するクロスプラットフォームなオープンソースライブラリである。
* 詳細はDelphiからLazarusへのコード変換ガイド
* Lazarusドキュメンテーション
* Free Pascal Documentation
* 3DライブラリGLSceneを使ったLazarusアプリケーション
* SourceForge.jpのfreepascaljpプロジェクト

* 表
* 話
* 編
* 歴

ウィジェット・ツールキット

低レベル|

* Macintosh Toolbox（英語版）/Carbon (API)
* Intrinsics
* Intuition（英語版）
* Windows API
* Xlib
* XCB

高レベル|

| AmigaOS対応|

* BOOPSI（英語版）
* Magic User Interface（英語版）
* ReAction GUI（英語版）
* Zune（英語版）

|

Mac OS/macOS対応|

* Cocoa (API)
* MacApp（英語版）
* MacZoop（英語版）
* PowerPlant（英語版）

Windows対応|

* Microsoft Foundation Class Library
* Object Windows Library（英語版）
* Silverlight
* SmartWin++（英語版）
* Visual Component Library
* Windows Forms
* Windows Presentation Foundation
* Windows Template Library
* WinRT XAML（英語版）

X11下のUnix対応|

* Athena/Xaw（英語版）
* InterViews（英語版）
* LessTif
* Motif

言語別
クロスプラットフォーム|

| CLI|

* Avalonia UI（英語版）
* Uno Platform（英語版）
* Gtk#
* Moonlight（英語版）
* Tao（英語版）

|

C/C++|

* CEGUI（英語版）
* Component Library for Cross Platform
* FLTK
* FOX toolkit（英語版）
* OpenGL User Interface Library（英語版）
* GTK
* Juce（英語版）
* Qt
* Wt（英語版）
* Tk
* TnFOX（英語版）
* Ultimate++（英語版）
* Visual Component Framework（英語版）
* wxWidgets
* YAAF（英語版）
* XForms
* XVT（英語版）

Objective-C|

* GNUstep

Flash|

* Apache Flex

Java|

| デスクトップ|

* Abstract Window Toolkit
* Swing
* Standard Widget Toolkit
* Qt Jambi（英語版）

|

ウェブ|

* Google Web Toolkit

JavaScript|

* Dojo Toolkit
* Echo（英語版）
* Ext JS
* Google Closure Tools
* jQuery
* jQuery UI
* MooTools
* Qooxdoo（英語版）
* script.aculo.us（英語版）
* YUI（英語版）

Common Lisp|

* CAPI
* Common Graphics
* CLIM（英語版）
* Ltk
* McCLIM（英語版）

Object Pascal|

* Component Library for Cross Platform
* fpGUI（英語版）
* IP Pascal（英語版）
* Lazarus

Perl|

* WxPerl（英語版）
* Perl/Tk

PHP|

* PHP-GTK（英語版）
* PHP-Qt（英語版）
* WxPHP（英語版）

Python|

* Pyjamas（英語版）
* PyQt
* PyGTK
* PyGObject（英語版）
* PySide
* Tkinter
* wxPython

Ruby|

* Shoes
* QtRuby（英語版）

XML|

* Ample SDK（英語版）
* CougarXML（英語版）
* GladeXML
* Lively Kernel（英語版）
* Pyjamas（英語版）
* Rialto Toolkit（英語版）
* XAML
* XML User Interface（英語版）
* XUL
* Wt（英語版）

* 一覧（英語版）
* カテゴリ

典拠管理データベース: 国立図書館 |

* ドイツ

|