![見出し画像](https://assets.st-note.com/production/uploads/images/10476474/rectangle_large_type_2_ef6006a6ec148b3ce5eab01fd2a95e1e.png?width=1200)
#TEAMKIT リニューアル振り返り(1)
はいさ〜い。沖縄から執筆しました。笑
私が2018年12月からJoinしたTEAMKITというサービスが2月に一部リニューアルをしました!
私はエンジニアとしてバックエンドをメインとして開発を行いました。
ざっくりやったことは以下の通り。
ユーザーから見える部分から見えない部分もいろいろ実はやりました。
■リニューアル内容
1. TOPリニューアル
2. Tent作成/編集項目追加
3. Tent詳細リニューアル
4. 気になるの追加
5. Tentプレビュー
6. Tent検索のリニューアル対応(内部ロジック)
7. 未ログイン/ログインの表示制御
8. [backend] API整理 / ルーティング制御整理
9. [backend] ページごとにjsを作成
10. [backend] cssをコンポーネント(vue)に分割
11. [backend] ファイル構成整理
細かいTech的な話はまた別記事で書こうと思いますが、振り返りをして見ます。
工夫したこと・良かったこと
約1ヶ月という開発期間でリニューアルまでできましたが、当初の見積もりより1週間前倒しでフロント1人、バックエンド1人という体制で実現できました。
<やったこと>
[1] デザイナー、ビジネスサイドと優先順位/必要機能の明確化をした
[2] 全体の設計を最初に一気にやった(DB設計、API設計)
[3] ファイル/コンポーネントの整理およびリファクタリングをした
[4] バックエンド(Laravel)のコーディング補助ツールを作って作業時間を大幅短縮した
[1] 現状の課題に対し、何ができることが達成基準なのか、本当に今必要なものは何か
「やりたいこと」は無限に出てきます。
あれもしたい、これもしたい、これが理想だ。という話はサービス開発においていくらでも出てきます。また、運用をしていったり数値を見たり、ユーザーの反応を見たり、将来的な構想を考えれば考えるほどアイデアは出てきます。
しかし、”今”何の課題をクリアをすることが大事なのか → そのためには何の機能の実現が必要なのかという「優先順位」を決めること、共通認識を取ることが大事です。
全てにおいて第一に念頭に置くべきことは「いかに早くリリースできるか」です。
早く出すためには、何かしら取捨選択しないと実現できません。
そしてまた出してから順次改善を積み上げればいいのです。
リリースするまでは、作り手が何を考えても、どんなに努力をしても「ユーザーに取っては知りもしないこと」でしかないから。
100点満点(完璧)を目指すより、まずは終わらせること(出すこと)を考えましょう。
[2] 全体を先に考えて(作って)、細かいところは後でやる
これも1と似たようなことで、早く作るために、全体(大枠)を先にやることが大事だなと思って、リニューアルに必要な設計を先に全てやりました。
段階的に一つずつ作ることもできますが、全体を俯瞰して考えないと思わぬトラブルや仕様ミスが発生することもあります。
また、全体からやることで、一つ一つのタスクのやるべきことやボリュームが見積もり時より鮮明になり、後どのくらいで終わるかの目処が立ちやすくなります。
そういう点で、先にDB設計やAPI設計をしていれば、あと何の実装が残ってていて、どれだけ時間がかかるのかが把握できます。
タスクもクラス単位・メソッド単位に切り出すことも可能で、スケジュールも立てやすくなります。
[3] 無駄な検索時間や作業を減らすために整理整頓をする
ソースコードはファイルの配置などのルール決めや設計方針がないと、あっちこっちにコード/ファイルがチラばり、「直すべきコードを探す」ことに時間がかかったり、不用意な修正をする、間違った修正をしてバグを起こすなど時間のロスが発生してしまいます。
自分のローカルのドキュメントもプロジェクトごとや業務、作業目的ごとに分けていなかったり、デスクトップにファイルを放置していたりする場合と同じような面倒さがあります。
また、リファクタリング(キレイなコードにすること、正すこと)も今後の修正をしやすくする、バグを発生しずらくする点において重要な作業です。
[4] ルーティン作業は自動化する、簡単にできる仕組みを作る
完全なルーティンではないとしても、ある程度パターン化している作業は「いかに楽にできるか」を考えることが常に大事です。
エンジニアはコードを書くのが仕事ではないです。
「動くものを作ること」(ユーザーに提供すること)が仕事なので、コーディングという複雑な作業がありつつも、全てを自分の手でやる必要はなく、より簡単に、かつ正確に実装することを実現する工夫をしましょう。
この自作ツール使ったら実装時間が1/3削減できました。
— NARI🏕フリーエンジニア / Teamkit (@NARI_Creator) February 5, 2019
自分が嬉しい(笑)
作業化したコーディングとおさらばするとめっちゃ開発捗る。 https://t.co/7908ExssFR
【開発作業の大半は自動化できる】
— NARI🏕フリーエンジニア / Teamkit (@NARI_Creator) February 6, 2019
今④、⑤が半自動化できてめちゃくちゃ開発効率が上がった。
①仕様決め
②DB設計
③API設計
④コーディング (★)
⑤単体テスト (★)
⑥結合テスト
⑦シナリオテスト
設計部分もパターン化を定義できればテストまで一貫してテンプレ化でき、効率化できそう。 https://t.co/WPTVawFZ6d
「努力をしない努力をする」#手ぶら本
— NARI🏕フリーエンジニア / Teamkit (@NARI_Creator) June 3, 2018
ちょっとでもストレスに感じること、面倒くさいこと、やる意味が分かってないことはすべて「効率化・自動化・やめる」ことができる。
できないと決めつけてる、問題に感じてないような考え方してるなら思考停止してて無駄な時間を費やすだけなので考えなそう。
以上、振り返ってみて、スタートアップのサービスでは特に「スピード感」を求められるので、いろいろ創意工夫をして取り組めたリニューアルでした。
期限を決めて緊張感を持って初めて人は努力をする、と思うので今後もしっかり緊張感も持ちつつ、スピード感のある実装をしていきたいと考えてます。
というわけで、また4月上旬にプロフィール部分のリニューアル/改善もあるのでまた振り返りできればと思います。
▼TEAMKITを今後もよろしくお願いします▼