こんにちは、bo40 です。
私は寮祭前からいろいろと寮祭の準備をしてきたので、現在疲弊気味ですがめっちゃ楽しんでます。
この記事は、Kumano dorm. Advent Calendar 2020の4日目の記事です
記事を書く前から「資料システムや熊野寮祭のwebページ、熊野寮祭Androidアプリの話など」と題名を決めてしまったので、その話をします。
熊野寮祭2020の特設ページはこちらです
熊野寮祭の特設ページは2016年から用意されるようになり、今年で5年目になります。
熊野寮祭の企画をCSV形式のデータとして管理していて、そのデータから自動でWebサイトが生成するプログラムを毎年書いています。
データもプログラムも公開されていて、リンクは以下
データから自動で特設サイトを生成するプログラムは、先代の資料システムの開発者が作ってくれたライブラリをそのまま使っているので、コード自体はとても単純です。レイアウトなどを決めるファイルがたくさんあって、それらを組み合わせて自動生成している感じです。
寮祭特設サイトを作るうえで、一番大変なのはCSV形式のデータを用意するところです。このデータを手入力で用意しているときは虚無を感じます。(企画の開始・終了時間のデータを紙パンフのタイムテーブルのページとにらめっこして入力してます…)
誰か来年からやってくれないかな?
熊野寮祭2020のAndroidアプリはこちら
熊野寮祭Androidアプリは2017年から作っていて、今年で4年目です。
毎年、1回ぐらいはAndroidアプリを書こうという気分になって、新しい言語であったり、新しい技術を使って書いてみています。
今年のアプリは実は去年のアプリを改良したもので、手抜き感が否めないのですが、思ったより良い出来ではないかと思っています。なにか改善点があれば教えてもらえるとありがたいです。
どんな技術をつかっているか
開発において大変だった所
※ このアプリはソースコードを公開していません。
熊野寮生のみなさんは全員(?)利用しているはずのシステムです。
熊野寮の会議運営をサポートし、過去の寮内の議論などの文書データを保管・活用するシステムです。
実は、このシステムのソースコードはこちらで公開されています。
もともと、文責者の入寮時(5年前)から資料システムと呼ばれるシステムはありました。しかし先代の資料システムは、よくわからないバグがあったり、メンテナンス性が悪いとのことで、新しい資料システムを開発しようという機運がありました。
そこで、先代の資料システムの開発者と文責者が協力し、2年以上かけて現行の資料システムを開発しました。
どんな技術を使っているか
開発において大変だった所
●第1世代 資料システム(2011~2015年)
熊野寮では昔から議案を提起者が作成し、その議案をもとに会議(ブロック会議など)を行っていました。その議案はおそらくWordファイルなどで作成され、資料委員会の担当者が一つのファイルとしてまとめ、印刷を行っていたとのことです。
まず、第一世代資料システムの開発者は、Wordファイルの内容をコピペしたものを投稿できるサイトを作成しました。投稿された議案は自動でまとめられたそうですが、細部は資料委員が手動で編集していたようです。投稿された議案はデータベースに保存されるため、資料を保存するという業務が簡略化されたそうです。
現在の資料システムで閲覧できる最古の資料が2011年頃のもので、当時の92期に第1世代は導入されました。
●第2世代 資料システム(2015~2019年)
第1世代では、太字や下線を引いたり、文章中に表を埋め込んだりといったWordで使えるような機能を自由に使うことができました。しかし、この自由度により、投稿された議案を統一された形式に整形にする必要が生まれ、資料委員会の担当者が1~2時間かけて印刷用の資料を作っていたそうです。
第2世代の資料システムの開発者はこの手間をなくすために、議案は全てテキストのみで、表は別個で投稿するシステムを開発しました。この第2世代では、投稿された議案はすべてまとめられ、資料委員が印刷するためのPDFが自動で生成されるようになりました。これにより資料委員が資料を修正する手間がなくなりました。
第2世代は2015年の100期に導入されました。
●第3世代 資料システム(2019年~現在)
第2世代の資料システムは基本的な機能は十分でしたが、開発者がまだ未熟な(本人談)ときに作成されたシステムであり、保守性が悪いものでした。
第2世代は徐々にバグがひどい状態になり、今後を見据えて2017年に第3世代の開発に着手しました。
約2年かけ、ゆっくりと開発されたシステムが現在の第3世代資料システムです。
基本的な機能は第2世代を踏襲したうえで、より強固な設計、高い保守性を意識して開発されました。
第3世代で追加された主な機能としては、以下ようなものがあります。
・関連議案の設定
・議案の差分表示
・採決議案の採決結果の自動集計
・部会委員会の寮生向け資料置き場
・議案の詳細検索機能(題名や議案種別、本文中の単語などを詳細に指定)
熊野寮祭を満喫しています。