サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
tech.vasily.jp
こんにちは、アメリカンドッグが好きすぎてたまらないエンジニアの村田です。 今回はサービスを構築する際に重要になる画像の取り扱いについて3つのポイントを紹介します! 1. HTTPリクエストはシンプルに 2. キャッシュは計画的に 3. OutOfMemoryを少しでも減らすために出来る簡単なこと はじめに まず前提としてiQONの画像は主に 1. ECサイトをクロールして集めてきた商品画像 2. ユーザに商品画像を組み合わせてもらってできたコーディネート画像 3. ユーザが自分で好きな画像を設定できるプロフィール画像、カバー画像 の3つに分けられます。これらの画像はすべて画像サーバ(AmazonS3)に保存されています。 ボタンの画像などはdrawableとしてAPKに組み込んでいますが、それ以外の画像はすべてHTTPリクエストを行い表示することになります。 HTTPリクエスト
どうも。バックエンドエンジニアの吉田です。 前回は1サイトをクロールする際の最適化戦略としてRedisベースの分散ロック機構を使った実例を紹介しました。 前回の記事:Redis::DistMutex – 時限付き分散ロックで効率良くサイトクロールをしよう 今回は複数サイトに対する処理をResqueを使って最適化した事例を紹介したいと思います。 ※ランダムにキューをlistenする話の予定でしたが、話がとっ散らかるので主題を変更しました。 主なキーワードとしては、「Resqueのキュー分割」、「Rubyでクラス定義を動的生成」といった感じです。 おさらい 前回使った図を使います。 iQONのクローラーは、提携サイトの商品一覧から商品ページのURLを取得し、ページをダウンロードする処理(fetchフェーズ)を必要な数だけWorkerプロセスとして起動しておき、Resqueを使って処理をして
はじめまして。バックエンドエンジニアの吉田です。 2013年5月末の入社以降、大量のEC2インスタンスのVPC移行を担当した後、今はiQONの商品DBを支えるクローラーの改善に取り組んでいます。今回はその改善の1つとして開発したRedis::DistMutexという分散ロック機構のruby実装を紹介をしようと思います。 Redis::DistMutex 開発の経緯や細かい設計の話は後述するとして、まずはつくったgemの紹介をします。 Redis::DistMutex Redisベースの分散ロック機構 rubyのライブラリにあるMutex互換 スレッド間だけでなく、プロセス間・ホスト間でも共有できるMutex 時限つきロックの作成が可能(redisのsetnxとexpireを活用) namespaceを指定できるので、特定の処理ごとにロックの作成が可能 redis2.6以上のみサポート(1秒
はじめまして、VASILYデザイナーのこんです。 今までは「Tech Blog」としてエンジニア陣で技術的な発信をしてきていたのですが、 デザイン的な発信もしていける場所を設けたいということになり、 「Developers Blog」と改名し、わたくしめが紅一点()として加わることになりました。 今回の記事はデザイナーとしての簡単な紹介となりますが、 これから有意義な情報をお届けできるようにしますので、 よろしくお願いします! 先週の話になりますが、11/20にアプリやWebサービスのデザイナーを対象にした Designers meetup Vol.2というイベントに参加してきました。 VASILYのデザイナーは現在 常駐私1人と、アルバイト3人で回していて、 普段は、社内の人間としか話さないため、 他社のデザイナーさんと赤裸々な話で盛り上がったり、 自社サービスをやってる
はじめまして!2013年7月にVASILYにJOINした西村と申します。VASILYでは主にiQONのAndroidアプリの開発を行っています。 先週からAndroid4.4搭載のNexus5を使っているんですが動きがかなり向上されたため、これからAndroidの快進撃が起こる予感がしてワクワクです。Androidの快進撃といえば最近iQONでも起こりはじめています。少し前まではAndroidアプリよりもiOSアプリの方が評価が高かったiQONですが、この半年でAndroidアプリのユーザーレビューが0.8ほど上がりiOSアプリに追いつきつつあります。先月にはGoogle Playの「今週のおすすめ」枠に掲載していただきました。 今回はそんなAndroidアプリの開発で使用しているツールを紹介します。 Android Studio 現在、IDEは「Android Studio」を使用してま
2013年も終盤にさしかかり、年内に+10kgに到達しそうなiOSエンジニアの庄司です。 先日、iQONのiOSアプリをiOS7にデザインを最適化してリニューアルしました。 今回は新しくなったiQONの新機能とUIについてご紹介します。 まずはあたらしくなったiQON v2.0.0をこちらでインストールしてみてください。 新しくなったiQONの新機能 アプリのデザインをリニューアル iOS7にマッチしたシンプルで明瞭なデザインに変更しました。(あえてフラットデザインとは言いません) iOS7のトーンに合わせるだけでなく、ユーザーインターフェース部分の装飾を最低限必要なものだけにしました。 そうすることで、投稿されるコーディネートや掲載商品などのコンテンツを引き立てるように設計されています。 ↓v1.8.2 と v2.0.0 ホーム 今回新たに追加された「ホーム」は、iQONの利用
初めまして。加藤と申します。 2013年6月からVASILYで主にAPIとフロントエンドのプログラムをいじっています。 今回はAPIサーバのパフォーマンスが気になる人に嬉しい便利ツール2つ紹介します。SiegeとHTTPingです。 目新しい訳ではないですがいずれもライトなので、小規模の受託や1人開発のサービスなんかでも試しやすい筈です! Siege Siege is an http load testing and benchmarking utility. Siege(スィージ)はHTTP負荷テストツールです。 ベーシック認証,cookies,HTTP,HTTPSサポート。 仮想ユーザを大量に作って、インターネットからのアクセスをそれっぽくシミュレートしてくれます。 インターフェースはApache Benchに近いので、ABを使った事ある人なら直感的に使える筈です。 インス
はじめに こんにちは、iOSエンジニアの荒井です。 先日、株式会社Rettyのエンジニアの方々と技術勉強会を開催しました。 今回はiOSアプリについて、自分たちが使用している技術を紹介し合いました。 その場でXcodeを立ち上げ、instrumentsを起動してのLIVEメモリリーク調査など、 通常の勉強会とは違った形式で、とても有意義な技術交流の場になったと感じています。 僕からも「iQONのVIew構成」というお題でお話させて頂いたので、 今回はその資料を公開したいと思います。 スライドと補足 資料はslideshareにて公開していますが、まずスライドの流れを簡単に紹介したいと思います。 iQONでは現在多くのViewController・Xibがあります。 その数は100を超え、複雑な画面設計も相まって、工夫をしないと開発工数がかさんでしまいます。 ViewControll
みなさん初めまして! 体を引き締めるため、強い漢になるために最近キックボクシングをはじめたボブです。 4月1日からvasilyでバックエンドエンジニアとして働きはじめ、今回Techブログを初めて書かさせていただきます。よろしくお願い致します。 今回は自分が今担当している、iQONのRails4.0移行について書きたいと思います。その中でも今回は「mysqlのgemの設定」に焦点を当てて記載していきたいと思います。 はじめに VASILYでは約2年ほど前に、PHPで構成されていたiQONをRuby on Railsで書き直しました。 しかし一度実装して以来、プロダクトの新規システム実装や運用に時間をとられてしまい、Railsやミドルウェアのバージョンをあげるなどの作業を行うことができていませんでした。 待望のRails4.0が正式リリースされたこのタイミングにあわせて、Rails
こんにちは。雨でハーフマラソンの大会をサボったiOSエンジニア庄司です。 本来大会で走っているであろう頃にこのブログを書いています。 今回はiQONアプリのWebViewで使っている技術についてです。 iOSでもAndroidでも使える内容なので、”UIWebView”ではなく”WebView”です。 実装の経緯 少ない開発リソースでマルチプラットフォームに対応するため、WebViewを利用することがよくあると思います。 iQONでも一部の機能において、iOSアプリ、Androidアプリ、スマートフォンブラウザで同一のWebViewを使って実装しているところがあります。 このWebViewについて、プラットフォームごとに別々のタイミングで変更があると、 「Androidの特定のバージョンにカメラを起動するボタンを設置したい。」 「でも、iOSはアップデート申請が通るまでボタンは表
こんにちは、体重の管理を怠り、緊急で大メンテナンス中の荒井です。 今回はiQONのメンテナンスページについて紹介したいと思います。 実装の経緯 アプリをリリースしてから、幸いなことにiQONは大規模なサービスダウンを していませんが、サービスの成長が早く、インフラが嬉しい悲鳴を上げる事がありました。 その都度DBやAPIなどをスケールアウトしてきましたが、より快適なサービスを提供するために、 大規模なシステム構成の変更を考えなくてはいけないという話が技術内であがっています。 そこで、いつサービスメンテナンスを実施しても良いように、メンテナンス時に使用する ページを用意しておこうというのが事の発端です。 概要 Webではユニークな404ページを見かけますが、iQONで用意しているメンテナンスページも 可愛い画面になっています。もちろん可愛いだけではなく、メンテナンス内容もきちん
先日3月18日にVASILY初となるエンジニアセミナーを行いました。 お忙しい中ご来場頂いた皆様ありがとうございました。 会場からはたくさんの質問を頂いたり、懇親会でも活発な意見交換を行なうことができ、 我々にとっても非常に有意義な時間となりました。 当日の発表資料をslideshareにあげておきましたのでぜひ御覧ください。 iQONの開発手法 at iQONエンジニアセミナー 「ぶっちぎりのファッションアプリにするために」 iQONエンジニアセミナー by VASILY (iOSチーム) iQON::BackEnd iQONエンジニアセミナー by VASILY (Backendチーム) 今回私達が紹介させていただいたものはiQONのほんの一部に過ぎません。 私達が未来のファッションメディアを作るために 日々取り組んでいることを今後もこの技術ブログで発信していければなと思います。
こんにちは。 年明けから自転車でずっこけて頬骨を骨折→入院→手術と迷惑かけまくったiOSエンジニアの庄司です。 最近、Objective-Cのオープンソースのライブラリを読んでいて、気になった機能があり、実際につかてみて便利だったので紹介します。 概要 クラスのカテゴリ機能を使うことで、既存クラスにメソッドを追加することはできますが、インスタンス変数を追加することはできません。 「関連参照(技術書によっては「連想参照」とも言われています。)」というテクニックを使うと『あるオブジェクトに対して別のオブジェクトの追加する』ことができます。 この機能とカテゴリを組み合わせることで、継承機能を使わずにクラス定義を柔軟に拡張することができます。 通常、クラスのインスタンス変数の定義は、インターフェース部にインスタンス変数の宣言を記述すると、そのクラスのすべてのインスタンスがその変数を持つよ
はじめに こんにちは、じゃがいもの皮はもっぱらキレイにむいて食べるエンジニアの村田です。 前回のエントリ iQONのバックエンドの非同期処理について ではざっくりとした方針とかを書きましたが今回は具体的な実装方法や運用方法などについて紹介したいと思います。 使用技術 iQONではResqueという仕組みを採用して、メール送信やDBの重たい更新処理などを非同期処理しています。 ResqueはRedisにキューを出し入れして遅延処理を実現する仕組みです。シンプルだし導入しやすいと思い採用しました。 このResqueの仕組みをdaemon-spawnというgemでデーモン化して運用しています。 イメージにするとこんな感じです。 導入方法 1.Gemfileに記述 gem 'resque' gem 'daemon-spawn', :require => 'daemon_spawn' 2. in
みなさん初めまして。 iQONのiOSアプリ開発をしています、荒井です。 Techブログ初登場です。宜しくお願いします。 DevLOVE Conference 2012に触発され、今回はiQONの開発手法を紹介したいと思います。 Webについては至る所で様々な手法が紹介がされているので、 今回はiQONのiOSアプリ開発に限定しての紹介です。 はじめに VASILYの開発はアジャイルソフトウェア開発(以下アジャイル)で進むことが多く、 iOSアプリの開発もアジャイルで進めています。 「アプリがリジェクトされた」 「レビューにバグ報告があった」 「デザイン/UIの評判がいまいちだった」 このような経験をしたiOSアプリ開発者は多いのではないでしょうか。 Web開発と異なり、iOSアプリにはApp Store Reviewがあるので、 すぐに修正したコードをデプロイ出来ないのが辛
こんにちは最近一日に一回は波紋のビートを刻んでる村田です。 はじめに スマートフォンアプリの開発では回線状況や端末のスペックなど様々な状況下で動作するため、少しでも高速化できる余地があるのであればなんとか頑張りたいところですよね。 今日はサーバサイドとiOSアプリの間のデータのやり取りを高速化する方法をご紹介したいと思います。 サーバサイドはRuby on Railsを前提にすすめさせて頂きます。 こんな感じでできないか? 弊社ではアプリとサーバサイドのデータのやり取りをjsonで行なっていました。 レスポンスを受け取ってからパースする部分を高速化するには? と考えたときパーサ自体を高速なものに置き換えてみたりしましたが、それよりもplistのバイナリをシリアリズして扱えばパースをする処理を省けるので高速化できないかという仮説に達しました。 このようなイメージですね。 実際どうなのよ
はじめまして。 最近結婚しましたVASILYのエンジニア庄司です。 VASILY では最近、アジャイル開発を取り入れ始めました。 アジャイル開発では開発工程の早い段階でのデプロイ自動化が推奨されています。 ・開発の終盤でデプロイスクリプトを書くより安全・安心 ・自動化されていることで細かく頻繁なアップデートが可能 そこで、Rails定番で利用実績の多いCapistranoを選択しました。 今回はRailsアプリケーションの自動デプロイツールCapistranoを紹介します。 Capistranoとは Railsアプリケーションに特化したデプロイ自動化ツールです。 以下のような特徴があります。 ・Rubyで書かれたRails定番のデプロイツール ・デプロイ/リストアがコマンド一発 ・デプロイのバージョン管理 ・複数サーバにインストール可能。 ・配信先サーバには何もインスト
こんにちは、この夏はほぼ毎日ガリガリくんを食べていた村田です。 最近無意識的にガリガリ君を食べなくなったことで秋を感じつつあります。 今回のリニューアルではiQONのバックエンド(DB、WebAPI、検索、バッチ処理など)のシステムを担当しました。 今日はファッションアイテムの検索について紹介したいと思います。 Apache/Solrの採用 今回のリニューアルを機にファッションアイテムの検索にApache/Solrを採用しました。 採用に踏み切った理由として 検索速度 今までiQONではファッションアイテムの検索にMySQLを使っていました。 日に日に増えるデータ量に合わせて検索のスピードは落ちて行き、その都度対応するという苦しい日々が続きました。 単純にMySQLを使う従来のやり方よりは確実にスピードは期待出来ると思っていました。 実際にフタを開けてみると約5〜7倍の速度を確保す
はじめまして。 梅雨で頭がモジャモジャしはじめてきた天パエンジニアの福本です。 さて、VASILYではアジャイル開発の導入を進めています。 前回は、デプロイ自動化の話でしたが、今回はタスク管理についてです。 アジャイル開発ではストーリーカードやタスクボードなどを使用する事が多いですが、それらをWEB上で管理できるツールを導入しました。 Backlogsプラグイン アジャイル開発用のタスク管理ツールを探してみると、BacklogsというRedmineのプラグインが評判もよくシンプルで使いやすそうでした。 タスク管理にRedmineを使用していていた事もあり試してみた所、使い勝手が良かったので紹介します。 全体的な操作感としてはAjaxを多用していて直感的でサクサク動くのが気に入ってます。 プラグインを導入すると通常のプロジェクト画面にBacklogsとReleasesというタブがあ
はじめまして、iQONを運営しているVASILYのCTOの今村と申します。 この度サイトのリニューアルにあたり、心機一転、個性豊かなVASILYのエンジニア達による 技術ブログをはじめたいと思います。 一発目の記事ということなので簡単に弊社の環境紹介を。 弊社ではエンジニアをはじめとする全社員がMacを使っています。 Windows環境はVmwareFusion内にしかありません。 エンジニアには全員27インチのiMacが支給され、それを用いて開発を行っています。 また、自分が使いたいマウスやキーボードなども支給されます。 ちなみにVASILYのエンジニアのキーボードはRealForce派:HHKB派が4:1となっています。 僕は静音タイプのRealForceを使っています、一度慣れるともう戻れませんね。 マウスは全員トラックボールを使っています。これも慣れるまでは大変ですが
このページを最初にブックマークしてみませんか?
『ZOZO TECH BLOG』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く