shiron
shiron とは
shiron は「つくる、つながる」がキャッチコピーのプラットフォーム横断型マネジメントシステムです。
discord や slack などのコミュニケーションツールと Solufit の各種システム、そしてそれらを利用するユーザーをつなぎます。
このページについて
このページは shiron project ポータルに関するポータルページです。
詳細な技術要件やスキーマ、仕様はそれぞれのページで確認してください。
詳細ページ
v5 移行に関する計画
リリース計画
- α 版 Ite5 10/2
- 導入:Solufit
- β 版 Ite6 10/18
- 導入:全広場サーバー、さざんか管理サーバー
- stable 版 Ite7 11/01
- 一般公開
主な変更点
shiron v5 は shiron だけではなく solufit 全体での大きな変更を行う箇所があります。 以下の箇所に関連する開発を行う場合は特に注意してください。
-
Starry メール配信基盤
- 変更点: noreply@shiron-system.netに関するメールの送信は shiron-accounts、notice@shiron-system.netに関するメールの送信は shiron-delivary が行います。
-
Starry 認証基盤
- shiron に関する認証認可は shiron-accounts が担います。
- 一方で、Si アカウントとはアカウント管理を共通化します。(Di 認証も同様
-
shiron-bot について
- 3 年以上運用してきた shiron-bot は v5.0.0-alpha.1 を持って、bot で完結するシステムから shiron のシステムを介した運用に切り替わります。(一部機能は v5.0.1 まで移行を保留)
開発言語について
システムの開発には主に Python または Go を使用します。
また、データベースには mariaDB を使用します。
データベースは sql ファイルを中心としたスキーマ管理、マイグレーション管理を行います。(Go)
Python に関しては alembic を用いた python ファイルでのスキーマ管理を継続します。
構造及び用語について
ユーザー周り
- ユーザーアカウント
- shiron-system を利用する人の情報
- 1人が複数のユーザーアカウントを持つことは利用規約で禁止されている
- 複 数のプロファイルを使用することが強く推奨されている
- プライマリプロファイル(primary profile)
- そのユーザーがログインするのに使うメールアドレスやログイン時に表示されている名前やアイコンです
- アイコンはそのユーザーのプロファイルおよび直接入力から、メールアドレスはそのユーザーの認証済みプロファイルのメールアドレスを選択することが可能
- そのユーザーがログインするのに使うメールアドレスやログイン時に表示されている名前やアイコンです
- プロファイル(profile)
- 1つのアカウントのようなもの
- それぞれのプロファイル毎にメールアドレスや名前、プロフィール文を設定することができる
- Hub によってはメールアドレスで制限をかけている場合がある(独自ドメインを持っている組織など)
- Hub には参加する際に指定したプロファイルの情報が公開される
- 認証済みプロファイル
- メールアドレスが認証されているプロファイル
- プロファイルにはメールアドレスが自由に設定できるため、認証メールで確認ができるまでは Hub への参加やプライマリプロフィールへの設定は制限される
- メールアドレスが認証されているプロファイル
- プラットフォーム
- shiron 以外のサービスのこと
- shiron 内の文脈では Discord や Slack、LINE などの SNS を指すことがおおい
- 連携アカウント
- 他のプラットフォームのアカウントのこと
- それぞれのプラットフォームの管理を行う shiron Agent が shiron-system 内の Hub への所属状況や Hub 内で付与されているロールなどの情報を取得するときに使用する
- 連携アカウントはプロファイルではなく ユーザーに紐づくためプロファイル毎に設定する必要はない
- アカウントホーム
- Web 上のアカウント画面のこと(/me)
Hub 周り
- Hub
- コミュニティ、組織、プロジェクトであり用途は多岐にわたる
- shiron では管理の基本単位である
- Solufit では人と人をつなげるコミュニティ、組織としての Hub とシステム同士をつなげる Hub を同一のシステムで実装している
- Personal Hub
- ユーザー作成時に作成される Hub である
- コミュニティや組織としての働きをすることが主であるイメージがある Hub とは区別し、特に個人が利用することが想定されている Hub である
- Node
- Hub に紐づけられた他のプラットフォーム上の管理単位である
- Discord であればサーバー、Slack であればワークスペース
- すなわち、Hub とはそれらを束ねる存在である
- Discord であればサーバー、Slack であればワークスペース
- 原則、Agent が存在するプラットフォームのみが Node として追加される
- Node として追加された場合、できることが多くなり、特にメンバー管理やセキュリティ機能の恩恵を受けることができる
- Hub に紐づけられた他のプラットフォーム上の管理単位である
- Agent
- 各プラットフォームが公開している API や SDK を用いて開発されている、そのプラットフォームに特化したシステムである
- プラットフォーム内のイベント(参加、脱退、コマンド実行など)と shiron のコアシステムをつなぐ役割を 果たす
- Channel
- Hub に紐づけられているチャットなどである
- webhock に対応している場合、Agent がないプラットフォームとも連携することができる
- しかし、メンバー管理機能などの恩恵を受け継ことはできず、shiron-flow などのシステムと連携するにとどまる
- Role (ロール)
- ユーザーをグルーピングするための機能
- ロールに権限を付与することによってそのロールを持つすべてのユーザーがその権限を使った操作をすることができる
- 基本的な考え方などは Discord と共通
- ダッシュボード
- web 上の管理画面のこと
shiron のサービスについて
技術構成
core
CI / CD 対応
PR 時に Test と Lint を実行
dev マージ時に develop 環境へデプロイ
main マージ時に prod 環境へデプロイ
※DB マイグレートは対象外
python
fastapi
alembic
pytest
ruff
mypy
mariadb
redis
cloud-asteroid.solufit.net
agent-discord
CI / CD 対 応
dev マージ時に develop 環境へデプロイ
main マージ時に prod 環境へデプロイ
python
discordpy
cloud-asteroid.solufit.net
canopus
python
fastapi
cloud-asteroid.solufit.net
notice, audit, flow
CD 対応
main マージ時に prod 環境へデプロイ
cloudflare workers
hono
cloudflare D1
cloudflare
システムの詳細
- web-dashboard. shiron-web
- UI を備えた shiron の管理サービス
- Github Repo
- 展開先
- UI を備えた shiron の管理サービス
- web-help
- 全ユーザー向けサポートサイト
- core
- shiron の機能のうち、shiron ID の管理と Hub および Hub 内の機能を管理する API
- テストケースは 150 件以上、コミットは 350 を超えている
- 開発ペースが速い
- 展開先
- core-users
- ユーザー管理、プロファイル管理機能
- core-security
- システム全体のセキュリティ機能および RBAC(ロールベースアクセスコントロール) の制御機能
- core-link
- ユーザーとほかのプラットフォームのアカウントを連携する「連携アカウント機能」の制御機能
- core-node
- 各プラットフォームの Node との通信の制御機能
- core-hub
- shiron Hub に管理する機能
- Hub の管理機能
- メンバーの管理機能など
- shiron Hub に管理する機能
- flow
- 横断連携システム「shiron flow」
- 何らかのシステムでのイベントをトリガーとして shiron ないで特定の動作を行ったり Hub チャンネルに通知したりするなどをノーコードで実現できる機能
- notice
- 通知ボックス「shiron notice」
- shiron からユーザーへの通知などを格納するシステム
- ユーザーが任意のプラットフォームで情報を受け取ることができるようにシステムが独立している
- audit
- 横断監査ログ「shiron audit」
- どのプラットフォーム上からも即座に監査ログが送信され、ダッシュボード上で確認することができる
- agent-discord
- discord bot 「shiron」
- discord サーバーと shiron 間の橋渡しを行う
Canopus スキーマについて
canopus はテキストに対する脅威判定システムです。
canopus は解析したいテキストと構成ファイルを渡すことで、構成ファイルで指定した内容について評価が行われます。
Python での構成ファイルの例
{
"service": "string",
"rules": [
{
"target": "url",
"native": False,
"exclusion": [],
"accepted": [],
"denied": ["discord.gg", "tiktok.com"],
"is_enable": True
},
{
"target": "word",
"native": False,
"exclusion": [],
"accepted": [],
"denied": ["@everyone", "@member"],
"is_enable": True
}
],
"is_level": "string"
}