タグ

ブックマーク / techblog.recruit.co.jp (8)

  • Railsアプリの処理を100倍以上に高速化して得られた知見 | Recruit Tech Blog

    はじめまして。2019年4月から妊娠・出産アプリ『Babyプラス』の開発チームにJOINした濱田です。 『Babyプラス』のバックエンドはRailsで実装されているのですが、とあるCSV生成処理がとても遅かったので100倍以上に高速化しました。この過程でRailsアプリの処理高速化に関する以下の知見が得られたので、具体例を交えて共有します。この知見は、ActiveRecordを使用してMySQLなどのRDBMSからデータ抽出をする様々な場面で活用できると思います。 いわゆる「N+1問題」を起こさないのは基 「ActiveRecordインスタンスの生成コスト」はそれなりに高い pluckはjoinsと組み合わせることで他テーブルのカラム値も取得できる 前提: DBスキーマとデータ規模 今回の処理高速化に関わるモデルのDBスキーマとデータ規模は以下の通りです。なお、これらはエントリ向けに少

    Railsアプリの処理を100倍以上に高速化して得られた知見 | Recruit Tech Blog
    petitviolet
    petitviolet 2019/08/05
    生SQLはそれはそれでダルいマッピングを書きまくらないといけないので辛い
  • Amazon EKSでIngress Controllerに何を採用するか検討した | Recruit Tech Blog

    こちらの内容は2019年5月当時のものです。内容が古くなっています。 当時はalb-ingress-controllerという名前でしたが、aws-load-balancer-controllerとなり、ingressのグルーピングの機能も追加されています。 最新のものは以下の記事で紹介しています。 TargetGroupBinding を使って AWS EKS で Kubernetes を無停止かつ DNS 切り替え無しでバージョンアップしました こんにちは、スタディサプリ ENGLISH SREグループの大島です。 現在、Amazon Elastic Container Service for Kubernetes(以下EKS)を番運用するにあたって各要素について検討を行なっています。今回は、その一貫でAmazon EKSでIngress Controllerに何を採用するかについて

    Amazon EKSでIngress Controllerに何を採用するか検討した | Recruit Tech Blog
  • コードレビューで気をつけているいくつかのこと | Recruit Tech Blog

    はじめに タブやスペースの数(インデント)とか変数名のセンスだけを指摘してコードレビューしたぜ!となっていいのは小学生までと言われています[要出典]。このエントリでは主にScalaをターゲットにして、どういうところに気をつけると効果的にレビューできるのか?について僕の個人的な経験に基づきつつ紹介しようと思います。 こういうコードがでてきたら、これは慎重に見るべきポイントだな!というのを紹介していきます。コードの全てのを見ていくのは非常に大変なので、こういう気になるところだけ見るような形にしています。また、このエントリではサンプルコードとしてScalaを利用してます。 型Aをとって型Bを返す関数 こう言われるとやや謎かもしれないですが、たとえば次のような関数です。 def toInt(str: String): Int = ??? // 実装があるとする こういう関数があったら、僕は脳死で次

    コードレビューで気をつけているいくつかのこと | Recruit Tech Blog
  • Scala + CleanArchitecture に Eff を組み込んでみた – PSYENCE:MEDIA

    この記事は RECRUIT MARKETING PARTNERS Advent Calendar 2018 の投稿記事です。 こんにちは。スタディサプリENGLSHでサーバーサイドとインフラを担当している松川です。 CleanArchitectureにEffを組み込むことによって、これまでモナドトランスフォーマーでは辛かった数種類以上のモナドを取り扱う処理をフラットに書けるようになったり、多くのメリットがあったので紹介させていだきます。 はじめに スタディサプリ ENGLISHのサーバーサイドは全てScalaで書かれており、CleanArchitectureを採用しています。 1つのサービスにおけるsbtプロジェクトの依存関係は以下のようになっています1)StreamAdapter,InternalAdapterは存在しないサービスもあります。。 基的にはオブジェクトが主役な設計ですが、

    Scala + CleanArchitecture に Eff を組み込んでみた – PSYENCE:MEDIA
  • Androidで使えるシリアライザー特集 | Recruit Tech Blog

    ライブラリのサイズ もちろんAndroid Wearでの通信が込み入ったものになったり、そもそもマルチプラットフォームでのオブジェクトのやり取りが発生する場合は当然Protocol BuffersやMessagePackの出番はあるので、今回の調査は決して無駄にはならないでしょう。 テストするシリアライザー Serializable Java言語ではおなじみのSerializableインターフェースです。インターフェースを実装するだけなので導入は簡単です。 Parcelable Androidでは一般的なシリアライズの形式です。AIDL (Android Interface Definition Language)などプロセス間でオブジェクトをやり取りする際にも使います。 定められた形式で実装する必要があることから以前は実装に手間がかかると言われていましたが、現在はAndroid Stud

    Androidで使えるシリアライザー特集 | Recruit Tech Blog
  • Scalaプログラミングスタイル集 | Recruit Tech Blog

    はじめに 人によって様々な書き方ができてしまうのがScala記事では、階乗を求めるfac関数を例に、いくつかの興味深いプログラミングスタイルを紹介します。 以下のコードは、REPLで:pasteすることで、簡単に動作を確認できます。 手続きプログラミング 破壊的操作をためらわない男らしいプログラミングスタイル。 def fac(n: Int) = { var result = 1 for (i <- 1 to n) { result *= i } result } 再帰で書くより速い(はず)です。 普通の再帰 初学者泣かせの再帰スタイル。 def fac(n: Int): Int = if (n == 0) 1 else n * fac(n - 1) // 再帰呼び出しの外側に * による演算がある このように書くとスタックをどんどん消費するので、後述する末尾再帰を使ったほうがいいで

    Scalaプログラミングスタイル集 | Recruit Tech Blog
  • [ Android ] - これからの「設計」の話をしよう | Recruit Tech Blog

    はじめまして。 6/1より入社いたしましたAndroidエンジニアの釘宮です。よろしくお願いいたします。 今日はAndroidの設計について語ってみようと思います。 その前に 「良い設計とはなにか」という議論が「正義とはなにか」という議論のようにいつまでたっても結論がでないのは、環境やチームメンバのスキルセット、ステークホルダーによって目指すべきゴールが変わるためだと考えます。 つまるところ、設計に正解はありません。 そのため以下で話すことは、「これが設計の正解だ!!」というわけではなくて、「こういう設計の仕方するとうまくいくっぽい」くらいのノリです。 あと、特にMVCとかDDDとか人によって解釈のズレが起きやすいところなどは、冗長になるのを嫌って自分の解釈で言い切っています。ご了承ください。 設計の目的について ハードルが下がったところで、早速。 まず設計の目的ってなんでしょうか? この

    [ Android ] - これからの「設計」の話をしよう | Recruit Tech Blog
  • Android Design Support Libraryを使う | Recruit Tech Blog

    どうもこんにちは。Google I/O 2015 帰りの 英単語サプリ 担当 田澤です。 Material Designを実現するためのAndroid Design Support Libraryが発表されました。 これまではサードパーティーのライブラリを利用するか、独自実装してMaterial Design対応をする必要がありましたが、ついに公式でサポートされるようになりました。サポートOSバージョンはAndroid 2.1 以上となっています。 そこで、記事ではAndroid Design Support Libraryで追加されたコンポーネントと使い方を紹介します。 また、各コンポーネントに関するDesign Guidelineのリンクも用意しているのでご参照ください。 なお、ここで紹介しているコードは Github - android-SampleDesignSupportLib

    Android Design Support Libraryを使う | Recruit Tech Blog
    petitviolet
    petitviolet 2015/06/10
    動画もあって良い
  • 1