Note
SecRandom は GNU GPLv3 で公開されています。ソースコードの変更と再配布は可能ですが、派生物も GNU GPLv3 で公開する必要があります。
SecRandom は、授業、チーム、イベント、意思決定などの場面で公平な抽選を行うためのアプリケーションです。
- 点呼: 通常のランダム抽選、履歴バランス抽選、重複制御に対応します。
- クイック抽選: 独立したフローティングウィンドウから、生徒をすばやく抽選します。
- 抽選会: 賞品ルーレットと在庫抽選に対応し、生徒と賞品を個別に管理します。
- 豊かな演出: アニメーション、結果、音声、音楽、通知を統一設定で管理し、通知失敗時のフォールバックに対応します。
- 履歴回数、抽選間隔、グループ、性別などに基づいて重みを動的に調整し、重複と分布の偏りを抑えます。
- 安定した内部識別子で履歴を管理します。学籍番号、ID、名前は表示情報のみです。
- 複数の生徒リストと賞品プール、および
.xlsx、.xls、.csvのインポート、マッピング、プレビューに対応します。 - すべての抽選ラウンドの履歴を保存し、確認しやすくします。
- 抽選ごとに証明記録ファイルを自動保存します。
- サーバーを抽選に参加させ、立ち会わせるかどうかを選択できます。
- 公式チャンネルを通じて抽選結果を再確認できます。
- 設定、リスト、履歴はすべてインポート、エクスポート、バックアップ、復元に対応します。
- バックアップにはリスト、履歴、抽選証明、画像、音声を含められますが、パスワードなどのセキュリティ情報は含まれません。
- パスワード、TOTP、USB メモリによる保護で重要な操作を守り、検証が必要な操作を設定できます。
| モード | できること | 証明できないこと |
|---|---|---|
| オフライン証明 | 完了した抽選プロセスを再確認する。事後の改変・削除・チェーンの作り直しは検出できる | 抽選前にローカルプログラム、乱数種、名簿が変更されていないことは証明できず、事前に何度も試して結果を選ぶことも排除できない |
| オンライン立会い | サーバーがロックした後の抽選フローを保護する | 名簿が真正かつ完全で、送信前に絞り込まれていないことを証明できない |
補足:
- 抽選ごとにローカルで再現可能な証明を即座に保存し、同じ証明をサーバーの再生署名へ送信します。ダイジェストは第三者タイムスタンプ局にも送られます(送るのはダイジェストのみで、名簿や抽選内容は送りません)
- ローカルの証明は追記型ハッシュチェーンとして保存されるため、削除や改変は欠落として残ります。サーバーは端末ごとに確認したチェーン先頭を記憶するので、ローカル証明を全て消して作り直すとチェーン位置の後退として報告されます
- 証明は使用した名簿の「レコード ID → 氏名・学籍番号・グループ」の対応ダイジェストを約束するため、抽選後に名簿を書き換えて当選レコードを別人に向ける行為は検出できます
- 抽選前の名簿の絞り込み(先に生徒を削除・無効化してから抽選する)は証明できません。ダイジェストは抽選時点の名簿しか対象にしないためです。これに対応するには「抽選前に第三者へ名簿を確認させる」流れが必要で、現在は実装していません
| バージョン | 技術スタック | 段階 |
|---|---|---|
| v1 | Python + PyQt5 + qfluentwidgets | 初代デスクトップ実装 |
| v2 | Python + PySide6 + qfluentwidgets | Qt スタックの進化 |
| v3 | C# + Avalonia + FluentAvalonia | 抽選、検証、デスクトップ連携を継続的に発展させる .NET デスクトップ再構築 |
- GitHub Releases でリリースパッケージと変更履歴を提供しています。
- 公式ダウンロードページ から最新版のダウンロード入口を利用できます。
- 自動更新では、配置前に署名付きリリースマニフェストと成果物の長さ・ハッシュを検証します。インストールの詳細は各リリースに含まれるパッケージと説明を参照してください。
- SecRandom は GNU GPLv3 で公開されています。
- 第三者コンポーネント、著作権情報、配布審査に関する注記は THIRD-PARTY-NOTICES.md を参照してください。
- 履歴に基づく重み付けと候補者フィルターは、同じ人の連続選出を減らし、長期的な分布を改善するためのものです。現実の名簿、ルール、運用手順を管理する代わりにはならず、それらをソフトウェアで検証できるとは主張しません。
コードの提供、問題報告、ドキュメント改善、フィードバックを寄せてくださるすべての貢献者に感謝します。アバターは GitHub の貢献者データから動的に生成され、クリックすると完全な統計を GitHub の貢献者ページ で確認できます。
Copyright © 2025-2026 SECTL