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つです。 日時 ...

DIを使ってAndroidでイイ感じにテストを書く

はじめに こんにちは!Androidエンジニアの海藤です。   前回に引き続き、今回もAndroidのテストに関連した内容です。ここ半年はテストおじさんという名のもとに、Androidアプリのテストを書くために色々と試行錯誤していますが、その過程でテストを書くためにはDIが非常に重要になってくると感じたため、今回はAndroidのDI事情について書きたいと思います。 DIとテストの関係 DIはDependency Injectionの略で、日本...

3000万人規模サービスでセキュリティ対策を進めるための組織体制

こんにちは!インフラチーム所属の恩田です。 今回はセキュリティ対策についての記事をお届けします。 ■ あらすじ ここ数年のインターネットの利用率増加に伴い、インターネット利用者のセキュリティ対策に対する意識は近年高まってきていると言われています。しかしながら、その一方で攻撃者の手法や手口も更に巧妙化・高度化の傾向がみられており、事業者にはそれらに対応できるセキュリティ対策が求められています。 ま...

iOSエンジニアにも便利なSketchプラグイン6選

こんにちは!iOSエンジニアの木村です。 iOSエンジニアの皆さん、Sketchは使っていますか? SketchはWebサイトやネイティブアプリを対象としたデザイン用に作られているため、 デザインから実装に落とし込みが素早く行えるようになります。 また、操作方法もシンプルになっているので、エンジニアでもデザインの確認や、素材書き出しなどは簡単に行えるのもポイントであり、 自分でマージンの確認や素材の微調整が出来るとデザ...

React+ReduxなネイティブアプリをReact Nativeでシュッと作る

こんにちは! pairsチームの太田です。 梅雨空が続く今日この頃ですが、いかがお過ごしでしょうか。 突然の豪雨への備えは常に持っておきたいですね。   ところで、私の前回の記事ではJavaScriptでクロスプラットフォームアプリを書く魅力とReact Nativeがよさそうという内容をお伝えしました。 その後、実際にReact Nativeを使ってサンプルアプリをシュッと書いてみましたのでレポートします。 React Nativeのおさ...

TransducersでRxJSを高速化

こんにちは、インターン生でpairs開発メンバーの竹内です! 前回の記事のおかげか、ありがたい事に社内でのClojureの知名度が急速に広がりつつあります。 そこで今回は一旦Clojureからは離れまして、Clojureの生みの親であるRich Hickey氏が生み出したTransducersと、RxJSとTransducersの連携について書こうと思います。 RxJS(及びReactiveX)については既に様々な解説や豊富なドキュメントが存在するため割合させていただ...

Android Activityのテストを上手く書くコツ

はじめに こんにちは!エウレカのテストおじさんこと、Androidエンジニアの海藤です。   今回はAndroidにおいてテストを書くために僕が取り組んでいることについて紹介したいと思います。今回ブログを書くにあたって、Androidのテスト全般について書こうと思いましたが、書いているうちにかなりの量になってしまったため、今回はActivityのテストに絞って書きたいと思います。 Android界隈のテストについて Android界...

Kotlinの気持ちよさ

こんにちは、pairs事業部Androidエンジニア Kotlinおじさんこと愛澤(@lvla0805)です。プライベートではフルKotlinでアプリを開発しています。 現在pairsでは開発言語としてKotlinの導入を検討し、社内で勉強会を行っています。 今回はなぜKotlinなのかといったことをご紹介したいと思います。 kotlinとは JVM, Android, ブラウザ向けの静的型付け言語です。 IntelliJ IDEAの開発元であるJetBrains社がオープンソースで開発...
1 2 3 10 11