読者です 読者をやめる 読者になる 読者になる

Docker / Apache Mesos / Marathon による3倍速いIQONクローラーの構築

わーい!コンテナたのしー! こんにちは。流行りには積極的に乗っていきたい。インフラエンジニアの光野です。 弊社が運営するファッションサイトIQONでは、日々200以上の提携ECサイトから100万のオーダーで商品をクロールしています。 新商品の追加・商品の…

新しいアプリを作るときによく使うSwift Extension集

iOSエンジニアの庄司 (@WorldDownTown) です。 最近、業務で新しいiOSアプリを立て続けにいくつか開発する機会に恵まれました。 そんな中、いくつもアプリを使っていると、どのアプリでもよく使う処理があぶり出されてきます。 そういう処理はSwiftのExtensi…

UIStackViewを使った詳細ページ実装のすすめ

UIStackViewを使用しての詳細ページの実装についてです

Androidアプリを長く開発し続けるために気をつけている9個のルール

Androidエンジニアの @nissiy です。Androidが発表されてからもうすぐ10年になろうとしています。長いですね。 実はAndroid版IQON、今年の4月でリリースしてから丸5年を迎えます。ここまで長くサービスを続けられて、かつ3年連続でベストアプリをいただけた…

形態素解析とNgramを併用したハイブリッド検索をSolrで実現する方法

Apache Solrで形態素解析とNgramを併用した検索を行う方法を紹介します。それぞれのインデックスを作成し、両方に対してeDisMaxクエリを投げます。形態素解析の方の重みを大きくしているために、検索ノイズを抑制しつつも検索漏れを減らすことができました。

就活生よ、偉そうになれ! Ruby開発者まつもとゆきひろ氏がエンジニア志望学生に贈る言葉

VASILY技術顧問であり、Ruby開発者のまつもとゆきひろ氏から、エンジニアとして活躍したい学生さんに向けたメッセージを頂きました。社会人に向けたメッセージもあるので、学生以外の方にも役立つ内容です。

デザインデータに忠実にCSSコーディングするためのテクニック

Web

フロントエンドエンジニアの皆さんは、リリース前の社内QAにてデザイナーにピクセルのずれを指摘されて修正したという経験があるのではないでしょうか。今回はiQONのPC・スマホサイトを構築する上で、デザインデータに忠実なCSSコーディングをどのように実現…

AMPの導入と効果について

Web

こんにちは、エンジニアの荒井です。 2016年はAMP(Accelerated Mobile Pages)の正式サポートがアナウンスされ、導入した方も多いのではないでしょうか。VASILYでもAMPを導入し数ヶ月運用しています。AMPの導入に関しては、関連記事も多く存在しますが、導…

AndroidアプリのQA実施に必要な作業を自動化する

こんにちは、Androidエンジニアの堀江(@Horie1024)です。VASILY DEVELOPERS BLOGは新年2回目の更新になります。ちなみに去年の更新回数は53回だったようです。 また、Androidチームのトピックスとしては、先日ベストイノベーティブアプリ大賞を受賞した際に…

会社の新年会用に低温調理器具を作りました

IoT

あけましておめでとうございます。会社の新年会用に低温調理器具を作りました。amazonで買うと2万円以上もするものを5000円程度で作ることができました。

脱・文字列ハードコーディング

こんにちは、iOSエンジニアのにこらすです。 SwiftがiOSの主な開発言語になってから、多くの良いプログラミング習慣が標準になっています。 型安全な設計やコンパイル時のエラー検出が当たり前になりましたが、まだSwiftの型システムを活用せずに、Objective…

機械学習とデータ分析を支えるAWSとGCPを利用したマルチクラウドアーキテクチャのお話

機械学習とデータ分析を支えるAWSとGCPを利用したマルチクラウドアーキテクチャについて紹介したいと思います。

CSSコーディング規約を導入して1年半運用した話

Web

フロントエンジニアの茨木です。 皆様はCSSを書く際にコーディング規約を意識しているでしょうか。かつて、弊社にはCSSのコーディング規約が存在せず、CSSファイルの肥大化・クラス命名規則の不統一が発生していました。メンテナンスが難しくなってきた為、1…

horensoで作るモダンなcronスクリプト監視環境

こんにちは。 モルトとシガーで生きてます。インフラエンジニアの光野(@kotatsu360)です。 先日、crontabで管理しているバッチ処理の監視にhorensoというツールを導入したのですが、 監視の品質が向上 毎分届く大量の実行結果メールから開放されQoL向上 と…

Solr 6でneologdが組み込まれたkuromojiを使う方法

Solr6でneologdを組み込んだkuromojiを使う方法をまとめました。とりあえず使いたいという人のために、ビルド済みのkuromojiのjarファイルも公開しています。

RailsアプリケーションにおけるModelキャッシュの実装

こんにちは、バックエンドエンジニアのjoeです。主にAPIを担当しています。 VASILYのAPIでは、速度向上のためにModelオブジェクトをキャッシュしています。 最近、Modelキャッシュの仕組みを実装したので、その実装方法を紹介します。また、既存ライブラリと…

VAEとGANを活用したファッションアイテム検索システム

データサイエンティストの中村です。今回はイメージファーストなファッションアイテム検索システムを作ってみたのでそちらの紹介をしたいと思います。 本記事で紹介する技術はIBIS2016でも報告しています。 概要 ファッションアイテムを探すとき、見た目の印…

IBIS2016参加報告

こんにちは、データチームの後藤です。 VASILYデータチームは2016年11月16日~18日にかけて、京都大学で行われた第19回情報論的学習理論ワークショップ(以下、IBIS2016)に参加しました。本記事では、発表の様子や参加した感想をお伝えしたいと思います。

便利なXPathまとめ

こんにちは。 今日も元気にクローラー作成!バックエンドエンジニアのりほやんです。 最近クローラーを作成する機会が多く、その時にXPathが改めて便利だと思ったので XPathについてまとめてみました!XPathを学ぶ方の役に立てれば幸いです。 初級編 XPathと…

Google BigQueryの新機能 Standard SQLまとめ

Google BigQueryの新機能であるStandard SQLが発表されて数か月が経ちました。にもかかわらず、Standard SQLに関する日本語記事はほとんどありません。この記事ではStandard SQLの利点・欠点、従来のSQLからの移行方法を説明しています。

iQONをSwift 3.0.1にアップデートしたときに対応したポイント

iOSエンジニアの庄司 (@WorldDownTown) です。 iOS 10.1 のリリースから遅れること3日、Xcode 8.1 がリリースされました。この Xcode 8.1 では Swift のバージョンが 3.0.1 にアップデートされています。 iQON の iOS アプリでは、Xcode 8 リリース後すぐに …

Android Icon Animatorを活用してアニメーションリソース軽量化

Androidエンジニアの@nissiyです。Androidでは、API Level 21からベクター画像をアニメーションさせる仕組みであるAnimatedVectorDrawableが使えるようになりました。また、Support Libraryのv23.2.0からはAnimatedVectorDrawableCompatが提供され、API Leve…

ディープラーニングによるファッションアイテム検出と検索

データサイエンティストの中村です。VASILYではファッションに特化した画像解析エンジンを開発しています。本記事では、スナップ写真からファッションアイテムを検出するシステムを紹介したいと思います。 概要 このシステムの入力はスナップ写真です。スナ…

JavaScriptで商品画像の拡大プレビュー機能の実装

今回は弊社で開発中の新サービスで実装した商品画像の拡大プレビュー機能の実装について、その方法を順を追って説明します。

Swift 3の変更点の裏側 (アクセス制御 / @escaping)

こんにちは。VASILYのiOSエンジニアのにこらすです。 2015年の12月からSwiftがオープンソースになり、 Swift Evolution(Swift言語の新しい仕様について提案する場所)で多くの開発者の提案が採用されました。 今回はSwift 3の アクセス制御 と @escaping につ…

Chainerとチャンピオンモデルでファッションアイテム判別器を作る

この記事では、一般物体認識で優秀な成績を収めた代表的なニューラルネットワークモデルを、ファッションアイテムの画像データに対して適用し、どのアーキテクチャが有用か、どれだけの精度を出せるのかを調べる実験を行います。

Firebase Test Labを使ったAndroidアプリのテスト

Androidエンジニアの堀江(@Horie1024)です。Androidアプリのテストについて考えた時、UIの操作を含むActivity単位の結合テストをどう実行するか?が課題になります。 最近では、テスト基盤をクラウド上で提供するサービスが複数リリースされており、今年のGo…

Fashion Tech meetup vol.3を開催しました

2016年9月20日、第三回目となるFashion Tech meetupを開催しました。前回に引き続き、MERYを運営する株式会社peroli様、FRILを運営する株式会社Fablic様との共同開催となりました。 今回も増枠を設けるほどの申込みがあったのですが、イベント当日は台風16号…

Embedded Frameworkを導入してXcodeのビルドパフォーマンスをあげる

iOS

iOSエンジニアの遠藤です。 先日iQONで、Xcodeのビルドパフォーマンス改善の一環としてEmbedded Frameworkの導入を行いました。 今回は、そのEmbedded Frameworkの導入について紹介したいと思います。

iQONのviewportを一気に書き換えた話

Web

フロントエンドエンジニアのnibaです。 先日、iQONのスマホページでviewportの改善を行いました。 その際の技術選定や工夫について述べていきたいと思います。

ElasticBeanstalk w/ multi-container docker 最新事情

こんにちは、神崎(@tknzk) です。先日公開したブログ からアップデートがありましたので、まとめておきます。 変更点としては、EBのBase Platformの変更と mackerel-agentの alpineベース化、ECRのセカンダリDocker Registryとしてのセットアップになります…

新卒2年目webエンジニアが感じた大企業とベンチャーの違い

はじめまして。サーバーサイドエンジニアの高木です。 私は、とあるweb系大企業に新卒として入社し、1年働いた後にVASILYに転職してきました。 VASILYで働いて3ヶ月が経ち、同じweb業界でも職場環境が大きく違うことを実感しています。 そこで大企業とベンチ…

Androidで動画広告を再生するための仕組みを最短で実装する方法

Androidエンジニアのnissiyです。 iQONではアプリの収益化のために、ページによってネイティブ広告や動画広告の掲載を行っています。 先日アプリのアップデートで動画広告に関してのアップデートを行いましたが、案件の都合で広告再生の仕組みを外部アドネッ…

Solrを用いて検索のサジェスターを作りました

Apache Solr(以下、Solr)で商品検索のサジェスターを作ったので、それを紹介します。 サジェスターを作るにあたり、どのようにスキーマやサーチコンポーネントを定義すれば良いのかを説明します。 単語抽出、漢字の読みといった日本語特有の問題の解決方法も…

CAREER TALK for Engineer開催しました

2016年8月9日、スタートアップで活躍したいエンジニア向けのトークイベント、CAREER TALK for Engineerを開催しました。

WebアプリのAPIリクエスト効率化

iQONのWebアプリのAPIリクエスト部分の仕組みを改善したことについて紹介します。

CAREER TALK for Engineer開催します

2016年8月9日、スタートアップで活躍したいエンジニア向けのトークイベント、CAREER TALK for Engineerを開催します。今回はMERYを運営する株式会社peroli様と弊社VASILYの2社での開催となります。堅苦しい会ではなく、お酒を飲みながらのトークイベントです…

iOSの月額課金レシート検証をサーバーサイドで行うときのTipsまとめ

こんにちは、バックエンドエンジニアのjoeです。 みなさんはお気に入りのアプリに月額課金をしたことがありますか?したことがない人は今すぐお気に入りのアプリをみつけて月額課金しましょう! 実際にiOSで月額課金をすると、課金の証明としてAppStoreがレ…

画像がズームインしながら画面遷移するSwiftライブラリを公開しました

iOSエンジニアの庄司(@WorldDownTown)です。 iQONのiOSアプリ内部で使われている画面遷移処理をOSSライブラリ化したのでご紹介します。 TL;DR UINavigationControllerでの遷移時に、タップした画像をズームして遷移するトランジション処理をSwiftライブラリ…

iOSチームでのインターンシップのすすめ

こんにちは、iOSエンジニアの遠藤です。 学生の皆さん、夏のインターンシップはもう決めましたか? 各社で様々な形式のインターンシップがあると思いますが、今回はiOSチームを例にVASILYでのインターンシップについて紹介をしたいと思います。 記事には実際…

カスタムmitmproxy入門

VASILYのiOSエンジニアにこらすです! 今回はプロキシツールmitmproxyのカスタムスクリプト機能について説明したいと思います。 モバイル開発をする際にAPIリクエストのデバッグツールとして mitmproxy はとても役に立ちます! カスタムスクリプトを使うと何…

1コマンドで本番サーバと開発サーバ (のVMイメージ)を作る話

こんにちは、インフラエンジニアの光野(@kotatsu360)です。 開発をしていると本番サーバと開発サーバの乖離が問題になると思います。これについて、先日行われたUZABASE Meetup#4 〜大規模サービスを支えるインフラ〜にて「1コマンドで本番サーバと開発サー…

レコメンドアルゴリズム(BPR)の導出から実装まで

こんにちは、エンジニアの中村(@tn1031)です。弊社のプロダクト「iQON」には「for You」というレコメンド機能が実装され、個々のユーザに毎日おすすめのファッションアイテムを届けています。今回はこの「for You」に関連して、レコメンドを実現するアルゴリ…

フロントエンドチームでのインターンシップのすすめ

エンジニアの荒井です。現在VASILYではサマーインターンシップを開催しています。募集開始後、さっそく多くの方からご応募いただいています。 インターンコースのひとつにフロントエンド開発コースがあるのですが、HTMLを書くのか、サーバーサイド言語を書く…

データサイエンスチームでのインターンのすすめ

VASILYでは夏のインターンを募集しています。データサイエンスチームでは、機械学習やプログラミングが得意な方、iQONのデータでサービスを開発してみたい方など募集中です!

alpine linuxベースのdocker imageに移行したはなし

こんにちは、神崎(@tknzk)です。ElasticBeanstalk w/ multi-container Docker で構成しているad-serverのdocker image を alpine linuxベースのimageに置き換えました。 alpine linuxは、非常に軽量なdistributionで、DockerHubに登録されているmiddlewareな…

AndroidのCI環境をCircleCIからWerckerに移行しました

こんにちは、エンジニアの堀江(@Horie1024)です。先日行われたAndroid Testing Bootcamp #2で「AndroidのCI環境をCircleCIからWerckerにした話」という内容で発表させて頂きました。発表に使用したスライドはこちらになります。 この投稿では、スライドでは…

Androidチームでのインターンシップのすすめ

Androidエンジニアのnissiyです。学生のみなさん!インターンシップに参加していますか? 近年インターンシップに参加する学生が増えているそうですが、VASILYでも2014年からエンジニア向けインターンシップのプログラムを組んで学生を受け入れています。 募…

自社管理のpostfixメールサーバーをSendGridに移行してみた

自社管理していたpostfixサーバーをSendGridに完全移行しました。移行の時に起こったゴタゴタなどを紹介します。

DynamoDBの並列処理によるデータの欠損とProvisioning超過の対策

こんにちは。iQONのバックエンドエンジニアを担当しているjoeと申します。 最近、iQONのお知らせ機能のDBをMySQLからDynamoDBへ移行しました。 移行する際に発生した問題点である並列処理によるデータ欠損とProvisioning超過の対策を書きます。 間違っている…