高見知英の技術ログ

技術関係のログをQiitaから移行してきました。プログラミングのほか、使っているアプリの細かい仕様についてなど書いていきます。

Lazarusのパッケージマネージャ

このブログはLazarus(FreePascal)アドベントカレンダー20日目の記事です。

qiita.com

今回のお題はLazarusのパッケージマネージャについて。Lazarusにはオンラインパッケージマネージャというものが付属しており、パッケージメニューから起動することができるようになっています。

f:id:TakamiChie:20211218174301p:plain
オンラインパッケージマネージャ

こちらは昨日のパッケージのインストールとやれることは基本的に同じですが、「パッケージのインストールもしくはアンインストール」メニューだとあらかじめLazarusに同梱されたパッケージを取捨選択できるのに対し、こちらはLazarusサイトにて公開されているさまざまなLazarusパッケージを追加インストールすることができるもの という感じ。

パッと見た感じビジュアルコンポーネントが多めのようです(非ビジュアルコンポーネントもありますが、TComponentを継承しているためデザイナーでフォームに配置して使える というものが多い)。

f:id:TakamiChie:20211218174708p:plain
オンラインパッケージマネージャ画面

ただIDEコンポーネント一覧に追加する都合上、パッケージのインストールが終了すると、IDEの再構築が必要になります。なのでこちらもおそらく、若干ながらなんらかの不整合によりLazarus自体が起動しなくなってしまうこともありえそうです。

なので万全を期すならこちらもSandbox環境でインストールしてテストしてみると良さそう。

実際に公開されているパッケージ

実際に公開されているものをいくつか入れてみました。

実際にフォームに貼り付けて使うビジュアルコンポーネントや・・・。

f:id:TakamiChie:20211218175233p:plain
TShapeLine(ATShapeLineパッケージ)

f:id:TakamiChie:20211218175421p:plain
TCaptchaLabel(Captchaパッケージ)

フォームに貼り付けるとアイコンだけが表示される非ビジュアルコンポーネントも公開されています。

f:id:TakamiChie:20211218175628p:plain
TUniqueInstance(UniqueInstanceパッケージ)、TPascalTZ(PascalTZパッケージ)

インストールされたコンポーネントはどこへ行く?

インストールされたコンポーネントコンポーネント一覧のどこかのタブに追加されます。

ここが結構厄介で、とりあえずパッケージ制作者が何も指定していない場合はMiscタブに格納されるようですが、まったく違うタブに追加されるものもあるみたい。

表示メニューのコンポーネントメニューから表示されるコンポーネント一覧で名前を探すとかしてみたほうがよさそう。

肝心のコンポーネントの使い方は・・・

だいぶ不明。ぱっと見で何となく分かるTCaptchaLabelとかはわかるけど非ビジュアルコンポーネントとかどう使えば良いのやら・・・。

いちおうコンポーネント一覧のHome pageを見た感じGithubのリンクになってる場合が多いので、そこを見てみるとREADMEに割としっかりとした説明が書かれているパッケージもありそうです。

ドキュメントコメントがないものもあり、ちょっと使いづらい感覚はあるかな・・・。

自分がインストールしていないパッケージを使っているプロジェクトを読み込もうとしたときは

さて、(自分が知っている限り)PythonのpipenvやJavaScriptのnpmのように、コマンド一つで使用しているモジュールなどをダウンロードできるコマンドが存在しないLazarus。

ここで公開されているコンポーネントを使用したプロジェクトを、パッケージをインストールしていない環境で開こうとした場合はどうなるか?

というと、次のようなダイアログが表示され、そのままパッケージをインストールすることができます。

f:id:TakamiChie:20211218180451p:plain
パッケージをインストールするかどうかを聞かれる

なので「なんか面白そうなプログラムのソースコード見つけたけどパッケージがないから使えないよ!」なんてことはとりあえずなさそう(バージョン違いとかどうするんだろう?)。