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 カードはもう持ち歩かなくて済みそう。財布が少し薄くなって、ありがたい。