テック - R-Hack(楽天グループ株式会社)

https://commerce-engineer.rakuten.careers/archive/category/%E3%83%86%E3%83%83%E3%82%AF

楽天コマーステックのオウンドメディアです。楽天コマースカンパニーのテックチームから様々な情報を発信する場所であり、 「人」,「働き方」,「カルチャー」ジムやカフェテリア等の社内施設等 どんな人が、どんな想いで、どんな所で、どの様に働いてるかを紹介しています。

フィード

記事のアイキャッチ画像
ITサービスの高可用性と耐障害性 (HA/DR) を向上させるには ― 楽天ペイ(オンライン決済)での取り組み② ―
テック - R-Hack(楽天グループ株式会社)
今回は私たちが運営する「楽天ペイ」での高可用性/耐障害性 (以下、HA/DR)を向上させるための具体的な取り組みを紹介していこうと思います。前回の記事では、私たちが第一弾として「楽天ペイ」という大規模サービスを運営・管理する中で培ってきたアプローチ方法をより一般的な説明として取り上げました。興味のある方は是非合わせてご覧になってください。
1年前
記事のアイキャッチ画像
ITサービスの高可用性と耐障害性 (HA/DR) を向上させるには ― 楽天ペイ(オンライン決済)での取り組み① ―
テック - R-Hack(楽天グループ株式会社)
今回から2記事に分けて、私たちが取り組んでいる高可用性/耐障害性 (以下、HA/DR) の仕組み作りについて紹介していきます。今回の記事では、私たちがこれまで「楽天ペイ(オンライン決済)」という大規模サービスを運営・管理する中で培ってきたHA/DRを高めるためのアプローチ方法を説明していきます。また次回の記事では、私たちが運営する「楽天ペイ(オンライン決済)」でのより具体的な取り組みについても紹介する予定です。サービスのHA/DRを高めたいと考えている方は、是非ご覧ください。
1年前
記事のアイキャッチ画像
ラクマiOSアプリのフルSwift化を約4年かけてやり遂げた話
テック - R-Hack(楽天グループ株式会社)
こんにちは。楽天ラクマ モバイルアプリケーショングループのdarquroです。 今回は「楽天ラクマ」iOSアプリのフルSwift化を、約4年かけてやり遂げた話を書きたいと思います。 ことの始まり 私は2018年10月1日に楽天グループに入社しました。 当時採用面接で驚いたのは、アプリエンジニアのチーム体制を聞いたところ、iOS1名、Android1名という状態だったことでした。 なので、私がiOSエンジニアとして入社し、やっとiOSアプリは2人体制になったというわけです。 2018年は「楽天ラクマ」の前身である「フリル」を運営する株式会社Fablicを吸収合併し、それに伴い開発組織としても再構…
2年前
記事のアイキャッチ画像
ふりかえりの大切さ
テック - R-Hack(楽天グループ株式会社)
みなさん、こんにちは。楽天大阪支社でお仕事させていただいているイデルと申します。今回は「ふりかえり」についてお話したいと思います。 数年前、私はソフトウェアエンジニアからプロジェクトマネージャーにキャリアパスを変更し、それから様々なフレームワーク、方法論やプロジェクトをハンドリングする方法、チームとの関わり方を試してきました。その話は次のR-Hackの記事で扱うことにして、この記事では「ふりかえり」に焦点を当てていきたいと思います。 ふりかえりとは、製品をリリースした後に行われるミーティングのことで、開発の中で行われたことを話し合い、その学びや会話をもとにその後改善していくことを目的としていま…
2年前
記事のアイキャッチ画像
サードパーティーのdependencyを最新に保ち、セキュリティーとメンテナビリティーを担保しよう
テック - R-Hack(楽天グループ株式会社)
ラクマの亀井です。こちらの記事ではサードパーティーのdependencyを最新に保つことの重要性とどうやって最新に保っていくべきかを記載します。 サードパーティーdependencyはすぐに古くなる ほとんどのソフトウェアはサードパーティーdependencyを使います。それは、必要な機能をすぐに使えるようにしたり、テストをもっとかんたんにかけるようにしたり、など様々な理由でしょう。そうやって開発を続けていくと、ソフトウェアが成長しコードベースも巨大になっていくと思います。しかしながら、ソフトウェアプロジェクトは、プロジェクトメンバーが十分な時間をとれないために、ときどきサードパーティーdep…
3年前
記事のアイキャッチ画像
業務でSwiftUIを使って画面構築してみた話
テック - R-Hack(楽天グループ株式会社)
業務の中でSwiftUIを使って画面構築出来る機会がありましたので、実際に構築し終えての所感をまとめておきたいと思います。 やったこと 昨年、アプリの対応バージョンがiOS13以上となったので、SwiftUIが導入できるようになりました。 ちょうどUITableViewControllerを利用して構築されていたヘルプページの改修を予定していたので、こちらをSwiftUIへ置き換えてみました。 簡単に構成を示しておきます。 画面構成 画面構成 今回作成したViewは、Objective-Cで作成したUIKitのViewとSwiftのUIKitのViewに挟まれた場所にありました。 この構成が後…
3年前
記事のアイキャッチ画像
Compositional Layoutsを使ってラクマのiOSアプリを改修した話
テック - R-Hack(楽天グループ株式会社)
前書き 初めまして、ラクマのTsurutaです。 ラクマのアプリでは「保存した検索条件」の一覧が、ホームのタブから見られるようになったことをご存知でしょうか? この画面を構成するのにあたり、ラクマではiOS12以下のサポートを行っていないため、iOSの新しいAPIである Compositional Layouts を使って構成することにしました。 実装 ① iOSアプリの構成 現状ラクマのアプリは MVP をベースとした構成になっています。 UICollectionView を実装する場合、Delegate や DataSource の実装が ViewController に依存してしまう問題…
3年前
記事のアイキャッチ画像
CameraXへの移行とその経緯
テック - R-Hack(楽天グループ株式会社)
こんにちは、ラクマで主にAndroidを担当している@shin_nosakaです。 ラクマAndroidでは、v7.34.0でバーコード出品の機能で使用されるCamera APIをCameraXへの移行を行いました。 今回は、Android界隈では鬼門と言われる、ラクマでのカメラ機能の実装と、CameraXへの移行にあたっての経緯についてお話ししようかと思います。 ラクマAndroidにおけるカメラ周りの実装の歴史 ラクマではバーコード出品機能をv7.15.0から提供しています。 この頃、ラクマではAndroid 5.0未満(4.4)の端末をサポートしており、Camera2 APIはAndro…
3年前
記事のアイキャッチ画像
iOSのAPIリクエストのCombine実装
テック - R-Hack(楽天グループ株式会社)
みなさんこんにちは。ラクマでiOSエンジニアをしているdarquroです。 ラクマは去年12月のリリースでサポートOSをiOS13以上にしました。 それに伴い、Combine Frameworkの利用もプロダクションコードに本格導入しました。 ラクマiOSアプリのアーキテクチャはMVP+Clean Architectureを採用しており、RxSwiftの置き換えではなく、現在はUIのバリデーションの一部やAPIリクエストの一部で使用している形になります。 今回の投稿では、Combine Frameworkの各プロトコルやイテレータなどのおさらいをして、APIリクエストの部分の実装、UnitTe…
3年前
記事のアイキャッチ画像
E2Eテスト: Selenium Gridを試す
テック - R-Hack(楽天グループ株式会社)
はじめに こんにちは、ラクマの@itinaoです。 E2Eテストについて、概要からお手軽に試す方法までを全5編で記載しています。 E2Eテスト: 導入の必要性・何を導入するのか E2Eテスト: TestCafeを試す E2Eテスト: Github Actions上でTestCafeを試す(PCブラウザ編) E2Eテスト: Github Actions上でTestCafeを試す(モバイルブラウザ編) E2Eテスト: Selenium Gridを試す← 今回はココ 前回まででTestCafeを試していましたが、 いにしえから使われているSeleniumに関しても触れておかないとE2Eテストに関する…
3年前
記事のアイキャッチ画像
E2Eテスト: Github Actions上でTestCafeを試す(モバイルブラウザ編)
テック - R-Hack(楽天グループ株式会社)
はじめに こんにちは、ラクマの@itinaoです。 E2Eテストについて、概要からお手軽に試す方法までを全5編で記載しています。 E2Eテスト: 導入の必要性・何を導入するのか E2Eテスト: TestCafeを試す E2Eテスト: Github Actions上でTestCafeを試す(PCブラウザ編) E2Eテスト: Github Actions上でTestCafeを試す(モバイルブラウザ編) ← 今回はココ E2Eテスト: Selenium Gridを試す 前回の記事の続きで、Github Actions上でTest Cafeを実行させます。 今回はモバイル端末の実行に関して説明していき…
3年前
記事のアイキャッチ画像
E2Eテスト: Github Actions上でTestCafeを試す(PCブラウザ編)
テック - R-Hack(楽天グループ株式会社)
はじめに こんにちは、ラクマの@itinaoです。 E2Eテストについて、概要からお手軽に試す方法までを全5編で記載しています。 E2Eテスト: 導入の必要性・何を導入するのか E2Eテスト: TestCafeを試す E2Eテスト: Github Actions上でTestCafeを試す(PCブラウザ編)← 今回はココ E2Eテスト: Github Actions上でTestCafeを試す(モバイルブラウザ編) E2Eテスト: Selenium Gridを試す 前回の記事で、TestCafeをローカルの環境で実施する手法を記しました。 ローカルで実行できるだけでも便利ですが、 任意のタイミング…
3年前
記事のアイキャッチ画像
E2Eテスト: TestCafeを試す
テック - R-Hack(楽天グループ株式会社)
はじめに こんにちは、ラクマの@itinaoです。 E2Eテストについて、概要からお手軽に試す方法までを全5編で記載しています。 E2Eテスト: 導入の必要性・何を導入するのか E2Eテスト: TestCafeを試す ← 今回はココ E2Eテスト: Github Actions上でTestCafeを試す(PCブラウザ編) E2Eテスト: Github Actions上でTestCafeを試す(モバイルブラウザ編) E2Eテスト: Selenium Gridを試す 前回の記事で何のために導入するのか・何を導入するのか?を決め、 今回はお手軽にE2Eテストを導入できるTestCafeにフォーカスを…
3年前
記事のアイキャッチ画像
E2Eテスト: 導入の必要性・何を導入するのか
テック - R-Hack(楽天グループ株式会社)
はじめに こんにちは、ラクマの@itinaoです。 E2Eテストについて、概要からお手軽に試す方法までを全5編で記載しています。 E2Eテスト: 導入の必要性・何を導入するのか ← 今回はココ E2Eテスト: TestCafeを試す E2Eテスト: Github Actions上でTestCafeを試す(PCブラウザ編) E2Eテスト: Github Actions上でTestCafeを試す(モバイルブラウザ編) E2Eテスト: Selenium Gridを試す 真面目に導入すると、導入コストもかなり高く、複雑でハードルが高いです。 少しでも皆さんの参考になれば幸いです。 読書対象 E2Eテス…
3年前
記事のアイキャッチ画像
ラクマのAndroidアプリの検索オートコンプリート機能を改善した話
テック - R-Hack(楽天グループ株式会社)
自己紹介 はじめまして。ラクマでAndroidエンジニアをしている者です。 趣味は筋肉トレーニングです 💪 環境 Android Studio 4.1.1 記事の目的 ラクマAndoridは、2014年から続くサービスのため、レガシーなコードもいくつかありますが、基本的なアーキテクチャはMVVMを採用しています。 本稿ではMVVMアーキテクチャを使用して、ラクマの検索オートコンプリートがどう改善されたか記載させていただきます。 背景 皆さんはインターネットで買い物をする際、欲しい商品がなかなか見つからない、検索できない、これじゃないんだけどな。という歯がゆい思いを一度は体験したことはありません…
3年前
記事のアイキャッチ画像
ラクマのAndroidアプリの検索オートコンプリート機能を改善した話
テック - R-Hack(楽天グループ株式会社)
自己紹介 はじめまして。ラクマでAndroidエンジニアをしている者です。 趣味は筋肉トレーニングです 💪 環境 Android Studio 4.1.1 記事の目的 ラクマAndoridは、2014年から続くサービスのため、レガシーなコードもいくつかありますが、基本的なアーキテクチャはMVVMを採用しています。 本稿ではMVVMアーキテクチャを使用して、ラクマの検索オートコンプリートがどう改善されたか記載させていただきます。 背景 皆さんはインターネットで買い物をする際、欲しい商品がなかなか見つからない、検索できない、これじゃないんだけどな。という歯がゆい思いを一度は体験したことはありません…
3年前
記事のアイキャッチ画像
RSpecの書き方で最近悩んだこと3つとその解決法について
テック - R-Hack(楽天グループ株式会社)
こんにちは、冬になると首がつりやすくなるラクマの高橋です。 ラクマではRubyを主に使って開発しており、テストフレームワークはRSpecを採用しています。 RSpecの書き方について、最近躓いた3選を今回はお届けします。 検証環境 ruby: 2.6.5 rails: 6.0.3.2 rspec-rails: 3.9.0 module単体に対してテストを書きたい moduleをいろんなクラスで使用することを想定するとき、テストを特定のクラスに依存させて書くのはよくなさそうです。 そんなとき、どうすればよいか悩んだのですが、こんなふうに書くと、特定のクラスに依存せず、moduleをinclude…
3年前
記事のアイキャッチ画像
Rails における gem へのモンキーパッチの方法をいくつか試した話
テック - R-Hack(楽天グループ株式会社)
初めまして、ラクマでサーバサイドエンジニアをやっているtatsumiです。 普段は業務で Ruby on Railsを使っています。 業務で、サードパーティー製のgemのモンキーパッチを行ったのでいくつか方法を紹介しようと思います。 参考文献 この記事を作る上で、参考にした記事が以下の2つでこれらには書かれていない情報を記述しました。 techlife.cookpad.com qiita.com 環境 Ruby 2.5.7 Ruby on Rails 5.2.4.4 モンキーパッチとは モンキーパッチの概要について説明したいと思います。 今日では何かシステムを作る時に、よく使う機能はすでに作成…
3年前
記事のアイキャッチ画像
Rails の複数バージョンで gem をテストするのに appraisal を導入した話
テック - R-Hack(楽天グループ株式会社)
こんにちは。ラクマの豊永です。 ラクマでは複数のリポジトリに分けてソースコードを使っており、それぞれのリポジトリが共通して利用している社内gemがあります。 最近、Rails Upgrade のプロジェクトをやったのですが、そのとき困ったことがありました。 いままでは複数のリポジトリが同じRailsバージョンだったので、大きな問題には、ならなかったのですが 社内gem が複数の Rails で動くことを保証するため、 複数の Rails バージョンでテスト (rspec) を実行するようにしました。 「なんで "複数の Rails で動くことを保証" する必要があるのですか?」と思われるかもし…
3年前
記事のアイキャッチ画像
Rails環境にESlintとSaddlerでassets/javascriptsを自動でチェックさせる仕組みを作った話
テック - R-Hack(楽天グループ株式会社)
こんにちは、ラクマのKeitaです。 Webアプリケーションでは実装初期にフロントエンド周りの設計やコーディングルールの取り決めをしなかったことによりレガシーとなってしまったJavaScript達に目を向けなければならない時があると思います。 今回はそんなレガシーなJavaScript達と向き合うために作った仕組みについて書いていきます。 www.wantedly.com 肥大化してしまったレガシーJavaScript達を1ファイルずつ確認して直していくのは流石に大変なので、まずはレガシー化が進行しないようにする仕組みを作る必要がありました。 やったこと git diff から追加 / 変更し…
3年前
記事のアイキャッチ画像
Railsのfind_eachやfind_in_batchesでorderにid以外を指定したい場合の解決方法
テック - R-Hack(楽天グループ株式会社)
はじめに はじめまして!ラクマの小田です。 大量のデータにアクセスして処理を行う場合、 メモリ不足で処理が中断されないよう、少しずつメモリに展開したい 途中で処理が中断されても問題ないよう、一定件数ごとにコミットをしたい と考えることがあると思います。 そんなときにRailsで役に立つのがfind_eachやfind_in_batchesですね。 ただしこの2つのメソッドには弱点があり、id(主キー/primary key)の昇順(ASC)でしかデータを扱うことができません。 ※Rails v6.1.0時点での情報です。 # NOTE: Order can be ascending (:asc…
3年前
記事のアイキャッチ画像
iOSのセミモーダル/ハーフモーダルを最小限の機能で実装するには
テック - R-Hack(楽天グループ株式会社)
みなさんこんにちは。ラクマでiOSエンジニアをしているdarquroです。 今回はiOSアプリの、セミモーダル/ハーフモーダル(以降セミモーダル)の実装について紹介したいと思います。 はじめに 昨今のアプリではセミモーダルを用いたUI/UXが主流となってきました。 例えば、Facebook、Twitter、Slackなどでは以下のように使われています。 ラクマでも、セミモーダルを使用し、画面遷移せずにユーザーアクションを促したり、補足情報を表示したりしています。 iOSで有名なOSSだとFloatingPanelが有名です。 github.com また、ラクマではSwiftUIはまだ導入できて…
3年前
記事のアイキャッチ画像
RailsのCurrentAttributesを使ってX-Request-IDでnginx(Webサーバ)とunicorn(アプリサーバ)のログを追えるようにする方法
テック - R-Hack(楽天グループ株式会社)
動作確認したRailsのバージョン 6.0.3.4 よくある話として こんにちは、ラクマのshoです。 NginxなどのWebサーバのログとunicornやpumaなどのアプリサーバのログを同じIDで検索するため、X-Request-IDをアプリサーバのログに仕込んだりします。Railsに予め用意されているconfigの設定で行うのが手軽ですが、下記のような問題があります。 TaggedLoggingの問題 TaggedLoggingを利用していれば、configファイルの以下の設定のコメントアウトを外せばX-Request-IDがログに付与されるようになっています。 config.log_t…
3年前
記事のアイキャッチ画像
Rails の cache ストレージで Active Record のオブジェクトを入れると事故りやすいと思う件
テック - R-Hack(楽天グループ株式会社)
こんにちは。たびたび、Rails の cache に悩まされているラクマの豊永です。 今回、Rails のキャッシュ機構で、Active Record のオブジェクトを保存すると "色々、大変なことがあるぞ" ということについて書いていきたいと思います。 ちなみにここでいうキャッシュ機構は、cache_store のことを指します。 Rails のキャッシュ機構 - Railsガイド それでは始めます。 確認環境 $ bundle exec rails --version Rails 5.2.4.3 $ mysql --version mysql Ver 14.14 Distrib 5.6.4…
3年前
記事のアイキャッチ画像
UIButtonのtitleLabelとimageViewを左右逆に配置する
テック - R-Hack(楽天グループ株式会社)
はじめまして。ラクマでモバイルエンジニアをやっているkurapyです。 iOSアプリを作るうえでよく利用されるUIButtonのimageViewは左、titleLabelは右に配置されるのが一般的です。 その配置を逆にしようとした時に少し苦戦したので、どう対応したのかをお話ししようと思います。 環境 Xcode 12.0.1 Swift 5.3 titleLabelとimageViewを左右逆に配置する imageViewを右、titleLabelを左に配置したい場合、UIButtonを左右反転することで配置することができます。 その際、imageViewやtitleLabelも反転してしま…
4年前
記事のアイキャッチ画像
サーバーサイドエンジニアがKubernetesに入門してみた
テック - R-Hack(楽天グループ株式会社)
はじめに こんにちは。ラクマでサーバーサイドエンジニアをやっているYuです。 このあいだ半年ぶりに出社したら、強いノスタルジーを感じてしまいました。 業務時間の10%を委員会活動に使えるのですが、私は半年以上KubernetesなどのCNCFのプロジェクトを触っていました。 今回は、そこで学んだ内容をもとにKubernetesについてお話したいと思います。Kubernetesという言葉を聞いたことはあるけれども触ったことはない、ぐらいの方をターゲットにしています。 目次 Kubernetesについて Kubernetesを触ってみる Kubernetesについて Kubernetesとは? 公…
4年前
記事のアイキャッチ画像
RailsのLogSubscriberの仕組みを利用した不要なログ出力を止める方法
テック - R-Hack(楽天グループ株式会社)
こんにちは、ラクマのshoです。 Ruby on Railsはデフォルトでいろいろなログを出力しています。Railsで作ったサービスを運用していると、出力を止めたいログも出てくることと思います。 本記事ではRuby on RailsのLogSubscriberの仕組みを利用してログ出力を止める方法を紹介したいと思います。 (実際この仕組みはlogrageで使われています) 本記事の動作確認は5.2.3で行っています 不要なログ出力を止めることで データ量の削減に繋がりコスト削減に繋がる ログを探す時、見通しが良くなる などのメリットが生まれます。 api_1 | Processing by T…
4年前
記事のアイキャッチ画像
高速にPoCを実行する一手法の紹介
テック - R-Hack(楽天グループ株式会社)
こんにちは、Tetsuです。 アプリ開発に従事している皆様は、日ごろ、上司やビジネス担当者の方々からユーザのニーズへの対応や競合サービスに先んじるために迅速なアプリ開発を求められることがあるかと思います。とりわけ昨今、新型コロナウイルス感染の拡がりに伴って、私たちを取り巻く社会環境や価値観は大きく変わろうとしており、その変化に即応していく必要性はなおさら強まっているのではないでしょうか?しかし、現実的には、アプリ開発は要件決めに始まり、設計・開発・テストなどで一朝一夕に終わるものではなく(特に機能が増えれば増えるほど)、その時間をかけて開発したアプリがユーザに受け入れられるという保証もありませ…
4年前
記事のアイキャッチ画像
Rspecの書き方についてディスカッションしました(nikotama.rb #11)
テック - R-Hack(楽天グループ株式会社)
こんにちは、ラクマでサーバーサイドエンジニアをやっている岸です。 突然ですが、楽天ではひっそりとRubyコミュニティを開催しています。正しくは、楽天所有のコミュニティというよりは、社内で業務内/業務外限らずRubyを触っている人たちが集まって、社外の方もご参加いただけるイベントを開催しています。 新型コロナウイルスの影響もありしばらく開催を控えていましたが、第10回目よりオンラインで再開し、今回が第11回目となりました🎉 今後も月1回ペースで開催していきますので、ぜひともイベントに登録してみてくださいね🥺 nikotamarb.connpass.com Rspecの書き方 そこで、今回私が発表…
4年前
記事のアイキャッチ画像
actionがrenderするファイルを自動で分岐させる
テック - R-Hack(楽天グループ株式会社)
こんにちは。ラクマの岸です。 ラクマでは、既存Webフロントエンドをよりモダンな技術にリプレースしようという動きが加速しており、サービスが発足した2012年から使われているjQueryベースのフロントエンドをVue.jsに置き換えようとしています。 www.wantedly.com さて、我々が使っているサーバーサイドフレームワークはRuby on Railsですが、webpackのラッパーgemであるwebpackerは使わずに、素のwebpackでビルドされた純粋なフロントエンドリポジトリをsubmoduleとして取り込んで使っています。 (後に、フロントエンドを1マイクロサービスとして切…
4年前