オールアバウトTech Blog

株式会社オールアバウトのエンジニアブログです。

8年前の記事入稿システムをリニューアル!プロジェクトの進め方

はじめまして。tanakaと申します。 メディア開発部という部署で、主にガイドが記事を入稿するCMSのリニューアルプロジェクトでプロジェクトマネージャーを担当しています。 さて、今回はそのシステムを7月にリリースしたので、どのようなシステムで、どのように開発していたかについて紹介いたします。

プロジェクト概要

どのようなシステムか

まずはそもそもどのようなシステムなのかについて説明します。

allabout.co.jp

こちら、All Aboutです。 All Aboutの記事はガイドと呼ばれる専門家の人が執筆してます。

メインの機能はAll Aboutの記事をガイドが入稿することですが、他にも以下のような機能があります。

  • ガイドへ記事の発注する
  • ガイドが発注に紐付いた記事を納品する
  • 納品された記事を確認し検収する
  • ガイドに応募された方の審査を管理する
  • etc.

もちろん、All Aboutは10年以上運用されているため、以前から同様のシステムはありました。 今回はそのシステムのリビルドとなります。

なぜリビルドする必要があったのか

リビルドした理由については以下となります。

SQLServerの保守期限

以前のシステムでは、データをオンプレミスのSQL Serverに保存していました。 しかし、サーバの保守期限が迫っていたため脱SQL Serverを行う必要があり、それがこのプロジェクトが始まった大きな理由となります。

今回のリビルドで記事等のデータはSQL ServerからMySQLへ保存するようになりました。

システムの耐用年数

リニューアル前のシステムは8年前に作成され、改修を重ね運用をしておりましたが、ミドルウェアフレームワークバージョンアップのコスト面も考えると耐用年数を超えたと考えておりました。 以前のシステムはZend Frameworkを使っていましたが、社内に精通しているエンジニアが減ってしまったという理由もあります。

使われている技術

新しいCMSはオールアバウトでよく使われるLaravelを使って開発を行いました。 Laravelについてや、構成については以下の記事を参照して下さい。

allabout-tech.hatenablog.com

また、JavaScriptライブラリReactも導入しました。Reactは弊社では始めての導入になりましたが、導入にあたり実装前にReactに精通しているエンジニアにハンズオンを行ってもらいメンバー全員が実装出来るようにし対応しました。

プロジェクト進め方

ここからはどのように開発を進めていったかについて説明します。

プロジェクトメンバー

開発は最大5名で行っていました。 この体制は長い期間で維持することができました。

タスク管理

タスク管理はTrelloで行っていました。

trello.com

リリースまでに色々と変更していますが、縦のプロセスは以下のようにしています。

  • Draft
  • Backlog
  • Todo
  • Doing
  • InReview
  • Done

Draftはプロダクト・バックログに当たります。他は一般的なカンバン管理だと思いますので説明は割愛します。

なおタスクの追加は誰でも出来るようにしていました。

スクラム開発

開発はスクラム開発で、1週間をスプリントとして下記を実施していました。

  • プランニング
    • スプリントの初日に実施
    • そのスプリントで実施するタスクの決定(DraftにあるタスクをBacklogに移動)
  • デイリースクラム
    • 毎日夕会を実施
    • 進捗の確認(Trelloのカード移動)
    • 相談や困ったこと、学んだことの共有
    • Draftに追加したタスクの共有
  • レビュー
    • スプリントの最終日に実施
    • そのスプリントで実施した内容の最終確認
  • 振り返り
    • スプリントの最終日に実施
    • Keep、Probrem、Tryでの振り返り

また、他にも以下のようなルールを設けていました。

  • Slackで都度、何か困ったことなどメンバーに気軽に共有、相談
  • 30分悩んでもわからないことは聞く(長時間手が止まらないようにしていました)

大変だったこと

上記の施策によって開発はどんどん進んでいきましたが、最も実装が進んでいたときプルリクエストが1日平均8~10件だったので、実装だけではなくコードレビューにかかる時間も多くなってしまいました。

こちらについてはレビューの際に以下のようなテンプレートを使って、確認すべき内容を示すことでレビュアーの負担をなるべく下げるようにし対応していました。

# 概要 (必須)
+ 
# 対応 (必須)
+ 
# その他対応 (任意)
+ 
# テスト (必須)
## URL (画面で確認できる場合は必須)
+ 
## Done (必須)
+ JSエラー無し。
+ アプリエラー無し。
+ 今回の実装分がphpcsに引っかかっていない。
+ ユニットテストが通る。
+ ユニットテストでDBアクセスしていない。
+ 
## ID / Pass (任意)
+ 無し。
# 不安なところ (任意)
+ 
# 備考 (任意)
+ 
# 関連プルリクエストURL (任意)
+  

また、SQL ServerをRDSに移管したことで保守期限が延び、CMSのUI、UXを変更することになりました。 それまでは、より一般的になるようなUI、UXを意識して作っていましたが、リビルド前のシステムはかなりの長期間運用されていたため、一般的ではないけれど今までのシステムを使っていたガイドや社員が「慣れているから」という理由で、リビルド前のUI、UXに近づける修正を行いました。

複数の人が使うシステムの使いやすさを実現する難しさを感じました。

今後の対応

リリース後、UI、UXだけではなく、改修や新規機能の要望が続々とあがってきます。

もちろん既に、追加開発のプロジェクトも進めており、これまでと同様に、1週間をスプリントとしたスクラム開発で進めております。週ごとにリリースを行っており、そのたびにシステムがより良くなっているなと実感できています。

最後に

今回リビルドしたシステムは、他のシステムも絡んでいるため、実装期間が長期になりましたが、リリース後は大きな問題も無く運用出来ており私自身ほっとしています。

今後も開発は続きますが、使っている方々のフィードバックがダイレクトに来るので、スピード感をもって対応していけるよう、開発チームのレベルアップを図っていきたいです。