MERYのシステム概要

MERYでは一日におよそ80本の記事を配信しています。記事が配信されユーザーに届くまでには、様々なステップがあります。そして、それらに対応する専用のアプリケーションが存在します。今回は、現時点でのそれらステップ毎のアプリケーションの概要、そして、課題と解決の方針を説明します。

記事がユーザーに届くまでのステップとアプリケーション

記事が配信されユーザーに届くまでには、記事作成、校閲および編集部によるチェック、許諾の取得、編成のステップがあります。それぞれのステップで担当者は異なります。そして、担当者が利用するアプリケーションも異なります。
MERYのシステム全体のアーキテクチャの概要と記事が配信されるまでの流れ、各アプリケーションの利用者を、図1に示します。実際には、アプリケーションやミドルウェアはもっと多く、また、外部サービスも利用しており、それらの関連もより複雑です。
図1 記事がユーザーに届くまでに利用されるアプリケーション

記事の作成

MERYの公認ライターおよび編集部が記事を作成します。記事作成のためのアプリケーションは通称『edit』と呼ばれています。editでは、記事が属するカテゴリの選択のような記事のメタ情報の設定や、見出しや画像の追加のような記事の内容の編集ができます。また、校閲および編集部によるチェックの結果を確認する画面も存在します。記事の作成が完了し『入稿』すると次のステップに進みます。
editの歴史は古く、その始まりはMERYの始まりと同じです。サービスの成長やビジネスの大きな変化と共に、様々な改修が行われてきました。結果として、使いづらいところが多々存在していたり、メンテナンス性にかけたりしています。そのため、リニューアルを行うことを決断しました。現在、そのプロジェクトが進行しています。

校閲および編集部によるチェック

入稿された記事は、校閲および編集部によるチェックが行われます。誤字脱字はもとより、事実かどうか、モラルに反していないか、法に反していないかなど、世の中に公開して良いかのチェックが行われます。もちろん、より良い記事にするためのチェックも行われます。これらの結果はライターに伝えられる必要があります。また、編集部によるチェックが終わると、記事は『差し戻し』『編集チェック完了』などのステータスになります。これらの記事のステータスも管理される必要があります。チェックの結果の伝達や記事のステータス管理を扱うのが通称『revision』と呼ばれるアプリケーションです。なお、記事のステータス管理には、課題&プロジェクト追跡ソフトウェアであるJIRAも併用しています。記事のステータスが『編集チェック完了』になると次のステップに進みます。

許諾の取得

MERYの記事に含まれる画像や動画等のコンテンツは、全て権利者の方の許諾を得ています。このステップでは、個人の方が権利者であることの多いInstagramやYouTube等の許諾を、担当者が権利者に直接コミュニケーションをとって取得します。一方、それら以外の他社サービスのコンテンツは、そのサービスを提供している企業と契約を結んだ上で包括的に使用しています。そのため、契約を結んでいないサービスのコンテンツは、editで追加することができないようになっています。
Instagramのコンテンツの許諾数は非常に膨大であり、それらの許諾の状態は適切に管理される必要があります。そのためのアプリケーションは通称『consent』と呼ばれています。

編成

記事の配信は、カテゴリ毎の配信数のバランスや配信された時の記事の並び順などを考慮して行われます。編成担当者は、全てのチェックが完了していて、記事内のコンテンツ全ての許諾が取れている状態の記事の配信設定を行います。そのような編成を行うためのアプリケーションは通称『organizer』と呼ばれています。organizerでは、記事の配信設定だけでなく、パネルと呼ばれる表示枠の設定やピックアップと呼ばれる特別なタブの設定なども行います。
記事の配信は、その設定に基づき、バッチ処理とワーカの処理を組み合わせて行われています。図1中の『巨大なワーカ』には、記事を公開するための処理も含まれており、バッチ処理によりその処理のエンキューを行っています。

記事の配信

MERYの記事は、iOSアプリ、Androidアプリ、Webサイトを通して閲覧することができます。iOSアプリおよびAndroidアプリのAPI用のアプリケーションとWeb用のアプリケーションがそれぞれあります。また、MERYには『BOX』と呼ばれる機能があります。この機能のために内部で利用している『box』と呼ばれるAPIがあり、記事配信の際にも利用されています。BOXに関してはMERYの記事、『LOVEした記事や画像の整理してみない?自分の“好き”を詰め込んだBOXの作り方』を、ぜひご覧ください。

現在の課題と解決方針

現在の課題

図1に示したように、MERYにはシステム全体が利用しているDBが存在します。そして、そのDBの設計は、現状にそぐわないものとなっています。これが、現在の課題です。また、結果として、
  • 同様のロジックが複数のアプリケーションに散りばめられており、開発・運用・保守のコストが増加している
  • 業務フローのちょっとした変化にも柔軟に対応できず改善が進まない
  • エンジニアがストレスをかかえる
という問題が発生しています。

解決方針

システム全体が現状に即した形になるように、システム全体を作り直していきたいと考えています。
最終的にはDBの構造の変更も必要です。しかし、複数のアプリケーションとのつながりがある現在の状態での変更は、非常に難しいと考えています。そのため、まずはロジックを集約できる内部的なAPIを作成し、各アプリケーションとDBのつながりをなくしていきます。

まとめ

MERYのシステムの概要や記事がユーザーに届くまでのステップ、現在の課題と解決方針を説明しました。
editの改修など、現在進行中のプロジェクトもあり、このブログの中でも、紹介できたらと思っています。

※この記事は『INSIDE MERY』の第1章を一部再編集したものになります。

zoo

zoo

    マネージャー。毎週水曜日16時はCoffee Time。

    トップへ戻る