初心者歓迎! Elastic Stack 5.0 を使ってみる – 前編 –

こんにちは! pairsの検索アルゴリズムの新規開発・改修を担当している小島です。 先週末、待ちに待ったElastic Stack 5.0.0 GA版がリリースされました! Elastic Stack 5.0.0 GA リリース Elasticsearch - breaking changes in 5.0 新機能の追加や性能改善などこれまで使ってきた私たちにも嬉しいですが、導入のしやすさという点でもますます魅力に磨きがかかり、これからElasticsearchを始める方にも嬉しいものになっ...

SQLで分析を始めた人に贈る、中級者に上がるための10のTips -後編-

こんにちは!pairsのAnalyzeチームでエンジニアをしている鉄本です。   Analyzeチームでは、施策検討時のデータ抽出やサービス上の問題検知のために、分析用途のSQLクエリ (MySQL) を作成しています。 このシリーズでは、日々の業務を通して学んだTipsやよく使うクエリの一部を簡単な活用例と一緒に、2回に分けて紹介しています。今回はその後編です。 ※前編はこちら   前回に引き続き、クエリの紹介の中で出てくる関数の詳細...

【イベントレポート】 dots.様主催「Goオールスターズ2」に弊社金子が登壇しました

弊社プリンシパルエンジニアの金子が、10/2(日)、dots.主催のイベント「Goオールスターズ2」に登壇しました。   今回は、金子の登壇内容をレポートします。 Essentials of Golang Go言語でのフルスクラッチリプレイスを果たしたpairsの、安定稼働後に得た知見を中心に、Go言語コードに関するトピックスについて発表しました。   主な内容は以下の目次の通りです。詳細は資料をご覧いただきたく思います。 ...

【イベントレポート】 DMM.comラボさん・インテリジェンスさんとの合同勉強会を開催しました

先日、株式会社DMM.comラボさん、株式会社インテリジェンスさんとのGo言語合同勉強会を開催しました。   お声がけいただきました、株式会社インテリジェンスの大谷さん、誠にありがとうございました。 本ブログではエウレカメンバーの登壇部分のみを紹介しますが、DMM.comラボさん、インテリジェンスさんのイベントレポートもそれぞれございますので、あわせて御覧ください! DMM.comラボさんのブログ インテリジェン...

Goで作ったAPIのドキュメントを自動で生成する

こんにちは、pairs事業部の後藤です。 今回は私が作ったAPIドキュメント自動生成ツール apidoc を紹介します。   https://github.com/gotokatsuya/apidoc apidocを作った経緯 社内ツールなど、弊社で使用している中小規模のアプリケーションのほとんどは、僕がGoで作っているのですが、それらのプロジェクトのAPIに関するドキュメントは十分であるとは言えません。   一人で開発するなら必要無いかもしれません...

【イベントレポート】 MTIさんと合同勉強会を開催しました

先日、株式会社エムティーアイさんとの合同勉強会をエウレカ5Fセミナースペースにて開催しました。 UI/UX・Android・iOS・サーバーサイド・インフラなど多岐に渡る内容となり、質問が止まらずに時間をフルに使うほど、刺激あふれる時間となりました。   今回の記事では写真とスライドを交えながら、エウレカメンバーの登壇部分をご紹介します!(※全ての発表スライドをご紹介できているわけではございません。予めご了承...

Swift3.0でJSONを厳しく安全に扱えるライブラリを作りました

iOSエンジニアの木村です。 今回は私が開発している JAYSON という Swift で書かれた JSON ライブラリについて紹介します。   もともと僕はJSONの読み込みと生成のためにSwiftyJSONを使用していたのですが、大きなJSONや深い階層のJSONを読み込むときに発生するエラー(存在しないKeyなど)が追いづらいという問題を抱えていました。   そこで、SwiftyJSONのように使えて、エラーハンドリングを行いやすいインターフ...

Go言語で文字列の正規化を行う 〜「pairs」投稿監視システムの裏側・Part1〜

恋愛・婚活マッチングサービス「pairs」では、400万人を超える全てのユーザーが安心・安全にサービスを利用できるように、投稿監視システムに力を入れて取り組んでいます。   その投稿監視システムの一部として NG ワードフィルタリングを用いて、不正であったり悪質な文字列を事前に検知する仕組みを導入しています。 文字列の正規化処理 NG ワードフィルタリングでは投稿されてきた文字列をあるルールを元に前処理(...

Infrastructure as Code実践による3つのメリットとは? 〜Terraform0.7アップデート事例を紹介〜

はじめまして。インフラチームの恩田です。   今回は、成長期の会社におけるインフラリソース管理の課題と、先月リリースされたTerraform0.7を用いたレガシーコードのInfrastructure as Code推進による課題解決事例について書きたいと思います。 ■ 会社の成長とインフラリソースの肥大化 エウレカではpairs / Couples始めとした各種プロダクト、コーポレートサイト、採用サイト、オウンドメディア、社内向けシステムな...

Golang におけるサブテストの並行処理実装について

Go1.7 が約1ヶ月前にリリースされましたが、つい先日 Go1.7.1 もリリースされ Golang の盛り上がりを感じますね! さて、今回は Go1.7 から追加された機能の一つ「サブテスト」について紹介したいと思います。 サブテストとサブベンチマーク Go1.7 から追加された、テスト(ベンチマーク)を効率的に記述&実行するための機能で、煩雑になってしまうテストコードを簡潔に記述することができます。 また、サブテストを並行で実...

エウレカ社内のhubotで生き残っている機能3選

こんにちは! エウレカ 田野です。   エウレカではみなさんもお使いのSlackで業務しています。   数ヶ月前に検証環境・本番環境へのデプロイが完全にChatops化しまして、slackが会話ツールから業務遂行ツールの役割も果たすようになってきました。   エウレカでは個人ごとにhubotを保有しているメンバーが多く、お互いに色んな機能を実装しては楽しんで業務をやっています。   僕も最近hubotでチームワーク...

アプリケーションエンジニアも開発やログ解析がはかどる! シェルスクリプトTIPS

こんにちは! エンジニアの臼井です。 pairs のサーバサイドで、Go言語と戯れる毎日を送っています。 前職ではシェルスクリプト(bash)でjsonを吐くAPIサーバを作る、世にも奇妙な業務をしていました。 途中からPHPに移行させてもらえましたが、そのお話はみなさまとどこかでお会いした時に別途……。 今回は、その世にも奇妙な業務を通して得られた、アプリケーションエンジニアにとって有用なシェルスクリプトの知見について共...

SQLで分析を始めた人に贈る、中級者に上がるための10のTips – 前編 –

こんにちは、pairsのAnalyzeチームでエンジニアをしている鉄本です。   Analyzeチームでは、施策検討時のデータ抽出やサービス上の問題検知のために、分析用途のSQLクエリ (MySQL) を作成しています。 今回は、日々の業務を通して学んだTipsやよく使うクエリの一部を、簡単な活用例と一緒に前編・後編の2回に分けてお話ししたいと思います。 前編では分析でよく使うクエリを中心にご紹介します。   この記事を参考に、分析用S...

JSON Schema から API 仕様と Go コードを自動で生成する – BOT エントリーの裏側 Part.1

こんにちは、pairs事業部の kaneshin です。 先月、 BOT エントリー というエンジニアインターン向けのエントリーを公開していたため、今回はその裏側の技術部分をお話しようと思います。 BOT エントリーとは? BOT エントリーでは、こちらが用意した Slack チームに参加していただき、そのチームの中で Slack API や Bot API を使った Bot を用意してもらい、ある要件を満たしてもらうエントリーとなっています。 その要件...

pairsの検索機能をElasticsearchにリプレースした話

pairsサーバーサイド担当の小島です。 先日インフラチームの松尾よりpairs 検索のElasticsearch導入についての記事があり、その中でも少し触れていたのですが、pairsの検索機能はたびたび速度の問題とそれにかかるコスト等がネックになっていました。 今回私からは、それらを改善するために、検索機能のElasticsearch導入に際してアプリケーションサイドで行ったことをお話したいと思います。 version1.5 から 2.3 へ pai...

Core Data 5 Tips for High-Performance Apps

GopherCon@Denverに参加しました!

こんにちは、kaneshinです! 7/11~7/13にかけてコロラド州にあるデンバーで催されていたGopherConに参加してきました。 海外でのGo言語の普及やモチベーションなど、日本との立ち位置がどのくらい違うかを知る良い機会となりました。 レポート 会場 - Colorado Convention Center GopherConの会場はデンバーのダウンダウンにあるColorado Convention Centerで開催されました。このConvention Centerには巨大な青いクマが中...

Go言語を使って類似画像を検索する

こんにちは!エンジニアの後藤です。 今回はGo言語による類似画像の検索手法についてお話ししたいと思います。 代表的な画像検索技術について まずは画像検索について。大きく分けて「TBIR」と「CBIR」があります。 TBIR テキストをメタデータとした検索手法です。 ユーザーが入力したワードと画像のテキストデータを比較して、マッチした一覧を表示させる手法です。 例えば、電子書籍の検索などが挙げられます。 CBIR ...

pairsの検索にElasticsearchを使ってみた。

インフラチームの松尾です。 今回はpairsの検索のバックエンドをMySQLからElasticsearchにした話を書きたいと思います。 現在の検索の構成としては golang → Redis → Elasticsearchとなっています。 MySQLだった時の問題点 そもそも検索が遅かった。 1台辺りのCPU使用率が高くなりがちだった為、 台数を増やしてスケールさせていたがコストが結構かかっていた。 スキーマ変更を行う際にメンテナスが必要になる事があった...

IT企業の秘書直伝!デキる大人の会食セッティング法♡

はじめまして。 エウレカで役員秘書をしています、萱場(かやば)です。 この度有難いことにtechブログ執筆の機会をいただきました! 残念ながらtech要素はこれっぽっちも出せないのですが、今回は私が日々実践している「会食セッティング法」についてご紹介したいと思います。 会食設定をする際に必ず抑えておくべきポイント 会食を設定する時に必ず抑えておかなければならないポイントは次の3つです。 日時 ...