2017-03-16

Emacs-Lisp 関数 skip-chars-forward で文字スキップ

Emacs で空白・改行をスキップしてカーソルを動かしたいと思った。正規表現を使って re-search-forward を使う方法もあるけど、そこまで検索とかしたいわけじゃない。もう少し軽めの関数で十分。というわけで、skip-chars-forward を使った。

関数の説明は次の通り:

Move point forward, stopping before a char not in STRING, or at pos LIM. STRING is like the inside of a ‘[...]’ in a regular expression except that ‘]’ is never special and ‘\’ quotes ‘^’, ‘-’ or ‘\’ (but not at the end of a range; quoting is never needed there). Thus, with arg "a-zA-Z", this skips letters stopping before first nonletter. With arg "^a-zA-Z", skips nonletters stopping before first letter. Char classes, e.g. ‘[:alpha:]’, are supported.

Returns the distance traveled, either zero or positive.

引数にはスキップした文字を渡す。複数の文字をスキップしたい場合は、正規表現 [...] の中の文字列 (... の部分) だけを渡す。

例えば a, b, c の 3 つの文字をスキップしたい場合は次のように書く。

(skip-chars-forward "abc")

- (ハイフン) を使うこともできる。

(skip-chars-forward "a-c")

a, b, c 以外の文字をスキップしたい場合は、否定として ^ が使える:

(skip-chars-forward "^abc")

POSIX の文字クラスも利用可能。今回は空白・改行をスキップしたい。空白・改行を現す文字クラスは [:space:]。これを使ってみる:

(skip-chars-forward "[:space:]")

すると改行はスキップされなかった。

アレ? なんでかな。

とりあえず、次のようなコードを書いたけど気持ち悪い:

(skip-chars-forward "[:space:]\n\r")

誰か理由を知ってる人がいたら、コメントください。

2017-03-10

Rakefile でタスクを階層化する

Rake でタスク名がコロンで区切られてるようなものがある。それを作ってみる。

今回は rake -T と実行したら、次のような出力を返すタスクを例にする。

$ rake -T
$ rake -T
rake setup       # セットアップを行なう
rake setup:gem   # Gem をインストールする
rake setup:pods  # Pods をインストールする

Rakefile は次の通り:

#
# セットアップ用のタスク
#
desc "セットアップを行なう"
task :setup => %w[
     setup:gem
     setup:pods
]

namespace :setup do
  desc "Gem をインストールする"
  task :gem do
    sh "bundle -j4 --path vendor/bundle"
  end

  desc "Pods をインストールする"
  task :pods do
    sh "bundle exec pod install"
  end
end

これで、rake setup:gem と打てば Gem のインストールが行なわれるし、rake setup:pods で Pods のインストールが行なえる。

setup という namespace を作ってやるのがミソ。

あと setup namespace のタスクを一括で実行できるよう setup タスクも用意している。

同種のタスクを作る時に、見やすく・理解しやすく、使いやすい形として namespace は便利。

2017-03-08

5.1ch で放送している番組一覧

AV アンプを導入して 5.1ch で見られるホームシアターの準備ができたと嬉ぶのも束の間。そもそも 5.1ch で放送されているテレビ番組ってあるのかな? という所でつまづいた。Bluray や DVD なら 5.1ch (もしかしたら 7.1ch や 9.1ch) なソフトも多いけど、テレビ番組では? 今までステレオの番組しか見られなかったから、気にかけることもなかった。

目を皿にして電子番組表を眺めれば、SS マーク (5.1ch 放送) を見つけることもできる。でも、そんなの面倒。

そう思っていたら、5.1ch 番組を集めてリスト化しているサイトがあった。

提協は日本オーディオ協会。OTOTEN を開催していたりする。なるほど、ホームシアターが流行すれば喜ぶところがサイトを作っているのね。納得。

サクッと 5.1ch な番組を探したい時はどうぞ。あんまり先の予定までは入っていないので注意。

2017-03-07

Zaim がプレミアム・フライデーの人の購買統計をまとめていた

家計簿サービス Zaim がプレミアム・フライデーの購売について、同サービス内の統計情報を解析してブログ記事を書いていた。

Zaim で入力された支出項目ごとに、プレミアムフライデー当日の 2017 年 2 月 24 日と、昨年 2 月最終金曜日( 2016 年 2 月 26 日)の「会社員の一人当たりの平均支出額」を分析した結果、 1 年前と比較した伸び率が最も大きかった項目が「レジャー」となり (後略)

家計簿 Zaim 購買データを統計解析した「プレミアムフライデーの会社員の支出」発表 - 株式会社 Zaim|株式会社 Zaim より引用

詳細を読むと、一番の伸びを示した「レジャー」にだけ目を向けず、二番手・三番手のデータが「本」「ゲーム」だったことから「外派」「家派」に分かれてプレミアム・フライデーが活用されたのではないかと予想している。

出てきたデータを素直に読んでいる記事は少ない (自分の主張に合うように話の流れを強引に作っちゃう記事が多い)。こういう記事が増えて欲しいと思った。

2017-03-05

PlantUML のコメント

plantuml のコメントの書き方が変わっていたのでメモ。

一行コメントは行頭にシングル・クォート

' 一行コメント (行末まで)

ブロック・コメントは /''/ で囲む

/'
 複数行のコメント
 '/

コメントなしで PlantUML のソースコードを書いていたら、後で読み返した時にコードを読み解くのに手間がかかった。ちゃんとコメント入れておかないといけないなぁ、と反省。

2017-03-03

Rakefile でサフィックス・ルールを書く

Makefile で言うところのサフィックス・ルールを、Rakefile で書く方法を調べてみた。

Rakefile では rule を使ってルールを設定する。ここでは、plantuml コマンドを使って、PNG 画像を出力する Rakefile を例に説明す2。

PLANTUML = "~/bin/plantuml.jar"

task :default => :uml

desc "UML 図を更新する"
task :uml => ["profile.png", "timeline.png"]

rule '.png' => '.plantuml' do |t|
  sh "java -jar #{PLANTUML} #{t.source}"
end

plantuml のコマンドは次の書式で使う。

$ java -jar ~/path/to/plantuml.jar 入力ファイル名

plantuml.jar への PATH を変数 PLANTUML にセット。

タスク :uml を実行すると「UML 図を更新」するようにした。rake uml で profile.png 及び timeline.png が作成される。出来上がるファイル名はダブル・クォーテーションで囲む必要がある。これを忘れてて、rake uml が実行できない、と少し悩んだ。

最後に rule を設定している。拡張子 .png ファイルは、拡張子 .plintuml を持つファイルが更新された時に次行のコマンドを実行して作成される。

2017-03-02

Apple Pay 対応クレジット・カードが 7 つ増えた

2017-03-01 (水)、Apple Pay 対応のクレジット・カードが 7 つ増えた。増えた対応カードは次の通り:

  • アメリカン・エキスプレス・カード
  • アプラス・カード
  • エポス・カード
  • ジャックス・カード
  • セディナ・カード
  • ポケット・カード
  • ライフ・カード

なお、Apple Pay のサイトでは 2017-03-01 から 2017-04-30 の間にキャンペーンを行なうとしている。例えば、5% のキャッシュバックや Suica の 1000 円チャッジ・プレゼント、MINI STOP のソフトクリーム・バニラ 50 円オフなど (条件あり)。Apple Pay を使われるむきには、合わせてチェックもどうぞ。

Credit Cards for Apple Pay

なお、UCS カードもまもなく Apple Pay に対応するとのこと。また、MUFG カードが 2016-12-16 に対応になっていた。気づかなかった orz

あとがき

対応カードが増えたので、自分の持ってるクレジット・カードを見てみた。そしたら、3 枚新たに対応したカードがあった:

  • HMV カード (MUFG カード / QuickPay)
  • ライフ VISA カード (ライフ・カード / iD)
  • 楽天銀行カード (セディナ・カード / iD)

楽天銀行カードはキャッシュ・カードとセットになっているので手離せないけど、HMV カードとライブ VISA カードはもう持ち歩かなくて済みそう。財布が少し薄くなって、ありがたい。

2017-02-28

TOHO シネマズ・アプリで Apple Pay 支払いが上手くいかない時の対処方法

iOS の TOHO シネマズは、2017-02-28 現在 Apple Pay に対応している数少ないアプリの一つ。アプリから席の予約・チケットの購入までがシームレスに行なえて便利。

ところがぼくの iPhone 7 Plus でチケットを買おうとすると、Apple Pay の購入 (指絞認証をした直後) で「お支払いを完了できませんでした」というエラーが出る。そこから先に進めない。

TOHO Cinemas & Apple Pay

解決方法

解決方法は次の通り:

  1. Apple Pay の指絞認証画面を出す
  2. 「連絡先」を選択
  3. 「編集」を選択
  4. TOHO シネマズの会員に登録した電話番号を削除する
  5. 「電話番号を追加...」から TOHO シネマズの会員に登録した電話番号を追加する
  6. 追加した電話番号を選ぶ
  7. 完了して、指絞認証を行なう

4. と 5. の手順は無駄なようでいて、実はキモ。「TOHO シネマズの会員に登録した電話番号」を既に入れていても、もう一度追加しないとダメ。

なんでこんなことになってるのか分からない。TOHO シネマズ・アプリがおかしいのか、Apple Pay 側がおかしいのか。。。Apple Pay 対応のアプリって、TOHO シネマズ・アプリ以外使ったことがないのでなんとも言えない。

とりあえず、今はこんな方法でしのぐしかないのかな〜〜。もっと良い解決方法があったら教えてください。

Emacs 25.2 rc2 リリース

Irreal ブログで、Emacs 25.2 rc2 が出たことを知った。

info-gnu-emacs でのアナウンスは 2017-02-21。ちなみに Emacs 25.2 rc1 のアナウンスは 2017-02-03 に出ていた。

Emacs 25.2 の正式リリースまで、もう少しかな。

ref

2017-02-24

2017 年度の音展は 5/13,14 開催

2017 年度の音展 -- OTOTEN -- は、GW 明けの 5/13,14 に開催される。概略は次の通り:

  • 日時: 2017-05-13 (土) 10:00-19:00
    2017-05-14 (日) 10:00-17:00
  • 場所: 東京国際フォーラム
  • OTOTEN

B1F ではカー・オーディオを体験できるようデモ・カーを用意しているとのこと。各階ごとに出展ブースが決まっている:

  • 4F: ヘッドホン・イヤホン・ポータブルオーディオ関連ブース
  • 5F: ホームオーディオ、ホームシアター関連ブース
  • 6F: ハイエンドオーディオ関連ブース
  • 7F: 総合イベントゾーン

気になるのは、5F と 6F。「最新スピーカー 6 機種比較試聴会」というのをやるらしいけど、6F かな? 7F かな? 基調講演は Spotify Japan の社長が「ストリーミングで広がる、オーディオの新たな可能性」というタイトルで話をするらしい。

OTOTEN にはほとんど顔を出したことがなかったのだけど、今年は行ってみようかな!