Tech Sketch Bucket of Technical Chips by TIS Inc.

リモートワーカーに最適な環境を提案するシステム(Zone)の企画・設計・開発

Pocket

TIS株式会社 戦略技術センターの新人研修としてチーム開発演習を行いました。本記事は坂本・石川チームによる成果報告です。
overview

どんな研修か

本研修は新人が二人チームを組み、与えられたテーマのもとWebサービスを一から開発するというものです。与えられたテーマは「リモートで働くために有用なWebサービス/ツール」。これを2か月で実現するのが研修の唯一のノルマです。

与えられた環境

私たちは自主性を発揮できる環境を与えられただけでなく、下記の研修・講義・フィードバックを通してさらに学びを深めました。

  • Python基礎研修(文字列・ファイル操作、web APIの使い方)
  • 講義(リーダブルコード、UI/UX、CI)
  • 先輩OJTによるフィードバック(朝・夕会、週次報告)

先輩方はフィードバックの機会以外にも適時アドバイスに乗って下さり、困ったことがあったら親身に対応してくださいました。

どんなものを作ったか

リモートワーカーは自宅か自宅外のどちらかで働くことになりますが、今回、私たちは自宅外で働く人に目を付けました。自宅外で働くには、作業をする場所を自分で見つけなければなりません。しかし、自宅外でPCを持って作業をするとなると理想的な場所はなかなか見つかりません。皆さんもご経験があるかもしれません。そこで私たちは開発するシステムの対象ユーザを「自宅外で最も適切な作業環境を知りたい人」とし、システム開発の目的を「リモートワーカーに最適な環境を提案する」としました。今日、リモートワーカーが増加していることを考えると、ニーズは十分にあると考えました。


overview

その成果がZoneです。
Zoneはユーザにとって最適なワーキングスペースを手軽でかつスピーディに提供してくれるサービスです。サービスの主要機能は以下の通りです。

主要機能

サーチ機能

場所と住所からの検索に加えて、ワーキングスペースのジャンルや雰囲気、設備などからワーキングスペースを絞り込むことができます。


search

チェックイン機能

本サービスに登録されているワーキングスペースに現在いる状況で、チェックインボタンを押すことによりチェックインすることができます。
位置情報からあたり判定を実装して現時点でユーザがお店にいるかを判定しています。
チェックインすることによりユーザはポイントを手に入れることができます。

ポイント機能

ユーザが保持しているポイントを消費して、ワーキングスペースをおすすめすることができます。
この機能でおすすめすると、左側の一覧表示の順位やシステムからのレコメンドに影響を与えることができます。


point

レコメンド機能

システムからユーザの好みに合わせたワーキングスペースをおすすめしてくれます。レコメンドはユーザが事前に登録した好みをもとにポイント機能でおすすめされた要素と照らし合わせて行います。


recommend

私たちの開発プロセス

私たちは2か月間、次のようなスケジュールで開発を進めました。


process

アイデア出しから始まり、Feature Freeze後はテスト・リファクタリング工程まで行うなど、開発の全工程を経験しました。そして、今後OSSに貢献するエンジニアになる練習として他チームへPull Requestを送りました。私たちは他チームの.Chain()というアプリを担当しました。よかったらそちらのチームの記事もご覧になってください。

私たちはサービス開発において様々な手法を用いました。以下ではそれらの手法の中からいくつかピックアップしてご紹介します。

開発プロセスの手法

マインドマップ

こちらはマインドマップと呼ばれるもので、アイディア出しのフェーズで用いました。一つのテーマからアイデアを広げていくのに有効なツールです。


mindmap

アイデアの評価方法

出てきたアイデアを新規性・実装の容易さ・面白さの観点からそれぞれ5段階で評価しました。評価を数値で表すことによってよいアイデアをスピーディに絞り込むことができます。

check

スクラム

開発はスクラムという手法で進めました。私たちは下記の本で学んだ内容をもとにtrelloでプロダクトバックログ(タスク)を管理し、スプリント計画ミーティングで毎週のスケジュールを立案しました。スクラムを用いることで重要度の高いものから開発でき、正確なスケジュールも立てることができます。

scram

開発を終えて

チーム振り返り

今回のチーム開発演習で学んだことは、議論を円滑に進めることがとても難しいということです。その原因は三つありました。
一つは話を関係のない方向に進ませることが多かったことです。お互いに議論を深堀したい性格で、議論に夢中になると論点がずれてしまうことが多々ありました。自分の言いたいことではなく、チームに有益になるという観点で話をしなければなりませんでした。
二つ目は、伝えたい内容を相手にうまく伝えられないことです。これは、お互いの説明能力の不足が原因です。相手に合わせて話すこと、自分の考えを正確に言語化することの難しさを感じました。
三つ目は二人の意見や考えがなかなか一致しなかったことです。批判的な目を持つことは重要なことです。しかし、相手の意見を尊重し、自分の意見を加えることで個人以上のものを作り出す、そういう姿勢を今後は持たなくてはならないと学びました。
今回の演習で自分たちの課題を洗い出すことができたので、この課題に対して改善を行っていきたいと思います。

坂本の振り返り

技術に関して成長したのはもちろんですがチームでの開発プロセスを学べたことが一番の成長だと思います。
学生時代はタスク分けやスケジュール管理、議論をしっかりと意識して開発することはありませんでした。
それは一人で開発を行うことが多く、期限も自由なことが多かったからだと思います。
しかし、業務を行う上で他人と連携を取り複数のタスクを並行して行うことは多々あります。
今回、学んだ開発プロセスの知識を正しく実行できるようになれば、業務を効率的に行うことができると思います。
今後は知識を正しく実行できるように実務で経験を積んでいきたいと思います。

石川の振り返り

私にとっては新しく学ぶ技術が多く、開発は自分の思っているよりスムーズにいきませんでした。ただ、壁にぶつかった分たくさんの学びを得ました。
開発の進め方に関しては、新しい技術は学習時間をスケジュールにくみこむ必要があることを学びました。どれだけ時間がかかるか正確に見積もるには経験が必要なので、そこが今後の課題です。
チーム運営という観点では、議論の進め方を学びました。議論の進め方といってもアイデア出しの場面と1週間のスケジュールを立てる場面では、持つべき姿勢が違います。今後は、姿勢の切り替えができるよう改善していきます。

リンク

Zoneのgithubリポジトリ

Zone

チーム開発演習振り返りスライド

エンジニア採用中!私たちと一緒に働いてみませんか?