前回の続き。今回は頭文字がLのものばかりです。もっというとlibナンチャラ という名前のフォーミュラばかりなので、ほとんどがライブラリということになります。ほとんどが直接使うことのないものなので、よくわからないことだらけです。ほぼ「ググればわかる」ことしか書いていないですが、もはや自分用のメモ程度のつもりで書いています。
latexml
- LaTeX to XML/HTML/MathML Converter
- https://dlmf.nist.gov/LaTeXML/
LaTeXMLはLaTeXドキュメントをXMLやHTMLに変換するためのツールです。数式部分は (Content) MathMLに変換されます。Perl製でかなり気合の入った作りになっており、ある程度TeX言語をTeXエンジンのように処理することができます。ただし、もちろんTeXエンジンそのものを搭載しているわけではないので、一部の処理はアドホックであったり、完全にはTeX互換でなかったりします。pTeX系列には厳密には対応していないので、日本語LaTeX文書に対しては騙し騙し利用することになります。pTeX対応のためにどうしても場当たり的な対処が必要で、筆者が機能追加の提案 (issue #1120)をしたこともあります。
ところで、インストール時の注意点ですが、LaTeXMLはHomebrewでは素直には入りません。cpanmを使って依存Perlモジュールをさらに個別導入するなどの追加措置が必要です。手許では、そのPerlモジュールのすんなりとは入らず、ビルドに失敗するものがありました。Makefileを少し改変してlibxml2のパス位置を手動で設定した記憶があります。最新情報はLaTeXML開発元のWikiを参照してください。
leptonica
- Image processing and image analysis library
- http://www.leptonica.org/
教育目的で開発された画像処理・画像解析ライブラリのようです。オープンソースのOCR実装Tesseractが依存しているために導入する人が多いようです。
libde265
- Open h.265 video codec implementation
- https://github.com/strukturag/libde265
H.265ビデオコーデックのオープンソース実装ようです。そもそも「コーデック」というのはcode/decodeが由来なのですね。Imagemagickが利用しているようです。
libev
- Asynchronous event library
- http://software.schmorp.de/pkg/libev.html
高機能なイベントループライブラリのようです。次に出てくるlibeventに対して後発だと公式サイトに説明がありました。curlやwiresharkなどネットワーク系のソフトウェアが採用しています。
libevent
- Asynchronous event library
- https://libevent.org/
同じくイベントループライブラリで、名だたる多くのプロジェクトに採用されています。Homebrewでインストールしているものではありませんが、ChromiumやTorでも使われているようです。
libewf
- Library for support of the Expert Witness Compression Format
- https://github.com/libyal/libewf
Expert Witness Compression Format (EWF) というフォレンジック用の画像形式を取り扱うライブラリのようです。手許ではsleuthkitというフォレンジックツールが利用していました。EWFについては同ライブラリのリポジトリ内にドキュメントが含まれています。
libffi
- Portable Foreign Function Interface library
- https://sourceware.org/libffi/
FFIのためのライブラリです。FFIというのはForeign Function Interfaceの略語で、あるプログラミング言語から別の言語の機能(関数)を呼び出して使用することを言います。このライブラリは、様々な状況でその呼び出しをサポートするための低レベルAPIを提供するもののようです。PythonやRubyの公式実装をはじめ、幅広く利用されているもののようです。
libgcrypt
- Cryptographic library based on the code from GnuPG
- https://gnupg.org/related_software/libgcrypt/
GnuPGのコードをベースとする各種の暗号アルゴリズム実装ライブラリのようです。具体的に対応しているアルゴリズムは対称暗号・ハッシュ関数・公開鍵暗号など多岐にわたり、その一覧は公式サイトに掲載されています。
libgpg-error
- Common error values for all GnuPG components
- https://www.gnupg.org/related_software/libgpg-error/
上記libgcryptはGnuPGとは独立にライブラリとして利用できるものですが、そのエラーハンドリングにはこのlibgpg-errorを利用する必要があるようです。
libheif
- ISO/IEC 23008-12:2017 HEIF file format decoder and encoder
- https://www.libde265.org/
HEIFというのは比較的最近になってAppleがiOSで標準形式として採用したことにより有名になった画像圧縮形式です。JPEG形式と比べて約半分のサイズで同等の画質の画像を保存できるとされているそうです。先述のlibde265と同じ開発元により提供されています。
libiconv
- Conversion library
- https://www.gnu.org/software/libiconv/
変換 (conversion) ライブラリと言われても漠然としていますが、ここでは「文字コード変換」のことを指しているようです。現代では、多くの場面では文字エンコーディングにはUnicodeが使われるのが一般的になってきましたが、歴史的事情により、そうでないものも色々とあります。このGNUなライブラリは、かなり多様なエンコード方式に対応した変換ライブラリのようです。日本語についてもEUC-JP, Shift_JIS, CP932, ISO-2022-JPなどよく目にする(あるいはかつてよく目にした)形式が軒並みサポートされています。
libidn
- International domain name library
- https://www.gnu.org/software/libidn/
国際化されたドメイン名をエンコード・デコードするためのライブラリです。伝統的なドメイン名はASCII範囲の文字のみが用いられますが、Unicode範囲に拡張されたものが国際化ドメインです。近年実際に見られるようになってきた「日本語ドメイン」などは、その具体的な利用事例ということになるのでしょう。このライブラリは具体的にはStringgrepと呼ばれる「国際化文字列の前処理」規格 (RFC 3454)、Punycodeという国際化ドメインで用いられる文字符号化方式 (RFC 3492)、およびIDNA 2003という「アプリケーションにおけるドメイン名の国際化」規格の最初のバージョン (RFC 3490) を実装したものです。
libidn2
- International domain name library (IDNA2008, Punycode and TR46)
- https://www.gnu.org/software/libidn/#libidn2
その名の通りlibidnの後継で、より新しい規格であるIDNA 2008を実装しているようです。
liblbfgs
- libLBFGS: a library of Limited-memory Broyden-Fletcher-Goldfarb-Shanno (L-BFGS)
- http://www.chokkan.org/software/liblbfgs
CRFsuiteの実装に用いられている、同開発者によるL-BFGS実装です。BFGS法というのは山登り法の一種で、非制限非線形最適化問題を解くアルゴリズムだそうです。
libmaxminddb
- C library for the MaxMind DB file format
- https://github.com/maxmind/libmaxminddb
MaxMind DBという形式のデータベースファイルを読むためのCライブラリのようです。MaxMind DBというのはIPアドレスデータベースに最適化されたMaxMind社独自のバイナリ形式のようです。同社はGeoIP2データベースを提供しており、この独自形式およびライブラリもこのデータベースのために開発されたもののようです。
libmetalink
- C library to parse Metalink XML files
- https://launchpad.net/libmetalink/
Metalink XMLというものをパースするライブラリだそうです。Metalinkというのはダウンロードすべきファイルの場所を列挙するための仕様のようで、具体的にはユーザの設定(ロケールなど?)に適したファイルの情報や、ミラーURIの一覧、ファイル検証用のハッシュ値といった情報を記述するもののようです。curlで利用されています。
libmpc
- C library for the arithmetic of high precision complex numbers
- http://www.multiprecision.org/mpc/
高精度複素数の算術処理を行うGNU傘下のプロジェクトです。これを利用すると、float型やdouble型を超えて(マシンリソースの許す範囲で)任意のビット数をもつ変数を定義できるようです。また丸め処理な豊富なことも特徴として上げられています。このライブラリはgccで利用されています。
libomp
- LLVM’s OpenMP runtime library
- https://openmp.llvm.org/
LLVMの配下にあるプロジェクトで、OpenMPプログラムを作成するために必要な機能を提供するライブラリのようです。OpenMPというのは並列計算のためのAPIのひとつで、現在広く用いられています。MPIと比較すると一長一短のようです。
libpng
- Library for manipulating PNG images
- http://www.libpng.org/pub/png/libpng.html
PNG形式の画像を扱うためのライブラリです。どうやら規格者による公式リファレンス実装のようです。PNG仕様のほとんどすべてをサポートしており、長年の使用実績もあることから、様々なプロジェクトで採用されています。
libpq
- Postgres C API library
- https://www.postgresql.org/docs/12/libpq.html
関係データベースPostgreSQLのためのAPIを提供するライブラリです。PostgreSQL本家に同梱されているもののようです。
libsmi
- Library to Access SMI MIB Information
- https://www.ibr.cs.tu-bs.de/projects/libsmi/
SMI MIB情報にアクセスするためのライブラリです。SMI MIB情報というのは、通信ネットワーク内のデバイスを管理するための各種情報のことのようです。
libsodium
- NaCl networking and cryptography library
- https://libsodium.org/
PHP 7.2から導入された、比較的新しい暗号処理ライブラリです。クロスプラットフォームであること、ライセンスが緩いこと、開発が活発であること、あたりが特徴として挙げられるようです。
libspiro
- Library to simplify the drawing of curves
- https://github.com/fontforge/libspiro
美しい曲線を簡単に描くためのライブラリだそうです。FontForgeのために書かれたものだと思われます。コンピュータ上の曲線と言えばベジェ曲線がまず思い浮かびますが、このライブラリではクロソイド曲線というものを採用しているようです。
libssh
- C library SSHv1/SSHv2 client and server protocols
- https://www.libssh.org/
SSHv1/v2に準拠したクライアント・サーバのオープンソース実装です。OpenSSHと比べるとマイナーなイメージがありますが、GitHub社などが利用しているようです。
libssh2
- C library implementing the SSH2 protocol
- https://libssh2.org/
名前からするとlibsshの新バージョンのようですが、まったくの別プロジェクトだそうです。libsshと異なり、こちらはクライアント側のみの実装のようです。curlに採用されています。
今回でやっと半分ぐらい終わりました。次回から後半戦です。