初めてのチーム開発(ほぼハッカソン)に参加した件 その2
9月前半に株式会社ラクス様のインターンシップに参加しました
この記事の続きを書いていきます。
随分と前の話になるので、早めにまとめておきたいと思ってたのですが・・・
前回の記事の流れから
「チャット機能を兼ね備えたタスク割り振り・タスク量を定量化したアプリ」
を作ることになりました!
使用技術
特に活用した技術は3つの通りです.
自分はページ遷移・ユーザー管理・DB周りを担当しました。
- Express (Socket.io, session, sequelize)
- SQLite
- Git
設計
こんな感じの作りたい
開発工程
最初の方Expressをほとんど触らない人が多かった(自分もそう)ので、
チュートリアルでチャット機能(socket.io)を勉強しました。
node.jsを触る機会がなかったため、非同期処理の考え方に苦労しました。
最初に自分たちで設計したモデルはあまりにも工程が多く、
限られた期間で開発するのは現実的ではありませんでした。
そのためメンターさんから「MVP開発をすればどう?」とお話を受けました。
MVP開発とは、Minimum Viable Productの略で
製品開発における実用最小限で開発し、
そのプロダクトの価値を評価したり、
後の機能追加や機能変更にも適応しやすい開発です。
MVP開発を行った後、
顧客の反応を伺い、さらなるブラッシュアップを続ける開発は
近年主流のアジャイル開発にも近い考え方です。
Express
ページ遷移は大昔に趣味でRailsをいじったことがあったので、
routerやviewの仕組みなどはすんなり入ってきました。
ただ厄介だったのはviewで読み込まれるテンプレートエンジンが
HandleBarsだったことです。
- 一般的なejsより情報量が少なすぎる。
- ヘルパー関数の定義がだるい
- レンダー時にObject型の引数を渡す際、JSの値をHTMLに埋め込む時にクセがある
本来であれば環境構築も自分たちでやればよかったのですが、
最初から用意されていた環境(AWS EC2 + express)に依存してしまいました。
sessionは自分がユーザー管理時に必要だと思い、導入しました。
ブラウザからリロードしてもsessionによりユーザー認証が継続された状態で、
他ページからユーザー情報を簡単に取得できるので便利だなと。
DataBase
DataBaseについてはExpressで簡単に定義して活用できるSQLiteを活用。
本来はMySQLとかPostgreSQLの方がいいのかもしれませんが、MVP開発だし多少はね。
最初はSQL文をゴリゴリ書いていたのですが、
リレーションシップが面倒ということでしたので、
メンバーの一人がO/Rマッピングを使おうと!
それで代表的なsequelizeを勉強することになったのですが、
これがすごく便利で導入して良かったなと。
O/Rマッピング/sequelizeに関しては以下の記事にまとめています。
Git
チーム開発でこいつが一番厄介でした。
メンバーが全員同時に開発を進めるのでConflictが発生したり、
pullを忘れて自分の手元のブランチ環境が古すぎたり・・・
自分の場合はトラブル続出で、メンバーもGit初心者でしたので、
結局Google先生しか頼れる人はいませんでした笑
mergeする際にConflictが発生するのをVSCodeを使って修正してVSCodeの有能さを知る。
プルリクの承認するためにプルリク(数字)ブランチを作って動作確認してMergeの段取りを知る。
Gitの簡易的な概念や機能を理解するために読んだ「サル先生のGit入門」の親切さを知る。