LIFULL Creators Blog

LIFULL Creators Blogとは、株式会社LIFULLの社員が記事を共有するブログです。自分の役立つ経験や知識を広めることで世界をもっとFULLにしていきます。

Apache Solr 8.xへのバージョンアップに苦戦したNegative Boostの廃止対応の話

こんにちは。検索エンジンチームの加藤 宏脩です。

先日、検索エンジンチームでLIFULLが利用しているSolrのバージョンを7.xから8.xにバージョンアップしました。 今回のSolrバージョンアップから自社で制作した性能テスト、回帰テストツールを導入したおかげか 大きい障害はなく無事にリリースできました。 リリース後は検索精度、パフォーマンスも向上しておりほっとしているところです。

8.xへの移行時はいくつか問題がありましたが、中でもbqパラメータのNegative Boostの廃止対応がたいへんでした。 Negative Boostの廃止対応が必要なことはバージョンアップ時のテスト中に気付き、簡単な対応だと思っていたのですが 並び順を維持させようとすると速度劣化が激しくなったりと対応がかなり難航するということがありました。 この記事では、Solr 8.xへのバージョンアップ作業の障害となったNegative Boostの廃止をどのように 対応したのか話をさせていただければと思います。

続きを読む

企画の裏話🤫 LINEで新着物件通知を受け取る機能

祝LINE新着物件通知リリース!! PJ進行に沿って話す、プロジェクトマネージャーとプロダクトマネージャーとしてやったこと LIFULL HOME'S事業本部マーケティングコミュニケーション部CRMUリテンションG 千葉礼美


ろーはろー!チバです。

LIFULL HOME'Sのユーザー向けメール配信・LINE配信などのCRMシステムを担う部署に務めています。

今年2月にリリースした「 LINEで新着物件通知を受け取る」機能の担当者です。

 

www.homes.co.jp

 

 

PdM/PjMのスキル発揮に触れながら、

  1. 「LINE新着物件通知」とは?
  2. プロジェクトの立ち上げ
  3. プロジェクトの実行
  4. プロジェクトの終結
  5. PdM/PjMのスキル発揮とキャリア形成

についてスライドにまとめたので、どうぞ、ご笑覧ください💁

 

続きを読む

本番障害からテストのヒントを抽出して活用する

はじめに

みなさんこんにちは。 品質改善推進ユニットQAグループでQAエンジニアをしている飯泉です。
今回はチームで行なっている「本番障害からテストのヒントを抽出して活用する」ための活動について紹介したいと思います。

本番障害からソフトウェアテストのヒントに活かす「シンプルチャーターエレメント」

本番障害レポートからソフトウェアテストのヒントを抽出した観点集を「シンプルチャーターエレメント」と呼んでいます。
本番障害レポートを分析してどのような観点でテストをすれば障害を防ぐことが出来るのかまとめて開発やテストで活用をしています。

本番障害レポートとは

LIFULLでは本番環境でバグが発見された場合に本番障害レポートを作成してバグの解消状況の管理と再発防止策の検討を行っています。

本番障害レポートは以下のようなにまとめております。

  • 障害の影響範囲
  • 障害の概要
  • 障害が発生したサービス・利用者
  • 原因
  • 対策内容
  • 再発防止策
続きを読む

LIFULL HOME'SにおけるSalesforceとLINEの連携

f:id:LIFULL-soneon:20210311121016p:plain
出典:オムニチャネルサービスの実施 単元 | Salesforce Trailhead


いつもお世話になっております。 プロダクトエンジニアリンググループの孫です。 LIFULL HOME'SにおけるSalesforceとLINEの連携について紹介したいと思います。

背景

LINEのLIFULL公式アカウントを使い、簡単な対応はBotで対応し、それ以外はLINEのWebhook API機能を利用し、直接 LIFULL HOME'S 住まいの窓口 とやり取りができるチャット機能を、Salesforceで管理・運用する施策がありました。 ※ 現状このサービスはクローズされています。クローズされた背景については後日、別の記事として記したいと思います。

続きを読む

DB移行プロジェクト、Oracle DatabaseからPostgreSQLへ、技術負債を解消する

こんにちは!テクノロジー本部基盤開発ユニット改善推進グループ所属の王です。

基盤開発ユニットは常にLIFULLの各種サービスが依存する基盤システムの構築と改善のために、いろいろな取り組みをしています。

www.lifull.blog

www.lifull.blog

www.lifull.blog

今回は技術負債の解消の一つである、DB移行プロジェクトの詳細について紹介します。

DB移行プロジェクトとは?

現在LIFULL HOME'Sの各種サービスが依存している中心的なデータベースをOracle DatabaseからPostgreSQLに置き換えることを推進しているプロジェクトです。

背景の詳細は省略しますが、現状のDB運用体制を続けると会社の事業発展のボトルネックとなることが予想されているので、運用コストの削減、開発効率およびパフォーマンス改善の面から移行の必要が出てきています。

続きを読む

社内通貨LIFULL COIN x Slackでピアボーナス

いつもお世話になっております。検索エンジンチームの秀野です。

試験的な取り組みとして、社内通貨LIFULL COINをSlack上で送り合うピアボーナスの仕組みを作ったので、その紹介をします。 検索エンジンの話は1つもでてきません。

LIFULL COINとは

LIFULL COINはトップダウンな評価でなく、お互いをフラットに評価できるプラットフォームとして作られました。

参考にした評価システムとして、日本古来のお天道様や、欧米だとアダム・スミスの公平な観察者、あとアニメのPSYCHO-PASSに出てくるシビュラ・システムなどがあります。 こういった仕組みを通して、会社の社是である「利他主義」ですとか、ガイドラインの可視化・推進を目標としていました。

また、交換する/価値を測る/貯めるといった通貨と同じ特徴を持っています。 そのため、LIFULL COIN Wallet というWebアプリケーションを使って、銀行口座のようにコインを管理できます。

基本機能として、下記のような機能があります。

  • 残高の確認
  • 送金と取引履歴
  • ベーシックインカム(週1)
  • 投げ銭

f:id:LIFULL-hideno:20210321211359p:plain
LIFULL COIN Wallet

続きを読む

コード品質管理について

こんにちは、
アプリケーションエンジニアとして働いてます。キムと申します。
今日はこの最近経験したことの中で、アプリケーションを開発する途中や、リリース後にコードベースを管理する時重要なことの一つ「品質管理」について経験したことを共有したくて記事を準備しました。

背景

去年は新しく配属されたPJでアプリケーションの基盤から作るチャンスを頂きました。
当時、個人的にLintを投入したい思いがあったので、Go言語で最もよく使われていたgolangciというツールの基本的な部分を使えるように設定を行いました。

個人的に Lintを入れたかった理由は、自分の経験の中でコーディングルールが甘い状態が長く続けると、古いコードを読んだり、複数人のメンバーが同じ作業を行う、又はコードレビューをする等、他人のコードを読む時、人によってバラバラの書き方が混在し、場合によっては基本的なタイポイシューがあったりする指摘でレビューが長くなったりする不便がありました。
そこで、Lintを投入してたチームで経験した、Lintが存在する時のメリットを今回参加してるチームメンバーたちにも経験してもらいたかった思いでした。

イメージ1
すごく極端てきなイメージですが、十分にありえるシチュエーションです。

PJはどんどん進んで、最初より多い人数が入っていただきました。みんなどんどん新しい機能を開発し続けましたが、Lintがあったので、コードベースは基本的なルールを守り状態で管理できたと思います。

この時、部内では新しくCode Climateていうツールを利用し、コードのクオリティチェックを行い、より高いクオリティを目指しましょうていう話が出始め、私達のチームもこのツールを投入することを決めました。

これを適用しながら感じたことや、Golangiciと連携してもっと有効活用できる方法やカスタムルール作成方法などを共有したいと思います。

コード品質について

f:id:LIFULL-SeongjooKIM:20210319111052p:plain
アプリケーションは機能が増えるたびコードベースは大きくなります。
レポジトリに対して、コード品質管理はなぜ必要だと思いますか?
サービスがリリースされた後、時間の経過とともに機能はどんどん増えるし、コードベースはどんどん複雑になっていきます。この時コードベースの管理状態をひと目に判断する方法として、コード品質管理を行っていると思います。

アプリケーションは他の商品とは異なって実態が目に見えない商品であり、ということで人の目には見えないところで問題が起きる可能性が存在します。
目に見えるエラーは原因把握も簡単にできるし対応も簡単ですが、目に見えないところから発生したエラーは原因を把握することも大変複雑で、対応するにはより高いコストがかかる可能性も高いです。

この問題は、チーム単位で作業するときにより頻繁に発生します。 同じ機能を作るとしても人によってコードの書き方や、考え方はそれぞれです。そのためコードレビューを行ったり、コードを作成する前にダイアグラムやシークエンス図などを準備して設計レビューをしたりするプロセスが発生してきました。

f:id:LIFULL-SeongjooKIM:20210319120436p:plain
Active DiagramやSequence Diagramなどでお互い認識合わせや、効率的な処理を探してきました。

このプロセスの中、どうすれば少しでもレビューを簡単にできるのか、こういった機能を十分に活用して投入することで、コードはより統一感を持つことになり、時間が過ぎてもある程度ルールで守られ、読む人に安定感を渡します。

Lintチェックでは簡単な英語スペルチェックから、メソッド名の作成方法、変数の書き方をCamelCaseかsnake_caseにするかなどのチェック、1ファイルあたりの行数制限など様々なチェックを行っています。レポジトリに対して、コード品質管理はなぜ必要だと思いますか? サービスがリリースされた後、時間の経過とともに機能はどんどん増えるし、コードベースはどんどん複雑になっていきます。この時コードベースの管理状態をひと目に判断する方法として、コード品質管理を行っていると思います。

Lintチェックでは簡単な英語スペルチェックから、メソッド名の作成方法、変数の書き方をCamelCaseかsnake_caseにするかなどのチェック、1ファイルあたりの行数制限など様々なチェックを行っています。
簡単に言うと人によっていろんな差があります。

## camel case
CamelCase := ""

## snake case
snake_case := ""

if() {
// 処理
}

if()
{
// 処理
}

「こんなことまで気にするの?」と言われるかもしれませんが、こういった細かいところから問題は大きくなっていきます。

今回紹介しようとするレポジトリ管理サービスも同じです。関連サービスには独自、又は有名アルゴリズムによってコードのメンテンナンス状態や、テストカバレッジ状況を見やすく可視化してデータを提供することで該当サービスがどんな状態で管理されてるのかを一目に把握できるように提供してくれます。
上記でも話したように、アプリケーションは実態が目に見えない商品なので、このように可視化してくれるのはすごく役に立ちます。利用者には、該当アプリの信頼性を、関係者には今アプリにはどんな暫定的な問題があり、どんな改善が必要なのかの判断の軸になることもあります。

f:id:LIFULL-SeongjooKIM:20210319123235p:plain
このように、ウェブ上でレポジトリの状態をひと目に見れます。

こういった機能を十分活用し、導入することで、コードはより統一感を持つことができ、時間が過ぎてもある程度ルールに守られ、後々読む人にも安定感を渡します。 もちろん、色々設定が必要とか、今すぐ始まるには面倒なことが多い等、今までのやり方と違うことで大変かもしれませんが、将来を考えたら今時間を使って投入することが確実にメリットがあると思っています。

続きを読む