Tech Sketch Bucket of Technical Chips by TIS Inc.

シンプルな入力で客先訪問に必要な情報が手に入る「ケロたん」の企画・設計・開発

Pocket

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

研修の内容

 研修は配属されてから約2か月半に渡って実施されました。初めの半月はPythonやJavaScript、CentOSなどの基礎的な部分の演習を行い、その後の約2か月でチーム開発演習を行いました。

基礎研修

 本研修のメインであるチーム開発演習を円滑に進めるために、以下のような基礎研修を行いました。

  • Python基礎演習
    Pythonの基礎的なプログラムから、APIの利用方法など応用的なプログラム開発

  • JavaScript基礎演習
    JavaScriptやjQuery、DOMなどの基礎的なプログラム開発

  • CentOS輪講
    CentOSを用いたLinuxの基礎的な使い方やWebサーバ、証明書の発行などのインフラ構築技術の習得

  • Webアプリケーション開発演習
    PythonのWebアプリケーションフレームワークであるDjangoを用いた日報管理Webアプリケーションの開発

  • その他

    • 参考書の提供(リーダブルコード、スクラム)
    • 朝会や週次ミーティングの実施
    • 各種講義
      • AWS上へのデプロイ
      • テストコードの書き方
      • GitHubの使用方法

チーム開発演習

開発要件

テーマ:「TIS新人営業が、打ち合わせのために使うサービスの開発」

  • 開発に必要な環境(ツールやインフラ)の選定、準備も新人が行う
  • 開発はスクラムで行う
  • Pythonで実装する
  • Cloud環境上で動作させること
  • インターネットから利用可能であること

スケジュール

開発前半(6/6~7/20)

  • 営業の方へのヒアリング、課題解決のアイデア、開発アプリの決定
  • 開発スケジュールの決定、各種機能開発
  • 中間成果発表

開発後半(7/20~8/5)

  • Pull Requestの送受信
  • 機能の追加、修正
  • 最終成果発表

開発したアプリケーション「ケロたん」

対象ユーザの背景

 新人営業の方にヒアリングした結果、抱えている課題の一つとして客先訪問の準備に時間がかかるという現状が浮き彫りとなりました。
 準備に時間がかかる原因としては「客先訪問に必要な情報の収集に定まった決まりがない」「高機能な営業向けアプリはあるものの、新人営業にとって余分な機能が多く、その機能を使いこなすまでに時間がかかる」という二つの結論に至りました。

ケロたんの目的

 そこで私たちは新人営業が客先訪問に最も必要な情報を、簡単な入力で取得することができるアプリ「ケロたん」を開発しました。ケロたんを使うことによって客先訪問の準備にかかる時間を削減し、その時間を新人営業の他のタスクに割り当ててもらうことが目的となっています。


ケロたんのトップ画面

利用イメージ図

 ケロたんの利用イメージ図は以下となります。出発地と目的地に会社名もしくは住所を入力することで、ケロたん内部でweb上から各情報を自動的に取得し、結果をユーザに出力します。


ケロたんの動作イメージ

ケロたんの機能

 ケロたんの主要な機能は以下の3つになります。

経路検索

 経路ボタンを選択すると、客先までの最適な経路案内(経由地と上下車の時間、移動手段)と移動にかかる総時間と料金が表示されます。また、画面右側のマップには出発地から目的地までの経路が表示されます。


ケロたんの経路検索結果の表示画面

会社概要

 会社概要ボタンを選択すると、目的地に設定した客先の会社概要が表示されます。


ケロたんの会社概要表示画面

関連ニュースの表示

 ニュースボタンを選択すると、目的地に設定した客先と関連のあるニュースの掲載された日付と概要を表示します。また、各ニュースのタイトルをクリックすると掲載元のサイトを表示します。


ケロたんの関連ニュース表示画面

開発プロセス

私たちのチーム開発は、以下の図の様に進めました。


開発プロセス

  • 要件定義
    知り合いの新人営業の方にアポイントを取り、ヒアリング調査を行いました。そこで得たお話を基に、課題と原因の洗い出し、提案アプリの企画を行いました。

  • 機能開発
    要件定義で定まったアプリケーションの機能・コンセプトに基づき、アプリの開発を行いました。

  • 中間成果報告会
    その時点で完成していたアプリケーションについて、部内で発表を行い、フィードバックを頂きました。

  • Pull Request
    GLEANチームのアプリケーションに対するGitHubのPull Request作成と、GLEANチームから頂いたPull Requestのマージを行いました。

  • 追加機能の開発とバグ修正
    中間成果報告会でのフィードバックの検討・反映、GLEANチームがPull Requestで実装した機能の調整などを行いました。

  • 最終成果報告会
    最終的に完成したアプリケーションと、開発プロセス全体を通した振り返りの発表を行いました。

問題点

 私たちのチームは、要件定義で大きな遅れを出してしまいました。

 当初の予定では、要件定義を5日間(6/6~6/10)で終えるはずでしたが、実績は14日間(6/6~6/23)かかってしまいました。この9日間の遅れにより、後の機能開発に22日間を割く所を、13日間しか割くことができず、機能の絞り込み・効率的な開発が求められることとなりました。

工夫点

 この問題に対し、私たちのチームは以下2つのことを特に意識的に行いました。

言語での作業分担

 私たちのアプリケーションで用いる言語は、サーバサイドの機能はPython、フロントサイドの機能はHTML, CSS, JavaScriptであり、サーバサイド・フロントサイドそれぞれの機能を言語によってほぼ完全に切り分けることができました。
そのため、川崎がサーバサイドを、鷲野がフロントサイドをすべて担当する、といったように作業分担を行いました。担当の理由は、川崎は元々Pythonでの開発経験があり、鷲野はJavaScriptに対して関心があったためです。
 これによって、技術検証に必要な時間を抑えることができ、開発に充てることができる時間を増やすことができました。
一方で、お互い相手の言語・技術については理解が浅い部分もあり、「研修」という観点において学習効果の低いやり方になってしまいました。

スクラム開発

 私たちの開発プロセスは、一部にスクラム開発を取り入れて行いました。朝、昼、夕会を定期的に行い、お互いの進捗と問題、次にやることの報告を行いました。また、アプリケーションに必須機能を洗い出し、ガントチャートで管理したスケジュール表を作成し、常に見える所に置いておきました。これによって、お互いの認識のすり合わせや、潜在的な問題点の発見、また、開発機能の優先順位付けと適切なリスケを自然に行うことができました。
 一方で、スクラム開発の方法をしっかりと調べて実践できていなかった部分もあります。そのため、スクラム開発を活かしきれず、効果を強く実感できませんでした。

獲得技術

今回のチーム開発演習を通して、私たちのチームでは以下の技術を獲得しました。

開発 Django, Python, HTML, CSS, JavaScript
デプロイ AWS EC2, Apache, Linux全般
プロジェクト管理 Git, GitHub(readme, wiki, Issue, Milestone, Pull Request)
開発スタイル スクラム開発、スケジューリング

振り返り

チーム振り返り

 私たちのチーム開発での良かった点として、お互いのチーム意識が強かったことがあります。先に挙げたスクラムでの取り組みだけでなく、相手が詰まっていると感じたら積極的に話しかけたり、帰路を共にし、お互いの想いをぶつけたりもしていました。そうすることで、チームとして1つのアプリケーションを開発するという意識が醸成され、要件定義以降の意思決定は非常にスムーズでした。
 一方で私たちのチーム開発での最大の反省点としては、要件定義に9日間の遅れを出してしまったことです。マインドマップやなぜなぜ分析など、アイデア出しのツールを正しく用い、課題の原因に対する深掘りをもっと行うべきでした。また、開発が効率的でなかった点も挙げられます。作業分担やスクラム開発で効率化を心掛けていた一方で、「とりあえず」で作業を進めてしまい、手戻りやリファクタリングなどに大きな時間を浪費してしまいました。とりあえずで作業を進めない、問題を先送りにして放置しないことの重要性を学べました。

川崎振り返り

 技術面での大きな成長として、Webアプリケーションの開発技術、特にAPサーバの構築やWebサーバへのデプロイなど、サーバサイドの技術が身についたことです。反省点は、HTML・CSS・JavaScriptなどフロントサイドの技術があまり習得できなかったことです。
 開発プロセス面での成長として、自身の開発のプロセスを適切に遂行するスキルの不足を知れたことが、大きな学びです。タスク管理、スケジューリング、工数の見積もりなど、自身の課題が多く浮き彫りになったので、今後意識して改善していきたいです。反省点として、アプリケーションの開発を終わらせることに集中し、開発を行う上での新しい工夫や取り組みなどを試してみるということを怠ってしまったことです。今回取り組み切れなかったスクラム開発やリーダブルコード、集中力を保つための工夫、スケジューリングの工夫など、今後試していこうと思います。

鷲野振り返り

 今回のチーム開発演習を通して、これまで触れることが無かった開発工程の一連の流れや、Python、JavaScriptなどの言語など、多くのことを体験することができました。この時に意識したことは、知らない言語や技術を触る際には次々進もうとせずに一度立ち止まり、実装した機能や先輩方に教えていただいた知識に対して復習することです。復習し反復することで、少しずつですが確実に技術や知識を獲得できたと実感しています。
 私たちのチームではアイデア出しに時間がかかったため、言語によって開発機能を分割することで開発期間の短縮を図りました。そのため、お互いの作業内容をほとんど理解していない状態となりました。機能を開発することに集中するあまり、研修として必要なことは何かを十分理解していなかったことが原因だと思います。今後は何となくで開発を進めようとせず、必要なことは何かを整理して作業に取り掛かりたいと思います。

リンク

今回開発した「ケロたん」のGitHubリポジトリには以下のURLから移動することができます。
https://github.com/tech-sketch/Project_Kerotan_twei

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