近藤うちお
udzura
このライトニングトークは、Perlの「バイナリデータの操作」という、一見地味な機能に焦点を当てます。
Perlは、その起源から「テキストもバイナリもバイト列」として柔軟に扱う文化を持ち、古くからバイナリ操作の領域で信頼されてきました。その中でも特に重要な pack / unpack 関数は、ソースコードを辿ると1989年リリースのPerl 3.0で登場したそうです。以来、 pack / unpack の強力な機能を駆使することは、バイナリハックの基本的技術と見做されてきました(要出典)。
また、Perlの pack / unpack は他の言語実装にも影響を与えました。Rubyの場合は Array#pack と String#unpack というメソッドとしてポートされ、なんとバージョン1.0より前の段階(当時のChangeLogによると1994年)から実装されています。そしてこちらも多くのRubyプログラムで利用されています。 もちろんPythonやPHPにも同名の関数が存在します。 pack / unpack というニッチな機能で色々な言語が繋がっているのは興味深くありませんか?
ということでこのトークではそんな魅力的な pack / unpack 関数について、Rubyistの立場から、後輩であるRubyの Array#pack / String#unpack と比較しつつ解説します。多面的に pack / unpack を理解することで、「バイナリパック」の世界に足を踏み入れましょう!