「anything.」2.0を公開しました — iPhone・iPad・Web・Chrome拡張で同期します
SNSやWebで見つけた「気になる情報」をひとつの場所に集めておくアプリ anything. のバージョン2.0を公開しました。2.0でいちばん大きい変更は、これまでiPhone専用だったアプリが、iPhone・iPad・Web・Chrome拡張の4つで同じデータを扱えるサービスになったことです。アプリの紹介ページは こちら、Web版は anything.xapps.jp、Chrome拡張は Chrome ウェブストア から使えます。
iPhone専用のブックマークアプリが抱えていた矛盾
1.x のanything.は、共有シートからサッと保存できるiPhoneアプリとしては、自分でもよく使えていました。ただ、使い込むほどはっきり見えてきた弱点がありました。
気になるものを見つける場所と、それを保存できる場所が、ずれているという問題です。
調べものはパソコンでします。仕事中に見つけた資料も、買おうか迷っている商品のページも、あとで読みたい技術記事も、たいていはブラウザのタブとして目の前にあります。ところが保存先はiPhoneの中にしかない。結果として「自分宛にURLを送る」「タブを開きっぱなしにする」といった逃げ道を使うことになり、そのURLはanything.には入りませんでした。
逆方向も同じです。iPhoneの共有シートから保存したものは、パソコンで作業しているときには手元にありません。せっかく集めた情報が、見返したいタイミングで開けない。保存する場所と見返す場所が出会わないまま溜まっていくのが、いちばんもったいないと感じていました。
ブックマークは、端末をまたがないと意味が薄いものだった、というのが2.0を作るきっかけです。
2.0で入れたもの
アカウントと自動同期
設定タブの「サインインして同期」からサインインすると、保存アイテム・コレクション・タグ・リマインダーがサーバー経由で同期されます。サインインの方法は使う場所によって少し違います。
- iPhone・iPad — Appleでサインイン / Googleでサインイン
- Web版 — Appleでサインイン / Googleでサインイン / メールアドレスへのログインリンク送信
- Chrome拡張 — Google・Appleでのログイン、またはWeb版のログイン状態をそのまま引き継ぐ「Web版にログインして連携」
アカウントは初回サインインの時点で自動的に作られるので、別途の登録手続きはありません。iPhone・iPadでは、アプリの起動時・他アプリから戻ったとき・編集から5秒後などのタイミングで自動的に同期が走ります。
Web版とChrome拡張
Web版は、ブラウザだけで保存・整理・検索ができる入口です。iPhoneを持っていない方でも、Web版だけで使いはじめられます。
Chrome拡張「anything. クリッパー」は、いま開いているページを保存することだけに絞りました。ツールバーのボタンを押すと、タイトルを編集し、コレクションとタグを選んで保存できます。すでに保存済みかどうかもその場で判定します。冒頭に書いた「パソコンで見つけたものが保存できない」を、いちばん短い手数で埋めるための部品です。
なお、リマインダー通知・見返しピックアップ・ウィジェットはiPhone・iPadアプリだけの機能です。機能がいちばん多いのは引き続きiPhone・iPadアプリで、Web版とChrome拡張は同じデータをパソコンから扱うための入口、という位置づけにしています。
同期は無料プランでも使えます
ここは迷わず決めました。同期を有料の看板機能にはしませんでした。
端末をまたげないブックマークが不便だという話をしておきながら、その解決策だけ有料にするのは筋が通らないと考えたからです。無料プランでも、iPhone・iPad・Web・Chrome拡張の同期はそのまま使えます。
無料プランの範囲は保存件数と数で区切っています。
- 保存件数 — 200件まで
- コレクション — 3個まで(「あとで読む」を除く)
この上限はサーバー側でも判定していて、超えた分は同期されません。まずはこの範囲で、複数の端末で使う体験そのものを試していただけます。
技術的に変わったこと
高いところから見ると、やったことは「端末内に閉じていたデータに、サーバー側の正本を用意した」ことに尽きます。バックエンドはSupabase(PostgreSQL + 認証)、Web版はNext.jsで作りました。Supabaseを選んだ理由は 個人開発のバックエンドに Supabase を選んだ理由 に別途まとめています。
同期で悩んだのは競合の扱いです。凝った仕組みを入れる前に、まずはあとから編集した内容が残るという単純な規則に決めました。削除も同期対象なので、片方で消したものはもう片方でも消えます。
もうひとつ整理が必要だったのが、既存のiCloud機能との関係です。iPhone・iPad間のiCloud同期(Pro)は残していますが、サインインすると自動的に停止し、アカウント同期に切り替わります。二重に同期させないためです。iCloud Drive自動バックアップ(Pro)のほうは同期とは役割が違い、アプリの外に控えを残す機能なので、サインインの有無に関わらず使えます。こちらはiPhone・iPadアプリだけの機能です。
料金を見直しました
プラットフォームが増えたので、価格も組み直しました。
- 月額プラン — 380円/月
- 年額プラン — 3,000円/年(月あたり250円)
- 買い切り — 5,000円(一度きり・自動更新なし)
Proでは保存件数とコレクションが無制限になり、広告が消え、iCloud Drive自動バックアップが使えます。
大事にしたのは、どこで買っても全端末でProになるようにしたことです。購入はiPhone・iPadではApp Store経由、Web版ではStripe経由ですが、権利はアカウントに紐づきます。App Storeで買ったからWeb版では無料プランのまま、ということは起きません。買い直しが必要な作りにだけはしたくありませんでした。
これまで使ってくださっていた方へ
アップデートで壊れるものはありません。 サインインしなくても、これまで通りiPhone単体で使えます。保存済みのデータもそのままです。サインインが必要になるのは、複数の端末でデータを共有したいときと、Web版・Chrome拡張を使いたいときだけです。
データの持ち出しも用意しています。iPhone・iPadからはJSON・HTML・CSVで、Web版からはJSONでエクスポートでき、JSONは両方でインポートできます。アカウントを削除すると、サーバー上のブックマーク・コレクション・タグは完全に削除されます(端末に保存されたデータは残ります)。預けたものをいつでも引き上げられる状態にしておくのは、サーバーを持つ以上は最低限だと考えています。
使い方は オンラインマニュアル にまとめました。同期の細かい挙動やアカウントの切り替えについても、ここに書いています。
現在の状況
執筆時点で、アカウントを切り替えたときの挙動を整理した 2.0.1 をApp Storeに提出し、審査中です。別のアカウントでサインインしたときに、データを統合するのではなく、その端末の表示をきちんと入れ替える扱いに直しました。
まずは無料プランのまま、パソコンで見つけたものをChrome拡張から保存して、iPhoneで見返す、という往復を試してみてください。使ってみての気づきや改善点は、このブログでも書いていきます。