2009年4月30日木曜日

MacPortsのtips: 古いdistfilesをまとめて消す

MacPortsを長く使っていると、古いdistfilesがだんだんたまってくる。ちりも積もればなんとやらで、このディスク容量がバカにならない。
$ du -s /opt/local/var/macports/distfiles/
5900920 /opt/local/var/macports/distfiles/
まめに sudo rm -rf /opt/local/var/macports/distfiles/* とかやればいいわけなんだが、普段意識しないディレクトリなので、すぐ忘れてしまう。気になっていたのだが、ふと、いい解決策を思いついた。

MacPortsにはpseudo-portnamesという仕掛けがある。よく使いそうなport集合をコマンド実行時に展開してくれるというもので、例えば outdated はインストール済みかつ最新版でないport集合を指す。これを使うと、sudo port upgrade outdated と実行すると、最新版がインストールされていないportを全部更新していってくれるわけだ。この辺は man port に書いてある通りである。

思いついたのはここから先である。outdated はport集合なんだから、別に upgrade でなくても適用できる。だから、以下のようなことができる。
sudo port clean --dist outdated
sudo port upgrade outdated
現在最新版でないport集合のdistfiles(が古いdistfilesである)を消し、このport集合をupgradeする。このとき最新版のdistfilesを改めてダウンロードしてくるので、結果として最新版の distfiles だけが残る、というわけである。なお、port clean --dist hoge は通常 /opt/local/var/macports/distfiles/hoge ディレクトリごと消してしまうので、そこは注意が必要かもしれない。

ほかに、マニュアルに書いてある程度の tips として、port -u uninstall はよく使っている。MacPortsでupgradeを行うと、現在インストールされている版をdeactivateした後、最新版をactivateする。したがって、長く使っていると deactivate された版が消されないままたまってくる。これを消してしまうのが port -u uninstall である。

というわけで、日々のMacPortsのメンテナンスルーチンワークは次のようになった。
sudo port sync (時々 sudo port selfupdate)
sudo port clean --dist outdated
sudo port upgrade outdated
sudo port -u uninstall

2009年4月20日月曜日

SGMLとDTD

昨日の話の続きである。

Okitaさんとの話に限らず、TwitterでXMLやHTML関連で話をしていると、SGMLの時代の話は今に伝わっていないのだなあ、と思うことがある。確かに、今のご時世だと、メタマークアップ言語(という呼び方でいいのか?)としてはXMLを知っていれば充分だし、SGML関連の資料は有料のものが多く参照しにくかったりするし、そんなものかなあと思ったりする。

私がXMLに関わり始めたのは、ちょうどXML 1.0がW3C勧告になった直後だったと記憶している。当時はまだSGMLとの過渡期で、SGMLのソフトをXMLに対応させた、なんていう話が結構あって、ある程度はSGMLについても触れる機会があった。せっかくだから、その辺の話を自分の理解している範囲で書き残しておこうと思う。

まずDTDの話から始める。DTDについてはHTMLやXMLでもおなじみだから、説明は特に不要だろう。問題はSGMLでのDTDの位置づけである。SGMLでは、DTDがなければ文書のパースすらできない。この性質は、SGMLベースのHTMLにもそのまま引き継がれている。

例で示すのが簡単だろう。「<p>ほげほげ<p>ふがふが」というHTML記述はどのような文書構造を表しているだろうか。「<p>ほげほげ</p><p>ふがふが</p>」(1) という答が大半だろう。しかし、こうとは限らない。「<p>ほげほげ<p>ふがふが</p></p>」(2) という構造もあり得る。どちらも構造化文書として正しい文書構造である。

(1) は正しくて (2) は間違い、と解釈させるためには、「p要素の内容にp要素が出現することはない」という知識を導入しなければならない。これは内容モデルの記述に他ならず、DTD相当の知識に対応する。つまり、DTD相当の内容モデルの知識がなければ、(1) と (2) のどちらが正しい文書構造か決定できない。

空タグについても同様の問題がある。「<hr><p>アドレス</p><p>コピーライト</p>」は「<hr/><p>アドレス</p><p>コピーライト</p>」なのか、「<hr><p>アドレス</p></hr><p>コピーライト</p>」なのか、「<hr><p>アドレス</p><p>コピーライト</p></hr>」なのか。hr要素の内容モデルに関する知識がなければ、このどれが正しいのかは判断できない。

XMLでは、この2つの問題が改善されている。終了タグの省略は禁止され、開始タグと空タグは構文上明確に区別された。その結果、内容モデルの知識を導入することなく文書のパースをすることが可能となった。いわゆる整形式(well-formed)である。

2009年4月18日土曜日

リンダ リンダ (The Blue Hearts)

リンダリンダ/僕はここに立っているよ
THE BLUE HEARTS
トライエム (2002-02-06)
売り上げランキング: 38916

FMで流れているのを聴いて、突然ちゃんと聴いてみたくなってiTunes Storeで購入。言葉がうまく見つかっていないけど、いい曲やね。

CNET Japanの記事で言及していただいた

昨年の11月頃、Twitter上でMiki Okita さんとHTMLのDOCTYPE宣言中のDTDの記述が省略可能か、話したことがある。Okitaさんが質問をつぶやいておられたので、私なんかが答えていいのかなあと思いながら、HTMLやSGMLの仕様書を見つつお返事をした。XMLならともかく、SGMLについては、村田さん檜山さんみたいに昔から構造化文書に関わっている方々に比べれば全然知識が浅いので、いろいろ仕様書を確認しつつ、嘘がないようにお答えするよう努力したのを覚えている。

そのときOkitaさんは、大変興味深い話なので、いつかブログにまとめたいとおっしゃっていたのだが、昨日その話を書いてくださったようだ。私についても言及してくださっている。

<DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">は実は間違っている?:WebClip - ウェブのニュースと Second Life (セカンドライフ) - CNET Japan

基本的な主張はTwitterでの会話に沿っているから驚きはないのだが、ブラウザのレンダリングから動機付けを行われるあたりは、Webデザインの視点からこの問題をとらえるとこうなるのだなあ、と興味深く読ませていただいた。

ところで、この記事で一番衝撃を受けたのはこの部分だったりする。
!DOCTYPE宣言について、いくつかのHTML解説サイトで「後半部の“http://www.w3.org/TR/html4/loose.dtd”は省略してもよい」と説明されている。
こんな話が流通しているとは思いもよらなかった。XML(XHTML)とSGML(HTML)とでは話が違うとはいえ、システム識別子を省略するという発想は全くなかった。省略してなんかメリットがあるの?と考えてしまうのは、私が構造化文書の視点でHTMLを見ているせいだろうか。システム識別子の省略についてはSGML Catalogという仕様が関係しているのだが、HTMLやブラウザの視点から考えると、単純にSGML Catalogだけで片付く話ではなさそうだ。この辺りはもう少し考えを整理してみたい。Okitaさんはだいぶ言葉を選んで書いておられるなあ、という気がした。

ともあれ、以前のデータベース談義といい今回の件といい、普段は雑然としているタイムラインから、ふとしたきっかけで会話がスパークするのがTwitterの面白いところである。この会話がスパークする瞬間のスピード感がとてもインターネットらしくて、たまらないのである。

シンガーソングライター兼骨董屋

真依子というシンガーソングライターがいる。琴の弾き語りという珍しいスタイルで、歌もどこか懐かしい雰囲気が漂っている。一時期配信されていたPodcastでたまたま知って以来、結構気に入って聴いているアーティストである。魚座で滋賀県出身だそうで、その辺り、自分と妙に共通点があるのも、シンパシーを感じている原因かもしれない。

さて、彼女のブログを読んでいたら、なんと骨董屋の免許をとったと書いていた。本気で開業するつもりらしい。シンガーソングライターと骨董屋という、2足のわらじで活動するわけである。実にユニークだ…でも彼女らしいなあ、と思う。

こういう人はマイナーなまま、ぼちぼちと活動してくれたほうがいい。なんか、京都の裏通りにある、地元民しか知らない美味しいお店みたいな、そんな感じ。

2009年4月12日日曜日

The Sacred Flame (The Cambridge Singers)

The Sacred Flame

ケンブリッジ・シンガーズの新譜かな? ルネッサンスの宗教曲集である。ケンブリッジ・シンガーズはホモフォニックな曲のほうがいいと思う。というわけで、このアルバムでは、曲によって自分的な評価がばらつき気味だった。

ちなみに、iTunes StoreではDRMなし(iTunes Plus)として販売されていた。ケンブリッジ・シンガーズとしては初めてのiTunes Plusかな。

October (U2)

October

iTunes Storeでただいまセール中。900円なら買うでしょ。

多読術(松岡正剛)

多読術 (ちくまプリマー新書)
松岡正剛さんは以前より好きだし、とても興味を惹かれるタイトルだったので、即座に購入、あっという間に読み終えてしまった。参考になる話が多かった。本家ブログでなんか書こうと思っている。

2009年4月11日土曜日

春の陽気に思う

cherry blossoms in Yamashina Station

父の容態が芳しくないということで、大学の仕事をキャンセルしてお見舞いに行ってきた。父が脳梗塞で倒れてからもう5年になる。その後あちこちの病院を転々としており、まだ娘にも会ってもらっていない。せめて娘に会ってもらえるくらいには回復してほしい。そんなことを考えながら、山科でJRを降り、京阪線のホームで列車を待った。

春爛漫、汗ばむほどの陽気である。雲一つない青空に、咲き誇る桜の白がよく映える。葉が見えるので山桜だろうか。やはり山桜は品がある。

そのとき、ふと、周りの空気がとても優しいことに気がついた。自分の体が空気と馴染んでいる感じである。いや、同化していると言うほうが適切かもしれない。春の陽気のせいかとも思ったが、どうもそうではない。

これはなんなのだろう。答が見つからないまま、列車に乗り込み、一駅先の四宮に向かった。

四宮は小学生の頃、スイミングスクールに通うためによく使った駅である。当時のことは全く覚えていないが、なんとなく感慨ぶかい。辺りを見回し、病院への地図に目を落としていると、初老の男性に「病院ですか。この道を少し行かはったらええよ」と声をかけられた。礼を言い、地図の通りに歩き出した。

山科駅のホームの感覚はまだ続いていた。いったいこれはなんなのだろう。

思いを巡らせているとき、突然、言葉がはまった。自分がこの辺りで生まれ育ったからなんだ。だから空気に自分がぴたりとはまったんだ。そう直感した。

岡山に暮らすようになってかなりたつが、ずっと、仮の住まいという気持ちがある。自然は豊かだし、気候も温暖で、暮らすにはいい環境である。しかしそれでもなお、心のどこかで、この地に安住するのを良しとしていないのだ。

機会があれば、関西に戻りたい。春の陽気の中でそう思った。

2009年4月10日金曜日

書
父の入院先の病院に飾ってあった書が素敵だった。たおやかで、とてもいい字である。

2009年4月8日水曜日

Basiaの新譜が出てたなんて

全く偶然に、Basiaの新譜をiTunes Storeで見つけてしまった。ディスプレイの前で思わず声を上げてしまった。まさか、Basiaが新譜を出すなんて!

IT’S THAT GIRL AGAIN
IT’S THAT GIRL AGAIN
posted with amazlet at 09.04.07
バーシア
WHD ENTERTAINMENT(V)(M) (2009-03-11)
売り上げランキング: 4623

Basia - It's That Girl Again

思い返すと、自分で買った初めての洋楽のアルバムはBasiaだったような気がする。それまで邦楽とクラシックと合唱しか聴いてこなかった人だったのに、音楽雑誌のレビューにあった "London Warsaw New York" のジャケットが妙に気になった。何が気になったか。目である。なんか、目の奥深さに引き込まれたのだ。で、買ってみようと思ったわけである。1990年、修士1年の時である。

London Warsaw New York
London Warsaw New York
posted with amazlet at 09.04.07
Basia
Sony (1990-02-15)
売り上げランキング: 74066

CDをセットして再生するや、1曲目の "Cruising for Bruising" に完全にやられた。夜にとても似合う、ブルージーな大人の音楽、でもシニカルにならずポップさを保っている音楽。とにかく理屈抜きにこの曲が好きだった。

後で分かってきたことだが、この "Cruising for Bruising" はBasiaの曲としては異色な部類に入る。もともと Matt Bianco というお洒落ラテン系(と勝手に名付けてしまう)のユニットのボーカルで、そのメンバーだった Danny White と Matt Bianco を脱退してソロ活動を始めたようだ。そのせいか、基本的に Basia のサウンドはラテン系の色が強い。今でこそラテン系の曲も気に入って聴いているものの、当時はそうでもなかったから、他のアルバムを最初に聴いていたら、あるいは "Cruising for Bruising" が1曲目でなかったら、果たしてどこまで好きになっていたか。もっと言えば、どこまで洋楽を聴くようになっていたか。

貴重な偶然の出会いだった、と、今にして思うのである。

さて、今回の新譜だが、相変わらずのDanny Whiteのサウンド、お洒落ラテン系のサウンドにBasiaの力強いヴォーカルで、期待は裏切られなかった。Basiaももう50代のはずだが、それでもこれだけのヴォーカルを聴かせてくれたことで、割と満足である。何年かに一度、こんなアルバムで元気なところを見せてくれたら、それでいい。

YouTubeに "Cruising for Bruising" のプロモーションビデオらしき映像があったので、貼っておこう。映像のほうはなんか疑問符がつく出来なので、目をつぶって聞くといいかもしれない…

2009年4月7日火曜日

優れもののステープルリムーバ、はりトルPro

はりトルPro

最近Twitterで2回紹介することがあって、案外知られていないんだなあと思ったので、紹介してみる。はりトルProというステープルリムーバである。ホッチキスを外す道具と言ったほうが分かりやすいかもしれない。

ホッチキスは留めるときは便利なのだけど、外すときには結構難儀するものである。手で外すと怪我しそうだし、金属だから簡単には外れない。最近書類をせっせとスキャンするようになって、ますますホッチキスを外す機会が増えている。というわけで、ステープルリムーバなる道具はこれまでいろいろ試してきた。その中で最強だと思ったのが、はりトルProである。

どうやって動くかは、文章で長々と説明するより、図で見てもらったほうが早いだろう。というわけで、手書きの図を書いてみた。針の真ん中をプレス機みたいな金属で押し込んで、針を曲げてしまうのだ。で、曲げた針をそのまま引き抜く、というわけである。原理はとっても簡単なのだが、サイズその他がいろいろ計算されているのだろう、おもしろいように針が取れる。

しかも、こんな風に動く道具なので、ホッチキスのサイズや種類によらず針が取れるし、中綴じのホッチキスでも問題なく取れる。道具としての作りも非常にしっかりしており、留められている紙の枚数が多い場合でも、針の頑丈さに負けてしまうことはない。

こんなによくできた道具なのに、値段は400円程度である。極めてお得である。私は職場と自宅に1台ずつ置いてあるが、入手できなくなる可能性を考えていくつか買い置きをしようかとも考えている。それくらい優れものの道具である。

2009年4月1日水曜日

ScanSnapとEvernoteを連動させる

mehoriさんがtwitterで「ScanSnapで取り込んだ書類をEvernoteに放り込む」という趣旨のつぶやきを書いておられた。こういうことができるのは前から知っていたのだが、なんか気になったので、改めて自分で試してみたところ、なかなか快適なのである。

ScanSnapは改めて紹介するまでもないだろう。書類のデジタル化にはなくてはならない道具で、私は職場と自宅それぞれに導入して、日々発生する紙書類をせっせと取り込んでは紙を捨てる、という作業をしている。

さて、そういう作業を日々やっていると、職場と自宅で書類の共有をどうしようか、という問題に突き当たる。検討すべきポイントはいくつかある。
  1. 画像なので、ファイルサイズが大きくなりがち
  2. 検索をどうするか。Adobe AcrobatのOCR機能を使って、取り込んだ書類をその都度検索可能にするという方法もあるが、OCRに結構時間がかかるので、日々デジタル化を行うということを考えるとあまりやりたくない。
  3. 日常的に発生する作業なので、なるべく従来の作業の流れを乱さないように解決したい
例えば、文具王こと高梨正幸氏は、(1) 持ち運び可能な外付HDDにファイルを溜め込む (2) 画像で取り込んで iPhoto で眺める、という解決策を実践しておられる。興味深い解決策で、私も (2) はアイデアを借用しているのだけど、自分にとっては最善の解決策とは言い難い。すなわち、デジタル化して原本を捨ててしまうわけだから、そのファイル、もしくはファイルを格納しているメディアの紛失や損傷によるダメージは極めて大きくなる。そう考えると、(1) のように、デジタル化したファイルを1ヶ所に集めるというのはリスクが大きい。また、高梨氏のスキャン対象は文具のカタログが多いようで、視覚的な検索が割と有効であるように思われるが、自分のスキャン対象は書類や論文誌といったものが中心で、視覚的な検索があまり有効でない。

で、Evernote、というわけである。この3つのポイントの全てを解決できるわけではないのだけど、なかなかいい解決策だなあ、と思ったのである。ScanSnapの動作を制御するScanSnap Managerには、スキャン後に起動するアプリケーションを登録しておく機能がある。ここにEvernoteを登録しておく。すると、EvernoteはスキャンしたPDFを添付した新しいノートを作成してくれる。自然な作業の流れで、Evernoteへの登録が完了するわけである。Evernoteでは、複数ページのPDFを添付すると全てのページを順に埋め込んで表示してくれるから、視認性もまあまあよい。検索についても、Evernoteは画像を自動的にOCRして検索可能にしてくれる。日本語のOCR機能はまだ充分でないけど、これはいずれ解決されるかもしれない、と楽観的に構えておくことにする。


もっとも、Evernoteで完全に解決、というわけではない。Evernoteには転送容量などの制限がある。私は有料のPremium会員になっているけれど、それでも1ヶ月あたり400MBの転送容量制限があるし、1つのノートに添付できるファイル容量に25MBの制限があるようだ。というわけで、Evernoteに放り込むのは150dpi(ノーマル画質)で問題ないもの、具体的にはレシートや領収書、事務書類などが中心になっている。雑誌や論文誌丸ごとスキャン(こういうものは、文字がつぶれると役に立たないので、200dpiもしくは300dpiでスキャンしている)の場合には、Evernoteではなく、MobileMeのiDiskを利用している。サービス開始当初に比べればMobileMeのファイル同期もだいぶ安定してきているようで、一応実用的に使えている。

まあいろいろ問題はあるものの、職場と自宅でデジタル化した書類を共有できるメリットは大きい。また、気が向いたらすぐにデジタル化しておけるというのも、精神衛生上よい。「レシートだから、とりあえず財布に入れておいて、自宅でスキャンするか」という先延ばしをしなくて済む。私はものぐさな人なので、先延ばしをしたらどんどんめんどくさくなっていく。この「先延ばし防止効果」が、実は一番ありがたかったりするかもしれない。