思索の日々、音との生活。

大学図書館パートタイマー(2年目)の広くて浅い思索の日々、音との生活。

辞書を片手に。

昔は、自分の語彙が少なかったので(たしか高校生くらいまで「語い」って何だと思ってた)、国語辞典を傍らにおいて本を読んだりしていた。

今は当時よりは語彙が多くなったとはいえ、軽い文章を読むことが多いので、辞書を引く習慣はすっかりなくなり、電子辞書ですら引くのが面倒になってしまった。

そんな私にぴったしなGreasemonkeyスクリプト。

Fast look up JP and EN - jimo/memo

Altキー(別のキーにも設定可)を押しながらマウスで文字列を選択すると、複数の辞書サイト/検索サイトを横断検索して、結果を表示してくれるスクリプト。

この説明だけだと良さがわかりにくいけど、実際使ってみると、ストレスなく引ける(検索するというより辞書を引く感覚に近い)のがすばらしい。ページ遷移無いし、数秒で、しかも平行して引いてくれるし、見終わったら元々のページワンクリックで消えるのも良い。日本語と英語を判別して、それぞれ検索するサイトを設定できるので、日本語・英語両サイトで非常に便利に使える。まだ試していないが、文章の翻訳サービスも利用できるらしい。

これだけストレスなく使えると、次々と意味があいまいな語を調べて読めるので、文章の理解も深まるし、語の勉強にもなる。コンテンツは他頼みだし、ものすごい技術を使ってるわけではないけど、いいインタフェイスを作ることで、ユーザの行動まで変えてしまうというのは、なかなか興味深い。

これのためだけにFirefoxインストールしても損はないよ、と言えるくらいオススメです。



以下、導入についてのメモ。

Greasemonkeyスクリプトなんで、当然Firefox+Greasemonkey必須。
スクリプトの導入もちょっとややこしいので、上記ページのビデオをよく見ながらやって下さい。
「初期化してください」ってところで、右下でなんかやってるのは、Greasemonkeyのおサルのアイコンを右クリック→ユーザスクリプトコマンド→Fast look up JP and EN - reset settingをクリックするみたい。
私の環境ではAlt+Yでメニューを出したら黒っぽいボックスしか表示されなかったので、ブラウザ再起動してAlt+Yでちゃんと表示されました。

CiNii簡易検索の結果をRSS等で返すpipe。

仕事で使えるかもと思って作成。Pipes楽しい。
指定したキーワードでCiNiiを簡易検索した結果をRSS等で返してくれるpipe。
pipeについては前記事参照。

Pipes: CiNii Simple Search RSS

ほんとは詳細検索のが便利なんだけど、簡易検索は入力フォームが1つだけだから試作に向いてるかと。
ただ、CiNiiは文字コードがEUCで、PipesはUTF-8なんで、日本語通りません。実用性がた落ち。Pipesのモジュールで文字コード変換ができるか、文字列と変換前後の文字コードを送ったら、文字コード変換して返してくれるWeb APIがあればいいんだけどなあ。(公開してる)サーバがあれば、作るのはすぐできそうなんだけど。



CiNiiは検索の際にJavaScriptで前処理してるので、Googleカスタム検索でクエリ文字列を知ることができない(カスタム検索しても検索できない)。今後のためにもブラウザからpostしたデータを知る方法を探してたら、さすがはFirefox。アドオンで発見。

UrlParams :: Firefox Add-ons

サイドバーでベースURLとReferer、GETとPOSTのパラメータを表示してくれて、かつ、パラメータを増減・変更して再送信もできる(ここ重要!省略可能なパラメータを見極められるし、パラメータの違いでどう変わるか簡単に試せるのは便利)。
PipesやGreasemonkeyでWebサービスハックする時、Firebugと並ぶ必需品になりそう。



余談ですが・・・。
学術情報だと和洋とりそろえたGoogle Scholarが便利なんですが、Pipesからアクセスすると403エラーを吐いてくださる(アクセス拒否されてる)。しょうがないんで、HTAでシステマチックにデータ取得できないかといろいろ試してたら、突然アクセス拒否!たぶん短時間にリクエスト出しすぎたんだな。その後数時間いっさいアクセスできず冷や汗。Googleはそのへん厳しいのね。

PipesでJ-STAGEの野良RSSを作る。

職場の回覧で回ってきた「情報管理」という雑誌がおもしろそうだったので、購読することにした。幸いJ-STAGEで本文を公開しているので、自宅からでも最新号が閲覧できる。

ただ、J-STAGEでは新着記事の情報をRSSでは配信していないらしく(メール配信はしている)、Googleリーダー等でチェックすることができない。もう、フィードリーディングに慣れた身だとRSSないとめんどくさくてめんどくさくて・・・。

そこで、いろいろ調べてたら、米Yahoo!の提供しているPipesというサービスを見つけた。

Pipes: Rewire the web
http://pipes.yahoo.com/pipes/


Webのリソースを、メールアラートやRSS、Badgeなどに整形して出力できるサービスなのだが、UNIX使いにはおなじみのパイプよろしく、モジュールをつないでいくだけで処理ができる。しかもGUIで!

このへんを見ると感じがつかめるかも。
簡単マッシュアップ、「Yahoo! Pipes」を試してみた − @IT
http://www.atmarkit.co.jp/news/200702/15/pipes.html


プログラマ諸氏なら触ってるだけでほぼ理解できるだろうし、プログラムやったことない人でもとっつきやすいんじゃなかろうか。デバッグ環境もよくできていて、触ってるだけでも楽しい。

しかも、公開されてるpipeはみんなソースも見れるし、複製もでき、別のpipeをモジュールとして使うこともできる。まさにWeb 2.0!



で。当初の目的だったJ-STAGEの特定の雑誌の新着記事情報を出力するpipeを作ってみた。

Pipes: J-STAGE RSS
http://pipes.yahoo.com/pipes/pipe.info?_id=d2b4042384b2c2c80df232e01e950896


J-STAGEの雑誌のトップページのURLを入力し「Run Pipe」をクリックすると、その雑誌の最新号の記事一覧が出力される。
RSSで出力したい場合は、More options - Get as RSSをクリックする。



作成中気づいたことメモ

  • 型が割と厳格で、型が違うとモジュールを接続できないので注意。

  • Fetch pageなどでデータを得るとデータ型がitemsで出力される。これを(たとえばitem.contentを)text型などのデータとして利用したい場合は、Loopモジュールを使う。

  • 型の変換は、上記のLoopモジュールやURL Builderなどを駆使する。




以下、逐次解説。
上記pipeのソースを見ながら(Edit Sourceで見られる)どうぞ。

処理の流れ
J-STAGEの雑誌のトップページには最新号の記事一覧へのリンクがある(が、そのアドレスは最新号が出るたびに変わるっぽい)。
このリンクから最新号の記事一覧を取得して、個々の記事に分けて出力する。

1.URL Input
ユーザに雑誌のURLを入力させる部分。
Promptは入力フィールドの前に表示される文字列。
Defaultはデフォルトで表示される文字列。
Debugはデバッグ時に使用される文字列。
positionはたぶん複数置くときの順番。
Nameはどこで使うのかよくわからん。
出力はURL型。

2.Fetch page
Webページのソースを取得する。
URLは取得するページのURL。1を接続する。
Cut content from/toはページ全体から切り取る開始文字列と終了文字列。ここでは、最新記事のページのURLを取り出したいので、その前後の文字列を指定した。
Split using delimiterは区切り文字列。ここでは、指定しない。
出力はitem型の配列であるitems型。Split using delimiterを指定していると、それで区切って配列にするわけだが、ここでは指定してないので要素1つの配列になる。

3.Regex
正規表現でitemの子要素を置換する。
2で得た部分にはゴミがついてるのでURLの部分だけを取り出す。
出力はさっきと同じくitem型の配列であるitems型。
以下、すべてitem型の配列であるitems型で出力される。

4.Loop
itemsの各要素に対して処理を行う。
ここではitemsの要素数は1つだけなのだが、その場合でもこれを使う。
ここにFetch pageを入れ、item.contentに入っているURLをもとに最新号のページを取得する(ここでURL型への型変換は勝手にやってくれるみたい)。記事一覧の部分だけ取り出し、各記事の区切りをSplit using delimiterに指定した。

5.Rename
この時点ではitem.contentのなかに一記事分のHTMLがまるまる入っているわけだが、最終的には、item.title、item.link、item.descriptionにそれぞれ、タイトル、記事の(抄録の)URL、著者名を格納したい。そのため、item.contentを2つコピーし、それぞれをtitle、link、descriptionと名前をつける。

6.Regex
正規表現による置換で、それぞれの要素から不要な部分を削除する。

7.Pipe Output
最後にここに出力する。
あとはSaveして、Run Pipeでテスト。
問題なければPublishで公開して完了。

iTunesのアートワークが減色されちゃう問題。

iTunesでは、おのおのの曲にCDジャケットなどのアートワークを設定でき、Coverflowやアルバム別表示、プレイリストの印刷時、iPodでの再生時なんかに使用される。

多くの場合は画像を自動的に取得してくれるのだが、それ以外は自分で画像を用意しなければならない。
そこで、AmazonやGoogleイメージ検索なんかで見つけた画像を設定するわけだが(ちなみに著作権的には私的複製なので問題なし)、どうも画が汚くなる(かなり減色したような状態)ことがままある。

色々試してみると、画像のフォーマットがGIFの時にこうした現象が起こるようだ。
分析してみると、画像ごとに持ってるパレットじゃなく、Machintoshシステムカラーのパレットにしてるようだ。

(例)これがオリジナルのGIF

floweroriginal.gif

これをアートワークとして設定するとこうなる

flowergif.jpg


で、iTunesがアートワークをどういうデータでもってるのか調べてみた。

iTunesアートワークファイルをハック。 - Naruhito Blog... Just what is it?

アートワークはMy Documents\My Music\iTunes\Album Artworkの中のitcという拡張子のファイルらしい(Windowsでデフォルト設定の場合)。
で、内部的にはPNGかJPEGでデータを保持してるみたいだ。

そこで、PNGで試した結果がこれ。

flowerpng.jpg


おお!きれいだ!
ということでiTunesのGIFからの変換に問題があったよう。
ちなみにJPEGでも問題なくできました。

これからはブラウザからのドラッグ&ドロップじゃなく、いったんどっかに保存→画像変換→iTunesへドラッグ&ドロップか。
・・・めんどくさくてやらないかも。

旋律から曲名を検索するWebサービス。

いわゆるクラシックの曲名というのは「交響曲1番ホ長調」などのにべもないものが多い。そのために、ふと口ずさんだメロディの曲名が思い出せずうんうん悩むというケースが多々ある。

世には「音楽テーマ事典」なんてものが出版されていて、旋律から曲名を引くことができる。普通、音名だけでなく、階名からも引けるので、絶対音感がなくても、そこそこの相対音階があれば引ける。

ただ、やっぱり図書館に行って巨大な事典を引くのはなかなかに面倒である。
2、3年前には日本の個人の方が提供してたWebサービスで、Classical Music Searchというのがあって、Javaで作られたピアノの鍵盤をクリックして音名(あるいは階名)を入力し、検索することができた。よく利用していたのだが、いつからかサービスをやめてしまったようで、なんとも不便に感じていた。

もう自分でWiki形式のを作ったろかいなとも思っていたのだが、どうもその必要はなさそうだ。

Musipedia(http://www.musipedia.org/)はFlashで作られたピアノの鍵盤をクリックして曲を検索してくれるWebサービス。特徴的なのは音の長さも考慮すること。音程もリズムも合っていればヒット率が高まるし、どちらかを重視して検索することも出来る。

また、鍵盤をクリックする以外にも、旋律の音の上下(前の音から上がるか下がるか)の入力、ピアノロールでの入力、キーボードをタップしてのリズム入力(これ楽しい)と、様々な検索方法が用意されている。

検索結果には楽譜が表示され、クリックすればMIDIデータが再生される。
(ほかにもいろいろリンクがあるが、ちょっとうっとうしい)

ABOUTを流し読みしたところ、メンバー登録すれば、旋律の追加・編集も可能らしい。
うーん、いい感じだ。ちょっと見た目がこなれないけど。

ちなみに、いわゆるクラシック以外の曲も検索対象として含まれているみたい(なんか検索したときにBeach boysが出てきた)だが、まだあんまり登録数は多くなさそうなので、その辺に詳しい方は是非登録して下さい。
著作権どうなってんのとちょっと思ったが、フェアユースだからOKということだろうか。楽でいいなあ。

余談だが、「Musipedia」をGoogle検索すると、オフィシャルがなんと36位(2008/6/20 13:01現在)。ブログでの言及とか、Wikipediaが上位に出てくるので、そこからたどることは出来るのだが、なんともなあ。Googleの過信はいかんなあ。