プライバシーポリシー (apps.aisaba.net / Aisaba アカウント)
apps.aisaba.net と、その配下で動かしているアプリ群、そこにログインするための Aisaba アカウント で何を取得して何を保存しているかを実装ベースで書き出す。テーブル定義とログ出力を見たままに整理した。規約の体裁よりも、何が起きているかを正確に伝えることを優先している。
最終更新: 2026.05.12
1. 対象範囲
https://apps.aisaba.net/(アプリランチャ)https://user.aisaba.net/(アカウントページ・サインアップ / ログイン)apps.aisaba.net配下で公開している各アプリcalender(ログインなしの共有カレンダー)file_size_sense(絶対ファイルサイズ感)permissions(権限管理。アカウント必須)
- ファイルアップロード基盤 (
uploader)
ポートフォリオ本体 (www.aisaba.net) は別扱い。アクセス解析の有無が異なるため、末尾の節で補足する。
2. Aisaba アカウント
入力する項目はこの3つだけ。
- ユーザーID (英数字 +
_.) - 表示名 (30文字以内、
< > " ' &を除く) - パスワード (英数字 8文字以上)
メールアドレス・電話番号・本名・年齢・住所は 一切取得していない。連絡が必要なときは末尾の窓口を使う。
サーバに保存しているもの
users テーブル
- 内部UID
- ユーザーID
- 表示名
- パスワードの ハッシュ値 (PBKDF2-HMAC-SHA256、200,000回反復、ユーザーごとにランダムソルト)
- 作成日時、有効フラグ
パスワードの平文は保存していない。
sessions テーブル (ログイン中の端末分)
- セッションID
- 紐づく内部UID
- セッショントークンの SHA-256 ハッシュ (平文は保存しない)
- 有効期限 (既定 7日)
- 失効時刻
- ログイン時の User-Agent
セッショントークンの平文はサーバではなく、ブラウザの Cookie (_nxt) にだけある。ログアウトすると即座に sessions 側で失効される。
3. ランチャの個別データ
ログインするとアカウントごとに次の SQLite を持つ。
install_apps: 並べたアプリのapp_id一覧shortcut_apps: 追加したショートカット (名前 / URL / アイコン)profiles: アイコン画像参照 / 背景画像参照 / 内部識別子
アイコンや背景の実体は次のアップロード基盤に保存する。
4. アップロードファイル
アイコン・背景・各アプリ用にアップロードしたファイル。
parallel_storage テーブル
- 内部用ID / 公開用ID
- 種別 / サイズ / 紐づくアカウントの内部識別子
- ファイル名 / 拡張子 / ステータス
- 作成日時 / 最終アクセス日時
実体ファイルはサーバ内 USER_CONTENTS ディレクトリ。5MB チャンクで受け取り、SHA-256 で完全性を検証する。
5. アクセスログ
リクエストごとに次を記録している。
- IP アドレス (
X-Forwarded-For先頭、なければREMOTE_ADDR) - HTTP メソッド / パス / ステータス / 応答時間 (ms)
- User-Agent
出力先はサーバ内 data/log/<service>/{info,warning,error,access,auth}.log。
保存期間は障害調査ができる範囲で恣意的にローテーションしている (数か月程度)。
6. 各アプリで個別に持つデータ
calender (ログインなしの共有カレンダー)
アカウント不要で使える。
rooms: ルームID / ルーム名 / 公開ICSフィード用トークン / 作成日events: イベントID / ルームID / 日付 / 開始・終了時刻 / タイトル / 詳細 / 投稿者ニックネーム / 繰り返し設定 / 作成日
ルーム名・ニックネームは任意入力。本名を入れるかは利用者の判断に委ねる。
公開ICSフィードはトークン (feed_token) を知る者だけが読み出せる。
Discord 連携 API を 利用した場合のみ、Discord 側のサーバID・チャンネルID・メンバーIDがリクエストとしてやり取りされる。使わなければ Discord 側に何も流れない。
file_size_sense (絶対ファイルサイズ感)
クイズデータの読み取りだけ。利用者からデータを取得・保存していない。
permissions
アカウント必須。アカウントと権限グループの紐付け (permission_groups / permission_group_members テーブル) を保存する。
7. Cookie
_nxt: セッショントークン本体。これが無いとログイン状態を保てない。
アクセス解析用 Cookie や広告 Cookie は使っていない。 ブラウザ側で Cookie を消せば、再ログインが必要になる。
8. 第三者への送信
- Cloudflare (DNS / CDN / WAF): 通信経路として経由する。IP・User-Agent・リクエストヘッダ等は Cloudflare のインフラを通る。Cloudflare のプライバシーポリシー に従う
- Discord:
calenderの Discord 連携 API を 利用した場合のみ やり取りが発生する - 外部解析サービス (Google Analytics、Facebook Pixel など) は
apps.aisaba.net配下では使っていない
9. 保存場所
すべて自分が管理する単一のオンプレ Ubuntu サーバ上の SQLite + ローカルファイルシステムに保存している。 外部の SaaS にユーザーデータを送信していない。
10. ユーザーの権利
以下は連絡先まで請求があれば対応する。
- アカウント削除 (関連レコードの一括削除)
- 保存データの開示
- 訂正
- 全セッション失効
将来的にはアカウントページから自分で行えるようにする予定。
11. 未成年の利用
18歳未満の利用者は、保護者の同意のもとで使用してください。
12. 改定
実装変更があれば本ページを更新する。Blogs として残しているので、過去版も追える。
13. 補足: 関連サイトでの解析利用
本ページの対象外だが、関連サイトの状況。
www.aisaba.net(ポートフォリオ本体): Google Analytics 4 (G-YHVGSJZTKS) を利用しているnexom.aisaba.net(Nexom ドキュメント): 同上
これらでは GA4 経由でアクセス情報 (Cookie / IP / 行動データ) が Google に送られる。apps.aisaba.net 範囲では同タグを入れていない。