Lazarus
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Lazarus 0.9.16 Screenshot |
|
開発元: | 有志 |
最新版: | 0.9.16 / 2006年5月 |
対応OS: | クロスプラットフォーム |
種別: | Pascal SDK |
ライセンス: | GPL |
公式サイト: | www.lazarus.freepascal.org |
Lazarus は、クロスプラットフォームのヴィジュアルプログラミング統合開発環境である。オープンソースのPascalコンパイラであるFree Pascal向けに開発された。これはPascal及びObject Pascalプログラマのために、RADの一つであるDelphiのクローンを作ろうとするものである。
Free Pascal はオープンソースのコンパイラで、 Linux, Win32, OS/2, Mac OS X, BSD, 68Kといった幅広い環境に対応している。Free Pascal は、Object Pascal であるDelphiの文法に従って書かれたソースをコンパイルすることができるように開発された。「一度プログラムを書けば、どこでも走る」ことを謳う Java と異なり、Lazarus と Free Pascal は 「一度プログラムを書けば、どこでもコンパイルできる」ことを目指している。同一のコンパイラが上記の全てのプラットフォームで走るので、プラットフォーム別にプログラムを書き換える必要は事実上ない。
Microsoft Windowsでは、ボーランド Delphiの方が今もなお安定で、資料も多い。だが、Lazarusのようなプラットフォームを選ばないプログラムではない。Lazarusを用いれば、Linux上でDelphiで書かれたプログラムをコンパイルすることができるし、わずかな修正で逆のこともできる。
目次 |
[編集] ユーザインタフェースの利用
[編集] LCL
LazarusのGUIサブシステムはLCL (Lazarus Component Library)と呼ばれ、基本的にウィジェット・ツールキット関連部分を構成するクラスをまとめたものである。LCLはVCLをモデルにしているが、100%互換というわけではない。これはWindows以外のプラットフォームも想定しているからである。
[編集] インターフェース - ウィジェット・ツールキット依存部分
Lazarusでは単に「インターフェース」と呼ぶ。事実、ウィジェット・ツールキットあたり一つのインターフェースがあるようなものである。
ウィジェット・ツールキットインターフェースに関する現状はおおむね以下の通り。
- win32 GDI support (win32 ネイティブ) は普通に使える状態である
- GTK+ 1.2.x は普通に使える状態である (Mac OS X含む)
- GTK+ 2.x は開発中である。国際化とフォーカシングの点で改良された
- Qt 4 (C++) のヘッダが移植された。簡単なアプリケーションではインターフェースが利用可能である
- wxWidgets (C++) に関しては、ヘッダの移植が終わっていない
- Aqua (Mac OS X ネイティブのツールキット、Objective C) プレーンなCのインターフェースだが、まだヘッダの移植が終わっていない
- Carbon (Mac OS X ネイティブのツールキット、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.20 ではそのようにはなっていない。utf-8で今後開発が進むにつれ、日本語でもクロスプラットホームが実現できるようになるだろう。
現在のIDEのエディタでは、日本語やIME/XIMの処理が不十分である。LazarusのWindows版は、SJISでの編集になっているが、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でクロスコンパイルが可能である。Mac OS XでコンパイルしてWindows、Linux、FreeBSDで利用することもできる。Mac OS Xへのクロスコンパイルは可能になっているが、まだ一般公開されていない。
[編集] 限界
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, OS Xは動作しないかテスト前)
- lNet は FPC ネイティブの non-blocking variantである。
- .NET、COMがサポートされていない。.NETをサポートしないのは設計上の問題である。
- パッケージの動的ロードができない
[編集] 使用条件
LazarusはGPLライセンスだが、Lazarusで開発したソフトウェアはこのライセンスに縛られず、どのようなライセンスであってもいい。LCLはプログラムに静的リンクされるが、LGPLという特殊なライセンスにより、必要に応じてリンクされたバイナリを配布してもよいことになっている。
[編集] 関連項目
- 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プロジェクト