1月 引っ越し

ひたすら引っ越しをしていた。もう、荷物の梱包しかしていなかった気がする。そんな中、少しでも日記を書いていたのは、職場への行き帰りの1時間あまりの電車の中。やがて、引っ越しによって「通勤電車の中」というまとまった場所と時間が消失する。

引っ越しで痛感する時代の流れ

引っ越しのため、数年ぶりに実家の私物を片付けた。 

3年間、私物の大半を実家に預けたままになっており、このたびの引っ越しでこれらを実家から撤去する必要に迫られたのだ。 

練馬/中村橋の新居はこれまでの部屋よりも広いとはいえ、やはり容量には限界があるので、すべてを持っていけるわけではない。「片付け」作業とは名ばかりで、実際は「大半を捨てる」作業を意味する。 

ただ、苦痛を伴うであろうこの種の作業が、拍子抜けするほどスムースに済んだ。時間はそれなりに(半日)かかったが、精神的苦痛はそれほどでもなかったのだ。 

もちろん、1人で片付けたのではなく、奥方様や母上、夕方からは帰宅した末弟も手伝ってくれた。自分は「いる!」「いらなーい」とモノを放り投げていただけのような気がする。 

話が脱線してしまった。自分のだらしなさを自慢している場合ではない。その片付け……いや、廃棄の判断基準が時代とともに大幅に変わって驚いたというのがテーマである。 


「いるもの」と「いらないもの」を分けるというのはなかなかにエネルギーを要する作業である。 

「いるもの」の中には「今すぐに必要なもの」と「今はいらないけど将来的に必要かもしれないもの」/「今も将来も使わないが過去にバリバリに使っていたり高価だったため捨てられないもの」といったものが混在しており、それが他人の目には「明らかにガラクタを溺愛している」と映る。この観念的なギャップの擦り合わせ作業(別名:言い訳)がものすごく苦痛だ。 

…………ただ、いざ実際に作業を開始すると、これらの心配は杞憂に終わった。ここ4年あまりの間の技術革新がすごすぎて、「一昔前なら必要だったもの」のほとんどがすっかり「いまでは不要なもの」と化していたからだ。 

たとえば、大量のSCSIケーブル。 

SCSIケーブルといえば、そのピン数や形状や用途や規格に応じて非常にバリエーションに富んだ製品が世に出回っていた。だが、いまや周辺機器の接続はUSBかFireWireですべてこと足りる。PowerBook接続用の30ピンなどという強烈に独自なものは一切いらなくなっていた。 

たとえば、シリアルケーブル。 

主に、モデム(いにしえのインターネット接続手段)やプリンタ環境が激変したことにより、インターネットとの接続にはモデムではなく無線LANが……プリンタもAirMac Extreme経由でUSBプリンタを無線接続するようになった。 

たとえば、オーディオ/ビデオ機器。 

部屋に鎮座まします大型のAVアンプなどというものは、iPod中心のオーディオ聴取スタイルのもとではあまり意味を持たない。かなり気合いの入ったオーディオ機器ならともかく、カジュアルなレベルの製品であれば、そんなものを持っているよりもヘッドホンにお金をかけたほうが利口というものだ。 

たとえば、ビデオソフト。 

Laser Diskを割とたくさん持っていたが、もはや生産中止だしソフトの供給もない。最近は(当然のことながら)DVDしか購入しないし、DVDはPowerBookで見るのが当たり前になり、大型のプロジェクター(二昔前の、それほど解像度はよろしくないもの)もあまり意味がなくなった。 

たとえば、PowerMac 6100。 

かつて、省スペースの処理実行専用機(ロボット)やサーバーとして重宝されたPowerMac 6100だが、言うまでもなく今日においては使いものにならない。これとは比較にならないほど性能がよく、安くて場所をとらないMac miniが存在する以上、このマシンを持ち続けることは懐古趣味以外の何者でもない。 

かくして、「段ボール20箱」という1つの削減努力目標をクリアし、おそらく10箱そこそこに収まってしまった。 

手元に残ったのは、「現在使用するもの」と「大昔に使っていた思い出の品(ポケコンなど)」しかない。ただ、問題は……この「大昔系グッズ(ポケコンなど)」が段ボール3箱分もあることで……将来これをめぐって大規模な家庭内の争乱が起こることは必至である。

PiyoCastその後

PodCastingを拡張して、iTunes Music Store上の試聴曲やローカルのiTunesジュークボックスライブラリ内にある楽曲データをPodCastingの番組内から再生可能にするソフトウェア「PiyoCast」の開発が、PowerBook G4/667のクラッシュ(画面のヒンジが折れたので唯一の開発場所である通勤電車の中で運用できなくなった、、)、および年末年始の風邪によって遅れを見せる中、ようやく「実行環境はMac OS X 10.3.9をサポートしない」「Universal Binaryで提供」という決定により(クラッシュしたPowerBook G4はMac OS X 10.3.9の環境で動いていた)、最終局面を迎えつつある。 

よく考えれば、機能自体はほとんど完成しているのである。もう、βとはいえない完成度にはなっている。 

途中で欲を出してデータフォーマットを変更したり、リバースエンジニアリング対策をやっている間にちょっと時間がかかってしまっていたのだ。AppleScript(正確に言えばXcode+Interface BuilderのAppleScript Studio)でプログラムを作っているので、コンパイル済みScriptをバイナリダンプすれば、なんとなくそれっぽい文字列とかshellを叩いてごにょごにょしている部分などは処理内容が分かってしまう。 

かくして、プログラムが公になる前にそれらの暗号化やら復号化やらデータフォーマットの変更やらを行っていた。 

ほかに、システムのネットワーク設定からProxyサーバの情報を取得しようとして、電車の中でplistファイルと戦っていたのだが、か〜なり面倒で苦戦している。当初はProxyサーバを設定しているような環境には対応しないことを明記すべきか。shellレベルのUnixな世界のツールで何かProxyの設定を取得できたら楽ができそうな気がする今日このごろだ。 

リバースエンジニアリング対策という問題においては、ひとりAppleScript Studioのみが問題になるわけではない。Objective-Cで作ったCocoaアプリだってダンプすればけっこうなことが分かってしまう。 


ここまで作ってみて、AppleScriptのファイルが20本以上、合計行数が2000行は下らないというコード量になってきた。サブルーチンのたぐいはメイン部分から追い出してライブラリ化してあるものの、全体の見通しがえっらく悪くなってきている段階だ。 

この手の「AppleScriptで作成した膨大なプログラムの集合体」アプリケーションというのは、構造的に問題を抱えている。AppleScriptがスクリプト言語であるがゆえに、Mac OS X本体側でバグが出たり仕様の変更が行われると、その影響をモロにかぶってしまうのだ。 

通常のObjective-CやC++で作成したバイナリなら、おおよそのところでOSのバージョンが上がったからといってそんなに気軽に動作が狂ったりするものではない。それが、AppleScriptならあり得るのだ。 

AppleScriptで作ったプログラムは、OS環境のバグ汚染による影響をそのままストレートにかぶってしまうわけで、生き物で例えるなら、皮膚もウロコもないクラゲのような生物のイメージだ。クラゲよりも下等なアメーバとかゾウリムシといえるかもしれない。 

そんなわけで、そーゆー感じの構造の巨大なプログラムを「はい、これがアプリケーションですよ」といって配ることにはもんのすごい勇気が必要になる。Web上でいろいろ配っているが、それもこれも、こういうPiyoCastのような「本気」のアプリケーションの配布を突然行ってトラブルを出さないように、日頃から動作実績を作っておくという点に目的がある。 

で、US Appleの開発チームがOSのアップデートのたびにまいどまいどバグを出してくれるので、プログラムを作る方は戦々恐々といった状態だ。 

もう、開発チームを全員ムチ打ちにしたぐらいでは気が済まないぐらいの勢いで不愉快である。毎回、あのバカどものファッキンな仕事のせいで不利益を被っている。 

そんなことを考え出すと、実に精神衛生上よろしくない。何か有効な対策はないものか、と考えてしまう。 

……で、それを思いついたのだ。まったく関係ない話がそのまま使えることに。 

Unit Testだ! 

いままでに作ったすべてのサブルーチンをUnit Test用アプリにブラ下げて、実行結果が期待どおりかどうかすべてチェックさせるのだ。通常、これはプログラムのバグ抜きを自動で行うために行うものだが……われわれは、これを「Appleがバカをやった場合に足を引っ張られないようにする」ために行うのだ。 

ただ……そのためには、OSのバージョンを固定したUnit Test用専用マシンが必要に(ーー;; 

そこまでかんがえてハタと思うのである。これは、Apple自身が行うべきことではないのか、と。そして、絶対にApple自身はそれを行っていないであろうことも確信するのである。

Proxyが云々というのは、Mac OS Xに標準添付の「URL Access Scritping」では問題にならないのですが、curlを使ってshell経由でダウンロードしたいような場合、curlがシステム側のProxy設定を考慮しないで通信するため、別途Proxyの設定を取得して、curlのオプションとして指定してあげなくてはならないというお話であります。

[メモ]スパーグビル内服液

風邪をひいて連休中は寝込んでいるものの、ヒグチ薬局でコレがオススメだったので飲んでみた。 

…………けっこういいかも。

Copyright by Piyomaru Software, all rights reserved.