Archive for the ‘programming’ Category
日本Ruby会議2008のメモ(1)
土曜日, 6月 21st, 2008Leopardの「辞書」アプリで「ランダムハウス英語辞典」を使う
日曜日, 5月 11th, 2008Leopardの辞書アプリ(Dictionary.app)で英辞郎を使えるようにしたおかげで、海外のサイトを読むのもずいぶん楽になった。しかし、単語の意味などをもう少し詳しく知りたいという時は、英辞郎だとちと物足りない。そこで、だいぶ前に買ったまま、ほとんど活用していなかったランダムハウス英語辞典(第二版)をDictionary.app用に変換してみることにする。
ランダムハウス英語辞典が使えるMac用の辞書ソフトとしては、すでにJammingがあるが、できればDictionary.appにまとめたいところ。検索機能はJammingが格段に優れているが、日常的にさっと調べるならDictionary.appの方が使いやすく感じる。まあ、変換処理自体が面白くなってきたというのもあるのだけど。
Leopardの「辞書」アプリでEPWING辞書を使う
火曜日, 2月 12th, 2008これまでに、Leopardの「辞書」アプリケーション(Dictionary.app)で英辞郎や郵便番号辞書を使う方法を紹介してきたが、EPWING形式の辞書を使いたいという要望が結構あるようなのでチャレンジしてみた。
ありがたいことに、hishida氏がEPWING構造解析ツール「EBDump」を、太田純氏がEBDumpの出力をHTMLに変換する「ebd2html」を発表されているのでこれらを利用させていただいた。なお、両ソフトともWindows用なので、以下で述べる作業を行うにはWindowsが必要になる(Parallels Desktop for Macなどの仮想環境でもOK)。
Leopardの「辞書」アプリで郵便番号辞書を使う
火曜日, 11月 20th, 2007OS Xの「辞書」アプリで「英辞郎」を使う
火曜日, 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リーダーとしてNetNewsWireとNewsGatorの組み合わせはかなり使いやすい。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で取得して、処理してやればいいだけのはずなんだけど。