アソベルは簡単に日程調整ができるアプリです! https://asoberu.herokuapp.com
開発期間:約10日(2021/12下旬〜2022/1上旬) 開発時間:50時間程度?
フロントエンドはこちら
バックエンドはこちら
*android版もあります https://github.com/Itaru-furukawa/Asoberu
- L○NEやGoo○leカレンダーといった日程調整ツールはあるものの、登録が必要であったり、そもそも使いづらい!
- アカウントの登録不要!軽い!直感的で簡単!な日程調整アプリを作成することで、この問題を解消する!
学内の演習でこのアプリを発表する予定だったため、開発期間はそれほど取れないことを想定した選定。そのため、それぞれ技術スタックとして持っているものを採用した。それぞれDockerにのっけて開発。
Vue2を用いて開発。 コンポーネントライブラリのvuetifyを用いることで、短い期間ながらリッチなUIに仕上げたかったため。vuetifyにもvue3への対応があるとかないとか... Vuexの使用は無し(使えばよかた) 参考: https://vuetifyjs.com/ja/components/calendars/#section-30c930e930c330b02630c930ed30c330d7
Ruby on RailsのAPIモードで開発!
また、TDDの実践を行うことで、開発手法の優位性についての調査を行った。具体的には、下記のステップで開発を進めた
- APIの設計( URI設計や返ってくるJsonの形式 )を考える
- 設計に従ってAPIを叩くことを想定したテストを書く
- そのテストを実行して失敗させる
- railsのコントローラー(API)を書く
- 2で書いたテストを成功させる
- テストが通るままでリファクタリングを行う
- 1〜6を繰り返す
Herokuにデプロイを行った(本当はAWSにのせたかったけどお金がかかるらしいので断念...)。DBはMySQLを無料で使えるという理由で、clearDBなるものを使用。 https://elements.heroku.com/addons/cleardb
TDDを実践してみたメリットとしては次のようなことが挙げられる
- リファクタリングの作業効率が上がったことを実感
- リファクタリング後、curlコマンドを叩いて結果を見たり、APIツール(Postman等)を使用してレスポンスを確認するといった必要がなく、テストを実行するだけでよいためストレスが減った!
- 定量的な結果はないが、先にテストを書くことで、テストコード自体が設計書となり、実コードの実装時間は減った!
- これは具体的な実行シナリオと入出力例が体裁を保った状態であることが自然言語よりもより直感的なためと考えられる
デメリットとしては
- 開発に時間がかかる
- テストも書いてプロダクトのコードも書いて、となるとやはり時間が限られた中での開発は厳しかった
- 現にミスもチラホラ..
- テストシナリオは費用対効果を考えなければプロダクトの質をあげるどころか、開発時間ばっかり食ってしまい逆効果になり得る(匙加減が難しい)
- 学び: https://bliki-ja.github.io/TestCoverage/
- カバレッジ等を見つつ、適度なテストを書くことが大事そう
これらを踏まえて、自分の結論としては、ウォーターフォール開発などの仕様変更が少ない環境ではかなり強力に使えそうだと感じた。 逆に、アジャイル開発やWebアプリケーションでの開発など、仕様がコロコロ変わるような開発環境だと不向きかも? 仕様が変わるたびにテストを直してプロダクトも修正して、となるとかなり時間も食うので、デメリットの方が大きくなってしまうのかなといった印象がある。