シンクロ・フード エンジニアブログ

飲食店ドットコムを運営する、株式会社シンクロ・フードの技術ブログです

技術

社内サーバー上のJenkinsジョブからAWS Codeサービス群にデプロイ処理を移行しました

はじめまして、SRE チームの佐藤です。 SREチームの業務として、サービス信頼性向上のためのインフラの構築/改善や保守業務や、開発業務効率向上のためのCI/CD整備等に携わっています。 先日、社内サーバー上のJenkinsジョブで実装されていたビルド/デプロイ…

Railsアプリケーションで使われているモデルをRSpecを使って自動的に機能ごと一覧化する

こんにちは。開発部の竹内です。 飲食店ドットコムやモビマルといったサービスで Ruby on Rails での開発に携わっています。 Railsアプリケーションで使われているモデルをRSpecを使って自動的に機能ごと一覧化する対応を行いましたので、それについてお話し…

Aurora MySQL v3 (MySQL 8.0 互換) へのアップグレード対応

はじめまして、SRE チームの村山です。 今回、弊社の主要サービスで使用している Aurora MySQL のアップグレードを行いましたので、対応内容や得られた知見についてご紹介したいと思います。 背景 弊社で使用している Aurora は、2022 年 10 月に Aurora MyS…

便利な社内アシスタントBotのシステム構成を大公開!

こんにちは、開発部モバイルアプリチームの小関です。 普段は求人飲食店ドットコムのiOS・Androidアプリの開発をしている私ですが、昨年4月に設立された「GPTプロジェクトチーム」にも参加しており、この1年でより一般的にも身近になってきた生成AIをサービ…

Gmail メール送信者のガイドラインに対応した話

はじめまして。開発部の髙木です。 今回は Google が去年新たに制定したメール送信者のガイドラインに対応したので、具体的な対応方法とその結果をご紹介したいと思います。 Google が制定したメール送信者のガイドラインについて詳しく知りたい方は、公式の…

飲食店ドットコムの中で一番負荷の大きかった検索機能にOpenSearchを導入した話

はじめまして。開発部の深野です。 今回は飲食店ドットコムの中のスカウト対象者検索という、サービス内でも一番DB負荷の高かった機能にOpenSearchを導入したので、導入時に検討したことと導入結果を紹介します。 シンクロ・フードのエンジニアブログでは、…

ブランドリニューアルで行ったアプリアイコンの刷新

こんにちは。 モバイルアプリチームの小関です。 弊社が運営する「求人飲食店ドットコム」が行ったサービスブランドリニューアルの一環として、同サービスのモバイルアプリ版のアイコンをリニューアルしました。 本記事では、新しいアイコンデザインの選定過…

OpenSearch の導入による検索システム改善のための認証・認可設計と負荷検証結果

SRE チームの @fohte です。普段は音楽ゲームを嗜んでいます。 シンクロ・フードでは、弊社が提供する求人飲食店ドットコムの求人検索にて、MySQL から OpenSearch を使った全文検索に切り替えました。 本記事では、その OpenSearch を導入する上で障壁とな…

CI を Drone から GitHub Actions に移行しました

こんにちは、シンクロ・フードの大前です。 シンクロ・フードではCIにDroneを使用していましたが、2022年の11月ごろにGitHub Actionsへの移行を完了しました。 今回はその経緯やDroneとの比較についてお話します。 なぜ移行したのか シンクロ・フードでは201…

求人飲食店ドットコムの求人検索に OpenSearch を導入した話

こんにちは、シンクロ・フードの小室です。 シンクロ・フードでは弊社のサービスである求人飲食店ドットコムの求人検索にOpenSearchを導入しました。 どのように導入したか、また、導入した結果を紹介します。 opensearch.org はじめに 今回、求人検索にOpen…

Redash と Google スプレッドシートを連携してデータ活用をちょっとだけ改善した話

こんにちは、シンクロ・フードの越森です。 1年ほど前からMリーグ視聴きっかけで、麻雀に再度はまり毎朝早起きして雀魂で麻雀を打ってから仕事を始めるという健康的な生活を送っています。 今回はシンクロ・フードでのデータ活用周りでちょっとだけ改善した…

Aurora MySQL v2 (MySQL 5.7 互換) へのアップグレードとスムーズなテスト

こんにちは、シンクロ・フードの日下です。 最近は、健康のためラジオ体操を毎日の習慣にできるよう取り組んでいます。 シンクロ・フードでは、2022/10/05 の 05:00 から 08:00 の間、サービス停止を伴うサイトメンテナンスを実施し、Aurora MySQL の v1 (My…

社内独自の Rails のコーディング規約のチェックを自動化した話

こんにちは。サービスチームの寸田です。 今回は、Rails アプリケーション開発における社内独自のコーディング規約のチェックを、Querly と reviewdog によって自動化した話をします。 サービス開発で抱える課題 サービス開発をしていると、社内独自のコーデ…

AWS Organizations で複数の AWS アカウントを良い感じに運用する

SRE チームの @fohte です。 今回は、社内インフラ環境の AWS 移行を進めるにあたって課題となった、AWS の権限分割を目的とした AWS Organizations を用いた複数 AWS アカウントの設計や運用の話をします。 AWS Organizations とは AWS Organizations は、…

リポジトリを横断したコンポーネント(Sass)管理を行う

シンクロ・フードの四之宮です。 前回ブログを書いてからかなり時間が経ってしまいましたが、その間に自作キーボードデビューしました。 Mint60, レツプリ, Helix, Fortitude60, ErgoDash を作りました。 社内の自作キーボード勢もかなりいるので、いずれ社…

Drone CI で手軽に Docker コンテナで並列にジョブをぶん回す環境を構築した

基盤チームで CI 職人をやっている @fohte です。 今回は、Jenkins と独自ジョブスクリプトを用いたお手製 CI/CD 環境に無限のつらみが発生していたため、OSS の CI/CD ツールである Drone を使った CI/CD 環境に移行した話をします。 Drone とは? Drone は…

EC2上のMySQLからAuroraへの移行作業で失敗・想定外だったこと

こんにちは、pubgで全然ドン勝できない、開発部の大久保です。 今回は弊社が調査含め半年ほどかけて実施した、Aurora移行のお話しをしようかと思います。 ただ、Auroraへ移行するための情報自体は世の中に溢れていると思うので、今回は移行する際に失敗した…

依存しあう複数の Git リポジトリを git subtree で monorepo 化する

基盤チームの川井 (@fohte) です。 今回は、monorepo と呼ばれる複数のリポジトリを単一のリポジトリで管理する運用方法の紹介と、実際にその運用に切り替えた話をします。 弊社は GitHub Enterprise を使っており、Git Flow を独自に拡張した master, devel…

Flow で静的型付けしながらフロントエンド開発した話

基盤チームの川井 (@fohte) です。 今回は飲食店リサーチというサービスのフロントエンドを Flow で型付けしながら React で開発して得た知見の話をします。 Flow とは? Flow は Facebook 社が開発した、JavaScript の構文を拡張して静的型解析機能を提供す…

AWS Lambda+API Gateway + S3で格安リアルタイム画像リサイズAPIを作成する

こんにちは、シンクロ・フードの大久保です。 今回は実際に弊社で運用しているAWS Lambdaを使ったリアルタイム画像変換APIについてご紹介したいと思います。 リアルタイム画像変換APIについては、あまり詳しく説明しませんが、画像のサイズ変換等をURLパラメ…

Filelint を作って社内プログラムのコーディングスタイルを矯正した話

はじめまして。今年新卒で入社した基盤チームの川井 (@fohte) です。 最近までは、新卒企画研修として開発した wenu という飲食店向け Web サービスの開発基盤を整えたり、フロントエンド (React) のロジック部分を担当していました。 社内の既存プログラム…

ReactでLINE風チャット画面を実装してみた

シンクロ・フードでフロントエンドの開発を担当している四之宮です。 今回は、前回のブログで宣言した通り、ReactでLINE風チャット画面を実装してみたことについてお話ししたいと思います。 ReactとCSSがある程度わかることが前提になります。 作成した機能…

Compassのsprite-mapによるスプライト画像生成を、spritesmithに移行する

シンクロ・フードでフロントエンドの開発を担当している四之宮です。 最近は、ReactでLine風のやりとり機能を実装しました。 近々こちらについても、ご紹介できたらと思います。 では、本題に入っていきたいと思います。 タイトルには入っていないですが、レ…

Tomcatを高速に起動する

こんにちは、シンクロ・フードの大久保です。最近はAWSのLambdaを触っています。近々、そのネタもブログにしようと思っています。 さて、今回はTomcatの起動高速化のお話しをしようかと思います。Railsもやっていますが、なんだかんだ言って弊社はTomcatとの…

レガシーなフレームワークでcssの圧縮を自動化する

シンクロ・フードでフロントエンドの開発を担当している四之宮です。 前回投稿した「レガシーなフレームワークでcss/javascriptのキャッシュクリアを自動化する」が思っていた以上にアクセスがありましたので、今回はその続編となります。 本記事からでも理…

既に稼働しているWebサービスに対してgulp+webpackでReactをビルドする

こんにちは。エンジニアの大久保です。年の瀬ギリギリにブログを書いてみました。 シンクロ・フードでは、半年くらい前からReactの導入を少しずつやっているのですが、今回はgulpが動作している非SPAサイトに対するReactビルド環境を紹介したいと思います。 …

レガシーなフレームワークでcss/javascriptのキャッシュクリアを自動化する

シンクロ・フードでフロントエンドの開発を担当している四之宮です。 今回は、「cssとjavascriptのキャッシュクリアの自動化に対応していないフレームワークでのキャッシュクリア自動化」についてについてお話したいと思います。 ここでいうキャッシュクリア…

IonicとAngularJSを使ってSPAでサービスを作った話

こんにちは、最近CourseraのMachine Learningコースで機械学習を勉強中の安藤です。 今回は食材発注ツール「PlaceOrders」 の開発についてお話したいと思います。 PlaceOrdersの開発ではIonicを使って初めてSingle Page Application(SPA)を構築したので、そ…

Tomcatのクラスタリング環境でのセッションレプリケーションについて

シンクロ・フードの越森です。 今回は、Tomcatのクラスタリング環境でのセッションレプリケーションについてお話したいと思います。 弊社ではAWS移行したことをきっかけにTomcatのセッションレプリケーションを見直すことになったのですが、中々これといった…

Webサイトの文字コードをShift_JISからUTF-8に変更するときに実施したこと

こんにちは、シンクロ・フードの大久保です。 10年以上運用しているWebサービスだと、文字コードがShift_JIS、という状況は多いのではないでしょうか。 弊社もそうだったのですが、昨年、自社で運用するWebサイトすべての文字コードをShift_JISからUTF-8に変…