2018/08/27

Mail.app の「セキュリティ保護されていない認証を許可」チェックボックスを有効にするアプリを作りました

macOS High Sierra(少なくとも 10.13.6 まで)は、Mail.app に小さなバグがあります。

そのバグは、

  1. Mail.app 「環境設定」の
  2. 「アカウントタブ」から
  3. 「IMAPの詳細設定」へ入り
  4. 「セキュリティ保護されていない認証を許可」のチェックボックスを有効にした後
  5. 「OK」を押しても
  6. 「セキュリティ保護されていない認証を許可」の設定が反映されない

というものです。

Mail.app はユーザ名やパスワードなどを変更すると、その設定が正しいかどうかをサーバへ問い合わせて検証を行い、正常な接続を確認できた場合にのみ、設定を保存する仕組みになっています。

そのため、「セキュリティ保護されていない認証を許可」の設定が反映されない場合、SSL の有効になっていないメイルサーバへの設定変更は検証が成功しないため、保存ができない、ということになってしまいます。

多くの IMAP サーバは SSL に対応していると思われるので、このバグで悩む人は少ないとは思いますが、私が私的に使っているIMAP サーバは SSL 非対応のため、非常に困ってしまいました。

そこで Mail.app が使っている ~/Library/Accounts/Accounts4.sqlite を直接操作するアプリ「Accounts4Fixer」を作成しました。v1.0.0 の Release バイナリも作成してあります。

内容は単純で、直接データベースの当該要素を変更してるだけです。Mail.app は CoreData を使ってデータベースアクセスをしているようですが、このアプリでは SQLite ライブラリを使って直接データベースを書き換えています。

アカウントに関するデータベースを変更する都合上、変更が  失敗した場合、最悪 macOS へログインすらできなくなってしまうかもしれません。その点をよく理解頂いた上で、自己責任でご利用ください(事前にバックアップを作成することをお薦めします)。

なお、この Mail.app のバグは、macOS Mojave では直っているようです。例年通りであれば、恐らく一ヶ月程度で Mojave がリリースされると思われるので、もしそれまで待てるのであれば、また、Mojave へアップデートする予定であれば、Mojave リリースを待つのも良い案だと思います。

2018/06/25

復活する「SMTP サーバリスト」を消す方法

この記事は macOS 10.13.5 / メール 11.4(3445.8.2)を使っています。

macOS 付属の Mail.app で何度も復活する「SMTP サーバリスト」の要素を消す方法です。

TL;DR

Keychain Access.app を使って com.apple.account.SMTP.accountsync を消します。

macOS に付属のメールアプリで「環境設定」に入り、「アカウント」を開くと、メール用のアカウントが表示されます。



右側のペインにあるセグメントバーで「サーバ設定」を選択すると「送信用メールアカウント」のプルダウンメニューが表示され、「SMTP サーバリストを編集」からサーバの一覧画面へ移動できます。




本来ならば、消したい要素を選択し「-」ボタンを押すことで、不要な要素を消すことができるのですが、設定画面を抜け、再度設定画面へ戻ってくると、なぜか消した要素が復活してしまうことがあります。

この現象は Keychain.app を開いて該当項目を消すことで修正できます。

危険な操作ですので、十分に用心して行ってください。

1. Keychain Access.app を開きます。
2. メニューバーにある「表示」から「不可視項目を表示」を選択します。
3. Keychain Access.app の右上にある検索ボックスへ「com.apple.account.SMTP.asynchost」と入力します。
4. 「アカウント」に表示されている項目が「SMTP サーバリスト」の「ホスト名」と合致する項目を選択し、delete ボタンを押します。



これでメールアプリからも不要な要素が削除できました。念のために不可視項目を非表示にしておきましょう。

5. メニューバーにある「表示」から「不可視項目を非表示」を選択します。


2018/04/21

Xcode で Signing Certificate が Error になる場合の確認方法

(この記事は、Xcode 9.3 を使っています)

TL;DR


Build Settings タブにある Code Signing Identity を確認しましょう。

解説


Xcode 8 から Signing で「Automatically manage signing」が選べるようになり、とても便利になりました。この設定は Project Navigator から Targets を選択し、General タブの中にあるSigning で有効にできます。



ここで Team を選択すると、選択された Team 並びに、現在使用している Scheme の Info タブで設定できる Build Configuration などを踏まえ、適切な組み合わせの Provisioning Profile が選択(場合によっては生成)され、設定される、という仕組みになっています。



「Automatically manage signing」チェックボックスを無効にする(即ち チェックを外す)と、以前同様に、手動で Provisioning Profile を選択することも可能です。この場合は、Provisioning Profile を元に、Team が決定されます。




いずれの場合でも、Signing Certificates は最適なものが自動的に選択されますが、稀にこの選択が失敗してしまい、次のようなエラーになる場合があります。

Provisioning profile "XXX-Provisioning-Profile" doesn't include signing certificate "iPhone Developer: John Appleseed (XXXXXXXXXX)".

この Signing Certificates は同じく Project 設定の中にある「Build Settings」タブの「Signing」セクションにある「Code Signing Identity」の情報を元に決定されます。



例えば、「Release Build では iOS Distribution カテゴリの Certificate を使いたい」という場合には、この値を 「iOS Distribution」へ変更しましょう。



私の環境では、Automatically manage signing を無効に設定(すなわち Manual へ設定)した上で、Release build では、Distribution 用 Provisioning を使う設定にしていました。しかし Code Signing Identity は iOS Developer のままであった為、上記のエラーとなってしまいました。Code Signing Identity を iOS Distribution へ設定したところ、エラーが消えました。

なお、Automatically manage signing を有効に設定した場合、 Code Signing Identity は何れの build でも iOS Developer へ設定しておく必要があります。この値を不適切に設定すると、Generic タブの Signing セクションで、

_APPNAME_ has conflicting provisioning settings._APPNAME_ is automatically signed for development, but a conflicting code signing identity iPhone Distribution has been manually specified. Set the code signing identity value to "iPhone Developer" in the build settings editor, or switch to manual signing in the project editor.
といったエラーが表示されますので、Code Signing Identity の設定値を確認してみましょう。

2018/01/15

ルンバのオフィシャルメンテナンスパック

ルンバの販売元「アイロボット」社は、「アイロボットケア」として、ルンバのメンテナンスパックを提供しています

2011年にも紹介記事を書いていますが、この当時はルンバ577のメンテナンスを依頼しました。

今回は、その後継として導入したルンバ871のメンテナンス依頼です。

800/700シリーズの場合、基本価格は22,500円(税抜き)。バッテリ交換も依頼すると、加えて7000円(税抜き)の追加。合計、29,500円(税抜き)。

Webで依頼をし、配送業者へ取りに来てもらう、という流れは、前回と変わっていません。本体はバッテリの絶縁を行い、ホームベースとともに箱へ納めて送り出します。


箱は、購入時の外箱をそのまま使うのが便利で安全ですが、もしすでに箱を処分している場合には、他の箱でも構いません。

Webでは1週間ほどで戻されるようなことが書かれていますが、今回は送り出してから受け取りまでの日数は5日でした。以前と変わらず迅速な対応です。



前回同様、隅々まで汚れは除去され、

  • エクストラクター(中央のブラシ)
  • エッジクリーニングブラシ
  • フィルター

が完全に新しいものへと置き換えられていました。バッテリも新しいものへと置き換えられ、購入時同様に絶縁されています。



その他「本体: 前輪回転検知の不具合」による「87x基盤ユニット交換」、「エッジクリーニングモジュール:異音」による「エッジクリーニングモジュール交換」などが行われ、細かな点まで確認して頂けたことがわかります。


1点予期していなかった変更点として、「ホームベースの交換」がありました。変更理由は「接続端子変形による置き換え」。これに伴い、通電中本体のランプが消えるようになりました。


ルンバ500シリーズ向けのバッテリ交換も含めたメンテナンスパック、「メンテナンスサービスパック」は17,500円でした。それと比較すると、12,000円の値上がりになってしまったことはやや残念ではありますが、本体の機能向上を考えれば、未だリーズナブルな価格帯にある、と言えるのではないでしょうか?

ルンバを長く愛用したい方にはオススメのサービスです。


2018/01/02

2017年に増えた Apple Watch のバンド達

2017年に増えたApple Watchのバンドは、購入した4本+本体へ付属していた1本で計5本。


  • Nikeスポーツバンドがピュアプラチナ/ホワイト
  • スポーツループがシーシェルとダークオリーブ
  • スポーツバンドがソフトホワイト
  • レザーがルビー(PRODUCT)REDクラシックバックル


Nike Sport Band は今年の春から夏頃まで常用していました。





バンドへ穴が空いているため通風が良く、暑い夏も快適。気兼ねなく水洗いもできるので、ジムで汗をかくような状況でも、安心して使えました。色がホワイトスポーツバンドのような真っ白でないため、劣化が目立ちにくい点でも常用に向いています。


秋口からは新登場のスポーツループ。まだ暑い季節だったので、最初はシーシェルを。





その後、秋が深まってからはダークオリーブを使っていました。






ミラネーゼループと同じく締め付け具合を自由に設定できるため、普段は少し緩めに、ジムではきつめに、という運用をしていました。一方で、結局は面ファスナーで密着させることになるため、外す際に「バリバリ」という音がしてしまいます。静かな所での締め直しは、やや恥ずかしい...。

冬には新色レザーの、「ルビー (PRODUCT)RED クラシックバックル」が登場となり、以後はこれを愛用しています。







従来のスポーツバンドにあった明るい赤ではなく、 iPhone X ケースと同じ深い色合いが気に入っています。リューズ赤との相性もよくあっています。

本体付属のスポーツバンドは、残念ながら今の所出番がありません。



春先になったら、涼しげで良いかな、と思っています。

Apple Watch はバンドを付け替えることで、印象が大きく変化します。Apple Store では任意のバンドを試させてくれるので、気に入ったデザインや色合いのバンドがあれば、遊びに行くのも楽しいと思います。

2018/01/01

謹賀新年

新年明けましておめでとうございます。

旧年中は大変お世話になりました。本年もどうぞよろしくお願いいたします。