Closed15

[tabiori clone]終了するサービスを救う方法

中腰中腰

愛用していた「tabiori」が2022年12月15日でサービス終了になるため、やっつけbubbleで作ってみる。
https://twitter.com/tabiori/status/1564458076585197570

ログイン画面

新規アカウント画面

ホーム画面

新しいしおり画面(ホーム画面 > ポップアップ)

スケジュール画面(スケジュールなしタブ)

スケジュール画面(スケジュールありタブ)

スケジュール画面(しおり情報タブ)

Schedule.currenttab=1のとき表示。しおり情報を押すと1にする。

設定画面

プロフィール設定

メンバー追加の仕組み

1.しおりテーブル(Bookmark)に、メンバー(User List)と招待コード(Text)を追加。招待コードはしおりのCreate後に、unique_idをハッシュ値にしてUpdate
2.メンバー追加の承認画面と確定画面を追加。機能説明は後程。
3.メンバー追加ボタンで招待用URLを作成する。招待用URLは、認証画面?s=招待コードにする。
4.承認画面のページロード時に、ログインしていて、パラメータsがあれば、しおりテーブルから抽出して、確定画面にページ遷移する。そのときにしおりデータを渡す。
5.4でログインしていなければログインを促す画面にする。パラメータなしは知らん。
6.確定画面でカレントユーザーをしおりテーブルのメンバーにAddする。
7.しおりから離脱すると、しおりテーブルのメンバーからRemoveする。
8.しおりの表示は、「作成者のみ」でなく「カレントユーザーがメンバーにいれば」に変更する。

自分が閲覧可能なしおりを他メンバーが操作したログ表示

1.ログテーブル(Log)を作成。しおり、分類、登録日をフィールドを追加。登録日はyyyymmddの数値にすることで、同じ日に複数修正しても1つ登録にする条件用。
2.スケジュール登録、更新時にログテーブルを登録する。ただし同じデータは同日登録しない。(修正がたくさんあってもログには1つにすることで見やすくするため)

3.表示はメンバーに入っているしおりでログを自分で作っていないものを表示させる


表示内容も分類=1であれば、「新規メンバーがいます」分類=2であれば「〇〇さんがスケジュールを更新しました」にする。


地図検索

1.LeafyMapsとOpenStreetのプラグインを使用する。
2.OpenStreetMap公式にユーザー登録してAPIを取得する。
LeafyMapsはここ

OpenStreetは誰かのが入っていて使えるけど、怖いので上書きする。ここ

ポップアップの地図検索は1画面にしておき、ポップアップ呼び出し時に、どの画面から呼び出したかの値をCustomStateでもっておく。
地図検索後に、行選択したときに、どこの画面に返すかの変数に利用する。

中腰中腰

動作確認

https://tabioriclone.bubbleapps.io/

bubbleの14日間無料を使ってみた。
停止予定日 2022/11/30

中腰中腰

作ってみると、いろんな機能がある。間に合うか不安しかないが、戒めのために公開設定した。

中腰中腰

12月に入ったので戻す。OpenStreetMapは検索結果に不満があるのでどうしようかな。

中腰中腰

ログイン認証を自分専用に変更。
自分のメールアドレス以外は失敗にして、他画面もログイン済みでないと開けないようにする。

中腰中腰

課題

  • レスポンシブ対応
  • スケジュールの余白
  • 入力、表示領域の拡張
  • アイコンのスクロールバー
  • iphoneとandroidで表示領域が違う
  • 地図の利用
  • メンバー追加時の 「QRコード」 「LINE招待」「SMS招待」
中腰中腰

レスポンシブ対応は、Groupを大量に作り、LayoutをRowやColumnにすることで解決できそう。

入力、表示領域の拡張は、FloatingGroupでY軸を固定したヘッダー、フッターを作成する。メインのLayoutをColumnにし、ヘッダーの高さ分をMarginでずらすことで領域がスムーズにスクロール可動する。

アイコンのスクロールバーは、ブラウザ表示とスマホ表示で違うので「iphoneとandroidで表示領域が違う」と同じ課題でよさげ。

中腰中腰

地図機能はGoogle Geocode APIと連動すればできそうだけど料金設定があるので、オープンソースのOpen Streetを使うと同様のことが実現できそうなことが分かった。


中腰中腰

QRコードはプラグインの「Colour QR Code Generator」を使って実現できた。

レイアウトのColour QR Codeはオブジェクトだけなので、利用するときは、そのエレメントから出力される画像を利用する。

URLに招待コードを付与するので、ページロード時に読み取って渡す。

中腰中腰

地図検索は公開Pluginを組み合わせるとできた。「Leafy Maps」が地図。「Open Street」が検索。

左:公式OpenStreetMap+マーカー、右:Leafy Maps+Add Marker処理

Googleは制約がある

OpenStreetMapは制限なし。ただし、Wikipedia的なものなので情報欠損がある。

中腰中腰

スケジュールの余白がようやく解決。

RepeatingGroup内にRepeatingGroupを入れ子にして、日付ごとに表示しようとしたが、GroupBy日付の1セル行が固定なので、その中でスクロールするため、やりたいことと違っていた。
<失敗例>

自分の行と前の行の日付が違っていたら表示。1セルの表示範囲オーバーしたらそのまま出すようにすることで、スクロールは全体にかかり、やりたいことが実現できた。
<成功例>

中腰中腰

iphoneとandroidで表示領域が違う問題は、Widthを375にするとよいとあったので、それで問題なさそう。
Popupは100%にしないとスマホでうまく表示されない。パソコン上だとおかしく見えるが・・。

中腰中腰

地図のOpenStreetMap改善の件。やっぱしnominatimの結果がほしい。
でもnominatim.openstreetmap.orgではAPI使えない。
自分のサーバーを立てて、nominatimを入れるとAPIでリクエストが取れることが分かった。

<dockerでnominatimを動かす方法>
https://github.com/mediagis/nominatim-docker/tree/master/4.2

githubサイトでは、データはモナコになっていたので、日本に変更してみた。

docker run -it \
  -e PBF_URL=https://download.geofabrik.de/asia/japan-latest.osm.pbf \
  -e REPLICATION_URL=https://download.geofabrik.de/asia/japan-updates/ \
  -p 8080:8080 \
  --name nominatim \
  mediagis/nominatim:4.2

→失敗する

中腰中腰

1週回って、google mapに戻った。やっぱりOpenStreetMapの情報では信頼性が低いし、検索ヒットもしないことが多い。

このスクラップは2ヶ月前にクローズされました