| @Mac/iPhone

"Your Computer Isn't Yours" という記事が先週バズってた。

概略を説明すると、 Catalina の頃から Apple が Mac ユーザーのアプリ起動ログを勝手に収集していたが、 Big Sur の公開日にログ集約サーバーがダウンしてしまい、そのせいで Mac を使えなくなる人が続出して問題が発覚したというもの。 Rebuild の Episode 288 で触れられているので興味がある人は聞いて下さい。

この記事については日本語の翻訳もあってはてブで 500 ブックマークくらいついていたが、どうも機械翻訳されただけのようだったし、一部訳が違うのではと思われるところがあったので自分でも訳してみた。訳を原著者の Jeffrey Paul 氏にメールで送ったので恐らくそのうち本家に日本語訳が追加されると思う。

Your Computer Isn't Yours
Your Computer Isn't Yours

2020-11-25 9:16 追記

日本語訳追加してもらいました。


起きていることをまとめると以下のような感じだ。

  1. Apple は Mac ユーザーのアプリ起動データを IP 付きで Apple のサーバーに集めている(ログ送信)
    • 各アプリの署名有効期限チェックやマルウェア対策のためということになっている
    • Mac から Apple への通信は暗号化されていない
      • ISP や CDN ( Akamai )、ネットワークを盗聴している他人が内容を確認可能
    • この通信はユーザーが自分の意思で無効化できない(「Mac解析を共有」をオフにしても送信される)
  2. Mac (特に Big Sur でしか動かない Apple Silicon Mac )を使いたければ利用ログ送信を甘受するしかない
    • Big Sur から、上述のログ送信や Apple 製のアプリは VPN やファイヤウォールを無視するようになった
    • OS の挙動を変更しようとすると Mac が起動しなくなる
  3. iCloud Backup は iMessage の秘密鍵も一緒にバックアップするので Apple がメッセージの内容を読むことができる
    • 自分自身が iCloud Backup 利用していなくても、メッセージの送信相手が iCloud Backup を使っていると自分が送ったメッセージが iCloud 上に保存される
  4. Apple はプライバシー保護を売りにしながらユーザープライバシーをなおざりにしている
    • iMessages/iCloud Backup のバックドアを放置している
    • 過去にアプリ開発者には HTTPS を強制しながら自分たちは OCSP の通信を平文で行っている
    • ログ送信の件について対応を発表したが、対応時期を明確にしていない

その結果、以下のような状況に陥ることが懸念されている。

  • Apple が集めている情報は NSA や FBI に筒抜けになる
    • Apple はアメリカ軍の諜報機関や FBI にユーザーログデータなどの閲覧を令状なしで認める協定を結んでいる
    • iCloud Photo や iMessage の内容を Apple だけでなく軍や FBI も見られるようになっている
  • ユーザー保護を隠れ蓑に Apple が力を増大させる
    • マルウェアから守る、を大義名分にして、ユーザーがどのアプリを動かせるかを Apple がコントロールできる可能性がある
    • 原理的には Apple が気に入らないアプリを起動できなくしてしまうことが可能

モバイルアプリの利用状況の収集は多分いろんなアプリがやっている。 Mac で Apple が集めている程度以上の情報を集めているアプリも多いだろう(位置情報を取得しているアプリなど)。なので最初この件については過剰に反応しすぎなのではないかと思っていたが、よくよく考えてみると自分の感覚の方が麻痺していたのかもしれない。アプリの利用履歴を IP アドレス付きで送るということは、どこで何をしているかがアプリ開発者に筒抜けだ。そしてそのログを公権力が自由に閲覧可能だとしたらいい気持ちはしない。

アプリと Apple の場合で決定的に異なるのは、アプリはそのアプリが起動している間(あるいはバックグラウンドでのログ送信を許可されている間)だけログを送信するが、 Mac に関して言うとずっーっと起動しっぱなしで使い続けるものなので、ログデータからユーザーの行動履歴・生活様式がわかってしまう。地図アプリで検索した場所の情報も送られていたということなので、 Jeffrey Paul 氏が書いているように、その人がこれから行く予定の場所もわかってしまう。

GDPR や様々なプライバシー保護は、アプリを作りサービスを運営する側としては正直厳しいなと思うところはあるけど、 Apple がアメリカ軍と結んでいる PRISM のような取り決めが存在すると、様々な個人情報が政府機関に流れてしまって、アメリカのサスペンスドラマのように個人の位置情報を携帯の使用履歴からいとも簡単に割り出せるようになってしまう。それはやはり恐ろしい世界だ。

プライバシーの侵害のみならず、プラットフォーマーである Apple の匙加減次第で、ユーザーが使えるアプリが決まるという状況も好ましくない。たびたび iOS の App Store で起こる Apple の恣意的な審査基準改変などはその一端だ。 Hey の件で Apple とやり合った DHH は痛烈に Apple を批判するとともに、かつて邪悪な Microsoft に対抗するための救いとも言えた Apple が以前の Microsoft 以上に邪悪になってしまったのが嘆かわしいと Twitter に書いていた。学生の頃、 Mac を広める活動をやって大学のクラスの半分の同級生のラップトップを Mac にしたというエピソードや、 Rails の開発でも Mac を激推ししたという話は胸熱だった。応援してきた Apple が Evil になってしまい、人一倍残念に思っているのだろう。

Apple はかつて "The computer for the rest of us" というコピーで Macintosh を宣伝していた。しかし今日、 Mac は彼らのコンピューターになってしまったのだ。

| @Mac/iPhone

仕事用の MacBook Pro が新しいやつになったので備忘のために設定方法をメモしておきます。

以前書いた通り、自分は Google Chrome の Profile を二つ作ってノーマルの Chrome と Canary チャンネルの Chrome (ベータよりももっと攻めてるやつ)の二つを使い分けている。仕事用が Canary Chrome でノーマルが私生活用。 Slack からのリンクや Google Drive の URL は仕事用の Canary Chrome で開くように Choosy を使って設定している。 Cloud で Profile が同期される都合上、こうするしかない。

その Canary Chrome への 1Password のインストール方法がちょと特殊で、公式サポートフォーラムの以下の記事の通りにやる必要がある。

  1. rm ~/Library/Application Support/Google/Chrome Canary/NativeMessagingHosts/2bua8c4s2c.com.agilebits.1password.json
    Canary Chrome の 1Password 用設定ファイルを削除(存在しない場合もあり)
  2. ln -s ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/2bua8c4s2c.com.agilebits.1password.json ~/Library/Application\ Support/Google/Chrome\ Canary/NativeMessagingHosts/
    ノーマル Chrome の 1Password 用設定ファイルのシンボリックを Canary Chrome の設定ディレクトリに張る
  3. Canary Chrome 再起動

1Password が Chrome とのやりとりに使う JSON ファイルをノーマル Chrome と Canary Chrome で共通化してしまうようだ。これで Canary Chrome でも 1Password が使えるようになる。

| @Mac/iPhone

Touch Bar
Touch Bar

リモートワーク中心の世の中なので Slack の Status で離席していることやミーティング中であることが分かると便利なはず。というわけで自分はなるべく Slack の Status を更新するようにしているが、 Slack アプリ内での Status の更新は面倒くさい。メニューを押して絵文字選んでひと言アップデートを入力とか毎度やってられない。ボタン一発で Status を更新したい。

MacBook Pro の Touch Bar は評判が悪い。自分もあまり便利だと思わないのだけど、一つだけ便利な使い方があって、それがこの Slack の Status アップデートボタンを配置するというもの。 Touch Bar に配置されたボタンを押すだけで食事中であることや退勤済であることを Slack の Status として表示できるようになる。めっちゃ便利。

なお、オリジナルのアイディアとソースコードは 9m さんのものです。

必要なもの

準備

1. Slack の API Token を発行する

2. 9m さんの gist を clone し、手元で動かせるようにする

$ ghq clone https://gist.github.com/af5894ced5cc1ac38bfd2687cad7c780.git slack_status
$ cd clack_status
$ bundle install
$ echo "SLACK_TOKEN=XXXX" > .env
$ bundle exec app.rb "🍺" "退勤しました"

ちゃんと設定できてれば以下のようになる。

コマンドラインから Slack Status をアップデートしている様子
コマンドラインから Slack Status をアップデートしている様子

3. Automator を開き、クイックアクションを設定

新規作成で「クイックアクション」を選ぶ。

Automator を開き「クイックアクション」を新規作成
Automator を開き「クイックアクション」を新規作成

アクションの中からシェルスクリプトを選ぶ。

シェルスクリプトを選ぶ
シェルスクリプトを選ぶ

実行したい処理をシェルスクリプトで書く。

実行したい処理をシェルスクリプトとして記載
実行したい処理をシェルスクリプトとして記載

自分は以下のようにしている。

export PATH="~/.rbenv/shims:$PATH"
export LC_ALL=ja_JP.UTF-8
export LANG=ja_JP.UTF-8
cd /Users/morygonzalez/src/gist.github.com/slack_status
bundle exec ruby app.rb "🚽" "放尿 or 脱糞中です"

なお、赤枠で囲った「ワークフローが受け取る項目」は「入力なし」にしておかないとちゃんと動かないので注意。

入力なしを選択
入力なしを選択

設定完了したら名前を付けて保存する。自分の場合は Slack トイレ などのような名前にしている。この作業を追加したいコマンドの数だけ繰り返す。

4. キーボードショートカットの割り当て

システム環境設定 -> キーボード -> ショートカット -> サービス の順に進む。正しく Automator でアクションを設定できていれば「サービス」の一覧に表示されるので、割り当てたいショートカットキーを割り当てる。

ショートカットの設定
ショートカットの設定

5. BetterTouchTool で Touch Bar をカスタマイズする

タッチバーに表示されるボタンのアイコンとラベル文字を選び、タップしたときにショートカットキーが実行されるようにする。

BetterTouchTool で Touch Bar をカスタマイズ
BetterTouchTool で Touch Bar をカスタマイズ

こうすることで Touch Bar から Automator のクイックアクションが実行され、めでたく Slack の Status がアップデートされるようになる。

ちなみに自分の Touch Bar はこんな感じ。

Touch Bar の様子
Touch Bar の様子

ほこりをかぶってる Touch Bar を是非有効活用してあげてください。

Touch Bar がないパソコンを使っている人向けの情報

Touch Bar のない Mac を使っている人はこのやり方を使えないので Slack の Google Calendar 連携機能を使うと良いと思う。設定に Status Sync という項目があるのでこいつを On にすると、 Google Calendar で予定が入っている時間になると Slack の Status を自動で更新してくれる。

Google Calender の Status Sync
Google Calender の Status Sync

会議中であることくらいしか共有できないので Touch Bar にいろんなボタンを配置するのに比べたら不便だけど、カレンダーに予定を入れておくだけで Slack の Status を更新できるようになるのは便利。

今後の課題

良くありがちなのが「仕事中」の Status のまま退勤してしまうというやつ。夜中や週末も仕事している異常な人になってしまう。スマートフォンからも同様にめっちゃ手軽に Slack の Status をアップデートしたいけどまだソリューションを見つけられていない。情報お持ちの方いたら教えてください。

| @Mac/iPhone

Numbers.app
Numbers.app

公共交通機関を使って登山に行くときは結構綿密に登山計画を立てる。登山口まで行けるバスはコミュニティバスのようなものが多く本数が少ないため、乗り継ぎや行程の時間管理に失敗すると登山できなくなったり帰れなくなったりする。特に長い距離の縦走を日帰りでやろうとすると時間の管理がシビアになる。コミュニティバスの最終時刻は精々 18 時くらいなので、その時間までに確実に下山しないといけない。もし下山できなかった場合はタクシーを呼んで大金を払って帰るか山で野垂れ死ぬしかない。なので準備が大事だ。

YAMAP やヤマレコに登山計画を立てる機能はあるが、あくまでそれは登山中の行程管理であって、行き帰りの公共交通機関の情報を含めた行程ではない。何時に家を出ると乗換駅には何時頃着いてバスはどれに乗れば良いか、バスの乗り換えはどこですればよいか、といった情報は登山計画には書けず自分で管理するしかない。

他にも、バスの時間を一本遅らせたときに後ろの行程にどのくらい影響が出るかを確認したいが、登山の行程と交通機関の行程が分離されていると影響を把握しづらい(手動で後ろの行程の時間をずらしていく必要がある)し、バスの時刻表や地図を埋め込んでおきたいが、画像の貼り付けやリンクには対応していない。

登山では(登山に限らず旅行などでも)プランA とプラン B を考えて、その日の体調や天候に応じて行程を変更するということがあり得ると思う。複数の計画を並列で眺めて比較検討したりするのも登山計画系のサービスではできない。

旅の計画とはつまるところタイムテーブルの管理であり、それはエクセル的なものが使いやすい。スタート時間を 5 分遅らせると後ろが何分遅れるかが簡単にわかる。この計画は何時間かかるのか、というのも勝手に計算してくれる。エクセル的なものであればリンクを埋め込んだり画像を貼り付けたりもできる。

ただ、 Microsoft Excel や Google Spreadsheet の弱点として、一つのシート(画面)に表示できるのは一つの表までだ。一つの画面で複数の表を並べて情報を整理したりできない。画像やリンクを埋め込むことはできるが、あくまで表情のどこかに置くという感じで使い勝手が悪い。セルの中に文字列が隠れてしまったりする。

Numbers は一つのシート(画面)に複数の表を表示できる。これにより関連する複数のデータを並べて情報を整理することができる。それぞれの表はグリグリ動かすこともできる。画像やリンクは表の一部としてではなく、独立したオブジェクトとしてシートの中に埋め込むことができる。こんな感じ。

Numbers
Numbers

例えるなら表計算機能付きのスクラップブックといった感じだ。たいていのデジタルデータを取り込めて自由に配置でき、コメントを書いたりデータを表に集計して絞り込みしたりグラフ化したりもできる。

いろんなデータを取り込めると言えば Notion が思い浮かんだので同じようなことを Notion でやってみようとした。見た目はおしゃれだし画像やリンクの埋め込みは Notion の方に分があるが、表は作れるものの時間の計算ができない。行程管理において時間の計算ができないのは致命的だ。

Notion
Notion

SIer がドキュメント管理に Excel を使うのを嘲笑する風潮があるが(自分もかつて Excel で画面仕様書を作らされていて死ぬほど嫌だった)、何でも Excel で書くのは一理あるのかもしれない。

ただ、上に書いているように Excel には欠点があるので Mac が使えるなら断然 Numbers の方がよい。 Excel のようなマクロはないので高度な処理には向かないが、個人が普通に使う計算はできる。

Numbers のような機能を持ち、チームで共同編集もできる SaaS が出てくると市場を席巻できる気がする。 Miro などがそれに近いかもしれないが、ドローやダイアグラムに特化していてちょっとした計算や条件に応じたデータの絞り込みなどはできない。

話をもとに戻すと、個人が旅行計画のような図や写真、表を一元管理して情報を整理するような用途には Numbers が最適です

| @Mac/iPhone

家で仕事するようになって 3 ヶ月以上経つのだけど、これまでは会社から貸与されている MacBook Pro のディスプレイのみで仕事していた。どうしても大きなディスプレイで仕事したいときは私物 iMac を使うなどしていたけど、職場のルールが厳しくなって私物のパソコンで仕事することができなくなったし、夏で暑くなってきて MacBook Pro 本体のキーボードを触るのがいよいよ厳しくなってきたので、平日の夜に車で会社まで行って会社に持ち込んでいた私物の Dell 4K ディスプレイを自宅に持ち帰り、外付けキーボードで仕事をするようにした。 MacBook Pro 本体のペチペチキーボードよりも Happy Hacking Keyboard の方が快適だ。

ただ、これまで机の上は真ん中に iMac 5K が鎮座していたのでディスプレイの置き場に困ることになった。最初は iMac を真ん中において左にディスプレイ、右に MacBook Pro を置いてみたが、首を 120 度くらい左右に振らないといけないので非常に仕事しづらかった。なので真ん中にディスプレイを置いて左に MacBook Pro 、右に iMac を置くようにした。こんな感じ。

仕事モード
仕事モード

Dell の 4K ディスプレイは入力端子が 3 つあって、 HDMI と Display Port 、 Mini Display Port を受け付けるようになっている。すでに Display Port <-> USB-C ケーブルは持っていたので、 HDMI <-> USB-C のケーブルを買い足して、仕事用の MacBook Pro と私物の iMac 5K の両方に接続してみることにした。

日中仕事しているときは MacBook Pro の外付けディスプレイとして使い、夜は入力チャンネルを切り替えて iMac の外付けディスプレイとして使う。

遊びモード
遊びモード

結構いい感じなのだが問題があって、自分が持っている Dell のディスプレイは P2415Q というやつで、このシリーズの 2016 年 2 月以降の出荷モデルだと HDMI のモードを 2.0 に変更することで 60Hz 表示が可能になるが、自分が持っているのは 2015 年モデルなので 30Hz でしか表示できなかった。

30Hz 出力だと結構描画がかくかくする感じがあって地味にストレス。 Mini Display Port <-> USB-C ケーブルを買えば iMac からも MacBook Pro からも 4K@60Hz 出力できたのかもしれない。残念。

| @Mac/iPhone

リモートワークをするようになって会社から貸与されている MacBook Pro の本体キーボードを使うようになった。普段、会社には私物の 4K ディスプレイと Happy Hacking Keyboard を持ち込んで外付けキーボードと外部ディスプレイの組み合わせで仕事をしているが、在宅に切り替えるタイミングで MacBook Pro 本体だけ持ち帰り、キーボードやディスプレイはオフィスに置きっぱなしにしていた。本体のキーボードを使うようになったことで、キーが引っ込んだまま戻らなくなる例の問題に遭遇するようになった。

修理を依頼しようと Apple のサイトを覗いてみると、緊急事態宣言の影響か配送による修理受付は停止しているようだった。

しょうがないので修理は諦めて外付けキーボード使いたいのだけど、家に USB-C への変換用ドングルがなく困ってる(ドングルも会社に置いている)。 15 インチの画面もなかなか厳しいので iMac の画面を使って仕事ができないかと思ったが、自分が持っている iMac はターゲットディスプレイモードにならないモデルなので無理。

Rebuild のエピソード 266 で miyagawa さんが Mac mini から Remote Desktop で会社支給の Macbook Pro につないで仕事してるって言ってて、なるほどなと思って真似してみた。

私物 iMac から会社の MacBook Pro に vnc でつないでみる。しかし単なる画面共有だとキーボードショートカット使えなくて厳しかった( Command + Space で Alfred を呼び出そうとすると、クライアント側の Mac の Alfred が反応する)。 Apple Remote Desktop でならショートカットも使えるという未確認情報があるのだけど、値段が 10,000 円もしてちょっと試すには厳しいお値段。

一回オフィスに車で行ってディスプレイを持ち帰るとよさそうだなとは思うのだけど、またオフィスで仕事を始めるときにディスプレイを会社に持っていくのもなかなか厳しい(持ち帰るときとまたオフィスに持っていくときの二回、車で送ってもらわないといけない)。こういうことで悩まなくて済むくらいのお金が欲しい

| @Mac/iPhone

Eagle
Eagle

S3 のバケットを事故で空にしてしまってとても悲しかったので、写真以外の画像もきちんと管理してみることにした。

これまで、仕事やブログ用に作った図表みたいなやつは作ったあと JPEG とか PNG に書き出してドキュメントに書き出した後は適当にデスクトップに置いてあって、ある程度時間が経ったら定期的に削除するような運用にしていた。図表自体は Pixelmator や OmniGraffle で作っているが、ちょっと作ったやつは元ファイルごと消してしまっていた。しかしそれでは今回のようにミスって S3 を飛ばしてしまったときにリカバリできなくなる。

というわけで Pixelmator や OmniGraffle で作ったオリジナルファイルを残していこうと思ったのだけど、これらはプレビューできないし、 Mac の中で仕事のプロジェクトのフォルダの中にあったり、 iCloud の Pixelmator のフォルダの中にあったりデスクトップにあったりで非常にごちゃごちゃしており、 Finder だけで管理するのは無理っぽいなと思った。写真以外の画像ファイルを管理できる何かが必要だと思って調べてみた。

この手のやつは Little Snapper というのを使っていたが、途中から名前が Ember に変わって Mac OS のアップデートについて行けずディスコンになった。 Little Snappter / Ember は結構気に入って使っていて、画面のキャプチャを撮って注釈の文字を入れたりする用途に使っていたが、本来はこれらはデザイナー用の画像管理ソフトだと思う。

色々調べていて Eagle というソフトが存在することを知った。 Eagle はなかなかよくて、 JPEG や PNG 、 Adobe の Photoshop 、 Illustrator に加え Pixelmator や OmniGraffle に対応している。デザイン系だけでなく各所にファイルが散らばりがちな MindNode (マインドマップアプリ)や Numbers 、 PDF 、 Keynote 、 Pages 、 MS Excel 、 MS Word などドキュメント系のファイルにも対応している。

要するにパワーアップした Finder という感じなんだけど、ファイルの中身をプレビューできて一括でタグ付けしたりフォルダ管理できるのが便利。 いわゆる「ファイルの壁」問題が解決できる。デスクトップや iCloud Drive に散らばってるやつをとりあえず一旦突っ込んで整理してみることにした。

UI は日本語翻訳があるのだけどあまり出来がよくなく、スクリーンショットを「スクショ」と略していたり、全体的に翻訳が調子こいてる若者風なのが気持ち悪い…。いまは言語を英語にして使ってみてる。日本語文字列の検索精度がいまいちなところも気になる。 年賀状 で検索しても 年賀状 という文字列を含むファイルがヒットせず、かわりに 年賀 で検索するとヒットしたりする。日本語周りに課題が多そうだ。そのほか、 Windows 版も存在するせいか、通知の UI が Notification Center の標準 UI とかけ離れているところもちょっと気持ち悪い。

同系統の Pixave というのを以前「できる Mac OS X Advent Calendar 2015」で知って試していたが、当時の自分は Little Snapper / Ember の代替となるキャプチャに注釈を入れられる機能を求めていたので用途に合わないと感じた。いまもう一度見てみて試してみたが、 Eagle 同様にデザインデータだけでなく様々なファイルを扱えて、いまの自分の用途には適合してそうだった。惜しむらくはあまり活発に開発されていないようだった( MindNode を取り込めるとウェブサイトに書いてあるが、最新バージョンの MindNode には対応していなかった)。Pixave は App Store の賞を受賞しているだけあって見た目がめっちゃおしゃれで Apple の標準 UI に準拠しており、使い心地は Eagle よりも Pixave の方がよい。もうちょい活発にメンテナンスしてもらえたらうれしい。

しばらく併用してどっちを使うか決めたい。

※ Pixave は韓国系の人が一人で作ってるみたい。以前好きで作っていた The Hit List ( ToDo 管理ソフト)も韓国系の人が作ってた。在米コリアンは優れたデザイナーが多いのだろうか。 The Hit List はめっちゃ UI が革新的だったのに更新が滞ってしまった。 Karelia という会社に買われたあとも更新が滞っている。 The Hit List のようにならないでほしい。