ハッカソン合宿制作記②|レコメンド機能のあるニュースサイトを作成しました!

こんにちは!
ニフティグループでは新人のスキルアップを目的とした「エンジニア定例」という勉強会を行っています。
その集大成として先日2泊3日のハッカソン合宿に行ってきました。
こちらの取り組みについては「今年もハッカソン合宿@土善旅館に行ってきました!」をご覧ください

この記事では私たちのチームで作成したニュースサイト「Strongest News」の製作記をご紹介させていただきます。



メンバー紹介

  • 中村

    • DB設計と機械学習ロジックを担当
    • 業務ではニフティニュースの開発・運用を担当
  • 齋藤

    • フロントやログイン周りを担当
    • 業務ではニフティ不動産などの開発・運用を担当
  • 三枝木

    • AWSでの立ち上げを担当
    • 業務ではメールストレージサーバーの保守・運用を担当
  • カン

    • ユーザー向けの詳細を担当
    • 業務ではNifMoとぷららひかりTVなどの開発・運用を担当

作ったプロダクトについて

機械学習を用いたレコメンド機能のあるニュースまとめサイト「Strongest News」を作成しました!
類似ニュースを自動表示する「記事レコメンド」と、会員ユーザーには行動履歴からおすすめニュースを表示する「パーソナライズドレコメンド」を提供します。
また、コメント機能も付いているためユーザー同士でニュースに意見を投稿することができます。

サーバーサイドにLaravelを使い、フロントエンドはBootStrapとフリーのテンプレートを用いて時間のない中でもある程度のデザインは担保出来るよう工夫しました。

また今回のハッカソン用にAWS環境を用意していただけたので、実際にEC2に載せて社内公開することができました。


仕組み

レコメンド機能については、開発期間が2日という非常に短期間であったため、比較的単純な仕組みを導入しました。

まず、関連記事を結びつけるために、それぞれの記事から単語を抽出します。

そのときに、記事全体の単語と比較し、その記事の特徴となっている単語の重要度をあげるように重み付けしてあげます。(TF-IDF法

その特徴となっている単語が含まれている記事同士は関連度が高いと判断し、関連記事を結びつけます。



ユーザーに対するレコメンドでも、ユーザーが好む単語は同じであると仮定し、最近の閲覧履歴から関連する記事をレコメンドするようにしました。

また、単純に関連した記事を出すようにするだけでは同じ記事を巡回してしまうことがあるため、ランダムに記事を出す欄を数件設けることで、ほかのジャンルへの動線を生み出せるようにもしています。

合宿を通じた学び

2泊3日のハッカソン合宿を通し様々な成長をすることができました。

私たちのチームでは初日に開発の進め方に苦戦する事が多かったのですが、二日目からはお互いの技術スタックや特性を把握し順調に進めていくことができました。

実際、技術スタックの異なるメンバーで開発を行う事は役割分担などで難しいと感じましたが最終的に1つのプロダクトを作り上げることができました!

今回のプロダクトで使用した技術は、基本的なものばかりで高度な技術を使っている訳ではありません。
それでもアイディア次第で短期間でも良いプロダクトを作ることができるという事を学びました。

何よりエンジニアとして「一日中開発ができる」という事はとても楽しく、改めて私は開発は好きなんだという事を実感しました。

さいごに

今回のハッカソン合宿を通し、様々なことを学ぶことができました。
今回の学びを普段の業務にも活かして開発ができるように今後も取り組んでいきたいと思います。