プログラムは魔法で動いているのではない。

このグループウェア、やっぱり、OS込みでパッケージ売りしたいんだよね。
すべては営業さんのそれから始まった。


当時、私達はグループウェアを作成し、それをお客さんのサーバにインストールして出荷していた。
技術者が出向いて設定するときもあれば、お客様からサーバをお預かりして、セットアップしてお送りするようなこともあった。


それをOS込みでパッケージ売りですと!!


グループウェアPHP + Postgres + Redhat(7.3)の環境だった。
それに独自の設定項目も多数ある。
これをOSのインストーラー込み込みでパッケージ売りとは。


あー、そうなると、OSのインストーラー 、つまり Anaconda の改造が必要になるわけだが、、、


無理?

OSのインストーラーの改造なんてできるわけないぢゃん。



無理?

無理無理。だって、OSのインストーラーだよ!?



本当に無理?

いや、でも面白そうだな



やっぱり無理?

分かりました。とりあえず、やってみます



早速、大好きなdebianredhatのCD imageを持っていって、 mount 。
あとは怪しそうなファイルを片っ端から、 file コマンドで洗っていく。
そんで、 mount できそうな可能性があるファイルを片っ端から mount して中をのぞいていった。

プログラムは何も魔法で動いているわけではない。
そこにあるのは、きちんと理にのっとったコード。それだけだ。

そのため、プログラムは思った通りではなく、コードを書いたとおりに動くのだ
だから、どこかに必ず Anaconda を動作させているコード、またはその断片か、ヒントぐらいあるはずだ。


よく分からないファイルフォーマットとかは、 debian のもっていたパッケージシステムが役に立った。

当時 redhat系には rpmしかなく、 yum なんて便利なものがなかった。
だが、debian系には apt-get / apt-cache があった。
世界中の優れたメンテナーがメンテしてくれる、最強のパッケージシステムがあった。

file コマンドで表示されたヒントを元に apt-cache でパッケージを追いかけまくった。
なんか聞いたこともない、組み込み用?のファイルシステムやらなんやらあったけど、apt-get の前にはたやすく突破できた。
そして、2回ぐらい mount したのち、、mount した奴を再度 mount した中に、それはあった。
ついに pythonのコードが出現したのだ

これだ!!
そのコードに書かれていたエラーメッセージを見て確信した。


それは間違いなく、Anaconda のソースコードだった。
程なくして、gettext で作られた 日本語メッセージも姿を現した。


ここまでくれば無理ゲーから運ゲーぐらいまでに世界が変わる。

まずは、エラーメッセージをちょこっと書き換えて、ビルド? して、VMWare で動作させてみた。
動いた!!



何度も見慣れた Anacondaの画面だが、こそには、先ほど書き換えたメッセージが表示されたのだ。

やった。
ついに、ついに Anaconda の長い尻尾を踏みつけることに成功したのだ。
やっと、彼らと対等にコードで殴れあえる所まで来た。

最初、彼らはとても崇高な存在にみえた
なんといっても、OSインストーラーである。
OSをインストール(産む)するという、受胎告知のような作業を行う神聖なものに見えた。
だが、それはやはり、理の上に構成されたソースコードだったのだ。


ここまでくれば体力勝負。あとは気合と時間の問題だった。

それから一週間ほどで、グループウェアの設定をするためのメニューをAnacondaに追加した。
Anaconda で OSを入れるついでに、グループウェアの設定も行うことができるのだ。
Anaconda は pythonで書かれていて、pythonは今回が初めてだったのでいろいろと大変だったが、なんとか完成させた。


ついでに、グループウェアを動作させるためのカスタムパッケージも作った。
営業戦略とコストの面からも、1 CDでのインストールが望ましかったので、不要なパッケージをばっさり削除して何とか一枚に収めた。


できた
ここに私だけのカスタムLinuxディストリビューションが誕生した。
グループウェアのパッケージ + Anaconda改造という謎の商品が誕生したのだ。



その後、、、、

私はそのプロジェクトを外れた。
RedHat は 7.3 から 8 、9とアップデートしていった。
だけど RedHatの進化にあわせたパッケージアップデートする工数が取れず、さらに、お客様の環境が多種多様で、ベンダーのカスタムraidドライバーがインストール時に必要になってしまったりしたこともあり、、、

そんな問題がいろいろあって、結局 OS込みでのパッケージ販売はなくなってしまった(?)。


だけど、自前のディストリビューションを作り上げた。
Anaconda を改造して自分が好きな設定をさせられた。
と、いうのはエンジニアとして、とても強い誇りになった。


そして、確信した。
プログラムは何も魔法で動いているわけではない。
魔法で動いているプログラムはどこにもないのだ。
そこにあるのは、理にのっとったコードなのだ。それだけなのだ


コードで動いているのならば、私達はエンジニアは、コードを理解し、時にはハックして書き換えて、より面白いものを作ることが可能であると。


この信念は、 SEXYHOOK新潟アクセス修飾子へと続くのだが、それはまた別のお話。

KLab×はてな エンジニア応援ブログコンテスト
Happy Hacking!