# 【Boushitsu Advent Calendar 2020】某室の入退室管理システムができるまで(ポエム):clap: 某室にも留学生が来たので英語で書きました:stuck_out_tongue_winking_eye: :warning: アドベントカレンダー埋まってないな~と思って急遽書いたので誤字脱字はご容赦ください.あくまで埋めるための何の面白みもない文ですが,なにとぞZOZOTOWN. This article is a part of [Boushitsu Advent Calendar 2020](https://adventar.org/calendars/5804). Feel like! :::info This is a story of a man and his friends who tried regain thier heaven, *boushitsu*... ::: ## :dagger_knife: Introduction Because of the risk of COVID-19, the administaration office of Shizuoka University decided to shift almost all classes to online. This decision affected all departments, so a lot of freshman couldn't take enough communication to become friends. ## :watermelon: July July came and the virus still threatened people all over the world. *Boushitsu* weren't exception. The member had no choice but to limit their activities. In fact, *boushitsu* was closed for about half a year(April - October). I belong to *boushitsu*. I was frustrated and wished to open *boushitsu* again. To realize my desire, I began to gain collaborators who are likely to work with me. Two member first joined the mission with a lot of pleasure. I told them what I wanted to create. The first concept of the system was like below. - Access management system on Raspberry Pi - take logs about who visited *boushitsu* - touch ID card to log - sound - upload document following Excel format. We spent early part of summer vacation searching web. After a few weeks of research, we made a plan. > main language: Python > record: csv (later, replaced with a DBMS(MariaDB)) ## :Octopus: August ~ September *Because I was not so good at communication and was lazy, I made all commits after Aug 30 on my own.* I started implementation of the system. According to `git log`, first commit was Aug 19 and the commit of first OK version was Sep 1. ## :full_moon: October I started developping voice reaction. I thought that it was a climax of the system and what voice I chose should have determined its characteristics and if it would be accepted by the member or not. I chose some words carefully, and finally I made it. Meanwhile, a meeting was hold online. Some of us and professors who assigned to manage *boushitsu* participated in. We discussed how operate *boushitsu* smoothly. All of perticipant discussed on how to wipe away bad image`*` and win the confidence. ~~After the meeting, we decided rule to open *boushitsu* again safely which includes taking access log with the system.~~ `*` "Some *boushitsu* member seems to stay at the room all night.", "I saw some students talked in the room without cotton mask." etc... ## :fallen_leaf: November Efforts of *boushitsu* member paid off. The evaluation of *boushitsu* among school affairs has improved, and we regain our heaven officially. Now *boushitsu* is open 2 days per a week waiting for students need technical support. Thank you everyone. ## :santa: December One day, A professor in charge of *boushitsu* ordered me to provide his laboratory with the system. I think there is still room for improvement. The system is not good enough to satisfies requirement for general use. When the code I wrote is forked by students of this university and develop fantastic function, I will be satisfied. ## :dart: Next Goal I wrote next goal in order to improve the system and make chance to people join the development. Feel free to ask or contact me and other *boushitsu* member! ### :scissors: Code Splitting Whole source code of stable version consists of Python, and in on the way of modularization. I want to separate each parts into more small one logically and deligate the part of communication with DBMS to backend-server(newly written) written in JavaScript. Why I have to use python was there was rich library of the driver for *NFC card reader*. Because of this, once the controller move to server side, series of core code written in Python will be more conpact and have **less side effect** I think. ### :face_with_monocle: User Interface The stable version has no friendly UI to access the log in database. You have to type command and to be familiar to some SQL statements. To remove this barrior, I'm planning to implement something supplies UI through web browser. I plan to develop backend-server(above), and then start on this immediately. ### :card_file_box: Data Rotation The stable version stores each record into one table and never do data rotation. This may cause declining its performance. I heard one of ideas is `Rotation`, but I didn't figure out what it is. ### :female-astronaut: Speak with Yukkuri Voice I have used series of audio file distributed at [**here**(Kei Kurei CV: Sumire Uesaka)](https://kei.pronama.jp/). I also borrowed another audio files as sound effect from other web site. I have to publish the source code **with** these audio file, or users cannot make it work as expected. Considering license, it is not a smart way. Yukkuri Voice(AquesTalk) is speech synthesis software. This software enables the system to generate an audio binary to play as needed. With this method, we no longer need no longer need prepared audio file. --- Thank you for reading. :wave: **GitHub** ![profile](https://avatars2.githubusercontent.com/u/61489178?s=460&v=4 =30x30) [h-takeyeah](https://github.com/h-takeyeah)