2017-07-13

AutoComplete で C-n, C-p を補完選択に使う

Emacs で auto-complete パッケージで。補完の選択に C-n, C-p を使いたい。.emacs.el に次のコードを追加する:

(ac-config-default)
(add-hook 'auto-complete-mode-hook
          (lambda ()
            (define-key ac-completing-map "\C-n" 'ac-next)
            (define-key ac-completing-map "\C-p" 'ac-previous)))

これだけ。

今まで矢印キーでしか補完の選択候補を選べなかったのが、C-n, C-p でできるようになった。便利。

ref

このやり方は ryfjwr 氏の gist で知った。

2017-07-05

技術書クラウド・ファンディング「iOS 11 Programming」プロジェクト成立

PEAKS で出資を募っていた技術書クラウド・ファンディング「iOS 11 Programming」が、目標の 500 人を達成しプロジェクトが成立した。プロジェクトの出資受付開始が 2017-06-26 (月)。プロジェクト成立の報告は 2017-07-04 (火)。8 日で 500 人分の出資が集まった。

2017-07-05 (水) 現在、548 人が出資済。出資は 2017-07-28 (金) 23:59 まで受け付ける。

書籍のリリース予定日は 2017-10-23 (月)。

なお、PEAKS のページには、著者の一人である加藤尋樹のインタビューが掲載されている。

あとがき

プロジェクト成立おめでとうございます。

ぼくも出資したので人ごとじゃない。本が読めるのが楽しみ。

あと出資者のアーリー・アクセス特典:

これはどんな形で提供されるのかな? 今からワクワク。

2017-06-28

iOS 11 Programming -- 技術書クラウド・ファンディング出資募集中

PEAKS が iOS 11 の新機能に内容を絞った技術書のクラウド・ファンディングを開始した。PEAKS が技術書クラウド・ファンディングを行なうのは、今回が 2 度目 (1 度目は出資数未達により不成立)。出資体系は 2 つ: 電子版 + 製本版が 5,500 円、電子版のみが 4,000 円。クレジット・カード支払い。500 人の出資でプロジェクト成立。2017-06-27 (水) 9:05 現在 285 人が出資済。〆切は2017-07-28 23:59。目標人数に達しなかった場合、プロジェクト不成立。決済は行なわれない。

以下、プロジェクト概要より抜粋:

2017年6月5日、WWDC 2017 において発表された「iOS 11」はiOS 7のようなUIの派手な変更こそないものの、ARKit, Core MLなどの新しいフレームワークや新機能・アップデートが多く、大きな話題を呼んでいます。 しかし近年のiOSは複雑さを増しており、その全容を把握するのは困難となっています。

そこで本書はiOS11の新機能・アップデート内容を把握し、応用できるような内容を目指します。

PEAKS(ピークス)|堤 修一 吉田 悠一 池田 翔 坂田 晃一 加藤 尋樹 川邉 雄介 岸川 克己 所 友太 永野 哲久 - 第一線の開発者陣による「iOS 11 Programming」執筆プロジェクト! より引用

期待の執筆者は次の 9 人 (/ の後に担当する章を記述):

  • 堤 修一 / ARKit; Metal 2
  • 吉田 悠一 / Core ML
  • 池田 翔 / Swift 4
  • 坂田 晃一 / Xcode 9
  • 加藤 尋樹 / Drag and Drop; Files and Document Based Application
  • 川邉 雄介 / UIKit Guideline, AutoLayout
  • 岸川 克己 / Core NFC; PDFKit; SiriKit
  • 所 友太 / HomeKit
  • 永野 哲久 / 概略; Audio and Media

iOS どころでは有名な人達ばかりなので、とても楽しみ。各著者の説明や過去の著作については提さんのブログ記事にまとまっている。

とても面白そうなので、ぼくは昨夜のうちに出資してみた。期待を込めて、電子版 + 製本版の方を! プロジェクトが成立すると良いな。

ref.

2017-06-13

iPad Pro 12.9 第 1 世代と第 2 世代のスペック比較

2017-06-06 (火) の WWDC 2017 において iPad Pro 12.9 インチの第 2 世代が発表された。遅まきながら、第 1 世代とのスペックを比較してみた。

iPad Pro 12.9 インチ第 1 世代と第 2 世代の比較

例によって、優れている点を青字にした。

第 1 世代第 2 世代
プロセッサーApple A9X + M9Apple A10X Fusion + M10
メモリー4 GB
ストレージ32 / 128 / 256 GB64 / 256 / 512 GB
ディスプレイ12.9 インチ (2,732 x 2,048)
True Tone ディスプレイなしあり
解像度264 ppi
リフレッシュ・レート60 Hz最大 120 Hz (可変)
バックカメラ8 MP12 MP
バックカメラ (ビデオ撮影)1080p HD4K
フロントカメラ1.2MP7 MP
フロントカメラ (ビデオ撮影)720p HD1080p HD
ジャイロスコープあり
GPSあり
気圧計あり
指絞認証Touch ID (第2世代)
NFCなし
Qiなし
高さ305.7 mm
220.6 mm
厚さ6.9 mm
重量 (Wi-Fi)713 g677 g
重量 (Wi-Fi + Cellular)723 g692 g
コネクターLightning コネクター
スピーカー4 個
Wi-Fi802.11 a/b/g/n/ac, MIMO
Bluetooth4.2
Apple SIM (Wi-Fi + Cellular)なしあり

あとがき

iPad Pro 12.9 インチ第 1 世代が発表されたのは 2015-09-10。iPhone の発表イベントで iPad Pro も発表された。このイベントでは発売日は 11 月とだけ伝えられ、実際は 2015-11-11 に発売が開始された。遅れること半年、2016-03-22 のイベント「Loop You In」で iPad Pro 9.7 インチが発表された。予約開始は 2016-03-24 だった。

発売日で考えれば 1 年半のサイクルで iPad Pro 12.9 インチは第 2 世代が登場したことになる。

iPad Pro 9.7 インチには 12.9 インチ第 1 世代にはないスペックが色々と盛り込まれていた。True Tone ディスプレイ、Siri ハンズフリーへの対応、Apple SIM 内蔵等々。これらのスペックが 12.9 インチにも搭載される。Kindle の大画面マンガを True Tone ディスプレイで読んだり、置きっぱなしの iPad にむかって Hey Siri と呼びかけたり、海外に出かけた時もサクっと Apple SIM からデータ通信パックを購入したり... そういったことが可能になる。ありがたい。

iPad Pro 12.9 インチの大きさは第 1 世代と変わらないけど、重量が軽くなっている。Wi-Fi モデルで 36 g 減の 677 g、Wi-Fi + Cellular モデルで 31 g 減の 692 g。サイズから考えれば iPad Pro 12.9 インチの重さは軽いのだけど、マンガを何時間も読み続けていると手が疲れる。わずかでも軽くなってくれるのは嬉しい。

iPad Pro 12.9 インチ第 2 世代ではリフレッシュ・レートが最大 120 Hz。表示物によって可変になると言う。リフレッシュ・レートの最大値が増えることで、アニメーションはより滑らかになるだろうし、タッチの反応も良くなることが期待できる。リフレッシュ・レートが可変になることで、静止画を多く見る場合はバッテリーの消費が下がるという予測が立つ。その効果のほどはまだ予想にすぎない。早く実物を触って体験してみたい。

2017-06-10

32bit アプリとさようならする Apple

WWDC 2017 のセッション「Platforms State of the Union」で 32 bit アプリについて言及していたのでメモ。開始 3 分 30 秒頃。

  • iOS 11 では 64 bit アプリしか動かない
  • High Sierra は 32 bit アプリをサポートする最後の macOS になる
  • Mac App Store
    • 2018 年 1 月: 新しいアプリは 64 bit 必須
    • 2018 年 6 月: 全てのアプリ / 全てのアップデートは 64 bit 必須

macOS でも 64 bit 化の波はやってくる。

ちなみに iOS の App Store は現在既に 64 bit 対応していないアプリは申請できない。iOS 11 は 64 bit アプリしか動かないということは、32 bit な端末に iOS 11 が入らないことを意味する。具体的には次の端末は、実質 iOS 11 へのアップデートが出来ない:

  • iPod Touch: 第 5 世代以前
  • iPhone: iPhone 5, iPhone 5c 以前 (iPhone SE は iPhone 5 以降の端末なので大丈夫)
  • iPad: 第 4 世代以前 (iPad Air 1st が出る前のモデル)
  • iPad mini: 第 1 世代

ザクザク古いモノを切り捨てるのは、開発の注力分野を強制的に限定することで、開発サイクルを上げることにつながると思うので、個人的に好き。

2017-06-06

iOS 11 の新機能 〜 WWDC 2017 から

2017-06-06 (火) に開催された WWDC 2017 で iOS 11 の新機能が発表された。

簡単にまとめてみる。

iMessage

iMessage が iCloud に対応する。メッセージは全て自動的に同期され、どのデバイスからでもアクセスが可能になる。

Apple Pay

iMessage と Apple Pay を利用した個人間送金が可能になる。

Siri

Siri の音声がより滑らかになる。Machine Learning をバックグラウンドで使っているとのこと。また Siri はデバイスごとに学習して、候補などを出すようになる。

Siri を使って翻訳も可能になる。英語から中国語・フランス語・ドイツ語・イタリア語・スペイン語への翻訳が発表された。日本語は含まれていなかった。

H.265

H.265 をサポートする。これによって動画のサイズが半分ほどに減ることを期待できる。

Photos

メモリーがより賢くなる。メモリー再生中にデバイスを回転させても、画像を最適化してくれるとのこと。

Control Center

コントロール・センターはシングル・ページに戻る。単純にシングル・ページにしたのでは iOS 10 の全ての機能は表示できないので、よく使うものをメインに出し、詳細は 3D タッチでアクセスするようになる。

Live Photo

ライブ・フォトの編集が可能になる。キー・フォトの指定が可能になったり、ループやバウンス (逆再生) なども指定できるようになる。

Maps

空港のフロア・マップに対応する。

ナビ機能には車線案内が付く (らしいけど、日本ですぐに対応するかどうかは不明)。

HomeKit

ホームキット対応デバイスにスピーカーが加わる。

合わせて AirPlay 2 が発表された。複数のスピーカー操作が可能になる。マルチ・ルームで音楽を再生できるようになる。AirPlay 2 については API も公開予定。AirPlay 2 には複数のスピーカー・メーカーが対応を表明している。例えば Bang & Olufsen、naim、BOSE、Devialet、Dynaudio、beats、polk、DENON、McIntosh、marantz、B&W、Libratone、Definitive Technology、Bluesonud。

Apple Music

自分の聴いている曲を友達に知らせる機能が付く。

App Store

App Store はデザインが刷新する。パッと見、Apple Music のようだと思った。

Today, Games, Apps, Updates, Search の 5 つのタブが用意される。

iPad

iOS 11 は iPad 向けの新機能が熱い。

Dock (iPad only)

Mac のようなドック機能が付く。ドックの中にはアプリ・アイコンが一列に並び、アイコンを選ぶとアプリが起動する。よく使うアプリのアプリ・スイッチャーとしても使える。

ドックの右横は特別なスペース (Predictive Area) になっていて、これから使いそうなアプリが数個並んでいる。

ドックからドラッグしたアプリは、スライド・オーバーとして開くことも可能。

New App Switcher (iPad only)

アプリ・スイッチャーが刷新される。カバー・ビューみたいだったアプリ・スイッチャーは、平面にアプリがタイル状にならぶ形へと進化する。もし、スプリット・ビューで 2 つのアプリを開いている場合は、その状態をそのまま切り替えることが可能。

Drag & Drop (iPad only)

ドラッグ & ドロップがサポートされる。対象はテキストや画像 etc.

アプリ内だけでなく、スプリット・ビューを使って隣のアプリへ... アプリ・スイッチャーから別のアプリへと、自由度にあふれている。

QuickType Key (iPad only)

キーボードをフリップすることで、記号キーに「シフト・キー」なしでアクセスできる機能。iPhone には来ないのかな?

WWDC 2017 Overview

2017-06-06 (火)、日本時間 2 時から 4 時にかけて Apple の WWDC が開催された。今回の WWDC は 6 つのメイン・トピックを掘り下げていくスタイルで展開された。メイン・トピックは次の通り:

  1. tvOS
  2. watchOS 4
  3. macOS High Sierra
  4. iOS 11
  5. iPad Pro
  6. HomePod

WWDC では開発者向けのカンファレンスで、通常ソフトウェア寄りの発表がおこなわれる。ハードウェアの発表は例外に当たる。今年は「例外」な年だった。iMac や MacBook のアップデート。Mac Pro の後継機 iMac Pro。次世代 iPad Pro に当たる iPad Pro 2。そして Apple の新製品スマート・スピーカー HomePad が発表された。なお、ネットで騒がれていた次世代 iPhone (iPhone 7s もしくは iPhone 8) の発表はなかった。

以下、各トピックについて簡単にまとめてみる:

1. tvOS

Apple TV に Amazon Prime Video が対応する。アプリのリリースは今年後半。

Amazon Prime Video 用のアプリは今まで Amazon の機器 (Amazon FireTV) でしかリリースされていなかった。Google の Chromecast も Apple の Apple TV も対象外だった。どうしても見たければ、iPhone や iPad から AirPlay でスクリーン・シェアするかし方法がなかった。Amazon Prime Video の専用アプリが tvOS にリリースされることで、手軽に Amazon Prime Video を楽しめるようになる。

2. watchOS 4

新 Watch Face

watchOS 4 では新しい Watch Face (文字盤) が 3 種登場する。

1 つ目は Siri の Watch Face。Siri はユーザーの好みや知りたいであろう情報を予測するように進化する (Google Now のように)。Siri の Watch Face では、カレンダー情報やチケット、ニュース、写真、天気予報など最新情報が自動的に表示される。

2 つ目は万華鏡 (kaleidoscope)。アナログ盤の背景が万華鏡のようになっているもの。

3 つ目はトイ・ストーリーの Watch Face。ミッキー・マウスの Watch Face のトイ・ストーリー版。キャラは 3 人用意されているけれども、トイ・ストーリーを見たことがないので良く分からなかった。

ワークアウト

ワークアウトは、ジムのマシンと通信できるようになる。シムのマシンにワークアウトの情報を渡したり、ジムのマシンからワークアウトにデータを渡すことができる。対応するジム (のマシン?) は 7 社。「Connect to Apple Watch」と表示されているところに Apple Watch を近づけると、データのやり取りが出来るようになるらしい。

ワークアウトに「+」ボタンが追加され、異なるワークアウトへ (例えばウォーキングからサイクリングへ) 簡単に移ることができるようになる。

ワークアウトは Apple Music アプリとも連携する。ワークアウトを開始したら、自動再生するプレイリストを選べる。また、ワークアウト中にスワイプすると Apple Music の再生画面が現れる。

Apple Music

自動同期機能が追加される。自動更新されるプレイリストも、新しい曲が自動的に同期される。

アルバムはカバー・フロー表示をサポートする。

3. macOS High Sierra

macOS

新しい macOS の名前は High Sierra。パフォーマンスの向上が図られている。Safari はより高速に。FileSystem は HFS から APFS (Apple File System) に変更され、大容量データのコピーがあっという間に終わるデモが行なわれた。ビデオでは H.265 をサポートし、Metal2 が発表された。Metal2 は Machine Learning での利用も視野に入れられている。

iMac & MacBook

iMac と MacBook で第 7 世代 CPU (Kaby Lake) がサポートされ、最大メモリーが 21.5 インチ版 iMac で 32 GB、27 インチ版 iMac で 64 GB へと増えた。今日から発売。

iMac Pro

Mac Pro の後継機 iMac Pro が発表された。価格は $4,999 から。発売は 2017 年 12 月を予定している。主なスペックは次の通り:

  • 最大 18 コア Xeon プロセッサー
  • Radeon Pro Vega GPU
  • 最大 128 GB メモリー
  • 最大 4 TB SSD
  • 10 Gbps Ethernet
  • Thunderbolt 3 ポート x4

4. iOS 11

iOS 11 の変更点は多いので別記事にする。Apple Pay による個人間送金機能と iPad 対応が大きく目を引いた。

5. iPad Pro

iPad Pro 2 が発表された。ラインナップは 2 つ。12.9 インチと 10.5 インチ。ベゼルが小さくなったことで、9.4 インチ・サイズとほぼ同サイズで 10.5 インチ版 iPad Pro が登場する。ストレージ・サイズは 64 GB, 256 GB, 512 GB。今日から予約開始。

大きな変更点は次の通り:

  • 6 core の A10X CPU
  • ディスプレイのリフレッシュ・レートが 120 Hz になった
  • 用途に合わせてリフレッシュ・レートを自動調整 (24 Hz, 48 Hz etc.)
  • Apple Pencil のレイテンシーが 20 ms へ
  • バック・カメラは 12 MP (iPhone 7 と同じ)
  • USB 3 用アクセサリー対応 (USB 3 - ライトニング・ケーブル等)

スペックの比較は別記事で。

6. HomePod

Apple のスマート・スピーカー。価格は $349 で、2017 年 12 月にアメリカ、イギリス、オーストラリアで発売開始。日本は初期発売国に含まれていない。

主なスペックは次の通り:

  • A8 チップ搭載
  • 6 個のマイク
  • 7 個のツイーター
  • Siri (英語のみ) & Apple Music 対応

高さ 17.2 cm、直径 14.2 cm の円筒状。重さは 2.5 kg。

Siri 経由で天気・ニュース・スポーツの結果などを尋ねることができる。AirPlay 2 を最初からサポートしていて、マルチ・ルームでの音楽再生に対応している。また、Apple TV と同じように HomeKit の母艦としても働く。

HomePod は周りの環境をスキャンして、サウンドを最適化する。これの音質がどの程度かは WWDC では分からなかった。

2017-05-15

chatwork.el 0.3 for ChatWork API v2

2017-05-11、ChatWork の Emacs 用フロントエンド chatwork.el のバージョン 0.3 をリリースした。

バージョン 0.3 での変更は、ChatWork API のバージョン変更。2017-05-15 をもって、ChatWork API の v1 が廃止され v2 へと移行される。移行期間ギリギリで、その対応を行なった。

chatwork.el は MELPA からインストールできるので、興味があったら是非お試しあれ。

2017-04-25

Emacs 25.2 リリース

2017-04-21、info-gnu-emacs ML で、Emacs 25.2 のリリースがアナウンスされた。今回はバグ・フィクス・リリースとされる。

最終 Release Candidate は 2 だった。

  • RC1: 2017-02-03
  • RC2: 2017-02-21
  • 正式版: 2017-04-21

info-gnu-emacs では最初 25.2 を 25.1 としてアナウンスしていて、3 分後にタイトルが間違っていたと追加のアナウンスがあった。

ref

2017-04-04

Inside Swift -- 技術書クラウド・ファンディングに出資した!

Realm 社の iOS エンジニア、try! Swift の主催者で有名な岸川克己氏が技術書クラウド・ファンディングで出資を募っている。一冊 3,000 円。クレジット・カード支払い。800 人の出資でプロジェクト開始。2017-04-04 (火) 9:00 現在 201 人が出資済。〆切は 2016-04-30。目標人数に達しなかった場合は、プロジェクト不成立。決済は行なわれない。

面白そうなので、出資してみた!

内容

フォーマットは PDF で 250 ページ以上を予定。プロジェクト・ページに書きかけの目次がある。概要は以下の通り:

Swiftのソースコードを理解し、Swiftの内部へ手を入れるための入門・実践書を執筆するプロジェクトです。概要編ではSwiftで書いたコードが実行可能になるまでの流れなど、基本的な事項を手を動かしながら確認できる章を用意します。 その後、実践編では実際に使えるツールを開発しながらSwiftの内部をより深く理解できる内容にします。

PEAKS(ピークス)|岸川克己 - iOS開発の第一人者が執筆するSwiftの専門書「Inside Swift」の執筆プロジェクト! より引用

著者の岸川さんも本プロジェクトをツイートしている。

技術書クラウド・ファンディングを提供している PEAKS を今回初めて聞いたのだけど、URL を見るとプロジェクト番号が 1 になっている。これが最初のプロジェクトなのかな? 運営会社は ROLLCAKE Inc.

リリース予定日は 2017-09-01 になっているけど、クラウド・ファンディングや執筆って予定日通りに出ることの方が少ないから、そんなに期待はしていない。少し遅れても良いから、充実した本が出来上がると嬉しいな。

2017-03-30

iOS 版 Google Calendar が iPad に最適化された

iOS 向け Google Calendar アプリ ver. 2.0.0 がリリースされた。アップデート履歴には iPad 向けにに最適化 と書かれている。

iPad 最適化前と最適化後でスクショを撮ってみた。iPad Pro 9.7 インチを縦置きで撮影。ビューは「一週間」、期間は先週 (今週は特に予定が入ってなかった)。

最適化前

Google Calendar for iOS; before 2.0.0

最適化後

Google Calendar for iOS ver. 2.0.0

比べてみて

最適化前は全く iPad 対応されておらず、iPhone 用のカレンダーを引き伸ばして表示しているだけ。無駄にフォントが大きい。一度に閲覧できる情報が少ない。

最適化後は iPad に合わせて画面が作られた。見た目スッキリ。PC のウェブ表示に似た感じ。一週間の予定を一度に確認できるようになった。最適化前は見えなかった 3/24 の予定も確認できるようになっている。

新しい UI に触れると、前の UI を忘れてしまって比較するのを忘れがちになってしまう。今回比べてみて、かなり実用的になったのが分かった。これは大変助かる!

Realm 本の Kindle 版が出ていたので買ってみた

iOS / macOS の開発でデファクト・スタンダードになっているデータベース・システムに CoreData がある。ベースに SQLite を使い、O/R マッパー層 etc. の機能を突っこんでいるので、もはや「データベース・システム」と呼んじゃあいけないのかもしれないけれど。

この CoreData の代替を狙うシステムとして、最近 Realm (レルム) が注目を集めている。

CoreData のベースになってる SQLite は「もともとモバイル向け」のデータベースじゃないよね。それを無理矢理使うようにするのは正解なのかしらん。SQLite ではない、全く別のデータベースを! モバイル向けのデータベースを! 新しく作る方が幸せなんじゃないか。

そんな思想で、Realm は作られている。

本書は Realm を解説した初めての本。作者の菅原祐さんは存じ上げないのだけど、監修の岸川克己さんは iOS 向け Realm を Realm 本社でバリバリ 開発している方なので、とても安心できる。

最近、CoreData 以外の選択肢に興味が出てきたので購入してみた。

楽しみながらコードを書いてみたい。

Kindle 5.9.1 がリリースされて iOS 10.3.0 の不具合が修正された

iOS 向け Kindle アプリ ver.5.9.1 が 2017-03-28 日付でリリースされた (3/29 の午前 1 時に確認した時は、まだ 5.9.1 は出てなかったけど...)。同日リリースされた iOS 10.3.0 で、Kindle アプリ ver.5.9.0 がリフロー型の書籍を読み込めない不具合を、ver.5.9.1 では修正している。

アップデート情報は次の通り:

Kindle ver.5.9.1

ComiXology のガイドビューが Kindle でご利用いただけるようになりました。画期的で全く新しい、映画のような臨場感のあるモードでコミックをお楽しみください。

Kindle に送信 — Kindle ライブラリにドキュメントやウェブページを保存できるようになりました。Safari で「共有」ボタンをタップし、共有先に Kindle を追加してください。ウェブページは Kindle 形式に変換されるため、ページのテキスト、フォント、色を調整でき、あらゆる Kindle アプリや端末で閲覧できます。

バグ修正とパフォーマンスの改善

iOS 10.3 で起きていた「Kindle リフロー書籍が読み込めない不具合」について直接の言及はなし。手許の iPad Pro 12.9 / iOS 10.3.0 / Kindle 5.9.1 で確認したところ、Kindle 5.9.0 で読み込めなかったリフロー型の技術書・小説・ビジネス書が読み込めることを確認した。ぼくが見た限り、Kindle ver.5.9.0 で発生していた不具合を再発する Kindle 本はなかった。

あとがき

今までちゃんと動いていたのに OS のバージョンを上げたら何故か動かない、というアプリ開発者からすると不思議な現象。Amazon の中の人達は、自分たちのバグより Apple 側の不具合を疑ったんじゃないかな。きっと原因を調べるのも一番大変だったと思う。iOS 10.3.0 正式リリース直後に修正版アプリを出してくれて、本当にありがたい。

ところで、Kindle ver.5.9.0 のアップデート情報を読むと面白そうなことが書いてある。ComiXology の「画期的」なモードってどんなだろ。きっと日本のコミックじゃなくてアメコメ (アメリカ版の Kindle コミック) が対象になってると思うんだけど、日本のコミックの対応はどうなるのかな? Kindle に送信は面白そうなので、あとで遊んでみる!

2017-03-29

iOS で Kindle 本 (特に小説・技術書) を読む人は 10.3 にアップデートしない方が良い

[追記: 2017-03-30] 不具合を修正した Kindle 5.9.1 がリリースされました

iOS 10.3.0 が 2017-03-28 (火) にリリースされた。

残念なことに iOS 版 Kindle アプリ (5.9; 2017-03-21) に不具合があるようで、ダウンロードした本が読めないケースが発生している。

本を開こうとすると、ローディング・インジケーターが回り続け、先に進めない。

この不具合が発生しているのは主にリフロー型の本。

  • 小説
  • 新書
  • ビジネス書
  • 技術書

等々、フォント・サイズを変更できる「文章」メインの本で不具合が起きている。

「マンガ」や「雑誌」に代表される固定レイアウトの本ではこの問題は発生していない。また、リフロー型でも英語の本は問題なく開くことができた。

とりあえず、上に挙げた種類の本を iPhone や iPad で読む人は iOS 10.3 へのアップデートを (Kindle アプリが更新されるまで) 控えるのが良いと思う。

あとがき

iOS 10.3 の beta テストを試していて、この不具合に出喰わした。ぼくは beta テストを iPad Pro 12.9 に入れていたので、最初「12.9 インチという大きなディスプレイ」に Kindle アプリが不具合を起こしているのかと思った。でも周りの様子を聞くと、どうやら違うらしい。iOS 10.3 beta がおかしいらしい、と分かってきた。流石に Amazon も iOS 10.3 正式リリースまでには対応すると思っていたら、Kindle が対応しない内に iOS 10.3 がリリースされてしまった。

幸い手元には iPad Pro 9.7 もあるので技術書を読むことは出来る。だけど、iPad Pro 12.9 の画面サイズに慣れちゃうと、9.7 インチは物足りないとも思ってしまう。

Amazon さんには一刻も早い修正をお願いしたいところ。

おそらく原因は iOS 10.3 でファイル・システムが HFS+ から APFS に変更されたため、ファイル名の Unicode 正規化形式が NFD から NFC に変わって、濁点を含むファイル名パスを解決できなくなったからじゃないかと思うのだけど... サテ。

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 にはほとんど顔を出したことがなかったのだけど、今年は行ってみようかな!

2017-02-23

Objective-C で文字列を join する

Objective-C で文字列配列の join をやるのは面倒と思っていた。Ruby の join みたいなことが出来ると楽なのにー、と。例えばこんなコード:

%w(This is an apple).join(' ') #=> "This is an apple"

で、Apple のマニュアルを見たらあったcomponentsJoinedByString というメソッド。

これを使えば、NSMutableString を使ったり

NSArray<NSString *> *strings = @[@"This", @"is", @"a", @"pen."];
NSString *separator = @" ";

NSMutableString *mResult1 = [NSMutableString new];
for (int i=0; i<strings.count; ++i) {
    [mResult1 appendString:strings[i]];
    if (i < strings.count - 1) {
        [mResult1 appendString:separator];
    }
}
NSString *result1 = [mResult1 copy];
NSLog(@"Text: %@", result1);

Text: This is a pen.

stringByAppendingString: を使ったり

NSArray<NSString *> *strings = @[@"This", @"is", @"a", @"pen."];
NSString *separator = @" ";

NSString *result2 = @"";
for (int i=0; i<strings.count; ++i) {
    result2 = [result2 stringByAppendingString:strings[i]];
    if (i < strings.count - 1) {
        result2 = [result2 stringByAppendingString:separator];
    }
}
NSLog(@"Text: %@", result2);

Text: This is a pen.

する必要がなくなって、シンプルに書ける。

NSArray<NSString *> *strings = @[@"This", @"is", @"a", @"pen."];
NSString *separator = @" ";

NSString *result = [strings componentsJoinedByString:separator];
NSLog(@"Text: %@", result);

Text: This is a pen.

便利。Objective-C には、意外とユーティリティ的なメソッドも用意されていると知る今日この頃。

オーディオ自宅オフ会 〜 会社の友達を招いて

2017-02-20 (月)、会社のクラシック音楽好きを 2 人招いてオーディオ・オフ会を開いた。

オーディオ・オフ会

1 人は 20:30 頃から、2 人目は 22 時過ぎから参加。23 時頃まで、クラシック音楽やらオーディオやら会社の話で盛り上がった。会社の友人を家に呼ぶのは 14 か月ぶり。先日、プリアンプが修理から戻って来たのが話題になって、今回のオフ会となった。

ポストモーテム

会社上がりでオーディオ・オフ会となると、どうしても開催時間が遅くなる。夕食をどのタイミングで取るか、が悩ましい。外食すれば食事している時間の分だけオフ会の開始が遅れるし、食べなければお腹が空く。コンビニで弁当やお菓子を買のは味気ない。今回は途中でピザハットに寄って、ピザの M を 2 枚買って帰った。ピザはちょっとしたパーティーっぽくなって、会話も弾むし、音楽を聴くのにも邪魔にならない。良い選択だった。3 人で M を 2 枚は多かった気もする。次回は L を 1 枚でも良いかもしれない。ピザ以外だとお寿司の出前 (銀のさらとか) や近所でデリバリーを探してみるのもアリかも。

会社の人だと、オーディオ・オフ会とはいえ必ずしもオーディオの話ばかりじゃなくなる。Philips Hue を家の照明として使っていて、Siri から操作したり、GPS 連携で帰宅したら自動点灯させてる話をした。こういう話は家で実演する方がウケる。ガジェット系では他に Apple TV とか、Kindle Oasis とか、JBL の Bluetooth スピーカーとか、Parrot の Bluetooth ノイズキャンセリング・ヘッドホンとかもネタになりそう。いつでも取り出せるようにしておこう。

せっかく来てもらったので、コーヒーをフレンチ・プレスでいれてみた。いつも 1 人で飲んでいるので、分量が分かりづらかった。というか、3 人分のお湯を沸かせるケトルが無い。コーヒー・グラインダーも 3 人分の豆をひくのは大変だったし。これは... どうしようかね。

肝心のオーディオの音だけど、オフ会終わって聴き直してみたら音が左にズレていた。ある程度セッティングを詰めてはいるつもりだけど、上手くいかない。前日にスピーカー・セッティングを見直した時に、右のスピーカーを 2 cm ほど後ろに下げたのが良くなかった。その時は良かれと思ってやったことなんだけど。後で冷静になってみれば、余計なことをしていたってことがよくある。今回もソレ。自分の音が確立できていないんだろうなぁ。まだまだ未熟。

あとがき

音楽の好きな人を招いてオーディオ・オフ会をやるのも楽しい。またやりたいな!

現在のシステム

ラックは Quadraspire Q4D Vent、CDプレーヤー・プリアンプ間のケーブルは Jorma Design XLR No.2、プリアンプ・パワーアンプ間のケーブルは Jorma Design RCA No.2、スピーカー・ケーブルは Jorma Design No.3。

2017-02-19

Objective-C で 2 つの配列を比べた時同じ要素で最初に見つかったものを返す方法

2 つの配列がを比べて「同じ要素」があるかないか? あるなら、最初に見つかった要素は何か? を調べたいとする。

これを for 文で書くとこんな風に長いコードを書く必要が出てくる (Goto 文を使う是非は置いといて...)。

NSArray *numbers = @[@1, @2, @3, @4, @5, @6];
NSArray *targets = @[@3, @4, @9];

NSNumber *result = nil;
for (NSNumber *n in numbers) {
    for (NSNumber *m in targets) {
        if ([n isEqual:m]) {
            result = n;
            goto objectFound;
        }
    }
}
objectFound:;
NSLog(@"first object: %@", result);

first object: 3

実は Objective-C には、こういう目的に合ったメソッドが用意されている。それが firstObjectCommonWithArray:。これを使って上のコードを書き直すと、for 文が一行にまとめられる:

NSArray *numbers = @[@1, @2, @3, @4, @5, @6];
NSArray *targets = @[@3, @4, @9];

NSNumber *result = [numbers firstObjectCommonWithArray:targets];
NSLog(@"first object: %@", result);

first object: 3

もし見つからなかった場合は nil が返る。便利!

2017-02-18

Apple Music でコンサート用プレイリストを作ってみる

明日、荒川区民会館サンパール荒川で無料のクラシック音楽コンサートがある。曲目は次の通り:

  • ドボルザーク作曲交響曲第8番
  • スッペ作曲軽騎兵序曲
  • イバノビッチ作曲ドナウ川のさざなみ
  • サウンドオブミュージックメドレー

楽しみ。

さて、この手のコンサートがあると曲の予習・復習をするようにしている。これがコンサートによっては自分の知らない曲もあったりする。(今回は有名な曲ばかり。どの曲も CD を持っている。) 今までは CD を持っていない曲は予習なしでコンサートに挑んでいた。

最近は Apple Music (もしくはGoogle Play Music) のお陰で状況が一変した。新作やよっぽどの秘曲でもない限り、たいてい Apple Music に曲がある。なので、予習し損ねることがなくなった。

コンサートの曲目順にプレイリストを作っておくと一気に流すことができる。CD だと (コンサートの曲目順に曲が並んでいることはまずないので) 複数のCD を入れ替えないといけないんだよね。予習にも復習にも便利。コンサートごとにプレイリストを作ってるとゴチャゴチャしちゃうので、ぼくは一年分のプレイリストを作ってる。

2017-02-17

少し古い Git コミットを Zip にまとめる

「不具合の出たコード」が欲しいと言われた。

開発中に難しい不具合が出たので対応している時の話。ヘルプを求めていたら、上のようなリクエストが来た。

諸々の事情で Git のリポジトリーを共有できなかったので、Zip に固めて渡すことにした。けれど、手元のリポジトリーは別のコミットが 3 つくらい入っている。今の修正も stash に入れて作業するのは面倒だし、この前記事にした git worktree を使うほどでもない。

そこで使ったのが git archive コマンド。

$ ​git archive --format=zip コミット・ハッシュ値 > failed.zip

コミット・ハッシュ値は git log で調べた。

コマンド一つで .git ディレクトリーとか無視して欲しいファイルを除いて zip ファイルを作成してくれる。ハッシュ値を指定して、古い状態を直接 zip 化できるのもありがたい。

こういう、ちょい面倒な作業をシンプルにしてくれるコマンドはもっと覚えていきたい。

2017-02-15

Objective-C で NSArray から filter した配列を得る

配列を filter して新しい配列を得たい。Swift で言う所の、次のようなコード。

let array = [1,2,3,4,5,6]
let newArray = array.filter { $0 % 2 == 0 }

Objective-C で書こうとするとループを回すしかないのかな? なんて思ってた。こんな感じに。

NSArray *numbers = @[@1, @2, @3, @4, @5, @6];
NSMutableArray *tmp = [NSMutableArray new];
for (NSNumber *n in numbers) {
    if (n.integerValue %2 == 0) {
        [tmp addObject:n];
    }
}
NSArray *newArray = [tmp copy];
NSLog(@"even numbers: %@", newArray);
even numbers: (
    2,
    4,
    6
)

そしたら filteredArrayUsingPredicate: というメソッドがあることを知った。上のコードは次のように書ける。

NSArray *numbers = @[@1, @2, @3, @4, @5, @6];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"modulus:by:(SELF, 2) == 0"];
NSArray *evenNumbers = [numbers filteredArrayUsingPredicate:predicate];
NSLog(@"even numbers: %@", evenNumbers);
even numbers: (
    2,
    4,
    6
)

7 行のコードがたったの 2 行になった。頑張れば 1 行でも書けそう。

Swift ほどのシンプルさはないし、NSPredicate を使いこなせないといけないけれど、極めれば便利に使えそう。

modulus:by: は NSExpression.h の中に載っていた。

2017-02-14

AMN 10 周年感謝飲み会に参加してきた

昨日、AMN の 10 周年感謝飲み会があったので参加してきた。

  • 日時: 2017-02-13 (月) 19:30-22:00
  • 場所: AMN 会議室

会社を出たのが 19 時半頃だったので、開始から約 1 時間遅れて到着。

AMN の場所が分からなくてマップで検索。虎ノ門 33 森ビルの中に入って、フロア・リストを見ると... 4F にあった!

Agile Media Network

エレベーターで 4F へ。AMN の受け付けに白い紙。

Agile Media Network

近づいてみると、10 周年記念の会議室の案内。

AMN 10th Aniv.

中に入ると徳力さんが AMN の歩みを話していた。途中入場なので話も後半。2012 年頃が話題になっていた。最初から聞きたかったなぁー。AMN の話でもある「アンバサダー・プログラム」。これを「アンバサダー」と決めるまでに別の案もあったとか。話し合いの末に (徳力さんの案が敗れて?) アンバサダーに決まったとか。裏話も色々聞けた。

巨大なバームクーヘンも登場。参加者がカメラを取り出す。みんなブロガーなんだなぁ。

巨大バームクーヘン

もちろん、ぼくも。

久しぶりな顔、名前だけしか知らないような人。様々。引っ込みじあんで、あまり声をかけられなかったけど、楽しかった。

2017-02-13

The Wikisinger — ロケーションによる天然サウンド・エフェクト付ミュージック・ビデオ

The Wikisinger は 2015 年 7 月に公開されたミュージック・ビデオ。

1 人の男性がオリジナル曲を「いろいろな場所」で歌う。「いろいろな場所」とは、普通の部屋・屋根裏部屋・ホール・トンネル・工事現場... そして無響室。計 15 か所のロケーションで撮影・録音している。場所によって音の響き方が変わるので、シーンが切り替わるたびにまるでサウンド・エフェクトを変更したかのように聞こえてしまう。例えば普通の部屋はいくぶんデッドでホールは反射音が多くリバーブ (残響) が強い。工事現場のように開けた場所では、室内より更にデッドで、無響室に至ってはリバーブが 0 になる。

サウンド・エフェクトを「機器」を使って付与することは難しくないけれど、それをあえて排しているのが、このビデオの面白いところ。

このビデオを他の人に見せたら、「背景(ロケーション)は合成で、実際は機器でサウンド・エフェクトを付けてるんじゃないの?」と疑われた。そこで見つけたのが、このビデオのメイキング。

シーンが切り替わっても、画面に映る調度品が同じ位置に見えるよう、メジャーで位置を測って配置している様子などを見ることができる。

本編とメイキング。二本合わせて見ると面白さが倍になる。

なお、このビデオを良いオーディオで聴くと、ホールで手をパァーンと叩いた音が目の前に広がって行く。オーディオ的な面白さも味わえて楽しい。Bluetooth や AirPlay、Chromecast の使える環境の方は是非観てみて欲しい。

2017-02-12

JVC Kenwood が企業プロモーション・ビデオを作ってた

古巣の JVC Kenwood が企業プロモーション・ビデオ「JVCKENWOODancing」を作っていた。元同僚から教えてもらった。

横浜赤レンガ倉庫 1 号館 (公益財団法人横浜市芸術文化振興財団) との連携による企業・地域プロモーションとのこと。制作の経緯によると、

このたび「横浜赤レンガ倉庫1号館」から参画をご提案いただいたダンスの楽しさに触れる、「横浜赤レンガ倉庫1号館」という劇場を知る、地域と劇場がつながることを目的とした「企業・地域と劇場をつなぐ 赤レンガ・ダンスプロジェクト」は、当社が「JK3.0」で推進する「新たな企業文化の構築」への取り組みとの親和性が高いため、風土改革活動の一つとして位置付け、“社員自らが表現者(ダンサー)として出演する”企業プロモーションビデオの制作に至りました。

2017年 | ニュースリリース | 株式会社JVCケンウッド より引用

ビデオは 6 分 59 秒。楽曲は広瀬香美の「ロマンスの神様 2016」(新アレンジ)、ダンス振付は伊藤千枝。ビデオはニュース・リリースやダイバーシティページで観ることができる。YouTube にもアップするってニュース・リリースには書いてあったけど、2017-02-12 現在見つけることは出来なかった。

ビデオを見てたら元同僚の姿も見つけることができた。頑張ってるんだなぁ、と感概ひとしお。

2017-02-11

Github で ignore space change 相当の diff を見る方法

過去に Github の Files Changed (diff) で -b (--ignore-space-change) フラグ相当の差分を見る方法を紹介した。

git diff -b と同じような出力をどうやって見るか。

方法は簡単。アドレスバーの URL 末尾に「?w=」というクエリー文字を追加してページを開く (Return キーを押すとページが開く)。これだけ

clmemo@aka: Github の「Files changed」(diff) で空白を無視する より引用

で、最近この方法を使おうとしたら使えなくなっていた。「?w=」だけではダメになっていて、必ず「?w=1」と指定しないといけなくなっていた。

URL のクエリーとしてはこっちの方が正しいので納得は出来る。Github 側が仕様を変えたのかな? それとも Chrome に変更があったのかな?

2017-02-09

Amazon で著者をフォローする

Amazon で著者をフォローすると、新刊情報が届くようになる。著者をフォローするには、Amazon の商品ページから著者名をクリックして「著者」の写真の下にある「+ フォローする」ボタンをクリックする。

Amazon - Follow Author

新刊/新シリーズ・チェックしたい作者とか登録しておくと良さそう。スクショでは、最近ジャンプで体裁している「ワールドトリガー」の作者「葦原 大介」をフォローしてみた。シリーズ再開して新刊が出る時に、気づけるように... と。

著者ページは広いてもほとんどスルーしていたから、「フォロー」ボタンの存在に気づかなかった。

「フォロー」ボタンの存在は、「白依のカノジョ」の作者ブログで知った。

フォローして頂くと新刊情報その他お知らせが届くようですよ。

Amazon著者セントラルというものに登録してみました。 - 日坂水柯(ヒサカミカ)日々ヲ記ス より引用

著者の人は「Amazon 著者セントラル」というのに登録すると、このフォロー・ボタンを出すことができるようになるなしい。他の作者の人達も「フォロー」ボタンを出すようにしてくれると嬉しいな。

※ もちろん、日坂水柯氏もフォローした。

2017-02-08

現在の Emacs のバージョンを調べる方法

Emacs のバージョンを調べる方法について。

一般には変数 emacs-version を参照すれば良い。

emacs-version
"26.0.50.1"

けれども、ぼくのように開発版の Emacs を使っている場合はこの情報だけじゃ不十分。バグを見つけたとしても、数コミット先では修正されているかもしれない。

そんなケースでは Git のハッシュ値を見る。Emacs も Git でバージョン管理するようになったから (数年前まで CVS だったのが信じられない!)

嬉しいことに、コンパイル時の Emacs のハッシュ値を調べる関数がある。

(emacs-repository-get-version)
"308d5962236448a84795f49d775601599688d78d"

すごい!!

ref

emacs-repository-get-version については下記記事で知った。感謝。

2017-02-07

Primare I30 が修理から帰って来た

今年頭からノイズ音を出して調子の悪かったアンプ Primare I30 が修理を終えて、今日戻って来た。おかえりなさい!!

2017-02-04 (土) に修理完了の連絡が来て、翌日入金。宅配便で今日の 20:05 に届いた!

Primare I30

二重のダンボール箱に入って到着。梱包材がしっかり詰まって、輸送中にガタガタしないようになっていた。専門店の仕事はしっかりしてる。

Primare I30

えっちら頑張って Primare I30 を箱から取り出した。床に直接置くのはいたみそうなので、座椅子の上に。まだ青いビニールに包まれてる。

Primare I30

シートを取って、さあもうひと頑張り。ラックの中に入れて、各種ケーブルをつないでやる。

Primare I30

かくて Primare I30 は元の場所に戻りけり。

音は気持ち良く鳴ってくれるけど、ノイズ音はもう聞こえない。よかった、よかった。

というわけで CD をかけてみる。最初の一枚はギーゼキングの弾いたバッハのパルティータ集。音楽が楽しい。

あとでスピーカーのセッティングも詰めておこう。No Music, No Life!

2017-02-06

iPhone でワークアウトの月次集計の詳細を見る

今年に入って、朝と夕方に散歩をするようにしている。Apple Watch で「ワークアウト」のウォーキングを起動して、20 分とか 2 km とか目標を決めて歩いている。

ワークアウトの記録は iPhone のアクティビティ・アプリから「ワークアウト」タブを開くことで確認できる。デフォルトで表示されるのは、各月のワークアウトの合計。月を選べば、その月に行なった各ワークアウトの一覧が表示される。

今回は、各ワークアウトではなくて、各月のワークアウトの合計について。

ワークアウトの月次集計

この各月の集計では、ワークアウトをした時間と消費したカロリーの合計と平均、そしてワークアウトの回数が表示される。

全アクティビティ

でも、それだけだと味気ない。せっかく一月頑張ったんだし、色々データを取ってるんだから、もう少し詳しく知ることは出来ないものか。

で、右上にある「フィルタ」から「ウォーキング」を選んだらびっくり。詳細情報が表示された。

ウォーキングのみ

表示された項目は次の通り:

  • 回数
  • 時間 (合計と平均)
  • カロリー (合計と平均)
  • 距離 (合計と平均) NEW!
  • ペース (合計と平均) NEW!

距離とペースの項目が増えた!

これを見てみると、1 月は合計で 100 km 以上も歩いたとか、2 月はまだ 1 月の 1/4 しかワークアウトをやってないとか、1 回のウォーキングに 1 月は 28 分かけていたのに 2 月は 23 分と短めだとか、2 月平均でカロリーも距離も 1 月平均に負けているのはやってる時間が短いからかな、もう 5 分頑張ってみようかな、なんてことが分かる。

あ、でも 2 月は平均ペースが 11'35" で 1 月の平均ペース 11'48" を上回っているな。良いね自分を褒めたい。

と、こんな感じでワークアウトを続けて行く拠り所になってくれる。

詳細項目は「フィルタ」で選ぶものによって変わる。ぼくはウォーキングとランニングとサイクリングしかやっていない。ウォーキングとランニングは「ペース」となっていたけど、サイクリングは「速度」になっていた。他のワークアウトではどんな表示になるのか。ちょっと興味がわく。

2017-02-05

git worktree で別ブランチの参照をこなす

Git 2.5.0 から git worktree コマンドで「今とは別」のブランチを他のディレクトリーに書き出すことが可能になった。

$ git worktree add path branch

例えば、feature/fix-a で作業中に hotfix/2.1.1 のコードが読みたくなったとする。その場合、こんな風にする。

$ cd ~/project/foo
$ git branch
  develop
* feature/fix-a
  hotfix/2.1.1
  master
$ git worktree add ../foo-hotfix hotfix/2.1.1

これで ~/project/foo-hotfix に hotfix/2.1.1 ブランチの内容がコピーされた。

このコマンドの面白いところは、リポジトリーをコピーしているのではないところ。リポジトリーはあくまで一つで、別の worktree を作っている。worktree はリポジトリーにひも付いた作業場のこと。git init や git clone した後に「作業をしている場所」のこと。

リポジトリーが同じなので、worktree コマンドで作った場所 (上の例では ~/project/foo-hotfix) でのコミット等は自動的に ~/project/foo でも参照することができる。git merge など不要。

複数のブランチを参照したい時、複数のブランチをほぼ同時に編集したい時に便利。

2017-02-04

NSArray に subArray を追加した NSArray を返す

Objective-C で NSArray に要素を追加することは出来ない。追加したければ NSMutableArray を使う。

NSArray から NSMutableArray は、mutableCopy で作れる。

NSArray *array = @[@1, @2, @3];
NSMutableArray *mArray = [array mutableCopy];
NSArray *subArray = @[@4, @5, @6];
[mArray addObjectsFromArray:subArray];
NSArray *newArray = [mArray copy];

ただし、「元の NSArray に subArray を追加した NSArray」が欲しいだけなら、mutableCopy を使う必要はない。arrayByAddingObjectsFromArray: というメソッドが使える。上のコードをarrayByAddingObjectsFromArray: を使うとこう書き直せる。

NSArray *array = @[@1, @2, @3];
NSArray *subArray = @[@4, @5, @6];
NSArray *newArray = [array arrayByAddingObjectsFromArray:subArray];

NSMutableArray を一度作らなくて良いので手間が省ける。関数型っぽく書ける点も気に行っている。

2017-02-03

WiMAX 2+ の速度制限が「3 日で 10 GB」に緩和された

2017-02-02 (木) から、WiMAX 2+ が速度制限の条件緩和と適用時間変更を行なった。変更点は次の通り:

  • (旧) 3 日で 3 GB 使うと制限がかかる
    • (新) 3 日で 10 GB 使うと制限がかかる
  • (旧) 翌日の昼から翌々日の昼まで、最大 1 Mbps (?) に制限
    • (新) 翌日の 18 時から 26 時まで、最大 1 Mbps に制限

あとがき

3 日で 3 GB だと、iTunes などの動画配信サイトで映画を 1 本ダウンロードすると一発で制限に引っかかってしまう。映画を見たら、翌日は映画を観ることができなかった。3 日で 10 GB なら、映画 2 本は借りられる。制限に引っかかるの前提なら、3 日で 3 本借りて、翌日休んで、また 3 日で 3 本借りる。というのもアリかな。正月とかお盆とか、映画を借りたくなる日って続くんだよね。

ロゴヴィスタが「痛風に効く」レシピ・アプリをリリース

「広辞苑」や「リーダーズ英和辞典」など、辞書系アプリをリリースすることで有名なロゴヴィスタがレシピ・アプリをリリースした。その名も「法研 通風に効くおいしいレシピ 200」。

アプリの説明の前半を抜粋する:

健診で「尿酸値高め」と指摘された人
「痛風」を治したい人に
料理研究家「20人」による厳選レシピ一挙200点!!

  • 痛風対策に役立つ選りすぐりの200レシピを集めました。
    数多い料理のなかからバラエティーに富んだ献立を立てることができます。
  • 掲載レシピは20人の料理研究家による、味も量も満足の料理ばかり。
    痛風が心配な人だけでなく、家族みんなの健康を考えた食事作りにお勧めです。
  • 献立が立てやすいように、レシピは「主菜」「副菜」などのジャンルや食材別に掲載。
    それぞれにエネルギー量、塩分量、食物繊維量を記載しています。
  • 全料理のイメージをひと目で見られる写真入りインデックスを収集。
    作りたい料理・食べたい料理をすばやく選んで、目的のページへジャンプすることができます。
  • 「痛風とは」「尿酸値とは」「痛風を治す食生活のポイント」などの
    知っておきたい知識を、図解入りでわかりやすく解説。
  • レシピ名、食材別インデックスからレシピを検索できます。

元本を出版している法研は「家庭医学大全科」とかを出している会社なのね。初めて知った。

健康診断で尿酸値が高かったとこぼしてる同僚が居るので、このアプリを知らせてみよう。

2017-02-01

Primare I30 の修理見積りが出た

修理に出したアンプ Primare I30 の見積りが、昨日出た。3 万円程度で直りそうとのこと。

壊れていたのは、プリアンプ部のミュートリレー電源カップリング・コンデンサーが 8 つとボリューム・ロータリースイッチ。ここら辺が壊れていたので、プリ出力からノイズが出ていた。あと、ぼくが確認したわけじゃないけど、パワー部へ信号が流れなくなり、Primare I30 のスピーカー端子からは音が出なくなっていたそうな。ここ数年はプリ出力しか使っていなかったから、気づかなかった。

Primare I30 のボリュームはリモコンと本体の両方で変えることができる。ボリューム回りを見た人によると、ぼくはリモコンでばかりボリュームを変えていたらしい。たまには本体のつまみも回してあげると、良いですよ、とアドバイスを伝えられた。返って来たら、本体のボリュームつまみも時々回すようにしよう。

あとどれくらいかかるのか分からないけど、早く修理が終わってくれると嬉しい。

アクティビティで 2017 年 1 月の「完璧な 1 か月」を達成した

Apple Watch のアクティビティ・アプリで「完璧な 1 か月」を達成して、バッチをもらった。

Apple Watch Activity Badge

バッチ獲得の説明は下記の通り:

2017 年 1 月はムーブゴールを毎日達成したので、このバッジを獲得しました。

説明にある通り、目標カロリーを消費する「ムーブ」を 1 か月毎日達成した。ぼくが設定している目標カロリーは 220 キロカロリー。かなり低目だけど、それでも今まで毎日達成することが出来ていなかった。

今年は「謹賀新年チャレンジ」獲得を最初の目標に「ムーブ」達成を行なった。「謹賀新年チャレンジ」バッジを獲得できた後も、失速しなかった。毎月三日坊主になってたアクティビティを、1 か月間ちゃんと続けることができた。ある程度ペースが出来ると、アクティビティを続けることも難しくなくなる。このまま毎日運動を続けて行きたい。小さな成功をコツコツ重ねたい。

ref

2017-01-31

NSMutableArray に subArray を追加する

Objective-C で Array (NSMutableArray) に要素を追加する時は - addObject: を使う。

NSMutableArray *arr = [NSMutableArray new];
NSNumber *item = @1;
[arr addObject:item];

では配列を追加する場合は?

ループを回しても良い。

NSArray *subArray = @[@1, @2, @3];
NSMutableArray *arr = [NSMutableArray new];
for (NSNumber *item in subArray) {
  [arr addObject:item];
}

でも、arr の変化を ReactiveCocoa などでオブザーブしてると、item を追加するたびに発火して面倒。

そこで、- addObjectsFromArray: を使う。

NSArray *subArray = @[@1, @2, @3];
NSMutableArray *arr = [NSMutableArray new];
[arr addObjectsFromArray:subArray];

一気に追加できて便利。

2017-01-30

iCloud Drive に保存した QuickTime のファイルにコマンドラインからアクセスする

Mac の QuickTime で動画を撮った。保存先は iCloud Drive にした。で、保存した動画から音声を削ろうと ffmpeg コマンドを使おうとしたのだけど、どこにファイルがあるのか分からない。Finder アプリからは簡単にアクセスできるのに、コマンドラインからアクセスできない。ホーム・ディレクトリーの直下に iCloud 等のディレクトリーがあれば分かりやすかったんだけど、どうやらそうではない模様。

結論を書くと、次のパスにファイルがあった:

~/Library/Mobile Documents/com~apple~QuickTimePlayerX/Documents

探し方

ネットの情報を読むと、~/Library/Mobile Documents 以下が怪しいと分かった。

まずは、そこに移動して find コマンドでファイル名検索 (見つけたいファイル名は Finder アプリで最初から分かっていたので)。

$ cd ~/Library/Mobile\ Documents
$ find . -name "filenam.mov" -print

これでファイル・パスが分かった。

ref.

2017-01-29

Emacs で HTML のライブ・プレビューを行なう impatient-mode

Emacs で編集中の HTML ソースを外部ブラウザー (Chrome とか) でライブ・プレビューするマイナー・モード impatient-mode の存在を知ったので試してみた。

インストール

MELPA からインストールできる。.emacs に MELPA の設定をして:

;;
;; Package (Emacs 24+)
;;
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

M-x package-list-packages から impatient-mode を選択しインストールする。

使い方

foo.html というファイルを編集しているとする。

  1. M-x httpd-start でウェブ・サーバーを起動しておく (一度だけ)
  2. foo.html を開く
  3. M-x impatient-mode でマイナー・モード impatient-mode をオンにする
  4. 外部ブラウザーで http://localhost:8080/imp にアクセスする
  5. ファイル名一覧が表示されるので foo.html を選ぶ

以上。

ライブ・プレビューが不要になったら、もう一度 M-x impatient-mode を叩いて impatient-mode をオフにしてやればいい。

動画

あとがき

HTML を書いて、すぐに確認できるのは便利。同じ要領で Markdown のライブ・プレビューもやりたい。今度、探してみよう。

2017-01-28

手軽に画像リサイズできる Mac のコマンド sips

Mac でコマンドラインから手軽に画像リサイズしたいなぁ、と思っていたら sips コマンドなるものがあると知った。-Z オプションで最大サイズを指定する。こんな感じ。

$ sips -Z 640 foo.png

縦長の画像だったら高さが 640 になるし、横長の画像だったら幅が 640 になる。アスペクト比は変わらない。画像は上書きされる。もしオリジナルの画像を残したいなら -o オプションで出力ファイル名を指定する。

$ sips -Z 640 foo.png -o bar.png

ちなみに -Z のロングオプション名は --resampleHeightWidthMax

あとがき

画像リサイズでは ImageMagic の convert コマンドを使っていたのだけど、手元の PC に ImageMagic が入ってなくてインストールするのも面倒だった時にこのコマンドを知った。デフォルトで使えるのは便利。

2017-01-26

Amazon プライムビデオの「次に観る」からアイテムを削除する方法 (iOS)

Amazon プライムビデオでは、ウォッチリストに登録したアイテムが「次に観る」欄に表示される。こちらの「次に観る」からアイテムを削除する方法。やり方は 2 つある:

  1. アイテムを開いて「ウォッチリスト」から削除する
  2. アイテムを長押しするとプルプル震え始めてバツ・ボタンが現れるのでバツ・ボタンを押す

Remove an item from 次を観る

以上。

後者の「バツ・ボタン」は気づきにくいんじゃないかな。複数のアイテムを削除する場合は、後者の方が楽。

あとがき

Amazon プライムビデオには作品によって配信が終わってしまうものがある。たとえば上のスクショだと「サカサマのパテナ」とか「言の葉の庭」とかを いつか観よう と思ってウィッシュリストに登録していたのだけど、気づいたら配信が終わってた。

観れないものが居続けても邪魔なので、消してしまった。時々、また配信されるものもあるので、そういうのは気付きやすいよう残しておくけど。

2017-01-25

Git の Commiter と Author を書き変える

普段とは違う PC で作業をしていたら、Git の Committer と Author を変更するのを忘れてた。いつも使ってるコミッターと作業になってしまうのは気持ち悪い。一つ程度なら手作業で直してしまうんだけど、今回は 7 つもコミットしていた。一括で変更したい。やり方を探したら、ピッタリの記事を見つけた。

次のコマンドを叩く。実際に使う時は \ の後ろの改行を消して! (名前は ataka, メアドは masayuki.ataka at gmail.com にしている。適当に読み変えてください)。

$ git filter-branch -f --env-filter \
  "GIT_AUTHOR_NAME='ataka';
   GIT_AUTHOR_EMAIL='masayuki.ataka@gmail.com'; \
   GIT_COMMITTER_NAME='ataka'; \
   GIT_COMMITTER_EMAIL='masayuki.ataka@gmail.com';" HEAD

これでリポジトリーの全てのコミットを修正できた。

やってから思ったのだけど、これ、破壊力が大きい。今回は自分のコミットしかないリポジトリーだったけど、他の人のコミットとかあったら色々困ったことになってた。用法・用量はよく理解して使いたい。

こちらのドキュメントを読むと、その強力さが良く分かる。今度、ちゃんと勉強してみよう。

2017-01-24

iPhone のアラームを全削除する方法

iPhone のデフォルト・アプリ「時計」に設定した全てのアラームを削除する方法。実は簡単で、Siri に

「すべてのアラームを削除」

と頼む。

Remove all alarms from Siri

確認画面が現れるので、「確定」を選べばいい。これだけ。

あとがき

「時計」アプリの画面からアラームを全削除する手段はない。少くともぼくは見つけられなかった (もし他にも方法があるなら教えて頂けると嬉しいです)。

普段の目覚ましに「時計」アプリのアラームを使っているんだけど、休みとかイベントの時に一回っきりのアラームを追加してしまう。邪魔なので閑な時に消そうと思うんだけど、1 つ 1 つ消すのは面倒で困ってた。で、Siri に頼んだら一発だった。この他にも普通の UI で出来ないことが Siri で出来るかもしれないね!

2017-01-23

精選版 日本国語大辞典 for iOS を買ってみた

2017-01-17 (火)、iOS 向けの「精選版 日本国語大辞典」が発売された。通常価格 7,800 円。2017-01-31 までセール価格 4,800 円。サイズは 319 MB。リリースしたのは物書堂。

日本国語大辞典は国語辞典で唯一の「大辞典」。OED (Oxford English Dictionary) と同じく、語義を頻度順ではなく歴史的成立順に並べている。そのため、今では使われなくなった用法が先頭に現れることも珍しくない。

最新第二版は 2000 年から 2002 年の間に刊行された。全 13 巻、別巻 1 巻。 50 万項目、100 万用例。この第二版の項目・用例に更新をかけ (プチ改訂?)、項目数を 30 万・用例を 30 万にまで「精選」したのが「精選版」(全 3 巻) とのこと。

「物書堂」は辞書アプリをメインに開発している会社。iOS の最新機能をすぐに取り入れるフットワークの良さがある。iPhone 6s から導入された 3D Touch や、iPad Air で使えるようになった Split View なども辞書系アプリとしては一早くサポートしていた (確か、新 OS がリリースされて 3 か月以内には出していたはず)。

あとがき

日本国語大辞典の名前は良く聞くけれど、十数巻もある辞書を買うお金もなければ置く場所もないので高嶺の花と思っていた。精選版とはいえ、日本国語大辞典が 1 万円以下で手に入ると知り、勢いで買ってしまった。辞書マニアには程遠いけど、辞書持ってるのが好きなのよね。面白い。

2017-01-21

iPhone で「コーヒー」の写真を検索してみた

昔の「コーヒー」の写真を探していて、試しに画像検索したら成功した。iPhone にデフォルトで入っている「写真」アプリと、Google が提供している「Googleフォト」アプリでの検索について書いてみる (ぼくはこの他に「Prime Photos」と「Flickr」を入れている。「Prime Photos」に検索機能はなかった。また、「Flickr」は画像に付けたタイトルやタグを検索する機能しかなかった)。

「写真」アプリ

まずは iPhone (iOS) 標準搭載の「写真」アプリ。検索で「コーヒー」と入れたら、候補が 2 つ現れた。「コーヒー」と「コーヒーショップ」。なるほど、「写真」アプリは認識したカテゴリーが分かるようになっているのか。

Untitled

今回は「コーヒー」を選択。

Untitled

「コーヒー」の写真がタイル状に表示された。一覧性があってイイ。

一部、飲み物じゃないものも認識されている。上から一段目・右端の写真はキャニスターに入った「コーヒー豆 (粉末)」だし、上から二段目・左端の写真ではマグカップにコーヒーはまだ入ってない。マグカップの横にある白い筒が Stelton のコーヒー・プレスで、中にコーヒーが入ってるんだけど、コーヒー・プレスを認識したのかしらん (まさかね!)。下から二段目・右から 2 つ目にいたっては大はずれ。Twitter ロゴの入った Bluetooth スピーカーをコーヒーと間違えてる! 遠目に見たら、人でも間違えてしまいそう。面白い。

「Googleフォト」アプリ

iPhone (iOS) に入れた「Googleフォト」アプリを試す。検索で「コーヒー」と入れたら、候補が 2 つ現れた。「コーヒー」と「コーヒーカップ」。「写真」アプリと少しカテゴリーが違う。試しに「コーヒーショップ」を検索したら、検索結果は返って来たけど「コーヒーショップ」を撮った写真はなかった (何故か「カレー」の写真とか「駅弁」の写真がヒットした)。また、「写真」アプリで「コーヒーカップ」を検索したら「カップ,コーヒー」という候補が現れた。

Google Photos - Search

さて、今回は「コーヒー」を選択。

Google Photos - Search coffee

「Googleフォト」アプリでは、日付ごとに写真が列ぶ。「写真」アプリは上に行くほど古い写真なのに対し、「Googleフォト」は下に行くほど古い。列び順が逆なので少し混乱してしまう。コーヒーの写真は 1 日に何枚も撮っていないので、少しスカスカな印象。

2 つのアプリを比べると、「Googleフォト」では 3 月 22 日 (上から 1 つ目) の次に 3 月 4 日の写真が来ている。ところが「写真」アプリでは 3 月 4 日の写真 (上から 3 段目・右端) と 3 月 22 日 (上から 4 段目・右から 2 つ目) の間に 2 枚の「コーヒー」の写真がある。一枚はラテだし、もう一枚はもしかしたらソイコーヒーな気がする。これらを「コーヒー」と認識するかどうかは判断に苦しむ。「写真」アプリはその判定が緩目で、「Googleフォト」アプリは厳し目な気がする。そのかわりなのかどうなのか、「Googleフォト」アプリは Twitter ロゴの Bluetooth スピーカーを「コーヒー」と間違えていなかった。素晴らしい。もちろん、「Googleフォト」も完璧ではない。「写真」アプリが「コーヒー」と認識した (明らかに「コーヒー」な) 写真を見つけることが出来ないこともあったし、新幹線で売っているスジャータの「アイスクリーム (バニラ)」を「コーヒー」は誤認識したりもしていた。

あとがき

今回は「コーヒー」で検索をかけたけど、別の単語では結果が変わってくる。例えば「写真」アプリは「紅茶」で検索できたけど、「Googleフォト」アプリは「一致する結果はありません」と出た。ぼくが「紅茶」をあまり飲まないせいかもしれないけれど。

いずれにせよ、写真に「タイトル」や「タグ」を付けなくても、画像検索が出来るというのはありがたい。これからもっと賢くなるだろうし、期待。

簡単に検索できると分かれば、もっと写真を残す気になりそう!

2017-01-20

プロパティー属性: delegate は weak, block は copy

Objective-C でクラスのプロパティとして delegate を持つ場合に、オーナーシップ属性として weak を付ける (一部の例外を除く) のは知っていたのだけど、ブロックにも weak を付けてハマった。Block の場合は weak ではなく copy を使うのね。

typedef FooBlock *(^FooBlock)(NSString *input);

@interface FooObject : NSObejct
@property (nonatomic, copy) FooBlock block;
@property (nonatomic, weak) id<FooDelegate> delegate;

...
@end

ただし、書き方は分かったけど、使いこなせてはいない。循環参照が怖いなぁ。

ref

2017-01-19

iOS のフォルダーを 3D タッチするとバッチ有アプリ一覧が現れる

iPhone はフォルダーの中に複数のアプリを入れることができる。アプリ・アイコンの右上には通知の数などを表す「バッチ」が表示される。もし、フォルダーの中に入っているアプリに「バッチ」が付いた場合、フォルダーに「バッチ」が表示される。複数のアプリに「バッチ」が付いたら、フォルダーには合計の数が「バッチ」として表示される。

さて、「バッチ」の付いた (フォルダーの中の) アプリに、素早くアクセスしたい時どうするか。便利な方法がある。

それはフォルダーを 3D タッチすること。するとクイック・アクションとして「バッチ」の付いたアプリの一覧が表示される。ここで、指をすべらせて目的にアプリを選べば OK。アプリが起動する。

3D Touch / Folder

スクショは、写真系アプリを集めたフォルダーを、3D タッチしたもの。「Prime Photos」に 85 個、「Flickr」に 7 個、「Googleフォト」に 2 個の「バッチ」が付いている。

フォルダーを開く手間を半歩省ける。通知を確認するのに便利。

2017-01-17

アンプ PRIMARE I30 が壊れたっぽい

2008 年から愛用しているアンプ Primare I30 が壊れたっぽい。

PRIMARE I30

正月の休みが明けて、帰省先から帰って来たところ、左右のスピーカーかジジジーという音が鳴るようになっていた。色々調べて原因を探り、Primare I30 がおかしい、という結論に達した。調査項目は次の通り:

  • プリアンプ Primare I30 のボリュームをミュートにすると、ノイズが消える
  • Primare I30 の入力セレクターを切り替えても、ノイズは消えない
  • Primare I30 への入力ケーブルを全て抜いても、ノイズは消えない
  • 左右のスピーカーから同じノイズが聞こえる
  • パワーアンプはモノラル・パワーアンプを利用している

ノイズが出始めた当初は、冷さで調子がおかしいのかな? と一抹の望みを持って何日か様子を見てみたけれども改善しない。オーディオ・ショップの店員さんや、オーディオ友達らに聞いてみたけれど、故障でしょうという意見以外もらえなかった。

週末もしくは月末に、修理に出してみる。直ってくれると良いのだけど。できればお財布に優しいお値段で。。。

Primare I30 は、ぼくが自分の好みで選んだ初めてのオーディオ機器なので愛着が大きい。とてもショック。

2017-01-16

Apple TV でスクリーン・セーバをすぐに起動する

Apple TV でスクリーン・セーバをすぐに起動したければ、ホーム画面なら

  • MENU ボタンを二回押す

これでスクリーン・セーバが起動する。

Apple Rimote

もし、アプリの中にいる時は「ホーム」ボタンを押してホーム画面に戻り、MENU ボタンを二回押す。

あとがき

Apple TV のスクリーン・セーバは綺麗なので、友達に見せたくなることがある。そんな時に便利。もちろん、自分で見るのもアリ。

2017-01-14

YAMAHA の AV アンプ RX-V481 を購入した

実家で使っていたアンプ Tangent EXEO Amp が壊れてしまった。ここ一年、ディスプレイが表示されない等の不具合が出ていて、年末ついに電源が入らなくなった。もう修理もできないそうな。というわけで、新しくアンプへ買い換えることになった。

買い換え候補に上がったのは、同価格帯 (5〜6 万円) のピュア・アンプ。YAMAHA とか Denon とか。そんな中、実家での利用シーンを聞いてみると TV 番組を見ることが多いという。あと、Google Chromecast で Youtube を見るとか。なら、AV アンプの方が使い勝手良さそう。

結局、AV アンプとピュア・アンプの音質は比べることが出来ず、操作性の良さそうな AV アンプをエイヤッで買った。それが、YAMAHA の AV アンプ RX-V481。

YAMAHA RX-V481

写真は、YAMAHA の GT1000 ラックに入っている RX-V481。

これで我が家のオーディオ構成に次のようになった:

  • CD プレーヤー: Marantz CD6004
  • AV アンプ: YAMAHA RX-V481
  • スピーカー: QUAD 11L

AV アンプには、CD プレーヤーの他に TV、BD レコーダー、Google Chromecast を常時接続している。CD プレーヤーを除いて、全て HDMI 接続。TV は ARC (Audio Return Channel) で音声を AV アンプに渡す。

RX-V481 は 5.1ch 対応。そのうち 4ch を使ってスピーカーをバイアンプ駆動できる。QUAD 11L はバイアンプ対応で、実家には余ったサラウンド用スピーカーもないので、バイアンプで駆動するようにした。

Bluetooth のバージョンは 2.1。2016 年の最新バージョンが 4.2 なので、少し古い。iPad や Android から音を飛ばすと、クオリティーの低さが気になる。Apple Music を聴くなら RX-V481 の AirPlay 機能で音を飛ばす方が良い。ただ、RX-V481 の AirPlay 機能は「音」だけなので注意。「画面」は飛ばない。写真アプリの写真を大画面で見るとか、YouTube の動画を大画面で鑑賞することは出来ない。「画面」付きの AirPlay がしたいなら、Apple TV か Amazon FireTV (FireTV は AirPlay 用アプリがある) を使うしかない。

YouTube や Google Play Music を楽しむなら、Google Chromecast も良い選択肢になる。Bluetooth より音質が良いし、バッテリーを喰わないのが良い。実家では Google Chromecast をメインに使っているので、AirPlay の利用頻度は下がりそう。

あとは Spotify 対応 (Spotify Connect 対応) とうたっていたけど、iPhone から Spotify の音を飛ばすことは出来なかった。ぼくの Spotify アカウントがフリーなのがいけなかったみたい。Spotify Connect にはプレミアム・アカウントが必要とか。

あとがき

音質に関しては Tangent EXEO Amp に比べて一つ下がった印象。操作性は随分良くなった。実家での利用シーンにマッチしている。

今までは TV をつけて、アンプをつけて、TV の音量をミュートにして、アンプの入力を TV に切替えて... とステップを踏む必要があった。というか、そのステップが面倒で、アンプから音を出すことを しない ことが多かった。どんなに良いアンプもスピーカーも、使わなければ意味がない。「操作が面倒」。そんな理由で、アンプとスピーカーが「意味のない」置き物になることが多かった。

AV アンプにしたことで、TV をつけるだけでアンプも起動して入力が切替わり、TV の音量をミュートにする必要もなくなった。「アンプ」の存在をほとんど気にすることなく使えるようになった。この操作性の違いは大きい。

良い買い物をした。

2017-01-13

go fmt でソースコードを整形してみた

Go にはコンパイラーがコード整形ツールを持っている、というので試してみた。

コマンドは go fmt filename.go

こんなコードを...

$ cat main.go
package main

import (
  "fmt"
  )

func main() {
  fmt.Println("Hello, World!")
  }

go fmt にかけてみる。

$ go fmt main.go
$ cat main.go
package main

import (
 "fmt"
)

func main() {
 fmt.Println("Hello, World!")
}

なるほど。なるほど。

Go 言語ではインデントに TAB を使うとのこと。ぼくはスペースを使っていたけど、それも TAB に直ってた。良いね。

2017-01-12

Flickr の embed コードを XML valid にする EmacsLisp

Flickr で生成した embed コードは XML valid じゃないので、Emacs の nXML モードが文句を言う。邪魔なので、修正する elisp を書いた。

(while (search-forward "data-flickr-embed" nil t)
  (beginning-of-line)
  (when (search-forward "></a>" nil t)
    (replace-match "/></a>"))
  (when (search-forward "async" nil t)
    (replace-match "async=\"async\""))
  (forward-line 1))

ブログ書き用のコードなんだけど、こういうのをまとめて自分用 Blog モードを作ろうかなぁ。。。

2017-01-11

Mac に Go 言語の開発環境を整えた

Go 言語に興味があったので、Mac に開発環境を入れてみた。インストールのメモ。

インストール

Go のコンパイラーは brew でインストールした:

$ brew install go

GOPATH

環境変数 GOPATH の設定を .bashrc に追加した:

# Go Programming Language
export GOPATH=$HOME/go

試してみた

Hello, World! を出力する Go 言語のソースをコンパイルしてみた。main.go の中身は次の通り:

package main

import (
  "fmt"
  )

func main() {
  fmt.Println("Hello, World!")
  }

実行は go run コマンド。

$ go run main.go
Hello, World!

上手く行った。

あとで Emacs の環境も揃えよう。

2017-01-10

Parrot ZIK 3 で 5.1ch オーディオを聴く

フランスは Parrot 社のワイヤレス・ノイズキャンセリング・ヘッドホン ZIK 3 は 5.1ch に対応している。5.1ch 対応したヘッドホンを使ったことがなかったので、設定方法を調べてみた。メモを残しておく。

Parrot ZIK 3.0

ZIK 3 の最新ファームウェア 3.07

Parrow ZIK 3 は、iOS/Android アプリから Bluetooth 経由でファームウェアをアップデートできる。ケーブルを繋ぐ必要がないので準備も要らないし、手間もかからない。最新ファームウェア 3.07 (2016 年 8 月) では、24bit / 48kHz がサポートされた。

USB audio support 24bits / 48kHz : plug headphones on a PC and open its audio settings to adjust the sound quality just like the 5.1 Dolby digital process

(意訳) USB オーディオ・サポート 24bits / 48kHz : ヘッドホンを PC に挿し込みオーディオ設定を開きと、5.1 Dolby デジタル・プロセスのように音質設定が行なえます。

Release note - Parrot より引用

Mac から 5.1ch 音源を聞く

次の手順で Parrot ZIK 3 を 5.1ch 対応にする:

  1. Parrot ZIK 3 と Macbook を USB で繋ぐ
  2. Mac で「Audio MIDI設定」アプリを開く (アプリケーション > ユーティリティ に入っている)
  3. 「Parrot Zik 3 USB Audio 24 bits 5.1」を選択
  4. 「フォーマット」を「6 ch 16ビット整数 48.0 kHz」に変更する

以上 (サウンド設定で出力装置を内蔵スピーカーから Parrot ZIK 3 に変えてね)。

audio-midi-6ch

これで Parrot ZIK 3 のオーディオ出力が 5.1ch になる。

なお、選択可能なフォーマットは次の 3 つ:

  • 2 ch 16ビット整数 48.0 kHz
  • 2 ch 24ビット整数 48.0 kHz
  • 6 ch 16ビット整数 48.0 kHz

デフォルトは 2ch 16bit / 48 kHz。音源によっては 2ch 24bit / 48 kHz に変えるのもアリかもしれない。

試し聴き

iTunes Store で「インターステラー」の映画を購入していたので、Mac から再生してみた。2ch で聴くよりも臨場感が増して、映画が楽しくなった。5.1ch の映画を、ヘッドホンで視聴するなら、5.1ch にしない理由はないと思った。

あとがき

5.1ch 音源につなげば、勝手に 5.1ch へ切り替わるのかと思っていたけど、そこまで自動にはなかっていないのね。Parrot ZIK 3 が 5.1ch 対応しているのは、スペックとしては知っていたけど、実際に使うタイミングがなかったので今回調べて初めて知った。

Bluetooth でも 5.1ch 対応してくれれば良いな、と思ったけ、無理だった。ヘッドホンの制限ではなく、Bluetooth 規格の制限。Bluetooth 通信で使われる A2DP プロファイル (ステレオ通信を行なうプロファイル) では、3ch 以上のストリーミング配信をサポートしていない。新しいプロファイルが作られるか、Bluetooth とは別の独自規格の出現を待たないと無理かな。Apple は iPhone 7 から無線技術を前面に押し進めて行くようなので、こういった規格の策定も頑張って欲しいところ。

2017-01-09

Apple Watch のアクティビティで「謹賀新年チャレンジ」達成

Apple Watch のアクティビティ・アプリで「謹賀新年チャレンジ」を達成して、バッチをもらった。

2017/1 Badge

バッチ獲得の説明は下記:

1 月中に、いずれかの週で月曜日から日曜日までを通して、毎日 3 つすべてのアクティビティゴールを達成し、この特別な達成項目を獲得しました。

アクティビティゴールは 3 種。目標カロリーを消費する「ムーブ」。30 分の運動を行なう「エクササイズ」。1 時間に 1 回は立つことを 12 回行なう「スタンド」。

あとがき

アクティビティは、Apple Watch 購入時からやっているけど、時が経つにつれ意識することが少なくなっていった。続けられれば、体に良いと分かってはいるんだけどね。今回、特別バッチをきっかけに、少し頑張ってみた。

1 月が終わるまで、あと 3 週間ある。アクティビティをもうやらなくなった人も、これを機会に再挑戦してみてはいかが?

2017-01-08

Flickr にアップロードしたアニメーション GIF をブログで使う

写真共有サイト Flickr は JPEG, PNG などと併せてアニメーション GIF もアップロードすることができる。ただ、ブログ等でアニメーション GIF を利用するには制限がある。先日、当ブログにアニメーション GIF を貼り付けたので、やり方を書いておく。

アップロード

Flickr にアニメーション GIF をアップロードをする際の制限はない。ぼくは Mac から Google Chrome 経由で、作成したアニメーション GIF をアップロードした。

ブログへの貼り付け

flickr-animated-gif_640x480

  1. Flickr で貼り付けたいアニメーション GIF を選択する
  2. 「共有」から「Embed」を選択する
  3. サイズを「Original」にする
  4. 表示されたコードをコピーする

以上。

Flickr で生成されたコードをエディターにペーストしてみると、ファイルの拡張子が gif になっているのが分かる。

あとがき

Flickr は JPEG で各種サイズの画像を作成してくれる。「サイズ」の選択で「Original」を選ばなかった場合は、JPEG 画像になってしまうので注意。上のアニメーション GIF では、320x240 のアニメーション GIF を embed しようとしているけれど、「Medium 320x240」を選ぶと JPEG 画像、「Original 320x240」そ選ぶとアニメーション GIF になる。

なお、Flickr はアニメーション GIF のリサイズは行なってくれない。基本は写真や動画を保存しておくサービスなので。。。

2017-01-07

Xcode 8 からメソッドのドキュメント・テンプレートを挿入できるようになった

Xcode ではメソッドのドキュメント向けテンプレートを挿入するコマンドが用意されるようになった。カーソルを、メソッド名の一行前に持っていき、次のショートカット・キーを打つ:

  • ⌥ + ⌘ + / (Option + Command + /)

xcode-method-comment

メソッドにパラメーター (Parameter) があれば、パラメーター名とそのテンプレートも。戻り値 (Return value) があれば、戻り値のテンプレートも挿入てくれる。パラメーターも戻り値もない場合は、メソッドの「説明 (Description)」を書くためのテンプレートが挿入される。

ドキュメント書きの手間を一つ削ってくれるので重宝している。

あとがき

Xcode 7 以前では VVDocumenter-Xcode という Xcode プラグインを使っていた。Xcode 8 になって、Swift 限定だけど、プラグインを入れる必要がなくなった。ありがたい。

2017-01-06

Emacs 26.1 で string-to-int 関数がなくなった

開発中の Emacs を入れたところ、string-to-int 関数がなくなっててハマった。

代わりに string-to-number 関数を使えば良さそう。

NEWS にはこう書いてあった:

** Some obsolete functions, variables, and faces have been removed:
*** make-variable-frame-local. Variables cannot be frame-local any more.
*** From subr.el: window-dot, set-window-dot, read-input, show-buffer, eval-current-buffer, string-to-int
*** All the default-FOO variables that hold the default value of the FOO variable. Use 'default-value' and 'setq-default' to access and change FOO, respectively. The exhaustive list of removed variables is: 'default-mode-line-format', 'default-header-line-format', 'default-line-spacing', 'default-abbrev-mode', 'default-ctl-arrow', 'default-truncate-lines', 'default-left-margin', 'default-tab-width', 'default-case-fold-search', 'default-left-margin-width', 'default-right-margin-width', 'default-left-fringe-width', 'default-right-fringe-width', 'default-fringes-outside-margins', 'default-scroll-bar-width', 'default-vertical-scroll-bar', 'default-indicate-empty-lines', 'default-indicate-buffer-boundaries', 'default-fringe-indicator-alist', 'default-fringe-cursor-alist', 'default-scroll-up-aggressively', 'default-scroll-down-aggressively', 'default-fill-column', 'default-cursor-type', 'default-cursor-in-non-selected-windows', 'default-buffer-file-coding-system', 'default-major-mode', and 'default-enable-multibyte-characters'.

あとがき

T-Code の中で、string-to-int を使っている。インストールしようとしたら、関数がないよ、と怒られてしまった。後で直しておこう。

2017-01-05

Emacs 25.1 を macOS でコンパイルした

Emacs 25.1 (というか git リポジトリーの HEAD) を macOS 10.12 でコンパイルした。作業記録を残しておく。

emacs-25.1

準備

必要なパッケージを予めインストールしておく。必要なのは autoconf と automake。

$ brew install autoconf automake
$ autoconf --version
autoconf (GNU Autoconf) 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.
$ automake --version
automake (GNU automake) 1.15
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Tom Tromey <tromey@redhat.com>
       and Alexandre Duret-Lutz <adl@gnu.org>.

あと、デフォールトで入っている makeinfo のバージョンが古かったので、新しいものと入れ替えた。

$ brew link --force texinfo
$ makeinfo --version
texi2any (GNU texinfo) 6.3

Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ソースコードを取得する

Emacs の最新ソースを git 経由で取得する。

$ git clone git://git.savannah.gnu.org/emacs.git

コンパイル

git で取得したソースには configure スクリプトがないので、autogen コマンドで作成。

$ cd emacs
$ ./autogen.sh

configure スクリプトを、適当なオプションを付けて実行。

$ ./configure --without-xim
(snip)
Configured for 'x86_64-apple-darwin16.1.0'.

  Where should the build process find the source code?    .
  What compiler should emacs be built with?               gcc -g3 -O2
  Should Emacs use the GNU version of malloc?             no
    (The GNU allocators don't work with this system configuration.)
  Should Emacs use a relocating allocator for buffers?    no
  Should Emacs use mmap(2) for buffer allocation?         no
  What window system should Emacs use?                    nextstep
  What toolkit should Emacs use?                          none
  Where do we find X Windows header files?                /usr/X11/include
  Where do we find X Windows libraries?                   /usr/X11/lib
  Does Emacs use -lXaw3d?                                 no
  Does Emacs use -lXpm?                                   no
  Does Emacs use -ljpeg?                                  yes
  Does Emacs use -ltiff?                                  no
  Does Emacs use a gif library?                           no 
  Does Emacs use a png library?                           no 
  Does Emacs use -lrsvg-2?                                no
  Does Emacs use cairo?                                   no
  Does Emacs use imagemagick?                             no
  Does Emacs support sound?                               no
  Does Emacs use -lgpm?                                   no
  Does Emacs use -ldbus?                                  yes
  Does Emacs use -lgconf?                                 no
  Does Emacs use GSettings?                               no
  Does Emacs use a file notification library?             yes (kqueue)
  Does Emacs use access control lists?                    yes 
  Does Emacs use -lselinux?                               no
  Does Emacs use -lgnutls?                                yes
  Does Emacs use -lxml2?                                  yes
  Does Emacs use -lfreetype?                              no
  Does Emacs use -lm17n-flt?                              no
  Does Emacs use -lotf?                                   no
  Does Emacs use -lxft?                                   no
  Does Emacs use -lsystemd?                               no
  Does Emacs directly use zlib?                           yes
  Does Emacs have dynamic modules support?                no
  Does Emacs use toolkit scroll bars?                     yes
  Does Emacs support Xwidgets (requires gtk3)?            no
  Does Emacs have threading support in lisp?              yes
(snip)

make install でコンパイル。./nextstep ディレクトリー以下に Emacs が出来上がる。

$ make install

ぼくは .bashrc に次の一行を書いて、ターミナルから emacs コマンドを叩いている。

# Emacs
alias emacs='open ~/project/emacs/nextstep/Emacs.app/'

あとがき

久しぶりに Emacs をソースかマコンパイルした。画像系のライブラリーが configure で no になっていたり、dynamic modules support を yes にしていなかったり。いくつか手直ししたい所も残っている。ヒマを見て、また再コンパイルを試したい。

2017-01-04

Apple TV をスリープさせる

Apple TV は放置しておけば自動的にスリープするけど、時には強制的にスリープさせたい時がある。そんな時、簡単にスリープさせる方法。

  • リモコンの「ホーム」ボタンを長押しして、「スリープ」を選択する

これだけ。

Apple Rimote

他には、「設定」から「一般 > 今すぐスリープ」を選ぶ方法もある。こっちのやり方は手数が多いので、ほとんど使うことはないと思うけど。

2017-01-03

映画がどの定額動動配信サービスで提供されているかを調べるサービス

アニメ映画「トップをねらえ!」を見たい。

TSUTAYA に借りに行くのも面倒なので、定額動画配信サービスでレンタルしようとした。ところが、iTunes Store を見てみたら、配信していない。Google Play Store も見てみたけれど、配信していない。配信しているサービスはあるのか分からない。1 つ 1 つ調べるのも面倒。複数の定額動画配信サービスを横継検索するサービスがあれば調べるのが楽になる。というわけで、ちょっと調べてみた。

動画配信サービス比較情報.com

動画配信サービス比較情報.com というサービスが定額見放題の動画サービスから、「映画」を配信しているサービスから検索を行なうことができる。

対象としているサイトは次の通り:

  • hulu
  • U-NEXT
  • dTV
  • TSUTAYA TV/DISCAS
  • FODプレミアム (フジテレビオンデマンド)
  • 楽天 SHOWTIME
  • 日テレオンデマンド
  • ニコニコ動画 (プレミアム会員)
  • 観劇三昧
  • プレミアム GYAO!
  • DMM.com 見放題 ch ライト
  • bonobo
  • NHK オンデマンド
  • UULA
  • dアニメストア
  • ゲオチャンネル
  • Netflix
  • アニメ放題
  • スポナビライブ
  • クランクイン! ビデオ
  • 東映アニメオンデマンド
  • アクトビラ
  • バンダイチャンネル
  • テレビ東京ビジネスオンデマンド
  • DAZN
  • au ビデオパス
  • ビデオマーケット
  • Amazon プライムビデオ

全部で 28 サービス。知らないサービスもあるけれど、主要サービスの横断検索という目的は果たせるので十分。

「トップをねらえ!」を検索

「トップをねらえ!」で検索をかけてみた。結果、「定額見放題」で見られるサービスは 1 つも見つからなかった。ただし、U-NEXT が追加課金で見られるようになっているとのこと。

トップをねらえ

ぼくは、運良く、U-NEXT の会員になっている。U-NEXT は AirPlay にも Google Chromecast にも対応しているので、大画面で見られる。後でゆっくり楽しみたい。

あとがき

同様の横断検索サービスに、動画配信サービスを徹底比較というサイトもあった。こちらのサイトは、少し検索画面を見つけるのが面倒だった。残念。

見つかりにくい映画の場合は、お金を払ってでも見たいことがあるので、iTunes Store や Google Play Store、Amazon ビデオ も横断検索してくれると嬉しいな。 (「トップをねらえ!」は Amazon ビデオにもあった)。

2017-01-02

brew upgrade でエラーになったので対応した

Homebrew には更新のある formula を調べるコマンド brew outdated がある。これで古いパッケージを見つけて、upgrade を実行したところエラーになった。コマンドのヘルプに従って対応したので、メモを残しておく。

エラー

brew outdated を実行したら、at-spi2-atk と at-spi2-core が古いことが分かった。

ataka ~$ brew outdated
at-spi2-atk (2.14.0) < 2.22.0
at-spi2-core (2.14.0) < 2.22.0

そこで at-spi2-atk の upgrade を試した。そしたら次のエラーが出た。

ataka ~$ brew upgrade at-spi2-atk
==> Upgrading 1 outdated package, with result:
at-spi2-atk 2.22.0
Error: You must `brew link dbus` before at-spi2-atk can be installed

対応

brew link dbus を先に実行しろというので、やってみたら別のヘルプが出た。

ataka ~$ brew link dbus
Linking /usr/local/Cellar/dbus/1.10.14... 
Error: Could not symlink bin/dbus-cleanup-sockets
Target /usr/local/bin/dbus-cleanup-sockets
is a symlink belonging to d-bus. You can unlink it:
  brew unlink d-bus

To force the link and overwrite all conflicting files:
  brew link --overwrite dbus

To list all files that would be deleted:
brew link --overwrite --dry-run dbus

bin/dbus-cleanup-sockets のシンボリック・リンクの作成に失敗したらしい。これが別の formula (d-bus) に含まれていたのが良くなかったのかな? d-bus を unlink する方法が最初に出てきた。これを実行してみる。

ataka ~$ brew unlink d-bus
Unlinking /usr/local/Cellar/d-bus/1.8.8... 14 symlinks removed

unlink に成功したので、改めて link dbus。

ataka ~$ brew link dbus
Linking /usr/local/Cellar/dbus/1.10.14... 30 symlinks created

link に成功したので、upgrade を再実行。

ataka ~$ brew upgrade at-spi2-atk
Updating Homebrew...
==> Upgrading 1 outdated package, with result:
at-spi2-atk 2.22.0
==> Upgrading at-spi2-atk 
==> Installing dependencies for at-spi2-atk: at-spi2-core
==> Installing at-spi2-atk dependency: at-spi2-core
==> Downloading https://homebrew.bintray.com/bottles/at-spi2-core-2.22.0.sierra.
######################################################################## 100.0%
==> Pouring at-spi2-core-2.22.0.sierra.bottle.tar.gz
�  /usr/local/Cellar/at-spi2-core/2.22.0: 160 files, 1.9M
==> Installing at-spi2-atk 
==> Downloading https://homebrew.bintray.com/bottles/at-spi2-atk-2.22.0.sierra.b
######################################################################## 100.0%
==> Pouring at-spi2-atk-2.22.0.sierra.bottle.tar.gz
�  /usr/local/Cellar/at-spi2-atk/2.22.0: 11 files, 237.4K

at-spi-core もインストールされて、古い formulae がなくなった。

2017-01-01

Emacs に Auto-Complete を最小構成でインストールしてみた

Emacs の Auto-Complete を使い始めてみた。

Auto-Complete をインストールすると、IntelliJ を初めとする IDE でおなじみの補完候補が表示されるようになる。

インストールと設定

MELPA 経由でインストールした。M-x package-install-pacakges から「auto-complete」パッケージを選択してインストール。

.emacs には次の設定を書いた。

;;
;; auto-complete
;;
(ac-config-default)

これで Auto-Complete モードが使えるようになる。基本、プログラムの編集モードで Auto-Complete が ON になり、それ以外ではユーザーが明示的に ON にしないと Auto-Complete モードには入らないらしい。Auto-Complete モードが ON の時は、モードラインに AC の文字が現れる。

細かい設定とかは、これから見ていくつもり。