前回の続き.今回は頭文字が 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 に採用されています.
今回でやっと半分ぐらい終わりました.次回から後半戦です.