📝

入部手続きを自動化した(する)話

2024/04/03に公開

この記事は工学研究部新歓ブログリレー1日目の記事となります。
この記事は4/1に公開予定だったのですが、公開が遅れてしまい何故か2日目の記事が先に出ることになってしまいました...(ごめんなさい)

自己紹介

新入生の皆さん初めまして!工学研究部前部長のぼいど(Twitter:@void_tech3)です。
部長を引退して隠居するつもりだったのですが、色々と残した技術負債の解消に追われています

過去の工研の入部手続き

工研に入部したいと思った新入生は、部会に参加すると入部フォームのURLを教えてもらえます。
工研では入部手続きが提出された後、今までは管理者と会計担当者によって以下のように手動で手続きを行なっていました。

工研では入部すると以下のアカウントの発行と登録を行います。

  1. Koken Wiki
    部内で利用しているWikiシステムです。
  2. KagiMod for Koken
    部室の鍵システムです。登録されたICカードで開錠できます。
  3. Discord
    部員になると部員ロールが付与されます。

また、部内にはこれ以外に以下のような認証を必要とするシステムがあります。

  1. 部内サーバー
    自分のアプリをデプロイしたり、サーバーで遊んだりできます
  2. Wi-Fi
    学内ネットワークに接続された、部室のWi-Fiです。
  3. NAS
    これらのシステムは基本的に共通のアカウントが用意され、希望者にアカウント情報を通知する形式になっています。

手続きの問題点

基本的にこの手続き自体は特に問題はないのですが、入部する人ごとに管理者が手動でアカウント発行などをしないといけないので即時反映することができないなど問題がありました。

自動入部システム

エンジニアたるもの自動化したいですよね?
フォームだけ作っておけば、あとは自動で入部手続きが行われるようなシステムを作りたいな〜と一昨年あたりから構想していました。
そこで考えたのが、以下のような自動入部システムです。

一昨年から現在にかけて、自動入部システムを実現するために各種システムを開発しました。

Koken SSO

自動入部システムを実現するために最も大事な要素は、「統合認証システム」です。
これまでは、部内のシステムごとにアカウントが用意されていたので利用者ごとに管理者が手動でアカウントを発行する必要がありましたが、これを解決するために全てのシステムを1つの部内認証で利用できるようにしました。

LDAP Server

アカウントの認証情報管理には、OpenLDAPを用いたLDAPサーバーを利用しています。

部室にあるQNAPのNASにLDAPサーバーの機能があったので、このLDAPサーバーの機能を拡張して利用しました。アカウント情報は定期的にNASにバックアップされる安心設計です。
また、NASと連携しているのでLDAPのアカウントでSamba経由などでNASに入れるようになりました。

Koken LDAP Manager

Github: https://github.com/ueckoken/koken-ldap-manager

LDAPサーバーのユーザー情報を管理するのには、基本的にLDIF形式でデータの書き換えを行う必要があります。ただ、コマンドライン経由で操作しなければならず利便性が低いので、Webブラウザ上でユーザーを管理できるようなツールを開発しました。

Koken LDAP ManagerにはAPI連携機能がついているので、入部フォームとGASを連携させて、API経由でKoken LDAP Managerを操作することによって自動的にアカウントを発行できるようになりました。

Koken Card Manager

Github: https://github.com/ueckoken/card-manager

部室のICカードキーの登録を自分で行えるようなシステムを作りました。Koken SSOでログインすると、解錠に使うICカードを自分で登録・削除できるようにしました。

https://youtu.be/XETkiw4ANTw

部内WiFi

部内WiFiもKoken SSOを使ってログインできるようにしました。
Free RADIUSを用いたRADIUSサーバーを部内に構築しており、IEEE 802.1X認証を用いてUEC Wirelessと同じように統合認証のアカウントでログインできるようにしました。

Discroak

Github: https://github.com/ueckoken/discroak

こちらはLDAPに登録されたDiscrodのアカウント名をもとにして、部員ロールを自動で付与するBotです。前々部長のあずきバーさん(https://twitter.com/azukibar_D) が作ってくれました。

ただ、Discordの仕様変更によりDiscordのアカウント名が変わったため動かなくなり、現在は別の方法を検討中です...

会計システム

今の所開発段階なのですが、部費の納入情報などを管理できるシステムを開発しています。
最近工研でSquare(https://squareup.com/jp/ja) を導入したので、もしかするとここら辺と組み合わせればブラウザ上で部費の支払いまで完結できるようなシステムが作れないかな?と思ってるところです。

さいごに

ここで紹介したようなシステムは入部すると体験することができます。
他のサークルにない、自動化された入部手続きを体験したい方は是非入部お待ちしてます!
(システムの調整が間に合ってない、入部手続きが少し遅れるかもしれません...)

また、部内システムの開発者も絶賛募集中です!一緒に工研のシステムをツヨツヨにしていきましょう!

電気通信大学 工学研究部

Discussion