ホーム > 未分類
未分類のアーカイブ
IMSLP の楽譜を市販の楽譜っぽく製本するまで (ソフトウェア篇) | あるいは JRuby + iText による PDF の面付け (トンボ付き)
- 2010年9月1日 1:22 AM
- 未分類
通常 IMSLP などに保存されている楽譜は、実物の 1 ページが PDF の 1 ページに対応している。そのため、A3 ノビの紙に印刷して中綴じ製本するためには、適切にページを並べ替え、片面 2 ページづつ、両面で 4 ページを配置する – 面付けと呼ばれる – 必要がある。
簡易な面付けは Adobe Reader やプリンタドライバでも行える (N-up などと呼ばれる) が、これらの多くは紙面を均等に分割し、それぞれの中央に元のページに配置する。そのため、余白がノド (見開きの中央) にも来てしまい、三方裁ちをするような製本には向かない。
また、もとの PDF が菊倍版など楽譜に適した判型でなく、A4 などの判型になっている場合がある。この際は、一度菊倍版に配置しなおした上で、面付けを行う必要がある。
こうした処理が簡単にできる無償のソフトウェアが見つけられなかったので、書くことにした。
JRuby + iText を使う
PDF の作成・編集ライブラリには、Java で書かれた iText というライブラリが使いやすそうなので、これを使う。
ただ、私は Java での開発経験がないため、JRuby から利用することにした。JRuby は Ruby の Java による実装で、Java のクラスが扱えるのが大きな特徴。(今回はじめて使ったが、あまりにも簡単に Java のクラスが扱えて驚いた。今後も Java のライブラリが必要になったら使いたい。)
JRuby + iText のインストール
JRuby のインストール
今回は Mac OS X で開発 / 使用するので、Java のインストールは必要ない (標準でインストールされているため)。
JRuby は MacPorts を使ってインストールするので、必要なら MacPorts をインストールしておく。
MacPorts がインストールされていれば JRuby のインストールは下記のコマンドだけで完了する
sudo ports install jruby
インストールが終ったら、jirb コマンド (irb の jruby 版) などで、ちゃんと動くか試してみよう。
iText のインストール
iText 2.1.7 を利用する。最新版の 5 系より情報が多いのがその理由である。
SourceForge.net の iText のページから、下記の 3 つのファイルをダウンロードし /opt/local/share/java/jruby/lib 下にコピーしておく。
スクリプトの作成
今回は2つのスクリプトを作成した。
1in1.rb
入力ファイルのページを、指定したサイズのページ中央に配置して出力する。
jruby 1in1.rb [-with-tombo] 出力サイズ 入力ファイル名 [出力ファイル名]
2in1.rb
入力ファイルの2ページづつを、指定したサイズのページ中央に2つ横に並べて出力する。中綴じ製本用にページは並べ変えられ、出力の1ページ目が1枚目の表、2ページ目が1枚目の裏・・・となる。
jruby 2in1.rb [-with-tombo] [-first-page-is-left] 出力サイズ 入力ファイル名 [出力ファイル名]
引数
| -with-tombo | トンボ (トリムマーク) を出力する |
|---|---|
| -first-page-is-left | 1 ページ目が見開きの左側であることを指定する。省略時は 1 ページ目が見開きの右側になる。 |
| 出力サイズ | ‘210×297′ のように ‘幅x高さ’ で指定する (単位は mm) か、下記のいずれかを指定する。 a3, a3+, a4, a5, a6, b3, b4, b5, b6, a3r, a3+r, a4r, a5r, a6r, b3r, b4r, b5r, b6r, kikubai, kikubai-alt ※ a3+ は A3 ノビ。r のついたものは長辺が横向き。kikubai は 227×304mm、kikubai-alt は 218×304mm。 |
| 入力ファイル名 | 入力ファイル名。 |
| 出力ファイル名 | 出力ファイル名。省略時は ‘出力サイズ_入力ファイル名’ |
使用例
菊倍版に変更。
jruby 1in1.rb kikubai src.pdf kikubai.pdf
菊倍版のページをA3ノビに配置(トンボつき)
jruby 2in1.rb -with-tombo a3+r kikubai.pdf a3+r.pdf
上例のサンプル
コード
主に自分で使うために作ったものなので、例外処理などほとんどなし。著作権は放棄しますので、ご自由に。
参考リンク
- JRuby + iText + Google Chart APIでPDF出力 – 税理士業界でSaaS開発を行うプログラマの記録 – s21g – 今回もっとも参考になったページ
- J# Examples – iText の .NET 版の日本語チュートリアル
- iText-2.1.7.tar.gz – iText 2.1.7 のドキュメント
HatebuSearch を Retina Display 対応にしました
- 2010年8月19日 1:33 AM
- 未分類
「ねんがんの iPhone 4 をてにいれたぞ」ということで。
iPhone / iPod touch 向け、はてブ検索Webアプリ「HatebuSearch」を Retina Display 対応にしました。
対応しました、といってもほとんどHTMLなので、Webclipとアイコン5つのサイズを縦横2倍づつにして、CSSで以前のサイズを指定しただけ(つまり画像のサイズを16×16→32×32にして、CSSで width: 16px; height: 16px; を指定)。
作業に1時間もかからなかった割には、かなりきれいになって満足。すこしは画像の容量増えるかと思ったけど、全部で5.6KB→6KBならまったく問題ないでしょ。
参考
サクっと配達状況確認 アップデート (1.1)
- 2010年8月11日 12:24 AM
- 未分類
iPhone / iPod touch 向け荷物配達状況確認フロントエンド「サクっと配達状況確認」をちょっとだけアップデートしました。
追加した機能は配達業者および問い合わせ番号の保存。一度問い合わせを行ったら、次に表示したときに、前に入力した情報を表示します。毎回コピペしなくていいので、便利ですよ。
また、これに関連して、入力した情報(と保存している情報)をクリアするボタンも追加しました。
なお、保存にはCookieなどでなくlocalStorageを利用しています。私が問い合わせ番号等を知ることはありません。
ちなみに今回、iPhone 4 用にアイコン変えようと思ったものの、元となる素材の解像度が足らず断念。自分で描く技術ないし。どうしよう。
それにしてもこのブログ、もはやリリース情報だけになりつつあるなあ・・・。
Harmonograph.js アップデート (1.2)
- 2010年7月29日 3:36 AM
- 未分類
4ヶ月振りの更新です。twitterあるとほんとにブログ書かないな、私。
JavaScriptによるハーモノグラフ・シミュレータ「Harmonograph.js」をちょっとアップデートしました。
今回追加した主な機能は「パラメータのランダム設定」。
新たに「Physical parameters / 物理パラメータ」のあたりにできた「Randomize / ランダム」ボタンをクリックすると、音程・抵抗・振幅比がランダムな値に設定され、まともな音程とはひと味違う、複雑な図形が楽しめます。
下が、この機能で作図した例
パラメータの意味がわからなくても「Randomize / ランダム」と「Draw」を交互にクリックしてみてください。
なお、(パーマリンク以外で)Harmonograph.jsにアクセスしたときにも、これと同じ処理をしていますので、アクセスするたびに、違うハーモノグラフを楽しめます。
ハーモノグラフにはもうだいぶ思い入れがあるので、今後もいろいろやろうと考えてます。
その他の変更
- 「ハーモノグラフの種類」の初期設定を回転ハーモノグラフに。直交だとランダムにしても地味なので・・・。
- 「ギャラリー」の読み込みを非同期に。ページの読み込みを高速化するために、ギャラリーはあとで読み込むことにしました。
- コードの整理
iPhone / iPod touch 向け、はてブ検索Webアプリ「HatebuSearch」をリリース
- 2010年3月23日 12:18 AM
- 未分類
iPhone / iPod touch から自分のはてなブックマークにアクセスする場合、iPhone / iPod touch 向けのはてブのページでも、公式アプリでも、ブックマークの検索ができず不便なので、 はてブ検索Webアプリ「HatebuSearch」を開発。本日、リリースしました。
HTML5の機能を生かした、速くて軽い動作が売りです。
こちらは紹介動画。
はてなから取ってきたデータは端末に保存するため、一度データを取ってこれば通信なしで検索ができ、素早くブックマークにアクセスできます。
ただし、端末に保存されたブックマークは自動ではアップデートされないので、たまに(時間と通信料が気にならないときに)左上の「更新」をタップして、ブックマークを更新してください。
なお、iPhone以外でもWin版Safari、Chromeでも動作確認してますが、まあ、PC使ってるなら、公式のはてブのページを使えばいいと思います。Androidは持ってないからわからん!
バグや要望等あれば、twitterで @labocho つきでつぶやく、この記事にコメント、 labocho[at]penguinlab.jp 宛にメールなどの方法で伝えていただくと対応できるかもしれません。
iPhone向けサイト、HTML5でのWebアプリ開発については、そのうち記事を書きたいと思ってます。
「サクっと配達状況確認」をリリース
- 2010年3月20日 4:25 PM
- 未分類
佐川急便/クロネコヤマト/日本郵便の3社の、iPhone / iPod touch 向け荷物配達状況確認フロントエンド「サクっと配達状況確認」をリリースしました。
ネットで買い物すると、届くのが待ち遠しくて、配達状況をよく確認するのですが、毎回、各社のページを検索→重いトップページを開く→入力というのが面倒になってきたので作成しました。
使い方は見ればわかると思いますが、配達業者を選択して、各社の問い合わせ番号を入力、確認をクリックすれば、各社の確認結果のページへリダイレクトします。ハイフンやスペースが入ってしまっても、自動で除去します。
iPhone / iPod touch のホーム画面に置いとくと便利かもしれません。
今回、ホーム画面用のアイコンは「Flavour Extended: The Ultimate Icon Set For Web Designers – Smashing Magazine」をほぼそのまま利用さしてもらいました。ありがたい。
なお、PCや他のスマートフォンでも使えると思いますが、見た目と動作は保証しません。
Harmonograph.js をアップデートしました
- 2010年1月11日 1:03 PM
- 未分類
JavaScriptによるハーモノグラフ・シミュレータ「Harmonograph.js」をアップデートしました。
今回追加した主な機能は2点、いずれも高品質な画像を出力するためのものです。
画像サイズの指定
これまで画像のサイズは400×400pxで固定でしたが、任意のサイズ(縦横比は1:1固定)で描画することが可能になりました。描画中は今までと変わらないように見えますが、保存したり、新しいウィンドウで開いたりすると、指定したサイズで表示されます。
描画精度の指定
上記の機能追加で大きな画像を作れるようになると、線のガタつきが目立ったため、描画精度を指定できるようにしました。精度の値を上げると、描画速度は遅くなりますが(精度が2倍になると速度は1/2になる)、滑らかな線が描けます。逆もしかりなので、精度を下げておおまかな形を把握してから、精度を上げて綺麗な画像を再度描画する、といったこともできます。
そのほか、描画方法の改善、コードの整理、語句の変更など細かい修正も行いました。
なお、今回のアップデートにあたり、株式会社パンセ・ア・ラ・ミージック様から制作費をいただきました。自分の作ったソフトウェアがお金になるのは初めての経験で、非常に嬉しく思います。この場を借りてお礼いたします。
また、同社発行の音大・音高受験情報誌「パンセ・リポート」No.194には、Harmonograph.jsで作成した純正律・ピュタゴラス音律・平均律・中全音律それぞれの音程のハーモノグラフが掲載されています。ここまで活用してもらえるとは・・・。
遅まきながら明けまして。
- 2010年1月4日 8:24 PM
- 未分類
はいどうも、明けましてー。
2010年ですよ。ゼロ年代終わっちゃいましたよ。未来っぽい字面ですよ。
昨年中は、なんというか、自分の趣味をより深く理解してきた感があります。その分、好きなものに対する出費がものすごい増えたという・・・。
えーと、年賀状は遅れに遅れ、元日の夜中にデザインして、出したの3日というていたらく。しかも3年目のえとうたは未だに完成せず。歌詞書くのやだよー。まあ、1月中にはアップします。
そういえば、去年の元日に1年間の目標を書いてたので、評価してみましょう。
- サーバレンタルする&独自ドメインとる
これは確か1月早々に実現してます。まあ、お金があれば申し込むだけだしね。 - Webサービスつくる
Webサービスといえるかわからんけど、 Harmonograph.js と iTunes Store RSS Generator+ をリリース。まあ、よしとしましょう。 - Etherwaveクローンかレッド&ブルー・チェアのどちらかは作る
後者は材料買って途中まで作ったんだけど、設計図に誤りがあって停滞中。もったいないのでそのうちなんとか完成させたい。前者はノータッチ。 - モダンジャズピアノレッスン
を終える
1巻はまがりなりにも終えたけど、2巻入ったあたりで止まってる。 - ヴィオラの演奏技術を底上げする
底上げ、かどうかわからんけど、演奏会3つ出て、ある程度うまくはなった。でも、基礎的なとこはまだまだですな。 - 2010年4月以降のまともな身の振り方を決める
・・・。まだあきらめてませんよ。
と、このへんを念頭において今年の目標。
- Arduino使ってなんか作る
- 音楽学の解説サイトを公開する
- Webサービスかローカルアプリをいくつか作る
- レッド&ブルー・チェア作る
- モダンジャズピアノレッスンを終える
- ヴィオラの独奏曲を1つ弾けるようにする(候補はアルペジオーネソナタの1楽章(演奏例))
- 2010年4月以降のまともな身の振り方を決める
ガルバンゾー。
では、今年もゆるゆるとよろしくお願いします。
「SEO」は「エスイーオー」か「セオ」か
- 2009年11月30日 5:50 PM
- 未分類
いろんな方法を駆使して、自分や顧客のサイトを、サーチエンジンでヒットしやすくすることを Search Engine Optimization (サーチエンジン最適化) といい、頭文字をとってSEOと表記する。
私はこの「SEO」を頭の中で「エスイーオー」と読んだり「セオ」と読んだりしていたのだが、どちらが正しいのか、あるいはどちらも正しいのか、気になったので調べてみた。
調査1. Google → Yahoo!知恵袋 → Wikipedia 日本語版
まずGoogleで探して目についたのがこちら。
これに対する回答がこちら
http://ja.wikipedia.org/wiki/%E6%A4%9C%E7%B4%A2%E3%82%A8%E3%83%B3%E…
どっちでもよかみたいですばい
で、リンク先のWikipediaの記事を見ると、それらしい記述が見つからない。過去に記述があったかと考え、回答が書かれた頃の版を参照すると「SEO(エスイーオー/セオ)」の記述がある。調べてみると、2009/2/6版まではこの記述が残っている。この記述が削除された理由はわからなかったので、他で調べてみることにする。
調査2. ONE LOOK → Wiktionary 英語版
まず、英略語の発音が一覧できるようなサイトは見つからなかった。知ってたら誰か教えてください(書籍でも可)。で、難読略語の雄「SCSI(スカジーと読みます)」をOneLookで調べてみると、Wiktionaryにはちゃんと発音が載っていた。そこでWiktionary 英語版でSEOを調べてみると、発音は載っていないもののInitialismとの表記が。そのリンクをたどってみると以下の記述が。
initialism — An abbreviation that is formed from the initial letters of a sequence of words. Initialisms that are pronounced as words, such as UNICEF, are usually called acronyms, so the term initialism is generally only used for those that are pronounced letter by letter, such as USA.
つまり、UNICEFやSCSIなど単語として発音するものをacronym、USAのように一文字ずつ発音するものをinitialismと呼ぶらしい。で、SEOはinitialismと書かれていたので、Wiktionaryの情報を信頼すれば「エスイーオー」と発音する(「セオ」とは発音しない)ということになる。どちらの方法でも読まれるもの(URLを「アール」とも発音するらしい。へー。)については、ちゃんと両方書いてあるので、それなりに信頼していいのではないかと思う。
まあ、日本語Wikipedia(の過去の記述)を信用せず、Wiktionaryを信用するのも変な話だけど、少なくとも英語の資料で「セオ」という発音に関する記述は見つけられなかった。
ちなみに、英語版Wikipediaの「Acronym and initialism」の項では、略語の様々な読み方が分類されていてなかなかに面白い。ここでもacronymとinitialismは上記と同じ定義をしている。
結論
ということで、SEOの読み方は「エスイーオー」。「セオ」は日本ではありかもだが、一般的ともいえない、くらいでお茶を濁しておく。
なお、一応職場にある辞書類(現代用語辞典・略語辞典・英英辞典)でも調べてみたものの、項目自体がほとんど載っておらず(あまり新しい資料がなかったせいもある)、唯一載っていた「現代用語の基礎知識2010」にも、読みは記載されていなかった。
7月のPORTAリニューアルについて
- 2009年10月27日 7:02 PM
- 未分類
2009/7/7に「PORTA(国立国会図書館デジタルアーカイブポータル)」はリニューアルが行われ、外部提供インターフェイスにもいくつか機能が追加された(OpenSearchにISBNの前方一致検索を追加します)。もう随分前になってしまったが、気になるとこだけピックアップ。
OpenSearchにISBNの前方一致検索を追加
OpenSearchも、マッシュアップには一番使うであろうISBNによる検索に対応した。手軽に使えて、返ってくるメタデータも詳しい(ブラウザで表示するとあんまり見えないので、ソースを表示してみてください)。
- isbn=9784805208038 でNDL蔵書目録を検索
http://api.porta.ndl.go.jp/servicedp/opensearch?dpid=zomoku&isbn=9784805208038
SRU追加とCQL1.2対応
SRWのリクエストをREST(URLによるリクエスト)にしたSRUに対応した。SRWはSOAPを使うため、何かとめんどくさいが、SRUはURLに検索式を埋め込むので非常に楽。また検索式もCQL1.2に対応することで、検索クエリ中に並べ替えを指定することができるようになった。前の記事にいただいたコメントにもあるようにSRW/CQL1.1のsortKeysによる並べ替えは現時点でも実装されていないが、このCQL1.2による並べ替えはちゃんと実装されている。
- title = library でNDL蔵書目録を検索(タイトル昇順)
http://api.porta.ndl.go.jp/servicedp/SRUDp?operation=searchRetrive&maximumRecords=10&recordSchema=dcndl_porta&query=title+%3D+library+AND+dpid+%3D+zomoku+AND+sortBy+%3D%22title%2Fsort.ascending%22 - title = library でNDL蔵書目録を検索(タイトル降順)
http://api.porta.ndl.go.jp/servicedp/SRUDp?operation=searchRetrive&maximumRecords=10&recordSchema=dcndl_porta&query=title+%3D+library+AND+dpid+%3D+zomoku+AND+sortBy+%3D%22title%2Fsort.descending%22
OAI-PMHに対応
これ、ほんとにいいの?と思える大盤振る舞い。OAI-PMHは電子リソースのメタデータを網羅的に収集するためのプロトコル。より詳しくはWikipediaか国立情報学研究所によるドキュメントの和訳あたりを参照。ようは、PORTAが持ってるメタデータを網羅的にダウンロードできて、アップデートにもちゃんと対応できるわけで、これはかなり画期的。
- 2009-10-09にPORTAに登録されたNDL蔵書目録のコンテンツ
http://api.porta.ndl.go.jp/servicedp/oai2?verb=ListRecords&metadataPrefix=dcndl_porta&set=zomoku&from=2009-10-19&until=2009-10-19
このサンプルで返ってくるデータは一部で、末尾に書かれたtoken(resumptionToken要素に書かれている。なお、この要素のcompleteListSizeに検索式に対するレコードの全数が書かれている。この例では6971件)をパラメータにリクエストすることで、続きのデータを得られる。このときは、下記のようにverbとresumptionTokenだけを指定してリクエストする。
なお、日によってはものすごい膨大な量のデータを登録してるようなので、ハーベストしようと思ってる人は注意が必要。
itemnoによる検索に対応
これまではPORTAで特定の1つの書誌を取得したい場合は、ISBNなどを利用するしか無かったが、PORTAでのIDであるitemnoでの検索に対応した(SRW/SRUのみ)。実は2009/7/7時点ではこの機能が実装されてなかったので、PORTAの中の方に問い合わせを行ったところ、先日実装されたことをお伝えいただいた。ただし、データベース構造上、repositoryidを指定する必要があるらしく、repositoryidとitemnoを半角ハイフンでつないだものをitemnoとして指定することで、目的の情報を取得できる。IDで情報取得できるのは、マッシュアップにはよいですね。他の方法に比べて速いし。
ホーム > 未分類
- 2010年9月
- 2010年8月
- 2010年7月
- 2010年3月
- 2010年1月
- 2009年11月
- 2009年10月
- 2009年9月
- 2009年8月
- 2009年7月
- 2009年6月
- 2009年5月
- 2009年4月
- 2009年3月
- 2009年2月
- 2009年1月
- 2008年12月
- 2008年11月
- 2008年10月
- 2008年9月
- 2008年8月
- 2008年7月
- 2008年6月
- 2008年5月
- 2008年4月
- 2008年3月
- 2008年2月
- 2008年1月
- 2007年12月
- 2007年11月
- 2007年10月
- 2007年9月
- 2007年8月
- 2007年7月
- 2007年6月
- 2007年5月
- 2007年4月
- 2007年3月
- 2007年2月
- 2007年1月
- 2006年12月
- 2006年11月
- 2006年10月
- 2006年9月
- 2006年8月
- 2006年7月
- 2006年6月
- 2006年5月
- 2006年4月
- 2006年3月
- 2006年2月
- 2006年1月
- 2005年11月
- 2005年10月
- 2005年9月
- 2005年8月
- .NET
- 2ちゃんねる
- Amazon
- API
- Apple
- CakePHP
- CiNii
- CSS
- DIY
- Firebug
- Firefox
- flickr
- Greasemonkey
- HatebuSearch
- HTML5
- iPhone
- iTunes
- J-STAGE
- java
- JavaScript
- jQuery
- Linux
- MILAI
- mod_rewrite
- Naxos Music Library
- NDL
- Photolog
- PHP
- Pipe
- Podcast
- PORTA
- reCAPTCHA
- RSS
- ruby
- Safari
- tips
- tumblr
- Visual Basic
- Web
- WebAPI
- Webcat
- Webサービス
- Webデザイン
- Wiki
- Wikipedia
- Windows
- Wordpress
- YouTube
- かわいい
- はてな
- アーカイブ
- ゲーム
- スパム対策
- セキュリティ
- テルミン
- デバイス
- ハーモノグラフ
- パブリックドメイン
- ブックマークレット
- ブログ
- モノ
- ユーザビリティ
- ユーティリティ
- リコーダー
- リテラシー
- リリース
- レファレンス
- 作曲
- 写真
- 印刷
- 図書館
- 天文
- 学術情報
- 宗教
- 思考
- 政治
- 教育
- 文字
- 文字コード
- 文章
- 新聞
- 日記
- 本
- 本やタウン
- 楽器
- 楽譜
- 機関リポジトリ
- 物理
- 現代美術
- 社会
- 科学
- 絵
- 美術
- 色
- 芸術
- 著作権
- 言語
- 非GUI
- 音楽
- 食
- 検索
- フィード
- メタ情報




