Tech Sketch Bucket of Technical Chips by TIS Inc.

気軽に質問ができて答えが返ってくるシステム .Chain() の企画・設計・開発

Pocket

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

研修の内容

研修期間はおよそ二か月半でした。研修内容は、初めの半月は個人でPythonの開発演習を行い、残りの二か月はPythonを使ったWebアプリケーションをチームで開発しました。

Pythonの開発演習(個人)

  • Pythonの基礎プログラム開発
  • PythonのWebアプリケーションフレームワークであるDjangoを用いた日報アプリケーションの開発

チーム開発演習(二人一チーム)

「チームでの開発を体験し必要な知識・技術を身につける」と「自分たちで要件を定義し形にする力を身につける」を目的として、新人が二人でチームとなり、『リモートで働く仲間とコミュニケーションを行うのに有用なwebサービス』というテーマで、研修を行いました。

  • 提案書の作成から、設計・実装、テスト、公開、成果発表までを行う
  • 開発はスクラムで進める
  • 開発に必要な環境(ツール、インフラ等)の選定、準備も新人で行う
  • 疑似的な運用・保守の実践として他チームのアプリケーションに対してバグ修正や機能追加を行う
  • 各チームのマネジメントはチームメンバーのOJT担当者がサポートする

.Chain()

私たちはこの研修でwabアプリケーション『.Chain()』を作成しました。リモートで働く場合、様々な場面でコミュニケーションに関する問題が発生します。その1つとして、相手の顔が見えないため質問しづらい、また、質問しても答えが返ってこないという問題が発生します。そこで、.Chain()は「気軽に質問ができて答えが返ってくるシステム」というコンセプトで開発しました。

.Chain()には以下の特徴があります。

1対1

掲示板などに質問を投稿すると答えが返ってこない場合があります。これは誰かが返信するだろうと考えてしまうことや、他にも多くの投稿があり質問が見逃されてしまうことが原因と考えました。そこで、.Chain()では質問者と回答者が1対1になるようにすることでこれらの問題を回避しました。

コンピュータによる回答者選択

回答者はコンピュータにより自動的に選択されます。このため、質問者は相手の状況を気にすることなく質問を作成できます。
dot_chain_auto

自動/手動のパス機能

選択された回答者が忙しい、分からないなどの理由で回答できないことが考えられます。このため.Chain()では質問をパスすることができます。このパス機能は回答者が自分でパスするだけでなく、質問者が質問作成時に設定した時間で自動的にパスされます。パスされた質問はコンピュータが次の回答者を選定します。
図2

ロボットによる自動返信

ユーザの中にロボットが存在します。このロボットは質問の内容を解析して、回答を生成するもので、質問者は質問作成時にロボットの回答を受けるか選択することができます。
図3

スキルマップの自動作成

.Chain()は質問と回答の情報から、ユーザ間にどのようなつながりがあるのか、どのユーザがどういった知識・技術を持っているのかを分析しています。そして、これをスキルマップとして表示することができます。
network_2

動作イメージ

action_flow

技術獲得

研修を通して以下のような技術を獲得しました。

設計 DB設計(E-R図), UI/UX設計
開発 【バックエンド】Django, Python, PostgreSQL 【フロントエンド】JavaScript, jQuery, CSS
テスト テストコード作成方法, リファクタリング
デプロイ AWS EC2, Apache, Supervisor, デプロイ方法
プロジェクト管理 Git/Github活用(Gitコマンド, Wiki, Readme, Pull request, Issue)
開発スタイル アジャイル(スクラム)

 

また研修中は先輩方のさまざまな内容の講義がありました。内容は以下の通りです。
UI/UX、MVCモデリング、テストコードの書き方、リーダブルコード、クラウド基礎知識、CI、Gitの使い方

振り返り

チーム振り返り

今回の研修で私たちのチームは遅れのない開発をすることができました。これは細かい単位で計画を立て、また、早い段階でリスケを行い、場合によっては見切りをつけるようにしていたためです。

一方で、もっと機能を加えられたのではないかと考えています。開発の期間はバージョン1.0公開まで約1ヶ月、その後、約1ヶ月でバージョン1.1公開というスケジュールでした。当初はこれは短いと感じていましたが、研修が進むにつれ開発スピードが上がり、余裕もできるようになりました。そのため、アイディアを練る時間をもっと設けるべきであったと思います。

古賀振り返り

研修では特に、設計・開発以外の工程の大切さを学びました。学生時代は開発者もユーザも自分だけということが多く設計・開発以外の重要性はあまり意識していませんでした。今回の研修で提案書作成からReadme/Wiki作成、成果報告を通じて、サービスの価値は単にその機能的な面だけではなく、ユーザへ具体的な利用シーンやそのメリットをわかりやすく提案したり、他の開発者に開発情報を提供することも含まれるということを学ぶことが出来ました。

課題としては、開発期間の短さから、実装することを第一に考えてしまった場面があるということです。サービスの製作目的や実現したいユーザ体験を常に考えた開発を行っていけるようになりたいです。

八代振り返り

研修はPython、Djagnoといった今まであまり使ってこなかったものを使用しての開発でした。そのため、開発期間が短かったこともあり、言語・環境の使い方や作法を理解しないまま作り始めてしまいました。この結果、序盤のコードは無駄が多く、後々、修正する必要がありました。
一方、開発が進むにつれ使用している言語やツールに慣れスムーズに扱えるようになったと感じました。この研修を通して、開発に必要な知識・技術を身に着け、成長できたのではないかと思います。

リンク

.Chain()のGithubリポジトリ https://github.com/koga-yatsushiro/one_month

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