前々回書いた 新たに自分専用Web記事保存アプリの開発を始めたの続きです。Safariのアクション・ボタンから起動し表示中のWebページをPDFに変換し保存するアプリです。
最低限必要と思われる機能が出来たので GitHub に公開しました。 このWeb記事保存アプリ(WebArchive)は MIT License ですので興味がある方はご自由にお使い下さい。
Firebase
前々回書いたように、このアプリを作った理由の一つは Firebase を使ってみたかったからです。実際に使って感じた事を書きます。
ドキュメントは書かれているが…
前々回書いたように、ガイドがあり初心者に優しいですが、足りない部分がままあります。また API Reference が調べにくく、直ぐにつまずきました。またページが表示速度が遅いのも調べにくい原因になっていると思いました。
ただし、Firebaseは頻繁に使われているのでネット上にたくさんの情報があり何とかなりました。
API Referenceですが、woody/firebase-docset に Dash.app 用のドキュメントの作り方がかかれているので、Dash.appを使っている人はDash.appに Firebase API Referenceを追加すると良いかもしれませんね。
型推論の弊害?
タイトルは釣りです ^^); Swiftは型推論があるので、あまり型を書かずにプログラムが書けます便利です ガイド に書かれているサンプルコードもほとんど型が書かれていません。
しかし、実際にプログラムを書くと型が必用になると事があります。しかしガイドには書かれてない、しかもAPI Referenceは調べにくく、型を探すのに困りました。サンプルコードを書くときは型を省略しない方が良いのかなと思いました(自戒を込めて)。
インデックス
保存した記事をカテゴリーで選択出来るようにし、登録日で降順でソート出来するコードを追加したのですが動作しませんでした。悩みましたが Xcodeのdebug consoleを見るのと The query requires an index. You can create it here: https://console.firebase.google.com/project/webarchives/database/firestore/indexes?create_index=EghhcnRpY2.....WVfXxAD
のようにインデックスを追加しろと表示されていました、URLの場所をアクセスするとインデックス作成画面が表示され、作成したことろ無事に動作しました。
しかし登録日ソートを昇順にするとまた同じエラーが! なんとソートカラム+昇順 / ソートカラム+降順でインデックスを作らないといけないようです。
今まで、PostgreSQL,MySQLのようなRDBでばかりで開発してきた人間には想像出来ないインデックスの不便さに驚きました。
管理コンソール
現在 WebArchivesアプリ には記事を削除したり編集したりする機能はありませんが、あまり不便を感じていません。それはFirebaseのコンソール画面で Cloud Firestore や Cloud Storage の編集・削除が出来るからです。このアプリ用に最適化されたコンソール画面ではありませんがデータを探し変更・削除が出来るので、当面WebArchivesアプリには記事を削除したり編集する機能は不要です。これもFirebaseを使った大きなメリットですね。