萌ディタ+SleipnirでCSSリロードをやってみた

Shibuya.jsでのmalaさんの発表をみて、萌ディタSleipnirをやってみようかと思った。同じことをやろうとしたのだけれど、面倒臭がりなので、萌ディタ内で済ませてしまった。本家のブログはまだ「あとで書く」の状態だけど、ブックマークレット使ってとかあったので、実際にはどうやっているのか楽しみ。とりあえず、それっぽい動きはできたので、以下手順。
まずは、萌ディタから。萌ディタのscriptディレクトリ内にある「srcfile.javascript.txt」を開いて

addClass(new class_srcfile());

の上部に以下を追記する。

f.onSave = function() {
var pnir   = new ActiveXObject("Sleipnir.API");
var tabid  = pnir.GetDocumentID(pnir.ActiveIndex);
var window = pnir.GetWindowObject(tabid);
var links = window.document.getElementsByTagName("link");
for (var i = 0; i < links.length; i++) {
var link = links[i];
if (link.href == App.Buffer.FileName) {
link.href = App.Buffer.FileName;
return;
}
}
var heads = window.document.getElementsByTagName("head");
var linkTag = window.document.createElement("link");
linkTag.setAttribute("href", App.Buffer.FileName);
linkTag.setAttribute("rel", "stylesheet");
linkTag.setAttribute("type", "text/css");
heads[0].appendChild(linkTag);
}

萌ディタ自体の設定としては『書式 -> むずかしい設定 -> スクリプト』で「srcfile.javascript.txt」と「css.javascript.txt」を追加して、『書式 -> スクリプトを有効』を選択する。
Sleipnirの設定は『ツール -> Sleipnirオプション -> 全般 -> スクリプトによるクライアントの操作を許可する』をチェックすれば良い。
あとは萌ディタで.cssなファイルをローカルに保存すればSlepipnirのアクティブタブにCSSが適用される。headタグがあることが前提とか結構雑な作りだけど、これだけでも結構心地良いツールだなと思う。でも、本家はもっと良い感じにやってるんだろうなぁ。

Shibuya.js ライブレポート

プレゼン内容のレポートはそれなりに参加者から挙がってくるだろうと考えると、同じように書いても芸がないので、ライブレポート風に書いてみる。
とりあえず、参加できて良かったのが、カンファレンス終了後すぐに近くに座っていた人が(自分の着ていた)新居昭乃Tシャツにツッコミを入れてくれたこと。あとは、nipotanさんとか色々な人と名刺交換できたのも良かったかなぁ。まぁさておき、レポートを書きますか。

18:40頃、会場に入場した。スピーカーの人は既に(mala氏以外)右奥の席で待機している。意外に会場は静かだった。席はそこまで詰め詰めではなく、前から4列目に座ることができた。スーツ姿の人はほとんどいなく、女性の姿もほとんどなかった。
開始10分前ともなると会場も少しザワザワとしてきた。スピーカーのプロジェクタ接続の端末チェックも一通り終わり、naoya氏がShibuya.jsのページを映し待機する。mala氏も席に着いたようだ。
開始5分前、デジハリから少し勉強会に協力してくれるような人材を探しているといった趣向の説明があったが、開口一番、「本日ははてなさんのカンファレンス」という発言に会場から笑いがあがった。
19:00定刻、naoya氏が喋り始めたときに、パラパラとした拍手からフェードインして会場より拍手。いよいよ、Shibuya.jsの始まりだ。
5分程ではてなの開発環境を説明し、後は本人自身の開発環境の紹介。Dire-dやxkeymacsなど宮川さんから教わったなど、Emacsの魅力を語る。キーバインドも独自でいろいろ決めているとの話で、Emacsデフォルトのキーバインドを言い間違えたところ、スピーカー席の宮川氏から違うと指摘があったりで、特に堅苦しい雰囲気もないまま19:25には質問を含め終了した。
19:25、naoya氏のときと同様にフェードインの拍手とともにmala氏が話し始める。始まった瞬間からどうも思ったサイズでプロジェクタに出力されていなかったようで、最初の数分はあれこれノートPCをいじる。たまに見える未読10000件のRSSが会場に笑いを誘う。最初はキーボードやマウスなどハードウェアの紹介があったが、当然、萌ディタに落ち着く流れとなる。後半はAutoHotkeyであれこれやるという話と、CSSリロードの話がメインだ。「RubyWEBrickのためにある」や「.NETやVBの小物ツールはAutoHotkeyでできる」などの発言を展開しながら、最終的にIEの気持ちが解ればJavaScriptのアラートデバッグが十分というところに落として終了した。
19:50、お次はsecondlife氏だ。流石に聴衆も慣れたのか普通の拍手で始まった。色々と自分の心地良いツールを紹介していくが、かなり速いペースだったのでメモが追いつかない。ブラウザはfubが良いようだ。mala氏はPuTTYを「プッティ」と発音していたが、secondlife氏は「パッティー」だ。その他の彼の特徴的な発音には、会場から笑いがあがるものもあった。例えば「レターン」や「リプライチャメント」などがそうだ。後半はVim周りのメリットとVim7の機能紹介、text objectが扱えることこそVimを使う最大の理由など、VimWindowsを絶賛して20:20に終了。そして5分間の休憩となった。
20:28、高林氏が淡々と話始めた。聴衆は拍手のタイミングを見失ってしまったようで静かに聴き始める。BinaryHacksの説明を読み上げて、「SEの職場ってオタクだらけだよね?」というはてブのPRが気になると結び、笑いと共に紹介が始まった。前半はstraceによる実用面を持った方法などが語られたが、後半のバイナリパッチの話になってくると、さもバイナリを編集してバグを直して家に帰ることはプログラマの日常、と言わんばかりの話っぷりに会場から笑いがあがった。プレゼン内容自体はそこまで多くなく、割とサックリと終了した。
20:46、宮川氏がプロジェクタに画面を映すと、mala氏がパチパチと拍手を始めたので、つられるように会場からフェードインの拍手。宮川氏の環境からVOX、Plaggerまで開発環境を紹介。secondlife氏がフォントのアンチエイリアスはプログラムには見難いといった矢先なのに、「アンチエイリアス見易いですけどねぇ」とおすすめフォントの「Consolas」を紹介。飛行機HackでCPANごとローカルに保存するとか、Wikipediaも2GBちょいだからローカルに落としてしまうとか楽しい発想も展開しつつも、全体的にはクールに説明を行い終了。21:05から質問が行われ、VOXの開発で環境構築をrpm->yumで作るというところに関しては何人か質問があがった。
21:10、青木氏がオレポータビリティを話し出す。部屋の風景写真にOSやスペックがばらばらのサーバーたちが映し出される。様々な環境を持っているため、どこでも対応できる(自分がポータブルになる)とう発想での環境解説が始まった。高林氏からは「ほぼ同じ戦略(必須ソフトを少なくするなど)をとっているのが年だからと思っていたが、安心した。」と感想があり、mala氏の「のこぎりでテンキーを切る(最初にキーボードのテンキーを使わないから、のこぎりで切ったという写真があったため)のはあたりまえ?」との質問には、「ハッカーなので、ぶった切る」と、naoya氏の「20台はいつも電源オン?」との質問には、「ブレーカーが落ちるから無理」と質疑応答が行われた。
21:34、予定より30分ほど押したが、無事にShibuya.jsは終了した。

ブクマ英単語帳

暗記カードをブクマで作ったら良いのではと思った。手順はとても簡単。

  1. 解らない単語に出会う
  2. Webの英和辞書で調べる
  3. Webの英和辞書の検索結果をブクマする

ブクマするときにタグを付けておけば、単語帳用にブクマしたページだけ抽出できる。
自分の解らなかった単語だけが集まるのもメリットだけど、一番のメリットはブクマしたことを忘れて再度ブクマしようとすると、

このエントリーはすでにブックマークされています。
はてブの場合

と怒られること。「あぁ前にも調べてるじゃん」という記憶の出来て無さが体感できて素晴らしい。
Webの英和辞書は色々あるけれど、お勧めはAsk.jp 辞書検索。通常のWeb辞書は、文例とかがやたらとあったりして、意味を調べたいときには少々見難い。Ask.jpの場合は、本物の辞書にかなり近い表示形式なので見易い。
注意点としては、同じ単語でもURLのパラメータが違うと重複ブックマークをしてしまうので、Webの英和辞書を検索するときには、ブラウザの検索窓などを利用してクエリ以外を同じURLにするのが良い。
unDonutではSearch.iniに以下を追加するとAsk.jp 辞書検索ができるようになる。([Search-List]の追加もお忘れなく)

[Ask.jp 英和・和英辞書]
Group=0
FrontURL=http://ask.jp/dictionary.asp?o=0&qsrc=46&sm=0&q=
BackURL=
Encode=3

ということで、今日からブクマ英単語帳を始めてみる。

実践、リアルタイム引継ぎ

洩音 [EION] ≫ リアルタイム引継ぎとは
人間を冗長化するという発想トラックバックを頂いたので、リアルタイム引継ぎについてもう少し。
リアルタイムに引継ぎを行うべき理由は大きく2つある。1つ目はEIONさんも書いているように、冗長化のメリット。同等のパフォーマンスの人が複数いることは欠員(システムでいう障害)のときに非常に強い。
もう一つの理由として、引継ぎという行為自体がリアルタイムでなければ困難であるという点がある。ある人が一年やってきた仕事を引継ごうとすると、本当に一年近くかかることが多い。勿論、マニュアル化された作業についてはすぐに引継ぐことができるのだけれど、トラブルや人間関係など色々な要因で、結局長い間悩まされることになって、ようやく一人前な引継ぎ状態となる。大体その頃にはその人も誰かに引継ぐ身になっていることが多いけれど。
これは引継ぐときに経緯を伝えきれないことに起因すると思う。ドキュメントに掲載されるのはほぼ結果(決定事項など)だし、話して伝えるには時間が少な過ぎる。結局、引継がれた者は過去(ドキュメントや人の言っていること)を鵜呑みにすることしか出来ない。ここで大体誤解が生じる。だから上手くいかない。
では、リアルタイムに引継ぐにはどうしたら良いのか。自分としては具体的に以下の点に気を付けている。

  • 一人で会議に出ない

出来るだけ同職の人と出席するようにしている。フィードバックよりも断然その場にいた方が良いからだ。担当者と直接接する場を共有することで、「ああは言っていたけれど、実はこう」みたいなところが理解・共有しやすい。

  • 作業や成果はその時にばらまく

例えば、Linuxサーバーに何かアプリケーションをインストールしたなら、「インストール手順」なんていうディレクトリをファイルサーバーに作っている場合ではない。即座に実施コマンド付きで同職種の人にメールで伝達する。以後、別の人が探せるようにという理由でファイルサーバーにも同等の内容は置くけれど、「必要なときに見てね」という資料は、必要なときに見つからないことが多い。そのときあまり関係がない人にも、少々強引に伝えてしまうことが大切。

  • 備忘録は他人の記憶に置く

忘れてはいけないと思って机を付箋だらけにしている人が多いけれど、自分は他人の記憶を利用する。覚えるべき内容を説明して他人に覚えておいてもらう。とはいえ、自分で覚えておくことは当然大切なのだけれど、備忘録として相手に伝えるということは「忘れてはいけない重要事項」をリアルタイムに引継ぐことになって効果的だ。あと、これは冗長化としても効果的。

コツは意図的に引継ぎ時間を作ったりしないこと。常に「自分しか知りえない情報」がないように心掛けることこそが、リアルタイム引継ぎの第一歩だと思う。

中倉彰子さんのブログを待ってたら始まった

あっこ&ひろみオフィシャルブログ
女流棋士中倉彰子さんの公式ブログが先日始まった。以前は、はてなアンテナでホームページの更新チェックをしていたけれど、情報収集の基本がRSSなので、RSS出力してくれないかなとか、いっそブログを書いてくれればいいのになぁとか思っていたら、本当にブログを始めてくれたので少々驚き。開始した日のエントリを見つけてからはlivedoor Readerのフィードに追加してある。
将棋は父親に教えられて、小さい頃はよく遊んだ。小学校のときは確か将棋部にいた気がするし(自分のことなのに記憶が曖昧)。
将棋は超初心者同士だと、少し戦法を知っているだけで圧倒的に有利になる。戦法というか決め打ちのレベルだけど。でも、お互い少し知っている同士になると、突然頭を使うようになる。少し手順をミスするとすぐに窮地に追い込まれるからだ。だから「待った」をなしにすると結構緊張して遊べる。
プロ棋士がどのように頭で思考しているかは判らないけれど、自分の場合はせいぜい「この手を打つと、相手がこう打って」というような打ち方のパターンをいくつか想定して、ベストな手を選択するくらい。ひょっとすると、こういう考え方はプログラミングにも生きているかもしれない。「ここでtrueだと次はここの処理で」みたいな。
プロ棋士が凄いと思うのが、手を読んでいるときの頭のメモリ量。例えば「A手を打って、次にB手を打って」ということを考えようとすると、B手を考えるときにA手を忘れることは出来ない。何故なら、B手がまずいと思ったら「A手を打って、次にC手を打って」というように打ち手を遡って考える必要があるからだ。限りなく枝分かれしてゆく思考の中で、経過を全て覚えて作業するのは至難の業だ。自分の場合、5手も先を考えたら、もうメモなしには考えられないだろう。
父親は内藤国雄さんが好きなのだけど、自分はあまり打っている姿を観たことがないので、谷川浩司さんや羽生善治が好きだ。「おぉ」という手を打ってくれるところが面白い。中倉彰子さんはNHK杯で初心者にやさしい説明が素敵だったので、いつの間にか名前を覚えてしまったところが始まり。今では彼女のホームページで販売していたCD、「Tearful Smile」も当然所持していたり。
棋士たちがもっとWebで情報公開・交換するようになって、将棋SNSとかが出来てしまったら、ひょっとすると奨励会棋士より強い棋士が育つかもしれないなとか思うこの頃。

人間を冗長化するという発想

システムを設計する上で、冗長化というのは多くの人が当然のように考えている。重要なポイントは、複数の内の一つがダウンしても自動的にその他に割り振られることと、サービスの提供が継続(但しパフォーマンスが落ちる可能性はある)することだ。
冗長化が必要なのは人間も同じである。人間の場合も「担当者の自動変更」と「等価な行動」が重要だ。具体的に言えば、前者は病気でも退職でも理由に問わず欠員が出たときに、その人の担当分を引き継ぐべき担当者が決まっているかどうかという点で、後者はいなくなった人と同等のパフォーマンス(技術スキルであったり知識であったりマネジメント能力であったり)を発揮できるかどうかという点だ。このような人間冗長化が行われていない場合は、欠員が出た時点でほぼサービス停止状態(具体的にはスケジュールの遅延など)が発生する。
このようなことは当たり前のことなのだけど、人間冗長化をしていないのにサービス停止を気合で防ごうと考える人が本当に多い。しかし、実際に気合(サービス残業やらなんやら)で防げる例はかなり稀だ。そのわりには、本人たちは頑張って対応したという意識から「よくやった」と結ぶのだけど、根本的に問題を見誤っている。
ただし、人間冗長化は別に必須な事柄ではない。システムの場合、冗長化していないなら問題発生時にいきなり復旧対応が待っていることを皆想定している。だから、深夜でも電話がかかって来て対応できるような策を弄している。なのに人間のことになると、冗長化していないにも拘らず策を弄していないことがほとんど。この差が非常に気になる。
人間は非常に高価なので、冗長化構成が取れないことは多い。であれば、最低、欠員が出たときの対応策を考えておくことは必要ではないだろうか。人間の集団は微妙にクラスタリング(欠員の部分を全員で少しずつまかなうみたいな)が働いているので事無きを得ることもあるけれど、それに頼っているようでは決して計画的とは言えないだろう。
退職が決まってから引継ぎを行うという行為は、エラーが出始めてから別サーバーを購入するという行為と同じであることを理解しなければならない。勘違いしている人が多いが、引継ぎというのはリアルタイムに行うべきものである。

結城さんはコメント欄の意見に対応

『新版C言語プログラミングレッスン』無料プレゼント
結城浩さんのプレゼント告知。とりあえず、この時点で応募条件(A)は満たせたかと。
それにしても、結城さんは律儀な人だなと思う。一見すると今回の応募条件は結構妙だ。「新版C言語プログラミングレッスン」という結城さんが一番売り込みたいであろう文言は、メールの件名になっている。Webページに広めようとするなら、キーワードを書いてトラックバックをすることを応募条件にした方が効果的だし、その方が一般的な手法だとも思う。
今回の応募条件は、『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』無料プレゼントのコメント欄の「広告的なキーワードは通常の検索者の邪魔になる」というやり取りを受けて変更されたのではないかと思う。
こういったやり取りをみていると、ブログはとても人間的なツールなのだなと感じることができる。

創作性はどこまで認めるかが問題

Delphiによる市販ソフトウェアに創作性が認められない判決
この記事を見るといかにも「ソフトウェアに創作性が認められないなんて何てことだ!」と思ってしまうところ。danさんも同ツールを使用して作成した場合で「創作性が認められる部分は存在しない」という部分をピックアップしている。気になって判決文を読んでみたのだけど、正直これは妥当な判決ではないかと思う。
ややこしいのが、機能的な創作性とソースコードの創作性が入り混じっているところ。ソースコードについてはSlashdotの記事のとおり、「デルファイ」という開発ツールを基準にしているけれど、機能的な創作性は判決結果で「創作性があると推認することはできない」と一つ一つレスしている。簡単にまとめてはいけないけれど、まとめて言えば「機能的には一般的で必要なものの羅列であるし、ソースコードはツールを使っているから似るのは当たり前だ」といったところか。
しかし、この手の話は毎回頭が痛い。プログラムを知っている人であれば、意識しなくても同じコードを書いてしまうことがあることは周知だろう。言語にも依るけれど、特にJavaなどはコードが似やすい。それ程コンパイルで制限を課している。まして、GUIのコードを出力するツールを使えば尚更だ。
また、本判決で被告がさきがけとして開発したものを複製したと主張しているけれど、ある程度の開発ノウハウの吸収は仕方がないと思う。会社で得たノウハウは、その会社の利益に対して以外使ってはならないとなってしまうと、id:naoya氏はココログでの経験をはてなダイアリーに全く注げないことになる。判決では以下の認否がそのことを説明している。

(ア)ソフトウェアの開発会社は,他社が著作権を有し,顧客のためにライセンスにより提供しているモジュールや開発会社が種々のプログラムの開発のために部品としてストックしてきた関数,ルーチン,モジュール等を利用してプログラムを作成するのであり,同じ開発会社が作成したプログラムは,その多くの部品において同一であるのが通常であること,さきがけとNEWS2000のプログラムがいずれも被告Y2の従業員Aによって作成されたことからすれば,両プログラムが類似していても,直ちにNEWS2000がさきがけのプログラムを複製したものとは認められない。

しかし、創作性を認めなければ無秩序な複製が罷り通ることとなるので、それはそれで問題だ。だから、線引きが本当に難しい。そういう意味で本判決は興味深い判決だと思う。
少しジャンルは違うけれど、音楽でも似たものを感じる。既出でないメロディーを作るなんて、とんでもない難易度だ。コード進行に至ってはもっと難しい。クラシックに詳しい人は、現代の曲がパクリだらけに感じることだろうと思う。著作権に期限を付けるのも一つだけれども、創作物が被るという現象は非常に悩ましい問題だ。単純に早い者勝ちにするのか、登録したもの勝ちにするのか。少なくとも現状の法整備では些か不便に感じる。とはいえ代替案がある訳ではないので、偉そうには言えないけれど。

Gabriela Robinの正体って?

菅野よう子音楽に出現する謎の人物「Gabriela Robin」。ネットでは専ら菅野よう子自身ではないかとの話。自分と友人の間で話している分にはいくらか当たりはついているのだけど、やっぱり本当のところはわからない。ということで、現時点での予想など書いてみる。

そもそも「Gabriela Robin」という人物は象徴語というか、実際には複数人いると考えている。その中の一人に菅野よう子がいるのは聴いてる限りでは間違いなさそう。

COWBOY BEBOP SOUNDTRACK 2 - No Disc

COWBOY BEBOP SOUNDTRACK 2 – No Disc

このアルバムの「Cats on Mars」が顕著でしょう。菅野よう子の喋り声を知っている人なら判るかと。でもこの曲のイントロ部分はもう一人別人が歌ってるように聴こえる。恐らく坂本真綾かと思われるが自信なし。

多分、坂本真綾ORIGAはいるでしょう。新居昭乃もいるかと思ってたけど、どうも出現しない。

このアルバムの「Aqua アクア」はORIGAだと思う。同アルバムの「地球共鳴」のイントロは菅野よう子の声なんだけど、メインメロディーが始まると別人っぽい。この声の人がわからない。ORIGA坂本真綾の中間っぽい人。ORIGAかもしれないけど。

攻殻機動隊 STAND ALONE COMPLEX O.S.T.+(プラス)

攻殻機動隊 STAND ALONE COMPLEX O.S.T.+(プラス)

ついでに、これの「スタミナ・ローズ」はいかにもORIGAだと思う。

それにしても、これだけ時間が経っても正体がバレないというのは、菅野よう子の周りは良い人ばっかりなんだろうなと思う。知っている関係者は結構いる筈で、レコーディングするときに判るし、著作権の管理とかやってる人も当然知ってるだろうし。