しろもじメモランダム

文字についてあれこれと。

Python パッケージとして再構成された AFDKO 2.7 がリリース

AFDKO の新バージョン 2.7.0 が先週リリースされました。AFDKO は、フォント開発のための Adobeコマンドラインツール集です。

github.com

Python パッケージ化

今回の大きな変更点は、AFDKO の中身がひとつの Python パッケージへと、がらっと再構成された点です。

The AFDKO has been restructured so that it can be installed as a Python package. It now depends on the user's Python interpreter, and no longer contains its own Python interpreter.

https://github.com/adobe-type-tools/afdko/tree/2.7.0#major-changes

すでに PyPIafdko パッケージがアップロードされていますので、普段の Python パッケージと同じく、以下のコマンドでインストールすることができます。

$ pip install afdko

従来(2.5 まで)の AFDKO は、スクリプトやバイナリ等が Python インタプリタとともに ZIP で固められて配布されており、AFDKO 中の Python スクリプトは、必ずこのインタプリタを使って実行されるようになっていました。また、これを実現するためにインストール方法やパスの管理が独自のものになっており、少々扱いづらい面がありました。

Python パッケージへの再構成作業は2017年末ごろからスタートし、ベータ期間(2.6 がこれに相当)を経て、今回の 2.7.0 をもってめでたく正式リリースとなったようです。この Python パッケージ化によって、以下のようなメリットが享受できそうです。

  • インストール/アンインストール/更新が、おなじみの pip で行えるようになる
  • バージョンの固定や切り替えが容易になる
  • 他の Python パッケージと組み合わせて使いやすくなる
  • パッケージのビルド方法やテスト方法が整備・明文化される

AFDKO 開発の盛り上がり

AFDKO の開発は、Adobe のエンジニアが中心となって進められていますが、昨年まではあまり活発には見えませんでした。バリアブルフォントへの対応などは進められていたようですが、発展著しい fontTools などと比べてしまうと、地味な印象がありました。また、AFDKO には

  • コードの可読性が低い
  • テストがほどんどない
  • 古い C のコードが多い
  • バグ報告やプルリクエストがなかなか対応されない
  • バグがあっても自分では直しにくい
  • Python 2

などのつらい面も多々あり、個人的にはここ数年、fontTools の方を利用する機会が圧倒的に多くなっていました。

しかしながら、昨秋ごろから開発が加速し、現在に至るまで活発な状態が続いています。

内容としては、コードのリファクタリングやテスト・CIの整備といった基礎的な部分の改善が大きくなっており、前述の Python パッケージ化も、その流れの中で実施されたように見えます。Python 3 をサポートするための作業も始まり、明るい未来が見えてきた感じがします。

期待を込めつつ、これからも引き続き AFDKO の動きに注目していこうと思います。