Fusicってなんしようと?What is Fusic doing?

2018/12/25 OJTレポート「Koper(プロジェクト運営サポート・知見共有システム)のご紹介」#川野・ジホレポ

2018年度新卒入社の川野 達郎チェ ジホが、当社のOJTで作成した社内システムをご紹介します。


※Fusicでは、エンジニアの新入社員に対し、約半年間の教育制度を導入しています。

 その期間のうち数ヶ月間(今年は5ヶ月間)は、エンジニアとしての技術力向上や、

 一人でクライアントとやり取りができるようになることを目的とし、OJTを実施しています。


================================================

【システム名】
Koper(プロジェクト運営サポート・知見共有システム)ヨミ:コペル

【システム種別】
業務系システム





【セールスポイント】
①プロジェクト進行中でも随時状況の確認や振り返りを行うことができるため、より円滑にプロジェクト運営ができる。
②各プロジェクトの知見をためることができるので、次のプロジェクトへ有効活用ができる。
③slackと連携することで、振り返り内容に「イイね」やコメントがあった場合、通知が来るのですぐに気付ける。


Koperは、もともと社内システムとしてあった「反省堂」を改善・強化したシステムです。
「反省堂」とは、プロジェクト全体の振返りを行い、良い点・悪い点を社内に共有するシステムです。
しかし、反省堂では以下のような課題がありました。

・プロジェクト終了時に反省を行うように作られているため、進行中に軌道修正を行いたくても機会がない。
・反省して終わりであるため、終了したプロジェクトの良い点・反省点を次に上手く活かせていない。
・他の人が反省内容を見ても、経過を知らないためよく分からない。
・「反省」というワードからネガティブなイメージがある。

上記の課題を克服すべく、Koperはプロジェクトの開始から終了まで、
随時プロジェクト運営のサポートができるようにし、運営に関する知見を共有できるように開発しました。


主な機能は以下です。


■ KPT(Keep, Problem, Try)を用いたプロジェクトの振返り機能
「継続すべき良い点・改善すべき点・挑戦すること」を常に挙げておくことで、
 状況を把握でき、良い実行のサイクルを生みだすことができます。




■タイムライン投稿/slack通知機能
振り返りを登録すると、その内容がタイムラインへ投稿され、イイねやコメントができます。
また、コメントされると、そのプロジェクトのslackチャンネルに通知が飛ぶようになっています。







■総振り返り共有機能
プロジェクト終了時に全体をとおしての総振り返りを行い、どのようなプロジェクトだったかを社内に共有できます。




■前回の施策の引継ぎ機能
新プロジェクト開始時、以前行った良い施策(Keep, Try)を引き継ぐことができます。




【開発期間】
5ヶ月

【技術】
CakePHP3、PHP、JavaScript、jQuery、PostgreSQL、Slack Web API


ジホの感想


【難しかったこと】
そもそも全体のスケジュールを立てることが難しかったです。今までシステムリリースに向けて、具体的なスケジュールを立てたり、タスク管理を行う経験がほとんどなかったため、途中リスケすることが何度かありました。それらを経験し、GitHubのissueやbacklogを使い始めてからは、課題を少しずつ解決できるようになりました。
また、デザインに関しても苦労しました。最初のデザインは自分でも見た目がよくなかったと思います。
指摘をもらってからは、使いやすくシンプルなデザインを心掛けました。
そして、最も大変だったのは「使用者の立場で考えること」です。システム構築中はスケジュールもあり、とにかく作ることだけに夢中になってしまうことが度々ありました。しかし、実際に使うのは自分ではありません。使用者が使いやすく、使用者の問題を解決できるようになっていないと全く意味がないのだと、今回学びました。

【頑張ったこと】
今回は同期の川野とともに1つのシステムを構築するチーム開発だったため、スケジュールを意識したタスクの振り分けを頑張りました。時にはアクシデントが起こり、決めていたタスクをどちらかが対応できなかった際も柔軟に対応することができました。開発時の意思決定は、両方が意見を出して、主張と根拠が明確かつ適切な方を採用しました。2人の意見が衝突した場合には、目的を見直し、プロジェクトリーダー(川野)が決めた方を採用し、開発を進めました。
また、CakePHP3以外は使ったことがなかったのですが、これを機に、プラグインやAPIも使えるよう努力しました。

【OJTを通して学んだこと】
今回のOJTを経験することで、様々なプラグインやAPIを使えるようになりました。今後、実際のプロジェクトに参加した際も活かしていこうと思います。また、仕様定義・要件定義をする中で、お客様からより具体的な情報を引き出すための質問内容や質問の仕方を学ぶことができました。開発に関しては、チューターからのコードレビューをとおして、自分以外の人も読みやすいようなコードを書くということを今回のOJTで学ぶことができました。引き続き、心掛けていこうと思います。


川野の感想


【難しかったこと】

デザインが難しかったです。最初にデザインを決め、それをベースに機能の実装などを進めていました。しかし、開発の中盤以降、使用者から「見にくい」、「UXが良くない」などの具体的なフィードバックをもらいました。そこからいろいろなシステムのデザイン設計を参考にし、見やすさ、使いやすさを改善していきました。


【頑張ったこと】

常に質問の仕方を工夫しました。当然ながら、自分たちだけで開発を進めていける技術はまだないため、どのように聞けば欲しい答えを引き出せるかを考えて質問しました。またその過程で、どの部分が分かっていないのか言語化する能力を身につけることができました。


【OJTを通して学んだこと】

この機能がなぜ必要なのか、何を解決したいのか、ということを常に意識しておく重要性を学びました。実際、開発をしていると機能を作ることだけに集中してしまったこともあり、後々そこまで時間を割くべきだったのかと疑問を抱いてしまうこともありました。同時に、その経験からお客様が「何を・なぜ欲しいのか」を設計の段階でいかに深掘りできるかが重要であると学びました。