Skip to main content

shiron

shiron 公式 HP

shiron とは

shiron は「つくる、つながる」がキャッチコピーのプラットフォーム横断型マネジメントシステムです。
discord や slack などのコミュニケーションツールと Solufit の各種システム、そしてそれらを利用するユーザーをつなぎます。

このページについて

このページは shiron project ポータルに関するポータルページです。
詳細な技術要件やスキーマ、仕様はそれぞれのページで確認してください。

詳細ページ

v5 移行に関する計画

リリース計画

  • α 版 Ite5 10/2
    • 導入:Solufit
  • β 版 Ite6 10/18
    • 導入:全広場サーバー、さざんか管理サーバー
  • stable 版 Ite7 11/01
    • 一般公開

主な変更点

shiron v5 は shiron だけではなく solufit 全体での大きな変更を行う箇所があります。 以下の箇所に関連する開発を行う場合は特に注意してください。

  • Starry メール配信基盤

  • 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 とはそれらを束ねる存在である
    • 原則、Agent が存在するプラットフォームのみが Node として追加される
    • Node として追加された場合、できることが多くなり、特にメンバー管理やセキュリティ機能の恩恵を受けることができる
  • 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
  • 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 の管理機能
      • メンバーの管理機能など
  • 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"
}