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 な番組を探したい時はどうぞ。あんまり先の予定までは入っていないので注意。