私の Homebrew カタログ (6)

2022-04-11  #macOS 

前回の続き.

当ブログのさまざまな企画の中で,この連載に限ってはどうにも敬体だと文章が書き辛いことに気が付きました.おそらく,これが唯一それほど自分が詳しくないものについて公式ドキュメントやウェブ上の文献を調査することによってのみ得られる知識を簡潔にまとめたに過ぎないものだからでしょう.というわけで,唐突ながら今回からこの連載については常体で記述していくことにします.過去のブログ記事を文体変更のみのために更新する予定はありません.

m4

m4 は汎用のテキストマクロプロセッサ.マクロ言語なので,基本的なアイデアとしては TeX 言語と似たようなものだと考えられる.実際,テキスト置換が主たる機能とされている.マクロを処理するプリプロセッサと聞くと C 言語のマクロを思い起こすが,m4 はちょうどそれを汎用にしたようなもので,プログラミング言語に対する前処理のみならず自然言語の定型文生成などの用途に用いられる場合もあるらしい.なお大方の予想に違わずチューリング完全とのこと.

現代においては中核的な利用先は autoconf のようで,具体的には Makefile を生成する実行ファイル configure の生成元である configure.in で m4 マクロが多用されているらしい.

mbedtls

Mbed TLS という名の示す通り,組み込みに適することを売りとする X.509 証明書,SSL/TLS,DTLS プロトコルの実装(C ライブラリ).昔は Polar SSL という名前だったらしい.

Homebrew フォーミュラの homepage 情報は更新されていないが,現在は開発元が移管されており,2022年3月現在公式ウェブサイトは以下に移動している.

組み込み用ということで GitHub リポジトリの概要欄でも「オープンソースで,ポータブルで,利用が簡単で,可読性が高く,柔軟な SSL ライブラリ」と謳われている.また対応するプラットフォームが多く,Linux, Windows, macOS はもちろん Android や iOS もサポート対象となっている.

md4c

高速な C 言語 Markdown パーサ.よく知られているように Markdown にはさまざまな方言があるが,このパーサは CommonMark に準拠しているらしい.SAX に似たインターフェースとのことだが,ここで SAX とは Simple API for XML のことだろうか.

Poppler に採用されている.また md4c をベースに WebAssembly に移植されている markdown-wasm というプロジェクトも存在する.これはかなり高速と評判のようだ.

mecab

デファクト・スタンダードな日本語の形態素解析器.標準的な辞書(IPA 辞書)だけでなく,用途や好みに合わせてさまざまな辞書と組み合わせて利用できるのが特徴.またその C++ 実装は高速化のためにさまざまな工夫が凝らされているらしく,とにかく動作が高速.代替の形態素解析器は色々あるが,速度だけを理由としても MeCab を選択することになりがちである.

mecab-ipadic

MeCab で読み込み可能な形式に変換された IPA 辞書.古い IPA コーパスから作られたので「IPA 辞書」と呼ばれているらしい.品詞ラベルが学校文法の体系にかなり近いため利用しやすいとされている.一方で,IPA 辞書を用いて分かち書きを行うと,特定の事例で単語分割が妙なことになる問題が知られている.

mpdecimal

十進多倍長演算をサポートする C/C++ ライブラリ.Python の decimal モジュールに採用されている.

mpfr

GNU MPFR は多倍長浮動小数点計算用のCライブラリ.「丸め」に重きを置いたプロジェクトで,サポートされている複数の丸めモードを選択できるらしい.GCC に採用されているほか,Julia・MATLAB・Maple 等の科学計算関連で特に有名なプロジェクトでも利用されている.

myman

コンソールで遊べるパックマン風のミニゲーム.

myman

ncurses

ターミナル非依存的にテキストベース UI を構築するためのライブラリ.GNU プロジェクトの一環として開発されているが,ライセンスは MIT に近いものが採用されている模様.htop, vim, zsh などが利用している.

nettle

汎用的な低レベル暗号ライブラリ.GnuTLS に採用されている.

ninvaders

超有名アーケードゲーム『スペースインベーダー』のターミナル版クローン.ncurses を利用した TUI で遊ぶことができる.ライセンスは GPLv2.

ninvaders

ちなみにスペースインベーダーはかなり難易度の高いゲームだが,名古屋撃ちなどとして知られる攻略法を用いるとゲームオーバーにならずに長時間遊ぶことができるらしい.私が学部時代にお世話になった大学教授なども若い頃はこれの攻略にはまっていたと聞いたことがある.

nkf

種々の文字コードや改行コードを相互変換する.入力の文字コード等は(ヒューリスティクスにより?)自動判別される.Network Kanji Filter という名称からもわかるように,少なくとも起源としては日本ローカルなツール.初版は富士通の名で1987年に公開されており,歴史が長い.

node

Node.js は V8 エンジン上に構築されたサーバサイド Javascript 実行環境.そのパッケージマネージャが npm.

npth

GnuPG で用いられている非プリエンプティブなスレッドライブラリ.GNU Pth の後継.メーリングリストに投稿されている経緯説明によると,GNU Pth が Windows に対応できないことから開発が始まったらしい.ライブラリとして GnuPG とは独立して存在しているが,少なくとも Homebrew-core に登録のあるフォーミュラの範囲では他では使用されていないようだ.

nspr

Netscape Portable Runtime (NSPR) は Mozilla が開発するプラットフォーム非依存の libc 風ライブラリ.上記のフォーミュラに Homepage として登録のある URL はソースコードリポジトリのもので,ドキュメントは以下のアドレスにある:

もともと Java を種々の環境に移植するため,OS などの環境の違いを吸収するために開発が始まったものらしい.スレッド・I/O・時間管理・メモリ管理・共有ライブラリのリンクなどの機能を備える.Firefox をはじめとする Mozilla 製品だけでなく Poppler などでも利用されている.

nss

Network Security Services (NSS) も Mozilla 発のライブラリで,セキュア通信を必要とするアプリケーション用の機能を提供する.最新のドキュメントは以下で閲覧可:

先述の nspr に依存している.Firefox はもちろん,一部プラットフォームでは Google Chrome でも利用されているらしい.

numpy

言わずと知れた Python の数値計算ライブラリ.普通は pip でインストールするので Homebrew の出番はないが,Python 製コマンドラインツールなどをインストールする際に依存関係として入ってきている.

ocaml

特定の界隈では大人気の強く型付けされた(静的型の)関数型プログラミング言語.この言語で書かれた有名プロダクトとしては定理証明支援システム Coq や次世代組版システム SATySFi が挙げられる.

入門書としては五十嵐淳『プログラミング in OCaml』を薦められ,私はこれを読んで勉強した.私の興味範囲においてはあまり有益な利用場面がなく,残念ながら実用したことはない.

ocaml-zarith

OCaml の算術・論理演算ライブラリ.Coq が依存している.実装は GMP ベースで高速らしい.

oniguruma

鬼車 (Oniguruma) は正規表現ライブラリ.正規表現オブジェクトごとに異なる文字コードを指定できることを特徴とする.

かつて Ruby で採用されていた.現在の Ruby はフォークプロジェクトの鬼雲 (Onigmo) が利用されている.Ruby 以外にも PHP や Atom,Tera Term,jq などでの採用実績がある.

opam

OCaml のパッケージマネージャ.もちろん実装も OCaml.

openblas

BLAS (Basic Linear Algebra Subprograms) というのは線形演算の API 仕様群らしい.Level 1(スカラ・ベクトル演算),Level 2(ベクトル・行列演算),Level 3(行列・行列演算)に分かれている.OpenBLAS はオープンソースの最適化された BLAS 実装の1つ.GotoBLAS から派生したものらしい.NumPy など数多くのプロジェクトで採用されている.

opencore-amr

Adaptive Multi-Rate (AMR) という音声コーデックを扱うライブラリ.Android のマルチメディア対応は初期の頃から PacketVideo 社の OpenCORE フレームワークというものが使われていたようで,このライブラリはその一部.ffmpeg が利用しているらしい.

openexr

OpenEXR はプロ向けのラスタイメージ形式で,CG 業界などで広く使われているものらしい.その仕様は Open という語が表すように上記ウェブサイトで詳細に公開されている.このフォーミュラが提供するのはその標準実装ライブラリで,C++ 製である.ImageMagick や OpenCV に利用されている.

openjpeg

JPEG 2000 形式のエンコード・デコードを扱うオープンソースライブラリ.別の実装として JasPer などがあるが,こちらの方が JPEG 2000 仕様に忠実らしい.ImageMagick ではかつて JasPer が使われていたが,現在はこのライブラリが利用されている.実装は C 言語.

次回もそのうち.