Canbus. のヒント #1 - 編集中にセッションタイムアウトした時は別タブでログインする



数年前から、社内の業務アプリを構築する際にノーコードの Web データベース Canbus. を使っています。

前回前々回の記事では、他の業務システムと統合する場合に活用できる Canbus. API に触れましたが、今回から何回かに分けて、プログラミングと関係なく Canbus. を利用する上での一般的な Tips をまとめようと思います。


はじめに - Canbus. の特徴

Tips の前に、Canbus. というサービスの特徴に触れておきたいと思います。

Canbus. は、Web データベースやいわゆる「ノーコード」と言われるカテゴリに属する SaaS です。サービスとしての知名度は同種の kintoneAppSuite よりもかなり劣ると思うのですが、製品コンセプトは近く、プログラミングの知識なしで・画面 UI からの操作のみで・現場のスタッフでも定型的な業務アプリを作れる、といった特徴は共通しています。

ではなぜ Canbus. を選んだかという話なのですが、一つの基準になったのが Canbus. のライセンス体系がユーザー課金ではなく、データ量課金になっているという点です。

多くの SaaS が、ユーザーあたりの月額・年額ライセンス体系を採用しています。少人数で使っているうちはいいのですが、導入がうまくいって全社的にいろいろな業務で利用が拡大し、その反面ユーザーの平均的な利用率が下がってくると、線形で増大していく金額のコスト感がばかにならなくなってきます。

Canbus. のライセンス体系では、ユーザー数に制限がありません。このため、社内で何人のユーザーにアカウントを発行しても、また部門共有アカウントや社外ゲストユーザー用のアカウントを作成しても、追加料金が発生しないのです。利用頻度の低いユーザーに 1 アカウント発行するのはもったいない、というような心配をする必要がありません。この点は大きなメリットです。

もちろん、では Canbus. は使い放題なのかというとそうではなく、ユーザー数に制限がない代わりに、データ量に応じて課金が発生するライセンス体系になっています。課金対象になる指標がいくつかありますが、中心になるのは作成したアプリに登録可能な総レコード数です。利用ユーザー数には制限がない代わりに、何人のユーザーが登録したとしても 10,000 レコードなら 10,000 レコード分、100,000 レコードなら 100,000 レコード分の料金がかかるということです。

(データ量に制約がないサービスのほうがよいのか、ユーザー数を気にせず自由に使えるサービスのほうがよいのか、この辺りは利用スタイル次第だといえます。Canbus. の各利用プランにデフォルトで付いてくる登録可能レコード数は必ずしも多くなく、追加オプションとしてレコード数を購入する場合の従量単価も決して低廉ではないので、少数のユーザーが多数のレコードを登録するような使い方であれば、おそらくはユーザー数課金のサービスの方に分があると思います)


セッションタイムアウト時に表示されるエラー

前置きが長くなりましたが、今回から数回に分けて、Canbus. アプリを運用してきた中でサポート問い合わせをして解決できたことや、細かな Tips として蓄積したことの一端を紹介していきたいと思います。

初回は、ログインセッションのタイムアウトに関するちょっとしたテクニックです。

Canbus. を使っていて、レコードを開こうとしたり、保存したタイミングで、不思議なエラーメッセージが表示されることがあります。例えば以下のような「予期しないエラーが発生しました: undefined」というものです。


また、既存のレコードを編集し、最後に保存しようとして保存ボタンを押した時に、以下のような「このレコードにアクセス権がありません」エラーが表示されることもあります。


メッセージが分かりにくく、突然表示されるのでとまどうのですが、これはどちらも Canbus. のログインセッションがタイムアウトした場合に表示されるエラーです。(もちろんそれ以外に、本当にサーバーエラーが起きた時や、他のユーザーの変更によってレコードに対するアクセス権を失った場合にも表示されるとは思います)


Canbus. のセッションタイムアウト仕様

Canbus. のログインセッションは、ログイン後 24 時間でタイムアウトします。

直前まで画面操作をしていたのだからセッションタイムアウトするはずがないと思いがちなのですが、Canbus. のセッションは「最後に Web 画面を操作してから」ではなく「ログインしてから」24 時間でタイムアウトする仕様になっているそうです。

例えば、とある日の 9:00 に出勤して Canbus. にログインしたとすると、ブラウザを開いたままにして Canbus. をずっと定期的に使っていたとしても、翌日 9:00 にはログインセッションのタイムアウトが発生することになります。

このため、毎日だいたい同じ時間帯にこの種のタイムアウトエラーに遭遇するという体験になりやすいのです。


編集中にセッションタイムアウトした時の救済方法

タイムアウトが発生した時は、画面をリロードすればログイン画面に戻り、そこでログインすれば元の画面を正常に表示できます。問題になるのは、しばらく時間をかけてレコードの作成画面や編集画面を操作した後、ちょうど保存ボタンをクリックするタイミングでセッションタイムアウトが起きてしまったケースです。そこで画面をリロードすると、当然ながら保存されていない編集内容は破棄されてしまうので、再入力の手間を考えると画面リロードをするのは避けたいところです。

このような時は、エラーの出たタブはそのままにして、ブラウザの別タブでログインし直すことで解決できます。

ブラウザの別タブを開き、Canbus. の URL にアクセスします。セッションはタイムアウトしているため、当然ログイン画面が表示されるので、通常の手順でログインします。ログイン後にそのタブは閉じてしまってもかまいません。

別タブでのログイン後に元のタブに戻って保存ボタンを押すと、今度は「予期しないエラー」や「このレコードにアクセス権がありません」エラーが出ることなく、編集内容を保存できるはずです。


まとめ

Canbus. のログインセッションは 24 時間でタイムアウトしますが、最後の画面操作から 24 時間ではなくログイン後 24 時間であるため、操作中に突然セッションタイムアウトを迎えることがあり、注意が必要です。

未保存の編集データがある状態でセッションタイムアウトエラーに遭遇した時には、ブラウザの別タブでログインし直すことで、編集内容を破棄してやり直さずとも、作業の続きを進めることができます。

最後の画面操作を基準にしたタイムアウト仕様になっていない理由は不明ですが、現在の動作でも、利用者側のちょっとした操作で回避ができるといえます。