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 の文字が現れる。

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