なぜ今デジコアを作り直すのか【ブログリレー 2日目】

プログラミング 新入生向け

デジクリブログリレー2日目です 簡単に自己紹介をしておくと2021年8月現在、副部長をしており、1年前はインフラをやっていました。デジコア開発には15thの猿渡先輩と一緒に始めて現在に至ります。

デジコアとは?その存在意義と経歴

デジコアは2020年の5月ごろ運用が開始されたデジクリ独自のグループウェアです グループウェアとは一般的に企業で利用されている社内SNSやドキュメント、予定管理、予算管理、人員管理などを総合的に行なうソフトウェアのことです。

グループウェアを導入したわけ

普通は企業で用い、サークルなどでは使用することは少ないグループウェアをなぜ、デジクリで使うことになったのか、時はさらに2019年冬に遡ります。 当時のデジクリでは大きな課題に直面していました。それはSlackの無料プラン運用がゆえの過去データの消失です。適当な会話なら問題ありませんが、先輩型の作品やLTや講座のスライド、経費精算などのやりとりがどんどん消えていました。特に経費精算はお金が絡むことで消えてはいけないデータだったのでその当時幹部で色々と議論が起きました。GoogleDocにまとめるや定期的にテキストをバックアップ、Slackを有料プランに上げるなど色々な方法が上がりましたが、管理のしにくさや金銭的問題から断念されました。そんな中、先代インフラである猿渡先輩と大学からの帰宅の途中グループウェアの提案をいただき、直ぐに議論に入りました。当時グループウェアとして候補が挙がっていたのはサイボウズグループウェアでした。サイボウズのグループウェアは機能豊富でかつ、大学のサークルのような非営利団体向けには少し安くサブスクリプションを提供していました。その情報を幹部で共有した結果、利用するならサイボウズのグループウェアという話になり、幹部内でテストで1ヶ月利用することとなりました。 サイボウズのグループウェア

ですが、サイボウズのグループウェアは少しウケがよくありませんでした。UIが複雑・使わない機能が多い・欲しい機能が無いなどが理由でした。なぜ、あまり受けが良くなかったのか、あたりまえの話ですが、サイボウズのグループウェアは企業向けであり、学生の団体であるサークルとは少し必要な機能などが違ったのが原因でした。 その結果、デジタルクリエーションサークルなんだし作るかという方針になりました。

デジコアの開発スタート

1からグループウェアを作ることになり、まずは幹部への必要機能のヒアリングや使用する技術選定が始まりました。 必要要件としてはまず緊急で必要とされていたのは稟議機能、そして掲示板機能となっていました。この時点で作品を掲載する機能を載せることは決まっていましたが、ただ何も考えずに作ってしまうと増え続ける作品データに対してかかる金銭負担が後の世代で問題化するのを恐れて実装を渋っていました。この時点では作品作成と連動した進捗管理ツールProject機能の実装も計画されていました。(Projectアイコンがあるのはその時の名残。消さないとね) Projectの亡霊

コロナパニック!?

2019年の冬、自分たちはギリギリ冬合宿を集まってできた後、日本国内で段々とコロナの問題が深刻化してきました。 コロナの絵 特に新入生である1年生の扱いに困ることになります。当たり前ですが、サークル活動は全てオンライン化し、方法も模索している状態で、できるだけ新入生が混乱しないように、新入生が仮入部する際にはデジコアは稼働しデジコアを生かしたオンライン活動をできたらという意見が幹部内でありました。そこで、夏頃完成リリース予定という計画を3ヶ月前倒しし5月本格稼働を目指し開発を急ピッチで進めるという風に決定を行ないました(今考えると愚かな決断でした) リリース日が決まってからは丁寧な設計はあまりせず、どんどん2人で開発を進めていき、そんな中「ブログあると良いよね」という意見と自分の酒で酔った勢いに任せ、掲示板のプログラムを流用しつつ、一晩で今のデジコアブログの大体は作られました。(非常に愚か)

酒で酔った勢い

現在のデジコア

現在のデジコアは正直いってあやふやな立ち位置です。稟議機能こそ確実に使われていますが、掲示板機能は機能不足や通知などの問題があり使われず、作品投稿機能と合わせてデジクリ内での交流加速を目指し作ったメンバー機能も作品投稿機能の未完成により効力をあまり発揮していません。デジコアブログもエディタと実際の表示画面が違うなどという致命的な欠陥も存在しました(これはデジクリブログで解消されました)

デジコア2.0計画

デジコア2.0計画は現在のデジコアの使われていない機能を再設計しなおし、使用技術も全体的な使用しやすさややリッチな表現の実現の為、変更を行ないました。

機能の拡充と中心ツール化

現在デジクリではコミュニケーションをとるのにSlack、Discord、そしてデジコアが存在します。3つもあります...多いですね。Discordは音声チャットが非常に便利ですし、無法地帯化することで自分の好きを語り合える場としています。 Slackは幹部からのお知らせや企画などの話し合い、有益な情報の共有の場などに使われています。ですが、グループウェアを導入するきっかけの所で書いたとおり、データが消えていくという問題を抱えています。 そこでデジコア2.0ではSlackの廃止を念頭にテキストチャット機能を大幅に改良していく予定です。

作品を保管する場所へと

デジコア2.0ではデジコア1.0でしたくても出来ていなかった作品の共有機能をLTや講座、プレプロなどのスライドの共有までに広げて強化した形で実装を進めていく予定です。 また、今までストレージの関係で渋っていた画像のアップロードなどもどんどん緩和をしていくよていです。

技術的課題の克服

現在のデジコア1.0ではDjangoというPythonWebフレームワークを用いて開発をしています。必要なのはPythonHTML、少しCSSといった形でかなり必要な知識が少ないメリットがあります。 ですが、このDjangoだけで構成していることでデジコアでは表現の限界にあたり、実装が上手くいかず、わかりにくいUXとなっているページが多々あります。 原因としてはDjnagoがユーザーにページを見せる際にHTMLを描画してユーザーに送るという基本的な仕組みにあります。少し前ではこの方式は一般的でしたが、TwitterなどのWebアプリが一般的になった今、少し古くさい方法となっています。 Django では具体的に何が問題なのか? それは、ページの内容を変更するにはページを遷移する必要があると言うことです。 当たり前といえば当たり前ですが、HTMLは元々静的なものでWordやPDFみたいにユーザーの操作次第で内容が変わるような物ではありませんでした。それが近年ではページ遷移せずに何でもできるものが増えてきました。例えばTwitter。Twitterは下にスクロールしたらドンドン投稿が読み込まれますよね。つまり下にスクロールすることでページがどんどん縦長になっている。ファボボタンを押したら色が変わり、ファボされたことをページ遷移せずにサーバーのデータベースに反映できるのです。これをDjangoだけでやろうものなら、ちょっとスクロールするとNextPageボタンが現れるし、ファボするときにはページが遷移するし、遷移した先にはもうファボしたえっちなツイートは見えなくなっており、また探す必要が出てきます(キレちゃいますね) これを解決するために現代では更新された・する内容(例えばTwitterならTweetのテキストなど)をJSON形式などで送り合い、表示するHTMLJavaScriptで書き換えるという方法をとっています。HTMLJavaScriptで書き換えるというのはかなり力業なものなので、これを安全・簡単にできるようにReactVueといったフロントエンドフレームワークが存在します。

試作品としてのデジクリ新ブログ

今回の記事で使っているデジクリ新ブログは前の技術的課題で話したフロントエンドフレームワークを利用して開発がされています。具体的にはReact+Nextで構築されています。 Nextってなんだよ?となると思いますが、それは後々書く機会があったら...正直ググって欲しい そんな新しい方式を採用してデジコア2.0を作る上で、一度どんな作業量・工数・難易度で開発ができるか試す意味もあり、デジコアブログを作り替えるという話しになりました。 現状デジコアブログの全部の機能を実装したわけではありませんが、デジクリ新ブログはある程度上手く作れたと思っています。 new digicre blog

今後の開発と人員募集

今後はデジコア本体の改造に入っていきます。これにはデジクリブログにかかった作業量の数倍がひつようになるはずです。もちろん自分も沢山コミットする予定ですが、自分や4年の猿渡先輩やM1の岡本先輩がいつまでデジクリにいるかということを考えると今からドンドン新しい人(特に1年生や2年生)の人に参加してもらいたいなと考えています。もちろん、最初から即戦力として開発にバンバン参加できる必要はありません(できたら嬉しいが) 一緒に学びながら出来たら、デジコア、そしてデジクリを長く存続させるいい流れが出来るのではないかと考えています(~~数年後にデジコアが動かねぇと顔も知らない後輩に呼び出されたくないという考えもある...~~)

そんな感じで、デジコア開発Teamでは新しい人材を常に募集中! Python+Djangoでバックエンド開発や React+Next+TypeScriptでフロントエンド開発に興味ある人は是非 Slackの #digicore-team に参加してみてください。 話しだけでもという方は是非直接自分に話しかけてみてください。よくDiscordにいますので。