tag:crieit.net,2005:https://crieit.net/tags/%E5%AD%A6%E5%9C%92%E7%A5%AD/feed 「学園祭」の記事 - Crieit Crieitでタグ「学園祭」に投稿された最近の記事 2021-05-17T21:59:25+09:00 https://crieit.net/tags/%E5%AD%A6%E5%9C%92%E7%A5%AD/feed tag:crieit.net,2005:PublicArticle/15953 2020-06-14T15:24:10+09:00 2021-05-17T21:59:25+09:00 https://crieit.net/posts/introducing-portaldots 大学祭の参加団体向けウェブシステムをOSS化してみた <p><a href="https://crieit.now.sh/upload_images/658e61a355af5e8c729368deafa1ffd35ee268532719f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/658e61a355af5e8c729368deafa1ffd35ee268532719f.png?mw=700" alt="main_screenshot.png" /></a></p> <h2 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h2> <p>大学祭では、たくさんの参加団体(サークル・部活)が模擬店などの企画を出店し、盛り上げています。</p> <p>大学祭を成功させるには、実行委員会と参加団体の間の連携が欠かせません。連携するための方法として、実行委員会では、参加団体からの「各種申請」を受け付けています。例えば、大学祭当日に配布されるパンフレットに掲載する内容を参加団体から募集する必要があります。また、実行委員会が貸し出す備品の申請を受け付けることもあります。</p> <p>こうした申請受付業務は、多くの大学祭では紙による受付であったり、メールや Google フォームでの受付を行っているところが多いかと思います。</p> <p>紙やメールによる受付の場合、紙・メールに書かれた内容を1枚1枚Excelに入力していく手間がかかります。受付方法によっては対面での対応が必要となり、昨今の状況下では厳しいものがあります。<br /> (そもそも、今年の秋冬に開催される学園祭でも、予定通り開催できるかどうか怪しいところではありますが……)</p> <p>そのような中、私は<strong>大学祭の各種申請などを受け付けるウェブシステムを開発し、今年になってそれを OSS 化</strong>してみました。</p> <ul> <li>GitHub : <a target="_blank" rel="nofollow noopener" href="https://github.com/portal-dots/PortalDots">https://github.com/portal-dots/PortalDots</a></li> <li>PortalDots 公式ウェブサイト(2020/11/30 公開) : <a target="_blank" rel="nofollow noopener" href="https://dots.soji.dev">https://dots.soji.dev</a></li> </ul> <h2 id="私は誰?"><a href="#%E7%A7%81%E3%81%AF%E8%AA%B0%EF%BC%9F">私は誰?</a></h2> <p>私は、東京理科大学の野田キャンパスに通う大学生です。大学名こそ「東京」とついていますが、「野田」は「千葉県」にあります。そんな野田キャンパスで開催される学園祭「野田地区理大祭」の実行委員をしていました。</p> <p>実行委員時代は、PortalDots の開発のほか、公式ウェブサイト・パンフレットのデザイン・実装なども行っていました。</p> <ul> <li>野田地区理大祭公式ウェブサイト : <a target="_blank" rel="nofollow noopener" href="https://nodaridaisai.com/">https://nodaridaisai.com/</a></li> </ul> <h2 id="参加団体向けウェブシステム「PortalDots」"><a href="#%E5%8F%82%E5%8A%A0%E5%9B%A3%E4%BD%93%E5%90%91%E3%81%91%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%80%8CPortalDots%E3%80%8D">参加団体向けウェブシステム「PortalDots」</a></h2> <p><a href="https://crieit.now.sh/upload_images/21e25532d98d0eaccd44964220ac8f765ee5e5b35aaeb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/21e25532d98d0eaccd44964220ac8f765ee5e5b35aaeb.png?mw=700" height="40" alt="PortalDotsのロゴ"></a></p> <ul> <li>GitHub : <a target="_blank" rel="nofollow noopener" href="https://github.com/portal-dots/PortalDots">https://github.com/portal-dots/PortalDots</a> <ul> <li>よろしければぜひ Star お願いします…!</li> </ul></li> </ul> <h3 id="開発環境の動かし方"><a href="#%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E5%8B%95%E3%81%8B%E3%81%97%E6%96%B9">開発環境の動かし方</a></h3> <p>開発環境を動かすには Git、PHP(7.4以上)、Node.js、Yarn、Docker がセットアップ済みである必要があります。</p> <p><strong>2020/06/27 追記</strong> : コマンドの実行順序が間違っていたので修正しました。<br /> <strong>2021/05/17 追記</strong> : 開発環境の起動方法の変更を反映しました。</p> <pre><code class="bash">$ git clone [email protected]:portal-dots/PortalDots.git $ cd PortalDots/ # 必要な Node.js パッケージをインストール # ※ エラーが表示される場合は、Node.js を最新バージョンにアップグレードした上で、再度 yarn install を実行してください。 $ yarn install # 設定ファイルを作成 $ cp .env.example .env $ php artisan key:generate # 開発環境を起動する $ yarn docker # マイグレーション(データベースのセットアップ) $ yarn migrate # Docker コンテナ内で必要な PHP パッケージをインストール $ yarn docker-bash $ composer install $ exit # フロントエンド開発サーバーの起動 $ yarn hot # → ブラウザで http://localhost にアクセスすると、PortalDots の開発環境が起動する # → フロントエンド開発サーバーを終了するには Ctrl + C を押す # 開発環境を停止する $ yarn docker-stop </code></pre> <h3 id="トップページ"><a href="#%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8">トップページ</a></h3> <p>トップページでは、参加団体向け説明会の次回日程の表示機能や、各種お知らせの閲覧、配布資料のダウンロードなどができるようになっています。</p> <p>企画参加登録の受付期間中は、提出している参加登録の受理状況も確認できます。</p> <p><a href="https://crieit.now.sh/upload_images/42a053619c899ae5db5c6cbc04f3d5eb5ee266d90c32e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/42a053619c899ae5db5c6cbc04f3d5eb5ee266d90c32e.png?mw=700" alt="screenshot_home.png" /></a></p> <h3 id="企画参加登録"><a href="#%E4%BC%81%E7%94%BB%E5%8F%82%E5%8A%A0%E7%99%BB%E9%8C%B2">企画参加登録</a></h3> <p>学園祭への企画エントリーもウェブから可能です。</p> <p><a href="https://crieit.now.sh/upload_images/942b1908f49e4c9db2e9466e90b229eb5ee267d059776.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/942b1908f49e4c9db2e9466e90b229eb5ee267d059776.png?mw=700" alt="screenshot_circle_register.png" /></a></p> <h3 id="申請フォーム"><a href="#%E7%94%B3%E8%AB%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0">申請フォーム</a></h3> <p>大学祭の参加団体は、このようなフォームからパンフレット掲載内容などの情報を委員会へ提出することができます。</p> <p>受付期間を設定することも可能です。</p> <p><a href="https://crieit.now.sh/upload_images/98cb9cc9bf6a8e93ec300a84080c92345ee2679b7ac94.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/98cb9cc9bf6a8e93ec300a84080c92345ee2679b7ac94.png?mw=700" alt="image.png" /></a></p> <h3 id="フォームエディター(Vue.js 製)"><a href="#%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC%28Vue.js+%E8%A3%BD%29">フォームエディター(Vue.js 製)</a></h3> <p>「フォームエディター」は <strong>PortalDots の目玉機能(?)</strong> です。</p> <p>実行委員は、各種申請を受け付けるフォームを Google フォームのようなノリで作成することができるようになっています。</p> <p>「じゃあ、Google フォーム使えば良いのでは?」と思われるかもしれませんが、Google フォームではログイン・新規登録機能(※1)は利用できない上、回答内容の編集が容易でなかったり(※2)、<strong>1団体あたり1回答までに制限できなかったり</strong>(※3)するなど、大学祭の申請フォームとしては不便なところもあります。</p> <p>PortalDots の「フォームエディター」で作成できるフォームは、回答受付期間を設定できたり、1企画につき1回まで回答可能という設定ができたり、あとから回答を簡単に修正できたりします。</p> <p>※1 : Google フォームでも、一応 Google アカウントでのログインを必須にすることはできます</p> <p>※2 : Google フォームでも、回答者に回答の編集を許可することはできます。ただ、編集用の URL を紛失してしまうと編集できなくなってしまいます</p> <p>※3 : Google フォームでは、<strong>1ユーザーあたり</strong>の回答数を制限できます。<strong>1団体あたり</strong>のような制限をかけるのは難しいと思われます</p> <p><a href="https://crieit.now.sh/upload_images/fd82398a4a47ec43ce8edc68a27147cd5ee2676b1a9f0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fd82398a4a47ec43ce8edc68a27147cd5ee2676b1a9f0.png?mw=700" alt="screenshot_form_editor.png" /></a></p> <blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">参加企画に提出してもらう各種申請もウェブフォームで受け付けられます。動画のように設問ぐりぐりできます。 <a target="_blank" rel="nofollow noopener" href="https://t.co/5rVFRVnUPd">pic.twitter.com/5rVFRVnUPd</a></p>— Soji — PortalDots (@sofpyon) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/sofpyon/status/1271122648928403456?ref_src=twsrc%5Etfw">June 11, 2020</a></blockquote> <h2 id="CodeIgniter から Laravel への移行途中です → 完了しました!"><a href="#CodeIgniter+%E3%81%8B%E3%82%89+Laravel+%E3%81%B8%E3%81%AE%E7%A7%BB%E8%A1%8C%E9%80%94%E4%B8%AD%E3%81%A7%E3%81%99+%E2%86%92+%E5%AE%8C%E4%BA%86%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%81">CodeIgniter から Laravel への移行途中です → 完了しました!</a></h2> <p><strong>2021/05/17追記 : 先日、CodeIgniter のコードを全て削除し、Laravel へ完全移行しました!</strong></p> <blockquote class="twitter-tweet" data-lang="ja" data-dnt="true"><p lang="ja" dir="ltr">ついに <a target="_blank" rel="nofollow noopener" href="https://twitter.com/hashtag/PortalDots?src=hash&ref_src=twsrc%5Etfw">#PortalDots</a> のコードが、悲願の 100% Laravel 化達成しました…!CodeIgniter 消します! <a target="_blank" rel="nofollow noopener" href="https://t.co/vt1RKYDfcL">pic.twitter.com/vt1RKYDfcL</a></p>— Soji (@sofpyon) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/sofpyon/status/1388511050224472066?ref_src=twsrc%5Etfw">2021年5月1日</a></blockquote> <hr /> <p>(以下、追記前)</p> <p>現在、「CodeIgniter」と「Laravel」という、2つのウェブフレームワークを混在して使用しています。</p> <p>元々 PortalDots は、私がウェブフレームワーク初心者のころ(大学1年の夏)に開発を始めた物でした。それ以前はフレームワークという物自体を使ったことがなく、プレーンな PHP コードでしか書いたことがなかったのですが、「CodeIgniter というフレームワークは簡単」だという話を聞き、試しに PortalDots の開発で使ってみたのでした。</p> <p>しかし、CodeIgniter の機能は貧弱である点や、なるべくメインストリームにあるフレームワークを使ったほうが今後のメンテナンスがしやすいだろうということで、Laravel への移行をはじめました。</p> <p>2020年6月現在、CodeIgniter が使われているのは「スタッフモード」(実行委員用のページ)のみとなっており、それ以外のページは Laravel に移行済みとなっています。</p> <h2 id="おわりに"><a href="#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB">おわりに</a></h2> <p>OSS 化したので PortalDots はどなたでも自由にお使いいただけるようになりました。</p> <p>学園祭実行委員会に所属しており、かつプログラミング経験のある方がいましたら、ぜひ使っていただきたいです。また、学園祭関係者でなくても、お試しとして実物を触っていただけると嬉しいです!</p> <ul> <li>GitHub : <a target="_blank" rel="nofollow noopener" href="https://github.com/portal-dots/PortalDots">https://github.com/portal-dots/PortalDots</a></li> <li>PortalDots 公式ウェブサイト(2020/11/30 公開) : <a target="_blank" rel="nofollow noopener" href="https://dots.soji.dev">https://dots.soji.dev</a></li> </ul> SofPyon