Possible mission

20年以上も前に作られた「ある」システムの「ある」部分を作り直せとの命令が下った。ここで最初の難敵は「ビッグエンディアンなバイナリファイル×多数」。要はその当時のMotorolaな処理系(弔)がファイルに吐き出したCの構造体で、これをそのまま最新のリトルエンディアンな環境で編集せよというのである。

このような「どこの誰がいつ作ったのかわからんフォーマットへの後方互換」は、いちばんやりたくないところだが仕方ない。最初はそこ(読み書き)だけCで書いてPythonから呼ぼうかとも思ったが、エンディアンの整合を考えただけでウンザリ。何かいい手はないか? と調べていて行き着いたのがctypes.BigEndianStructure。こいつで構造体のメンバーを定義してインスタンスを作れば、エンディアンの違いを(殆ど)意識する事なくプログラミングができる。名称からしてそのものズバリな、こういうのをハナから使えるところはさすがPythonである。

ただ、だがしかし …

こういうのって、そもそもエンディアンの意味とCの構造体とが理解できてなきゃ無理=「書く」手間より「読む」手間の方がかかる。なので、Cプログラミングの経験のない若者には敷居が高い。するとやはり、このワタクシを始めとする「Cで稼いできた旧きエンジニア」ならではの仕事なのかなあ、と思うと複雑な心境。俺もビッグエンディアンと共に絶滅種入りか? … おおコワ!