Vim で Markdown 形式のハイパーリンクを Web サイトのタイトルも含め自動生成する

あけましておめでとうございます。今年もよろしくお願いいたします。

Vim に関する記事を読んでいるときに、Emmet.vim を使えば簡単なコマンドで Markdown 形式のリンクが作成でき、しかもタイトルまで自動で取得して入力してくれる、ということを知りました。しかしそのためだけに Emmet.vim をインストールするのはいささかオーバーキルの感があったので、自分が既に利用している Vim script を複数使って同様の機能を実装しました。

具体的な挙動は、カーソル下の URL を取得し(vim-textobj-user, vim-textobj-url に依存)、その URL から HTML の <title> タグを取得し(webapi-vim に依存)、括弧をいい感じに整える(vim-surround に依存)というものです。他人の褌で相撲をとっている感が満々ですが、まぁ車輪の再発明をしなくて済んでいるということにしておきましょう。

以下がその Vim script です。ご活用いただければ幸いです。ツッコミなども歓迎いたします。

Create Markdown hyperlink automatically. Usage: t ...

KainokiKaede Advent Calendar 2014 を振り返る

この記事は KainokiKaede Advent Calendar 2014 25日目の記事です(嘘から出たまこと)

最後は自分語りかよって言われるかもしれないけど振り返りもしたかったしまぁ多少はね?

なんでこんな誰も喜ばないようなアドベントカレンダーを始めたかというと、自分の最近の興味の方向性がわかるかなと思ったからです。でも結局雑食性であることがわかっただけっぽいですね。まぁとりあえず振り返ってみましょう。

KainokiKaede Advent Calendar 2014 記事リスト

Date Title
2014-12-25 KainokiKaede Advent Calendar 2014 を振り返る
2014-12-24 Cubase で TouchOSC を使う
2014-12-23 Markdown で書いた文書を LaTeX でリアルタイムでタイプセット(Pandoc と latexmk を利用)
2014-12-22 (MacBook Air + Traktor) + (iPad + TouchOSC) でモバイルワイヤレス DJ 行為
2014-12-21 国際キャッシュカードを作ろう
2014-12-20 静かな待降節ソング
2014-12-19 Git 初心者が詰まったところをメモ
2014-12-18 Google Calendar で複数のカレンダーにまたがる予定をウィジェットとして公開する
2014-12-17 Mac で Adobe Reader を用いて右綴じの本を見開きで表示する
2014-12-16 夜にメールを書いて朝に送る(Gmail を特定時刻に自動で送信する)
2014-12-15 Vim で Evernote を編集するために vim-geeknote を導入する
2014-12-14 Mac OS X Mavericks に Ureka1.4.1 を導入
2014-12-13 TrueCrypt の後継プロジェクトまとめ
2014-12-12 さくらの VPS でスワップが大量発生した原因と対処
2014-12-11 Xcode 6.1.1 に XVim を導入する
2014-12-10 さくらの VPS を使う - 7. CakePHP
2014-12-09 CentOS ログ・ステータスファイルまとめ
2014-12-08 Firefox で、マウスのみを用いて「ブックマークメニュー」にブックマークを登録。
2014-12-07 CentOS サーバー sensors 温度 知る
2014-12-06 Xcode の便利な機能(主にショートカットキー)
2014-12-05 日頃の感謝をこめて寄付したいウェブサイトなど7つ+α!
2014-12-04 flickr にブログ用のスクリーンショットをアップロードする
2014-12-03 冬コミの寒さ対策
2014-12-02 SONY RX100 の設定項目
2014-12-01 project.pbxproj のコンフリクトを解決するために mergepbx を利用する

ぱっとみた感じ Xcode 関係が3つぐらいあって最近 iOS 向けアプリの開発をしているさまが伺えます。

あと Gmail, Google CalendarGoogle のサービスについての記事が2つあって Google に心を売り渡していることが伺えます。

サーバー関係も4つぐらいあってアマチュア鯖管としての苦難が垣間見られます。

Vim 関係が2つしかないのは意外ですがまぁ個人的にはほとんど弄りつくしてしまったからなぁ。でも vim-geeknote は便利ですし(この記事もそれで書いている) XVim 無しで Xcode を使う気にはもうなれません。このへんのツールについてちゃんと調べて導入したという点はこの Advent Calendar をやってよかったと思っている点です。

DTM 関係がかろうじて2つあるかないかなのは問題な気がする。今年は去年よりもうちょっと楽曲制作できるはずだったのだが……。

結句

正直4日目あたりからすでに辛かったのですが書き溜めもけっこうあったせいでどうにか完走できてよかったです。来年はたぶんやりません。毎日ブログをいくつも書いている人は凄いなぁと思いました(小並感)それではみなさん良いお年を。

Cubase で TouchOSC を使う

この記事は KainokiKaede Advent Calendar 2014 24日目の記事です(大嘘)

TouchOSC は iOS 機器を MIDI コントローラとして使うことができるアプリです。これを Cubase で使う方法をまとめました。

セットアップ

まずは 公式 から TouchOSC Bridge をダウンロードし、Cubase を動かすのと同じ PC にインストール。インストールしたら起動。Windows なら右下のタスクバーにアイコンが表示されるはずです。

また、同じく 公式 から TouchOSC Editor をダウンロードしてインストール。自分で TouchOSC のコントローラを編集しない場合でも、レイアウトを iPad (iPhone) に送るために必要です。

これらのソフトが入っているパソコンは iPad (iPhone) と同じ LAN 内にある必要があります。上手くつながらない場合は LAN ルーターの設定を確認しましょう。

必要なファイルを取得

コントローラーのレイアウトを自分で自由に作成できるのが TouchOSC の良い点でもあり悪い点でもあります。位置から自分のレイアウトを作成するのは面倒すぎて発狂しうるので既存のものを使いましょう。次のようなものがあります。

拡張子 touchosc のファイルを iPad (iPhone) に送り、拡張子 xml のファイルを Cubase に読み込ませることになります。

Cubase 側の設定

Cubase 6 での設定方法です。自分のバージョンに適宜読み替えてください。

デバイス->デバイス設定 の左上の+マークをクリックして「一般リモートデバイス」を選択。右のほうにある「読み込み」から上記でダウンロードした xml ファイルを読み込みます。

TouchOSC 側の設定

まずはパソコン側で TouchOSC Editor を開きます。左上の Open で読み込ませたい touchosc ファイルを開き、右上の Sync を押します。ウィンドウが表示されるので表示したままにしておきます。この状態で iPad (iPhone) の TouchOSC から Layout -> Add を選択すると自分のパソコンが表示されているはずです。そこを押すとテンプレートが iPad に送信されます。

完了

あとは iPad (iPhone) 側で操作すれば Cubase の該当箇所が動くはずです。最初は若干の遅延があるかもしれませんが、そのうち良くなります。

Markdown で書いた文書を LaTeX でリアルタイムでタイプセット(Pandoc と latexmk を利用)

この記事は KainokiKaede Advent Calendar 2014 23日目の記事です(大嘘)

Markdown で原稿を書いて、リアルタイムで TeX ファイルに変換・タイプセット ということをやりたかった。

流れ

main.texhoge.md とを作る。 main.tex の中で hoge.tex をインクルードしておく。 hoge.md から Pandoc で hoge.tex を作る。すると latexmk が更新に反応して pdf を作ってくれる。みたいな流れを考えた。

なぜ Pandoc だけで pdf 作成までやらないかというと、テンプレートを書くのがめんどいというのが一つ。章ごとにわけてタイプセットしたいというのが一つ(md ファイルを分割する方法があるのかもしれないけれども調べていない)。

ファイル構造は次のような感じになる。

main.tex (内部で hoge.tex を input)
hoge.md (編集対象)
hoge.tex (自動的に生成される・編集しない)

コード

とりあえず超てけとーだけど、ファイルの更新をチェックして勝手に Pandoc を回すコードを組んだ。select というモジュールを使った。

import select
import argparse
import os

def watchfile(filename):
    outfilename = filename.split('.')[0]+'.tex'
    f = open(filename)
    # when monitoring a directory: f = os.open("foo", os.O_RDONLY)
    kq = select.kqueue()
    ke = select.kevent(f, filter=select.KQ_FILTER_VNODE,
        flags=select.KQ_EV_ADD | select.KQ_EV_ENABLE | select.KQ_EV_CLEAR,
        fflags=select.KQ_NOTE_DELETE | select.KQ_NOTE_WRITE)
    events = kq.control([ke], 0, None)
    while True:
        r_events = kq.control([ke], 1, None)
        for event in r_events:
            print event
            if event.fflags & select.KQ_NOTE_DELETE:
                print "file was deleted!"
            if event.fflags & select.KQ_NOTE_WRITE:
                os.system('pandoc -i {0} -o {1}'.format(filename, outfilename))
                print "file was updated!"
    f.close()


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('filename')
    args = parser.parse_args()

    watchfile(args.filename)
$ python automd2tex.py hoge.md

で、自動的に更新があったら Pandoc を動かして tex にするようにした。 つまり1窓でこれを、もう1窓で latexmk を動かせば md を更新すると pdf が自動生成される。 bashrc のエイリアスを使って、 md2tex hoge.md で同じ効果が得られるようにした。

でもなんつうか、これ auto じゃなくてもよくね。どうせ md とか Vim でしか書かないんだから、quickrun 的な発想で

autocmd FileType markdown nnoremap gpa :<C-u>! pandoc -i "%:p” -o "%:p:r”.tex<CR>

こんなんでできないの?(できた) 一応これで md で tex を書けるようになったけどなんかめんどいですね。

(MacBook Air + Traktor) + (iPad + TouchOSC) でモバイルワイヤレス DJ 行為

この記事は KainokiKaede Advent Calendar 2014 22日目の記事です(大嘘)

Native Instruments の Traktor はセールがあると3000円ぐらいまで価格が落ちる。そんなときにたまたまお金に余裕があったので衝動的に買ってしまった、そういう人は多いと思う。しかし MacBook Air は持っているが DJ 用のコントローラーは無いし、買うと高いので、手持ちの iPad でなんとかコントロールしたいという欲求が生まれる。

iPad には自由に MIDI コントローラーを作ることができる TouchOSC というアプリが存在し、その TouchOSC には Traktor 用のテンプレートとして Jog-On が付属している。これと MBA とを無線で繋げることができればモバイルワイヤレス DJ 行為が可能である。

準備

ソフトのインストールなど

まずは上記のアプリなどを全て入手する。可能であれば MBA のイヤホン出力以外にもう1つステレオ出力のあるオーディオインターフェースがあるとよいが、ないなら Traktor DJ Cable などの、ステレオ出力をモノラル2つに分配するケーブルを使えばよい。

MBA と TouchOSC を繋ぐには TouchOSC のページから TouchOSC Bridge を入手・MBA にインストールしておく必要があるので、それもやっておく。

もちもの

DJ をはじめる直前の準備

  1. MBA の システム環境設定 → 共有 → インターネット共有 がオンになっていることを確認する。
    • 共有する接続経路は Wi-Fi, 相手のコンピュータが使用するポートは Bluetooth PAN にする。
  2. iPad の 設定 から Bluetooth をオン → MBA に繋ぐ。
  3. MBA で TouchOSC Bridge を起動。
  4. iPad で ToushOSC を起動。MIDI Bridge からホストを選ぶ(初期状態では前回繋いだときのホストが選択されているが、たとえホストが同じでもこのまま繋げようとしても繋がらないことがあるので、必ず下のホスト一覧から新しく選択しなおす)。
  5. MBATraktor を起動。適切なルーティングが選択されているかどうか確認。
    • オーディオインターフェース2つでやる場合、一度 Mac 側で Audio MIDI 設定 アプリを開いてインターフェースが正しく接続されているかを確認。その後、Traktor の設定から適切な出力に適切な入力が割り当てられているか確認。
    • オーディオインターフェース1つでやる場合( などの分配ケーブルを利用)、ヘッドホン側とスピーカー側とを取り間違えていないか確認。
      • Traktor DJ Cable を MBA 標準の音声出力で使う場合は、Traktor 側の Output Monitor の L を 2, Output Master の L を 1 に設定する。

あとは曲を流すだけである。

ハマりポイント

  1. Jog-On のテンプレート使用時に FX まわりがうまく動かない!
    • このテンプレートにおいて、左右の FX はそれぞれ FX 3, 4 にアサインされています。ですのでこれらを使えるように設定の Effects で 4 FX Units を選択しておく必要があります。
  2. Mash, Slice, Stop が動かない!
    • これらは、Deck A は FX 1, Deck B は FX 2 の Delay, Beat Slicer, Reverse Gain にそれぞれ割り当てられています(このために通常使用する FX が 3, 4 に割り当てられているのでしょう)。よってかならず常に Deck A は FX 1 へ、Deck B は FX 2 へルーティングしておくようにしましょう。ボタンを押して、これらのエフェクトが動作することを確認してください。

国際キャッシュカードを作ろう

この記事は KainokiKaede Advent Calendar 2014 21日目の記事です(大嘘)

トラベラーズチェックの国内販売が終了した

一昔前までは海外旅行の必需品といえばアメリカン・エキスプレスのトラベラーズチェックであったが、残念ながら 日本国内での販売は 2014年3月をもって終了した 。これによって旅行者が現地で買い物をする手段は、ほぼ次の方法しかなくなった。

  • クレジットカード(ショッピング枠)を利用
  • 日本で外貨現金に換金して持っていく
  • クレジットカード(キャッシング枠)を利用
  • 国際キャッシュカードを利用

手数料などを考慮して、換金率のよい順に並べたつもりである。なおクレジットカード(キャッシング枠)を利用する場合の順位は利息に依る。

これらのうち、クレジットカード(ショッピング枠)を利用すれば手数料などが割安で済むので可能であればそれを選択すればよいのだが、ショッピング枠はいざというときに限度額制限に引っかかったり(海外旅行などの事情があるときは一時的に限度額を引き上げることも可能であるが、それも限度がある)、タガが外れて使いすぎてしまったり(こういう人はそもそもクレジットカードを持つべきではない)、現金が必要なときにどうしようもなかったり(ショッピング枠を現金化しようとしてはいけない)と不便も多い。

日本で外貨現金に換金して持っていく方法はもっとも確実だが、盗難の危険や、現金が不足したときにどうしようもなくなる(現地で換金するために日本円を持っていくなどの対策が必要)という問題がある。

クレジットカード(キャッシング枠)を利用すると支払日(最大で2ヶ月先になりうる)までの利息(年利約18%)が発生してしまうので、なるべく選択したくない。帰国したらすぐに一括返済をすることで利息を安めに抑えるという手法もあるようだが、若干面倒である(忘れそうで怖い)。また、使用者が学生だったりするとそもそもキャッシング枠をつけられないこともある(ショッピング枠とは異なり、こちらは旅行などの事情があってもダメな場合がある)。

ということで、どこかの銀行に日本円でお金を預け、世界各国で使えるキャッシュカードを使って現地通貨で引き出せれば便利である。預金が不足した場合も家族や友人にその口座へ入金してくれるように頼めば対処できる。国際キャッシュカードの利用を検討しよう。

国際キャッシュカードの種類と比較

比較サイトとしては ここ が詳しい。

日本に現在存在する、銀行口座付帯の国際キャッシュカードは 楽天銀行新生銀行シティバンク銀行 の3択。Wikipedia を見ると他にもいくつか選択肢がありそうに書かれているが、よくよく読むとそれらはほとんどが現在では使用できない。

シティバンク銀行は、預金額が50万円以内だと、月2000円程度の口座維持費がかかる。よって選択肢から外れる。新生銀行 or 楽天銀行 の間で検討してみよう。

楽天銀行デビットカード

新生銀行キャッシュカード

どちらのほうが安いかは微妙だと思ったので計算してみたところ、年間12万円ぐらいで両者がだいたい一致。それ以下ならば新生銀行のほうが安い。それ以上ならば楽天銀行のほうが安い。

さすがに海外で年間12万円は使わないので、私にとっては新生銀行が最善に思います。

静かな待降節ソング

この記事は KainokiKaede Advent Calendar 2014 20日目の記事です(大嘘)

世間一般では賑やかな季節となってまいりましたが、欧米ではこの季節は日本の年の瀬みたいな感じでしんみりと祝い、むしろ新年のほうを盛大に祝うようです。だから日本もそうしよう! なんてことは言いませんが、せめてその雰囲気を伝えたいと思い、賑やかな曲だけでなくしんみりとした曲も多いのだよ、と主張したくてこの記事を書きました。アドベントカレンダーっぽい記事を書いてみたかったというのもあります。ではどうぞ。

Veni Veni Emmanuel

曲名は「来たれ、来たれ、エマヌエルよ」。エマヌエルはキリストの別名です。キリストには7つの別名があって(O Antiphons)、それらをひとつひとつ挙げていって「こうこうこういう人が生まれるから喜べ (Gaude) !」という曲です。しっとりとした中に希望を感じさせる曲。

Carol of the Bells

この記事を書くきっかけになった曲です。楽しい季節の曲のはずなのにおどろおどろしいというか、なにか迫りくるものを感じさせる曲です。ホーム・アローンで流れていたので有名かも。

また、この曲を原曲とした クトゥルフネタの替え歌 も有名。

Puer Natus in Bethlehem

そのまんま「ベツレヘムで子供が生まれた」って曲ですね。詞は13世紀、曲は14世紀だそうです(英語版 Wikipedia)。

こんな感じの、永久に同じことを続けられそうな曲が好きです。

Coventry Carol

L の音がつながっていって心地いい曲。

L の音が心地良いといえばこんな小説がありましたね(ゲス顔): "Lolita, light of my life, fire of my loins. My sin, my soul. Lo-lee-ta:”

Kings College Choir - 24 Dec. 2011

ミサ兼発表会みたいな感じなのかな。有名な曲が合唱+パイプオルガンで歌われています。知ってる曲もいくつか出てくると思うので作業用にどうぞ。

最初に出てくるショタがかわいい(小並感)

ヴァチカンの動画

最後に、待降節ソングというわけでもないですが、2013年の降誕祭の晩の祈り@ヴァチカンの映像です。こんなものを公式が提供してくれるなんていい時代になったなぁと思います。クリスチャンではないのでやはり作業用BGMに最適です(冒涜)。

結句

ということでみなさんも今年は大人しく家族と家で聖歌でも聴いて過ごしましょう。絶対だかんな!