高専祭クラス展示で「すーぱーらんきんぐしすてむ」を作った話
めためた久しぶりのブログ投稿です。
お久しぶりです。ふっけです。
今回は、高専祭クラス展示で入退場システムを作成したのでその話を書きます。
とりあえずデモ
使用方法は
1. 「すーぱーらんきんぐしすてむ」にアクセス
2. ニックネームを入力する
3. カメラが起動するので「入場用」のQRコードを読み取る
4. アトラクションを楽しむ
5. 「退出用」のQRコードを読み取る
6. ランキング表に名前がでる
です。以下画像



ことの始まり
同じクラスの にばくん(仮名) から入退場システムを作りたい!という要望がありました。
そこで、にばくんはフロント側、ぼくはサーバ側を担当し作成しました。
設計
要件は「入場時間と退場時間を管理してランキングを作成する」とういうものです。
僕の最初の案はブラウザでストップウォッチ機能を実装してその結果をサーバに送信し、データベースに格納してランキングを作成していく。というものでした。
するとにばくんから「それだと不正されて、ランキングを荒らされる!!」という意見を頂きました。
最終的に「入場時と退場時にQRコードを読み込みその時間の差分でランキングを作成する」というものになりました。
開発
サーバ側の開発について書いていきます。
使用した技術は
APIサーバ: Node, Express
データベース: PostgresSQL
デプロイ: Heroku
フロント: Vue.js
UIフレームワーク: Vuetify です。
1日目
はじめにデータベース設計を行いました。
この適当がばがば設計により後で痛い目を見る。(今見てアホでしょってなった

2日目
HerokuPostgresSQLを用いてデータベース、テーブルを作成しました。
次に必要なルーティングを実装しました。
作成したのは、ランキングの取得、時間の投稿、入場テーブルの取得、退場テーブルの取得、名前一覧の取得です。
データベースへの接続確認を行い、Get処理, Post処理をそれぞれ確認しました。
SQLでランキングの導出を行おうとしました。(ここでトラブル発生)
現在のテーブルではランキングの導出のSQL文がいい感じに書けないことがわかりました。(それはそう
そこでデータベース設計をやり直し、入場テーブルと退場テーブルを別々で作成し、以下のSQL文でランキングの導出を行いました。


3日目
Heroku用の環境変数の設定や、typo修正等を行いました。
これで完成(仮)しました。
クライアントが完成に近づいたところで。。
エラー処理(値が足りないとか、nullとかなんたら)をしてなかったので、HTTPレスポンスコードの設定や try, catchでエラーの握りつぶし()を行いました。


当日
二日間でなんと89組捌いたそうです。。(とても嬉しい


「すーぱーらんきんぐしすてむ」のサーバ監視。めた楽しい。みんなきてね 3i pic.twitter.com/eP00GImAyW
— ふっけ (@fukke0906) 2019年11月2日

学んだこと
今回はフロント側とサーバ側で完全に分かれて開発を行いました。
やはりサーバとフロントがうまく組み合わさって動いているのを見るのは最高ですねぇ。
そして、Githubを使用してサーバとクライアントお互いにコードレビューを行いながら開発をしました。
互いにモジュールの使い方や基本文法などを確認しながらできたのでとてもよかったです。おすすめします。
普段のサーバの実装は自分用(クライアントも自作)だったのでガバ設計でも良かったのですが、クライアントが他人となると、API仕様書を作ったり、HTTPレスポンスコードも実装したりと、かなり本格的にできたのではないかなぁと思います。
SQLをまともに書いたのが初めてで試行錯誤を繰り返してデータを取得できた時は嬉しかったです。(基本情報落ちたけど)とても役に立ちました。
今回初めてHerokuPostgresを使用したのですが、とても便利だったのでQiitaに記事をあげようと思います。
具体的には、無料で使える点やDataClipでデータの監視ができる点がとても良かったです。
FirebaseはNoSQLですが無料でRDBを使いたいときはHerokuをおすすめします。
来年の高専祭もなにか作りたいですね。
読んでくれてありがとう。
リポジトリ
サーバ (コードきれいきれいしたいわね byふっけ
github.comクライアント (デプロイ時にgit push origin masterいっぱいしました。。許して、、。 byにば
github.com
ハックツハッカソン-アロ杯-に行ってきた話
こんにちは. ふっけーです.
6/22-23 に天神でハッカソンが開催されたので行ってきた話です.
1日目
移動部門
できる高専生はバスでMac!!
— ふっけー (@fukke0906) 2019年6月22日
移動時間も惜しまずに圧倒的成長💪 pic.twitter.com/gNCO3TmHAf
移動中はもちろんVue.jsの勉強してた()
本日の会場です pic.twitter.com/TB6IP3UP2i
— ふっけー (@fukke0906) 2019年6月22日
会場に早く着いたので近くの川で涼んでた.
そして会場入り(会場内の写真撮り忘れた
アイデア決め
今回のテーマは...

「タスク管理アプリ」です!!
なんかめっちゃ絞られてない...??
でも, テーマが絞られていたのでアイデアはすぐに決まった?
あ、忘れてました.. 今回のメンバーは
前回のハッカソンと同じく @kubo_programer と @Qba3c です.
最初はアイデア出し
三人でそれぞれアイデアを考えて 出し合う形になりました.
僕の案は みんなでテスト勉強の計画を共有できるアプリ
@kubo_programer は独自のソートアルゴリズムでタスクを管理できるアプリ
@Qba3c はタピオカでタピオカタピオカな見た目のアプリを考えて
最終的に @kubo_programer と @Qba3 を組み合わせる形でアイデアがまとまりました. (僕のは少し方向性が違った
開発開始
今回は僕のわがままでVue.jsを使うことになりました.(Vue.jsを使ってみたかったので
技術的には Vue cli を用いて Vuex と Vue Router を使ってメインのアプリ開発をして
git と github で管理しました.
ベースを作成できた pic.twitter.com/ZU3c5VDhrd
— ふっけー (@fukke0906) 2019年6月22日
Vue cli で環境構築等を完成させた僕.
その間にデザイン決めやソートアルゴリズムの作成をしてもらいました.
夜の部
夜ご飯は ラ!
一蘭#ヤマゲン夜飯の流儀 pic.twitter.com/2Pzdhqhbwl
— ふっけー (@fukke0906) 2019年6月22日
そして、夜の作業...
ハックツハッカソン魔剤賞#ハックツハッカソン pic.twitter.com/KUanv7KRXy
— ふっけー (@fukke0906) 2019年6月22日
タピオカのイラストを探すぼく pic.twitter.com/KwDughGJLq
— ふっけー (@fukke0906) 2019年6月22日
ソート用のフォームを作成したり, タスクのデータ構造練ったり.. 色々しました(覚えてない
途中コンビニに行ったりしたんですが治安最悪でした..
この時間の天神 治安最悪で草
— ふっけー (@fukke0906) 2019年6月22日
朝の4時まで作業..
2日目
6時に目が覚めました. 睡眠時間は2時間です...
最初の作業は完全に忘れていたタスクの削除機能の追加です. これが割と手こずって時間がかかりました.
そしてUIをごちゃごちゃしてました.
お昼
地獄でした.
これは地獄の組み合わせ pic.twitter.com/h9hjqO1NIZ
— ふっけー (@fukke0906) 2019年6月23日
完成!!
発表2時間前ぐらいに僕のタスクは全て終了しました.
残りのUIの調整とパワポの作成はチームメンバーに任せて僕は多分寝てました(意識がない..
ふけくんきのうからのつかれでもうじゅうでんがない
— ふっけー (@fukke0906) 2019年6月23日
結果発表!!!
副賞(服賞)をいただきました!!
嬉しいです
最優秀賞のUnityのチームはすごかったです..
副賞(服賞) でぷろいTシャツ頂きました!!
— ふっけー (@fukke0906) 2019年6月23日
対戦ありがとうございました!!
次回のハッカソン参加はだいぶん後になると思いますが、次は最優秀賞狙います!!#ハックツハッカソン pic.twitter.com/cGHyCLHb6F
感想
今回のハッカソンで初めてVue.jsをまともに扱ったんですけどハッカソンは技術力の向上が見込めるのでとても良いと思いました.(Vue.js完全に理解した
また2dayということもあって かなりキツかったんですけど 良い思い出になりました.
今後も積極的に参加していきたいです!!
最後に,
今回作成したタスク管理アプリですhttps://t.co/5LqZEKjgfy
— ふっけー (@fukke0906) 2019年6月23日
Homeでタスクの確認
Formでタスクの追加
TaskSortで現在の気分の入力とタスクのソート、ソート結果の表示、タスクのactive化
TaskTableでactiveなタスクの確認、タスクの削除
ができます。(他にも...
二年生の振り返りと三年生での目標(技術系)
二年生の振り返り
9月からプログラミング始めましたがもう三年生になるみたいです。
最初はフロントエンドばっかりやってたので、フロント関連は大体扱えるようになったのかなと思っています。(バイトもできたし)
途中CTFとか競プロとか手を出しましたが結局フロントエンドに戻ってきてる感じです。
最近はwebアプリやネイティブアプリにも挑戦し始めたのでこのまま楽しくやっていけたらなと思います。
高専カンファin西京2に行ってきた
どうも ふっけー です。
3月16日に西京カンファに行ってきたので感想を書きます。
備忘録 phpで画像の投稿
流れは
画像の送信
画像かどうかの判断
画像をファイルに保存
画像の名前をデータベースに保存
画像の表示
って感じです。