☁️AquaSKKのiCloud対応 - みずぴー日記の内容を整理した上で、パッケージを作成した。 自分で試すためのが主な目的なので、他の人が利用することはあまり想定していない。
Release iCloud対応(1) · codefirst/aquaskk · GitHub
注意点
- 今後、データの持ち方を変える可能性がある。 その際は、同期データがすべて消失する。
- ローカルのユーザ辞書が破壊される可能性がある。実際、開発中に二度ほど破壊した。
- その他、予期しない動作をするかもしれない。
何かあったらiCloud対応PRに書いてほしい。 対応できるかどうかは分からない。
リリースするまでに解決しなければいけない課題
ビルドに必要な証明書の管理
iCloudに接続するために、AquaSKKにひもづいた証明書が必要となった。 その証明書は、ローカルにしか存在していないので、以下のような問題が生じる。
- AquaSKKのビルドを他の人ができない。 そのためチーム開発が困難になる。
- TravisCI上でビルドを行なえない。
FlickSKKとの共有をどうするか
FlickSKKのビルドは@banjunが自分のIDで行なっているので、AquaSKKのiCloud領域にはアクセスできない。
辞書の形式はほぼ同一なので、なんとか共有できるようにした。個人アカウントの制約のようなものなので、起業したほうがいいかもしれない。
x86対応
iCloud対応のために用いているCloudKitがx86_64バイナリしかないため、x86に対応できない。
最近のOS Xもx86では動かないようだし、対応をやめてもいいと思っている。
前回からの変更内容
レコードIDの変更
前回は見出し語は重複しないものとして、見出し語をレコードIDとして用いていた。
しかし、以下のように見出し語が重複している場合もありえるので、見出し語をレコードIDとして用いるのをやめた。
;; okuri-ari entries. わるi /悪/ ;; okuri-nasi entries. わるi /悪/
同期用スレッドの統一
前回は、ローカルの辞書をiCloudに送信するスレッドと、iCloudから取得したデータをローカルの辞書にマージするスレッドを別々にしていた。
そのせいでコードが複雑化していたため、すべて1つのスレッドで行なうようにした。
コードの整理
今後メンテナンスすることを考えて、コードを整理した。
- コピペですませていた部分を共通化した。
- Objectvie-CとC++の部分を増やし、Objective-C++部分を減らした。
SKKのユーザ辞書、完全にぶっこわした感ある
— mzp (@mzp) 2015, 12月 26