SwiftでLottieを使ってアニメーションを実装する

こんにちはフロントエンジニアの茨木です。一ヶ月ほど前からSwiftでiOSアプリ開発をやっています。iOS開発経験は浅いですが、Lottieというライブラリを使用し、いきなりアニメーションごりごりの画面を担当してみました。 LottieはAirbnb社が開発したライブ…

コーポレートサイトをリニューアルしました

Web

既にお気づきの方も多いと思われますが、VASILYのテックブログは今月から装いを新たにしています。これは先日行った弊社コーポレートサイトのリニューアルに合わせたものです。この記事では、今回行ったコーポレートサイトリニューアルについて実装面から紹…

ファッション×機械学習の論文紹介

こんにちは。データチームの後藤です。 弊社のデータサイエンティストは職務の1つとしてファッション×機械学習の研究・開発に取り組んでいます。このファッション×機械学習の分野は世界中の大学や研究機関で精力的に研究されているため、我々も最新の動向を…

DigdagとEmbulkを利用してBigQueryにRDS(Aurora、MySQL)のマスタデータを同期する

Treasure Data製のOSSであるDigdagとEmbulkと組み合わせることで、効率的にRDS(Aurora、MySQL)のデータをBigQueryに同期するシステムの構築を実現しました。概要図だけでなく、具体的な設定ファイルもほぼ公開しています。

開発効率を上げる!Swaggerの記法まとめ

こんにちは! バックエンドエンジニアのりほやんです。 以前、テックブログでAPIモックと仕様書を作成することができるSwaggerについてご紹介しました。 Swaggerそのものについて知りたい場合やSwaggerを実際に導入したい場合は、こちらの記事がとても参考に…

Embulkを利用したデータ転送基盤の構築

こんにちは。バックエンドエンジニアインターンの田島です。 VASILYでは分析にBigQueryを使用しており、MySQLのデータを毎日BigQueryに同期しています。この同期処理を行うシステムは、約2年前にRubyで書かれたもので、プロダクトの成長に伴うデータ量の増加…

初日から本番にデプロイ!VASILYフロントエンドインターンの紹介

こんにちは、フロントエンドエンジニアの茨木です。 VASILYでは通期でエンジニアインターンを募集しており、厳しい選考を突破した学生をインターン生として受け入れています。中にはインターン後選考に進んで内定を獲得するケースもあります。フロントエンド…

自己回帰型モデルの深層学習

初めまして、データチームの上月です。 今回はVASILYテックブログ初の論文紹介、テーマは 自己回帰型モデル(Autoregressive, AR)です。 はじめに VASILYではIQONの類似画像検索にAutoencoderを適用しています。 具体的にはアイテム画像で学習したAutoencod…

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

2017年6月7日、第4回目となるFashion Tech meetupを開催しました。今回はVASILYが主催となり、バックエンドチーム、フロントエンドチーム、データチームが業務で行っている開発・運用のノウハウを発表しました。 本記事で弊社の登壇資料を公開しますので、ご…

レコメンドに画像の情報を活用する方法

データサイエンティストの中村です。 ファッションアイテムの画像から抽出した特徴量は検索以外にも利用することができます。 今回はレコメンドにおける画像特徴量の活用について、以下の3トピックを考えてみたいと思います。 画像特徴量を利用したコンテン…

HTML5における画像のレスポンシブ対応方法まとめ

Web

こんにちは、Webフロントエンドエンジニアの権守です。 弊社では200以上の提携ECサイトから集めた大量の商品写真を取り扱っています。そのサービスの性質上、画像配信の最適化は非常に重要な課題の1つです。今回は最適化の一環として画像のレスポンシブ対応…

開発効率を上げる!Swaggerで作るWEB APIモック

こんにちは。バックエンドエンジニアのじょーです。 みなさんは、開発初期の段階でWeb API(以下API)の実装が追いつかずクライアント側が開発できないという経験をしたことはありますか? クライアント側はAPIがないと開発が滞ってしまうことがありますが、…

Apache Mesos / Marathon を本番で運用するための5つのTips

こんにちは。 インフラエンジニアの光野です。 先日のブログ記事でご紹介したとおり、弊社のクローラーはDockerコンテナ化されています。このコンテナはApache MesosとMarathonのクラスタ上で動いています。 先日の記事はクローラーシステム全体を取り扱いま…

モダンなSwiftのExtensionについて - Targeted Extensions

VASILYのiOSエンジニアにこらすです。最近、Swift Evolutionに私の2つ目の提案がマージされました。 今回は、Swiftで型にExtensionを作る特殊な方法について説明します。 今回紹介する方法を使ってExtensionを作ると、名前空間が切り分けられ、コードの読み…

Qiita:Team + Hubot + textlintで文章校正を自動で実行する

こんにちは、Androidエンジニアの堀江です。最近はiOSのプロジェクトに参加してSwiftを書いています。新しいことを始めるのは楽しいですね。 ところで今ご覧になられている弊社の技術ブログ「VASILY DEVELOPERS BLOG」は、VASILYのエンジニアが交代で更新し…

Railsアプリでクロールディレクティブを安全・効率的に設定する仕組み

こんにちは、フロントエンジニアの茨木です。 本記事ではRailsアプリでクロールディレクティブを安全・効率的に設定する仕組みをご紹介したいと思います。 Web上にあるページは、クローラーと呼ばれるロボットに巡回されて検索エンジンにインデックス登録さ…

ファッションアイテムの画像からの特徴抽出とマルチスケールなCNNの効果

同僚に3ヶ月のディープラーニング禁止令を言い渡したデータサイエンティストの中村です。 VASILYではスナップ画像に写っているモデルさんが着ている服と似ている服を検索する画像検索エンジンを開発しています。 ファッションアイテムを探す際、デザイン(ア…

開発にもっと優しさを - iOSアプリの実装規約について

こんにちは。iOSエンジニアの遠藤です。 今回はiOSチームでの実装規約について紹介したいと思います。 Swiftのコーディングについてだけではなく、実装する上での細かい約束事をまとめました。 参考になれば幸いです。

VASILYにおけるBigQuery + Tableau活用例

こんにちは! なんでもディープラーニングでやりたがる癖が抜けず、3ヶ月のディープラーニング禁止令を言い渡されていた後藤です。 本記事ではVASILYで利用しているデータ分析の環境について紹介します。 VASILYではデータ分析が必要な場面で、BigQueryとTab…

インターン生がデータ転送基盤を一から設計する、VASILYバックエンドインターンの紹介

こんにちは、バックエンドエンジニアの塩崎です。 先日、VASILYバックエンドチームにインターン生が来てくれました。 この記事では彼がインターンで作ってくれた機能や、インターン中のスケジュールなどを紹介します。

UIFeedbackGeneratorの使い方と便利に使えるライブラリ

iOSエンジニアの庄司です。 今回は開発中のアプリで使った UIFeedbackGenerator についてご紹介します。 UIFeedbackGeneratorとは、iOS 10以降で利用できるHaptic Feedback (触覚フィードバック) のAPIです。 この記事の要約 一般的なUIFeedbackGeneratorの…

数百サイトのクローラーを効率よく運用する仕組み

こんにちは! バックエンドエンジニアのりほやんです! 2017年の2月28日にIQONはリブランディングを行い、タグラインを “わたしの「好き」がここにある” に刷新しました。 この “わたしの「好き」がここにある” という体験をユーザーにしていただくには、IQO…

【Rails】WEB APIを長く運用するための仕組み化

こんにちは、バックエンドエンジニアのじょーです。大規模なサービスのAPIを開発する際に、ルールを決めずに開発していると無秩序なコードが散見される運用がしづらいAPIになってしまいます。また、ルールを決めたとしても共有が上手くいかないなどの理由で…

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…