みずぴー日記

人間の再起動ボタンはハワイのビーチにある

⚠️AquaSKK with iCloud

☁️AquaSKKのiCloud対応 - みずぴー日記の内容を整理した上で、パッケージを作成した。 自分で試すためのが主な目的なので、他の人が利用することはあまり想定していない。

Release iCloud対応(1) · codefirst/aquaskk · GitHub

f:id:mzp:20151228204112p:plain

注意点

  • 今後、データの持ち方を変える可能性がある。 その際は、同期データがすべて消失する。
  • ローカルのユーザ辞書が破壊される可能性がある。実際、開発中に二度ほど破壊した。
  • その他、予期しない動作をするかもしれない。

何かあったらiCloud対応PRに書いてほしい。 対応できるかどうかは分からない。

リリースするまでに解決しなければいけない課題

ビルドに必要な証明書の管理

iCloudに接続するために、AquaSKKにひもづいた証明書が必要となった。 その証明書は、ローカルにしか存在していないので、以下のような問題が生じる。

  • AquaSKKのビルドを他の人ができない。 そのためチーム開発が困難になる。
  • TravisCI上でビルドを行なえない。

FlickSKKとの共有をどうするか

FlickSKKのビルドは@が自分のIDで行なっているので、AquaSKKiCloud領域にはアクセスできない。

辞書の形式はほぼ同一なので、なんとか共有できるようにした。個人アカウントの制約のようなものなので、起業したほうがいいかもしれない。

x86対応

iCloud対応のために用いているCloudKitがx86_64バイナリしかないため、x86に対応できない。

最近のOS Xx86では動かないようだし、対応をやめてもいいと思っている。

前回からの変更内容

レコードIDの変更

前回は見出し語は重複しないものとして、見出し語をレコードIDとして用いていた。

しかし、以下のように見出し語が重複している場合もありえるので、見出し語をレコードIDとして用いるのをやめた。

;; okuri-ari entries.
わるi /悪/
;; okuri-nasi entries.
わるi /悪/

同期用スレッドの統一

前回は、ローカルの辞書をiCloudに送信するスレッドと、iCloudから取得したデータをローカルの辞書にマージするスレッドを別々にしていた。

そのせいでコードが複雑化していたため、すべて1つのスレッドで行なうようにした。

コードの整理

今後メンテナンスすることを考えて、コードを整理した。

  • コピペですませていた部分を共通化した。
  • Objectvie-CとC++の部分を増やし、Objective-C++部分を減らした。