Archive for the ‘programming’ Category

Leopardの「辞書」アプリで郵便番号辞書を使う

火曜日, 11月 20th, 2007

zip_conv1.pngMac OS X v10.5 “Leopard”の辞書(Dictionary.app)が面白くて仕方がない。control+command+Dを押していれば、どんどん自動的に辞書を引いていってくれるのは、思っていた以上に快適だ。
先の記事では、英辞郎の変換方法を紹介したが、ほかのデータでも辞書アプリを活用したい。そこで、日本郵便が公開している郵便番号データを辞書アプリ用に変換してみた。これから年賀状のシーズンだし。
この辞書では、郵便番号から住所を、あるいは逆に住所から郵便番号を引ける。読み方のわからない住所を調べるのにも役立つかもしれない。

(続きを読む…)

Leopardの「辞書」アプリで「英辞郎」を使う

火曜日, 11月 6th, 2007

先の記事でも書いたように、Mac OS X v10.5 “Leopard”の「辞書」アプリケーション(辞書.app / Dictionary.app)用の辞書はユーザーが追加できるようになっている。そこで、定番の英和辞書「英辞郎」を変換するツールを作ってみた。英辞郎は、現時点で最新のv108を使用している。

(続きを読む…)

今だから、読書会

水曜日, 2月 28th, 2007

編集作業などを効率化するために、時々Rubyで簡単なスクリプトを書いて使っている。PCJapan用語辞典デジタル版の制作作業も半自動化しているのだけど、私のスクリプトはグローバル変数を多用したそれはそれは汚いものだったりする(よくここまでオブジェクト指向プログラミング言語っぽくないようにRubyを使えるものだ……)。また、Ruby on RailsによるWebアプリケーションにも興味があるため、きちんとRubyを勉強してみたいとは思ってはいるが、仕事の合間にやろうとしてもなかなか身につかない。何かいい方法はないかなと探したところ、「Rubyの本読書会」が開催されていることを知り、早速参加してみる。
内容は、30数人が会議室に集まり、小グループに分かれて『プログラミングRuby 第2版 言語編』を交代で音読していくというもの。声を出したり、人の声を聞きながらゆっくり読み進めていくと、理解せずにいい加減にとばしていたところが多いことに気づく。簡単そうなサンプルコードに実は高度な内容が盛り込まれていることも、スタッフの方に教えていただいて本当に勉強になる。また、参加者ともいろいろ有益な情報交換ができた。主催されたスタッフの方々、どうもご苦労様でした。
音読なんて聞くとアナクロな印象を受けるが、自発的に参加するなら(まあ何でもそうだが)かなり効果的な学習メソッドかも。参加するために、急いで仕事を片付けようとするし、ちょっとでも予習するという副次的な効果もある。
知識をインプットする際は、こういうアナログなやり方の方が脳を刺激していいのかな。とりあえず、しばらくはがんばって参加してみたい。

超いーかげん、Safariで開いているタブをはてなブックマークに登録するスクリプト

木曜日, 9月 14th, 2006

前のエントリで書いた「Mac OS XのSafariで開いているタブをまとめてはてなブックマークに登録するAppleScript」がいちおうできたけど……。
こちらのページによれば、はてなブックマークはだいぶ前に仕様変更されて、確認画面なしでは登録できなくなったようだ。タグを付けた状態で確認画面を呼び出すこともできない。確かにこれが可能だと、スパム的なブックマークががんがん登録されてしまうから仕方ないのか。
そういうわけで、「タブで開いているページをまとめてはてなブックマークへ登録するのがちょっと楽になるAppleScript」になってしまった。Safariで複数タブを開いた状態で下記のスクリプトを実行すると、それぞれのページについてのはてなブックマーク登録画面が現れる。タブの切り替えルーチンが非常にいい加減なので、同じURLのページが複数あるとそこで止まってしまうし、複数ウィンドウにも対応していない。KOTOERAで公開されている「Safari で開いている全ての URL からロケーションファイルを作成」スクリプトのタブ切り替えルーチンは、複数ウィンドウでタブを開いている場合でもうまく動作するようだ。

tell application "Safari"
set i to true
set URL_list to {}
repeat
if exists the URL of document 1 then
set this_URL to the URL of document 1
else
set this_URL to ""
end if
repeat with j from 1 to count of URL_list
if this_URL = item j of URL_list then
set i to false
exit repeat
end if
end repeat
if i = true then
set URL_list to URL_list & {this_URL}
my next_tab()
else
exit repeat
end if
end repeat
repeat with j from 1 to count of URL_list
open location "http://b.hatena.ne.jp/add?mode=confirm&url=" & item j of URL_list
end repeat

end tell

on next_tab()
tell application "Safari" to activate
tell application "System Events"
tell process "Safari"
click menu item "次のタブを選択" of menu "ウインドウ" of menu bar 1
end tell
end tell
end next_tab

SafariのAppleScriptに苦闘

水曜日, 9月 13th, 2006

この前のエントリで書いた、「Mac OS XのSafariで開いているタブをすべてはてなブックマークに登録するスクリプト」を作ってみようと思い立つ。ちょっとした息抜きになるかと思ったら、これがかなりややこしい。AppleScript超初心者の私がいうのも何だけど、AppleScriptから呼び出せるSafariの機能ってあまりにも貧弱すぎじゃないか。特にタブ関連。
そもそも、開いているタブの数を取得したり、タブを切り替えることすらできないのだ。複数のタブのURLを取得する方法として、ちょっと思いついたのは、
・現在のページのURLを取得
・そのURLを配列(AppleScriptだとリスト)に保存
・AppleScriptのUI Scripting(メニューやボタン操作をAppleScriptから行う)を使って、次のタブを選択
・これだと無限にタブを切り替え続けてしまうから、現在のページのURLを配列内のデータと比較して、一致したら終了(このアルゴリズムだと同じURLのページを開いていた場合問題になるけど、とにかく手軽さ最優先)

これでうまく行くかと思いきや、処理の途中で無限ループに入ってしまう。うーむ、AppleScript(というかプログラム全般ですが)はよくわからん……。

携帯電話でのRSS、Webブラウジングについてあれこれ

月曜日, 9月 11th, 2006

前のエントリーでも書いたが、RSSリーダーとしてNetNewsWireNewsGatorの組み合わせはかなり使いやすい。Mac OS X上では、NetNewsWireでサクサクSpotlight検索もできるし、フィードの整理も楽。未読や既読の状態をNewsGatorにそのまま引き継げるから、携帯電話上で続きを読める(フィードによってはなぜかNewsGator側で読み込まれないものもあるけど)。
ただ、気になった記事を携帯電話から「はてなブックマーク」に登録するのがちょっと面倒。はてなブックマーク登録用のブックマークレットは、私が使っているauのW41CAでも使えることは使える。しかし、ブックマークレットを呼び出すといちいちはてなのIDとパスワードを入力しないといけない(PCサイトビューアを終了するまでは覚えていてくれるが)。要するに、W41CAのPCサイトビューア(Opera)にはパスワードなどの認証管理機能が搭載されていないのだ。W41CAのメモ帳にIDやパスワードを書き込んでおいて、入力画面で呼び出すということをやっているが、これだと使い勝手がイマイチ。しかし、かなり気に入っているW41CAを認証管理機能のためだけに買い換えるのもちょっとなあ……。

あと、パソコンと携帯電話の連携ということで、パソコンのブラウザで開いているページをそのまま携帯電話でも見られると便利なのではないかと考えた。開いているページのURLをすべて取得して、それらをはてなブックマークに登録して「あとで読む」タグを付けておくとよいかなと。簡単なスクリプトでできそうに思えたのだが、これが意外に厄介。Mac OS XのSafariはAppleScriptでコントロールできるようになっているのだが、実はJavaScriptを実行する機能と現在のページのURLを取得する機能ぐらいしかなかったりする。開いているタブやウィンドウの数をAppleScriptで取得して、処理してやればいいだけのはずなんだけど。

メールのMessage-Idを一覧表示

火曜日, 3月 7th, 2006

メールのMessage-Idを一覧表示させる必要ができたので、そのメモ。
OutlookのVBAにはMessage-Idを直接取得するためのプロパティが用意されていない。何やらCDOを使ってMAPIを呼び出すとか、Redemptionというツールを使う必要があるらしい。Outlook TipsというサイトにMAPIを利用したサンプルが掲載されていた(動作は未確認)。
これに比べて、Mac OS XのMail.appはすごく簡単。Message-IdをAppleScriptから直接取得できる。以下は、Mac OS Xに収録されていたMail.app用サンプルスクリプトをちょこっといじったもの。Mail.app上でメールを選択しスクリプトを実行すると、ダイアログにMessage-Idのリストが表示される(利用は自己責任で)。

(続きを読む…)

ケータイからビデオキャスティングする方法を考えてみる

月曜日, 10月 24th, 2005

ビデオキャスティング(Vodcasting)の可能性をいろいろ探っているわけだが、やはり携帯電話からムービーを投稿して、それがポッドキャスティングされるのがいちばん便利だろう。そういうサービスもすぐに出てくると思うが、自分のMac環境で手軽にできないか考えてみる。

(1)携帯電話から自分宛にムービーメールを送信。件名には特定の文字列を付加しておく。
(2)Mac OS XのMail.appのルールを使って特定文字列を件名に含むメールを振り分け。添付ファイルを取り出す。
(3)QuickTimeを使って、携帯ムービーをiPodで見られるm4v形式に変換。
(4)CyberDuckなどのFTPソフトでm4vファイルを自分のブログにアップロード。
(5)MarsEditなどのブログエディタで記事を執筆、m4vファイルへのリンクを張って、ブログに投稿。

AppleScriptを使えば(2)から(5)を自動化できそう!……と思ったのだが、(2)の受信メールから添付ファイルを取り出すところで早くも詰まってしまった。先は長いな……。

自動組版のセミナーに参加してきた

木曜日, 10月 20th, 2005

JAGAT(日本印刷技術協会)が主催する「紙面制作の自動化とページデザイン」のセミナーに参加してきた。PCJapan用語辞典のワークフロー作りをお手伝いしたということで、無理を言ってタダで(←ここ重要(笑))聴講させてもらったのだ。

このワークフローについて簡単に述べておこう。ハッカー用語辞典2004まではMac OS 9+QuarkXPressの環境だったが、PCJapan用語辞典2005からはDTPプロダクションのビーワークスと話し合ってInDesignを使ってもらうことにした。私の立場からの理由は2つ。XMLとUnicodeである。
PCJapan用語辞典の制作ではデジタル版(WindowsのHTML Help形式)を作るためにDTPデータを再利用したい。そのために、XMLでデータをやり取りできれば作業がスムーズに行くと考えた。

(続きを読む…)

QuickTime 7は、再生速度変更機能にバグがある

月曜日, 9月 12th, 2005

以前、Mac OS XのQuickTimeを利用したテープ起こし支援スクリプトを作成した。しかし、QuickTime 7(現在の最新バージョンは7.0.2)になってからどうもこれがうまく動作しない。再生速度を落としている時に「再生/一時停止」のスクリプトを実行すると、本来なら一時停止するはずなのにしないのだ。
調べてみると、再生速度が100%未満の時は、再生中かどうかを示す「playing」プロパティの値が不正になっているらしい。つまり、遅聞きしている時は、曲を再生していても停止中だと認識されているようなのだ。
テープ起こし(文字起こし)をする時は再生速度を落とすことが多いから、このバグはかなり迷惑。アップルにもレポートを出したが埒があかないので、海外のメーリングリストで尋ねたところ、親切な人がアドバイスしてくれた。彼によれば、playingプロパティの代わりに再生速度が0かどうかで判断すればよいのではないかということ。試してみると、確かにちゃんと動作した(修正版のスクリプトはこちら)。
ただし、Quicktime PlayerのA/Vコントロールから再生速度を落とした時はうまくいくのだけど、スクリプトを使って落とした時はなぜか再生速度が100%に戻ってしまう。まあ、それほどこまめに再生速度を変えるわけではないのでとりあえず放ってあるが……。Mac OS XやQuickTimeはどうも細かいバグが多いんだよなあ。

(2006年5月14日追記)
上記の問題については、QuickTime 7.1で修正されたようだ。