Dictionary.app で使える辞書を作って Alfred で活用する

Dictionary.app も Alfred も別に目新しいものじゃないけど、用途によっては組み合わせるとすごく便利だと思いました。

Dictionary Development Kit

Mac 標準の Dictionary.app で利用できる辞書は、Dictionary Development Kit を利用して作ります。

Dictionary Development Kit は Apple からダウンロードします。Apple の Developer アカウントが必要です。

https://developer.apple.com/download/more/ から Auxiliary Tools for Xcode 7 をダウンロードして、dmg ファイルをマウントして、中身の Dictionary Development Kit ディレクトリを適当なところにコピーしてください。

あとは、project_template ディレクトリを適当な名前でコピーして辞書を作っていきます。

辞書を作る

さくっとやっちゃいましょう。

MyDictionary.xml

辞書本体です。Dictionary Development Kit 内のドキュメントに詳しい仕様が書いてありますが、読むのが面倒な場合はこのファイルや、Dictionary Development Kit に同梱されているサンプルを見ると早いと思います。
とりあえず、項目名が hoge, 中身が fuga みたいな項目が1つだけ含まれてる辞書ファイルの中身はこんな感じです。

<?xml version="1.0" encoding="UTF-8"?>
<d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
<d:entry id="hoge" d:title="hoge">
    <d:index d:value="hoge" d:title="hoge" />
    <div>fuga</div>
</d:entry>
</d:dictionary>

<d:entry> を増やしていけば項目が増えていきます。

MyDictionary.css

Dictionary.app でこの辞書の項目を見たときに適用される CSS です。Alfred のサジェスト項目に表示させるときには特に意味は無いのでぼくはいじってません。

MyInfo.plist

辞書の情報を格納するファイルです。ひとまず、下記の記述で動きます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>Japanese</string>
    <key>CFBundleIdentifier</key>
    <string>com.example.hogedictionary</string>
    <key>CFBundleName</key>
    <string>Hoge Dictionary</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>DCSDictionaryCopyright</key>
    <string>Write your copyright here</string>
    <key>DCSDictionaryManufacturerName</key>
    <string>Write your manufacturer name here</string>
</dict>
</plist>

Makefile

DICT_NAME を辞書名に、DICT_BUILD_TOOL_DIR を Dictionary Development Kit を置いたディレクトリに書き換えてください。
MyDictionary.xml, MyDictionary.css, MyInfo.plist の名前を変更した場合はその記述も変更してください。

辞書を作ってインストール

$ make && make install

これがエラー無く終われば、Dictionary.app の Preferences から、今回作った辞書が選択できるようになっているかと思いますので、有効にしてください。Alfred で利用する場合は、ドラッグアンドドロップで一番上とかそのあたりに移動させて優先度を上げると、Alfred でサジェストされやすくなるのでおすすめです。

活用例

自分はマイルを貯めるのが好きないわゆるマイラーで、いろいろ情報収集してると空港コードとか航空会社の2レターコードとかに出くわす場面が多いです。いちいちググるのもかったるくなってきたので、この方法で辞書を作って Alfred から検索できるようにしました。

辞書検索はデフォルトの define から d に変更しています。

f:id:nash716:20160624210913p:plain

f:id:nash716:20160624210926p:plain

2016春アニメフォントリスト

急に思い立ったので書きます。自分が視聴しているアニメが対象。
なお、自分はフォントワークス系フォントしか持ってない(あとは TypeKit で入ってくるモリサワ数種)ので、それ以外はちょっとわからない。
間違ってたら教えてください!

  • ハイスクール・フリート(はいふり)
    • OP: コメット
    • ED: ライラ
    • テロップ: 筑紫Aオールド明朝
  • 迷家―マヨイガ
    • OP: 筑紫明朝かと思ったけど微妙に違う、なんだろう(なんかの明朝に長体かけた感じ。長体って表現が適当かどうかはわからないけど)
    • ED: 筑紫ゴシック
  • くまみこ
    • OP、テロップ、話数表示: 筑紫B丸ゴシック
    • ED: Popハッピネス
    • 次回予告:花風なごみ
  • ばくおん!!
    • OP: くろかね
    • ED、話数表示: ハミング
  • 坂本ですが?
    • OP、ED、話数表示: 筑紫明朝(ちゃんと調べてない)
  • Re:ゼロから始める異世界生活(自信なし)
    • OP: 見出ゴMB31(漢字・カタカナ)、リュウミン(ひらがな)
    • ED: わからない(おそらくモリサワ系)

Chinachu 向けエンコードマネージャ shigure を作った

Chinachu してると生TSが溜まっていって、そろそろ10TBのストレージも埋まってきた。。。
エンコードしないといけないのはわかってるんだけど、生データでとっておきたいやつもあるしむやみに自動化スクリプト書けない。。。

といった状況を打破するために shigure というソフトウエアを作りました。

Chinachu が動いている環境なら、README にあるインストール方法ですぐ動くかと思います。

README とほぼ書いていることは一緒ですが、

  • Chinachu のデータファイルを監視し、録画終了時にエンコード
  • Chinachu が番組を録画している際、ffmpeg の優先度を調整
  • エンコードする番組・しない番組の指定が可能

してくれるおしとやかなソフトです。

ffmpeg と書いていますが、エンコードスクリプトは自由に指定できるので、ffmpeg 以外でも大丈夫です。

似たような問題で困っていた方はぜひ。
github.com/nash716/shigure

小言

将来的にはモバイル対応の Web インターフェースを作りたいなぁと思ってます。

技術的な話をすると、バリバリ ES6 で、babel 使って transpile してます。めんどくさかったので browserify 使ってくっつけてます。
何も考えずに browserify 使うと fs とかが空っぽになってしまうので、webpack でいう target: 'node' 的なものを探していたところ、 --bare というオプションを付ければよいという知見を得ました。

HDD増設 (Ubuntu Server 14.04)

やるたびにググってるのでメモ。
ちなみに増設したのは3TBのHDD。
/dev/sdc とかは適宜。

$ sudo parted /dev/sdc
GNU Parted 2.3
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/sdc: unrecognised disk label
(parted) mklabel
New disk label type? gpt
(parted) mkpart
Partition name?  []?
File system type?  [ext2]? ext4
Start? 0
End? 3001GB
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) quit
Information: You may need to update /etc/fstab.
$ sudo mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (4-Feb-2014)
/dev/sdc1 alignment is offset by 3072 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Filesystem label=
OS type: Linux
*snip*
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
$ sudo blkid /dev/sdc1
/dev/sdc1: UUID="hogehoge" TYPE="ext4"
$ sudo vim /etc/fstab
次の行を追加
UUID=hogehoge /path/to/mount/point ext4 defaults 0 0
$ mkdir /path/to/mount/point
$ sudo mount -a
$ df -h
Filesystem              Size  Used Avail Use% Mounted on
*snip*
/dev/sdc1               2.7T   73M  2.6T   1% /path/to/mount/point

コミケお疲れ様でした!

あけましておめでとうございます。今年もよろしくお願いします。
新年の挨拶は置いておいて、コミケお疲れ様でした!

C89では、@rb_de0と雑な感じで作った北海道プリンプリン騎士団というサークルで、Chrome マイナー API リファレンスという同人誌を頒布していました。

f:id:nash716:20160101210438j:plain

今回は初のサークル参加でとてもあたふたしていましたが、最終的に本も完成し、ちゃんと頒布できて良かったです。
印刷所のポプルスさんには直接搬入をお願いしていたのですが、当日箱のなかを見てみると「予備として6冊同梱しました」との案内が。ぶっちゃけ「ありがたいけど持って帰る分増えるやんけ……」という感想でしたが、12時過ぎに完売というまさかまさかの結果でした。(ちなみに印刷の品質めっちゃ高くてびっくりしました。ポプルスさんありがとう!!)

ということで、事前に取り置き依頼があったものと自分用の1冊以外、すべて誰かの手元に渡ったことになります。ありがとうございました!

f:id:nash716:20160101212126j:plain

なお、サンプルやチュートリアルをまとめたサポート用リポジトリがありますので、ご活用ください!感想・指摘・マサカリなど、お待ちしてます。

今後について

多分夏コミは申し込みます。通るかどうかは別として。
完売した後に「欲しかったなぁ……」というありがたい言葉を掛けてくださった方もいましたので、何部か追加で刷って持っていけたらなぁとは思っていますが、印刷代とか諸々の事情で実現できるかはわかりません。
なんかいい配布方法あれば教えてください。

格安サーバ(PRIMERGY TX1310 M1)を買った

NTT-XPRIMERGY TX1310 M1 が 17,800 だったので買いました。
注文から3時間で発送されて強かったです。
せっせといろいろ頑張ってもらう予定ですが、情報が少なくて買う前にひたすら迷ったのでいろいろ注意点とか躓いたところとか書いておきたいと思います。

サーバ本体について

  • 電源コードは3ピンのプラグのものしか付属しないので、なんとかする。
  • キーボードとマウスがついていた(たぶん買う時期とかによって付いたりつかなかったりすると思う)。
  • 画面出力は D-sub のみ。ウチには D-sub 対応ディスプレイがなかったので(どうせセットアップ中しか使わないのに!!!)泣いた。
  • 結構静か。隣で動いてる自作ゲームマシンがうるさすぎるだけかも。
  • Haswell 世代の Pentium が乗っていて、QSV も使える。
  • QSV が使える ffmpeg の作り方がよく分からなくて詰んでる。誰か教えてください。

セットアップについて

  • Ubuntu Server を入れた。USB メモリからもブートできたが、ISO イメージの書き込み方には注意(間違えるとたぶんセットアップ中に「CD-ROM 入れてください」みたいなところから進まなくなる)。

オレ的 font-family 指定

いっつも過去のコードから引っ張ってくるのやめたいのでメモ。

Windows

游ゴシックとか游明朝とかが Windows 8 から追加されましたが、これらのフォントはブラウザ上では非常に見づらいので避けます(本文以外の用途だったら考える価値があるかも)。
かといって MS P ゴシックだったら指定する意味がないし嫌なのでメイリオにします。
(消去法でメイリオを選んだように見えるかもですが普通にきれいでいいフォントだと思ってます)

欧文フォントは Segoe UI を使います。きれいだしメイリオとも合うし日本語フォントと組み合わせても問題ない大きさや形をしているのでお勧めです。

Mac

標準できれいなので、Windows の指定でごちゃごちゃにならないように気を付けます。

Linux

個人でいろいろ差がありそうなのでパス(IPA ゴシックとか VL ゴシックとか Ricty とか MigMix とか)。

CSS

こんなん。
ちなみに思想としては、「できるならこのフォントでやってほしいけど、難しいなら無理せずてきとーにデフォルトのフォントでよしなにやってください」です。

font-family: "Helvetica Neue", "Hiragino Kaku Gothic ProN", "Segoe UI", Meiryo, sans-serif;

このブログも上の font-family を指定しています。
宣伝するとこのブログテーマは自作で、はてなブログご利用の方は下のリンクから適用できます。
Hoshizora - テーマ ストア - はてなブログ

追伸

僕は見出しに

letter-spacing: -0.05em;

を付けるのが好きです。