0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

学習補助Webアプリ「Base」②:制約から考えたユーザ名生成【高校生の開発メモ003】

0
Last updated at Posted at 2026-07-02

紹介する作品は実際に公開しています。覗いて頂けると嬉しいです│'ω')☆


「Base」紹介HP → https://ss719917.stars.ne.jp/HP/index.html
「Base」試用版 → https://ss719917.stars.ne.jp/

探究活動で開発したWebアプリ「Base」を題材に,設計や開発時の工夫を全5回で紹介します。

制約からの着想

セキュリティといえば,サーバを用いたログイン処理などが一般的であると思います。

しかし,試用版においてはJavaScript上に処理を記載するしかなく,リストごと確認できてしまうため意味を成しません。

そこで, 「データを守る」 から 「データの意味を読み取らせない」 ことに視点を変えてユーザ名生成機能を開発しました。

ユーザ名を用いたセキュリティ

ユーザ名に個人情報を埋め込み,サーバには増えていくデータだけを保存する仕組みになっています。
印刷用.png
独自に32進数的な扱いを行い,2進数に変換することで必要な情報を取り出します。

間違った学年やクラスで入った場合
→ 教科名がズレてしまう為,成績データを正しく評価できない。

この仕組みによって,管理者である私すらも内部の情報に意味を持たせられません。

ユーザ名の生成規則

共通

⑤ユーザの個人番号
通し番号になっていて,一意にユーザを指します。
2進数に変換したときに14桁になるよう,最大値は16384に設定しました。下で紹介している暗号化用コードを足し合わせるため,実際の最大人数は31の2乗を引いた15423名です。

⑥暗号化用コード

js
let a=new Date().getMilliseconds()%32;
  UKey=Change10to2(5,a);

function Change10to2(a,b){
  let c=[];
  for(let d=0; d<a; d++){
      c.unshift(b%2);
      b=Math.trunc(b/2);
  }
  return c;
}

登録時のミリ秒を32で割った余りをコードとして利用しています。
2乗したものを個人番号に足すことで,複数のアカウントを登録したときの連続性を見えにくい,利用開始初期に0が連続しにくい,といった効果を得る為に追加しました。

生徒アカウント

所属の他に学年,クラス,授業選択のデータが含まれます。

④授業選択

  1. 時間割のデータをもとに,選択授業を集めた配列を生成
  2. フラット化して1次配列に
  3. それに対応したbit列をユーザ名に埋め込む

これらの情報を単語帳の成績データや,成績管理の点数と教科の紐づけに活用しています。
データ設計については次回の投稿で解説していますので,是非ご覧ください。

教員アカウント

教科と教科内部での通し番号を含めて個人を特定しています。

最後に

JavaScriptにこだわってセキュリティを考えた結果, 「ユーザ名に全個人情報を持たせる」 というアイデアが生まれました。これは,記憶力への依存度が高いなどの課題がありつつも,アプリ自体の安全性が非常に高い仕組みです。

以上が「Base」独自のセキュリティシステムに関する紹介になります。

次回は学校向けのシステムとしての,時間割データの管理方法について紹介します。

「Base」紹介HP(再掲) → https://ss719917.stars.ne.jp/HP/index.html
「Base」試用版(再掲) → https://ss719917.stars.ne.jp/


前回 → ①:設計と開発のきっかけ

今回 → ②:制約から考えたユーザ名生成

次回 → ③:時間割を管理するデータ設計
投稿次第,掲載します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?