リサーチ・アンド・イノベーション 開発者ブログ

https://rni-dev.hatenablog.com/

Research & Innovation Developer's Blog

フィード

記事のアイキャッチ画像
2024 RNIアドベントカレンダー 最終日 社内デスクツアー
リサーチ・アンド・イノベーション 開発者ブログ
これは RNI 開発部 (SDD) Advent Calendar 2024 最終日の記事です。 メリークリスマス🎄 リサーチ・アンド・イノベーションの中島です。 私が入社&フルリモート勤務になってから1年が経ち、デスク周りの環境もだいぶ整ってきました RNIの開発者は基本的にフルリモートかつ在宅での作業になる為、 フルリモートで勤務する上でデスク環境はメンバーによって個性が出やすい部分です。 今回は、RNIで働くメンバーから掲載許可をいただけたデスクの紹介していきます。
12日前
記事のアイキャッチ画像
AWS Network Firewall を設定した時にハマりポイントを踏み抜きまくった話
リサーチ・アンド・イノベーション 開発者ブログ
これは RNI 開発部 (DD) Advent Calendar 2024 6 日目の記事です。 リサーチ・アンド・イノベーションのSです。 バックエンドエンジニアとしてRnIにお世話になっているはずなのですが、ここ1年以上はSREとしてAWSインフラなどの基盤やセキュリティ周りをメインに担当しています。 AWS Network Firewall AWS 上で Network Firewall (AWS Network Firewall 、以下 FW)を構築するパターンが各社で徐々に増えてきていますが、 AWS 公式の FW 周りのドキュメントも豊富ではなく、また、作成自体も 1 度行ってしま…
13日前
記事のアイキャッチ画像
graphql loves rails
リサーチ・アンド・イノベーション 開発者ブログ
RNIアドベントカレンダー 5日目の記事です。 リサーチ・アンド・イノベーションの横山です。 今年もアドベントカレンダーの季節になりました。えっ嘘もう年末? 自己紹介 ずっと流しのエンジニア(死語?)をしておりましたが、RNIにお世話になっていつの間にか6年くらい経つみたいです。 ここ数年ですっかりリモートワーク仙人のようになってしまいました。 作業環境はアドベントカレンダー最終日のデスクツアーで紹介してもらう予定なので楽しみにしていて下さい。 graphql 皆さんgraphqlしてますか? RNIでは10年ほど前からRuby on Railsをバックエンドとして利用しています。 そして今を…
14日前
記事のアイキャッチ画像
TCAの@Sharedを使ってStateを共有する
リサーチ・アンド・イノベーション 開発者ブログ
RNIアドベントカレンダー 4日目の記事です。 リサーチ・アンド・イノベーションのhongです。iOSエンジニアをやっています。年末年始がどんどん迫ってくるので、テンション上がりますね。今回はTCAの@Sharedについて解説いたします。 親と子の間Stateを共有する 長い間TCAを使っている方は親と子の間Stateを共有したいシチュエーションに遭遇したと思います。自分の方でも少し整理したので、この記事書くことにしました。間違いがありましたら遠慮なくコメントで指摘お願いします! 親と子の間でStateを共有 これは一番シンプルな使い方ですね: @Reducer struct ParentFe…
15日前
記事のアイキャッチ画像
iOSアプリの画面遷移図を自動生成する
リサーチ・アンド・イノベーション 開発者ブログ
RNIアドベントカレンダー 3日目の記事です。 こんにちは。リサーチ・アンド・イノベーションの小川です。 iOSエンジニアとしてCODEアプリの開発を担当しています。 CODE iOSチームの2024年の取り組みの一つとして画面遷移図を自動生成することを行いましたので、そちらの共有をしたいと思います。 モチベーション 画面遷移の把握を簡単にしたいので画面遷移図は作りたい 手動で作るのは手間が発生するので自動で作りたい 画面遷移図を手動でメンテナンスせずに最新に保ちたい 画面の表示に影響のある改修が入った際は差分検知したい スクリーンイベント名と実際の画面の対応をビジネスサイドに共有したい
16日前
記事のアイキャッチ画像
2024 RNIアドベントカレンダー1日目 iOS版CODEで使えそうなAppleの技術を振り返る
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの中島です。 RNIアドベントカレンダー 1日目の記事です。 Appleは毎年WWDCで新しい技術の発表を行うのが通例ですが、あまり流行らずに忘れられていく技術も多々あります。 この記事ではいくつかの技術を振り返ろうと思います。 目次: VisionKit Data Scanner App Clip おまけ
18日前
記事のアイキャッチ画像
RNIアドベントカレンダー2024
リサーチ・アンド・イノベーション 開発者ブログ
2024年、今年もRNIアドベントカレンダーを開催します! 日付 名 前 所属 内容 12/18 中島) iOSエンジニア rni-dev.hatenablog.com 12/19 武田 Androidエンジニア qiita.com 12/20 小川 iOSエンジニア rni-dev.hatenablog.com 12/21 ホン iOSエンジニア rni-dev.hatenablog.com 12/22 横山 サーバサイドエンジニア rni-dev.hatenablog.com 12/23 S サーバサイドエンジニア rni-dev.hatenablog.com 12/24 中島 iOSエン…
23日前
記事のアイキャッチ画像
RNIアドベントカレンダー7日目 Lambda のアップデートをした話
リサーチ・アンド・イノベーション 開発者ブログ
これは RNI 開発部 (SDD) Advent Calendar 2023 最終日の記事です。 本来は 2 日目に入る予定だったのですが、諸事情で最終日になってしまいました。 来年は早めに書いておこうと思います。 Lambda のアップデートをした話 SDD では 3 年ほど前に主要なインフラを AWS に移行しました。 その後、徐々に Lambda 上のスクリプトが増え、現在 RnI で利用しているのは以下言語になっています。 Ruby Go Node.js Python RnI では今年、特に利用している Lambda ランタイムのサポート終了が多く、 3 年前から使っていた多くのスクリ…
1年前
記事のアイキャッチ画像
RNIアドベントカレンダー6日目 2024年に使いたい技術
リサーチ・アンド・イノベーション 開発者ブログ
2024年に使いたい技術 メリークリスマス! リサーチ・アンド・イノベーションの横山です。 RNIアドベントカレンダーの6日目になります。 今年も残り一週間ということで、来年2024年に使いたい技術についてお話しようと思います。 ruby3.3 明日はいよいよクリスマス。例年、rubyは12月25日に新しいバージョンがリリースされます。 恐らく明日にはruby3.3がリリースされることでしょう。 既にRCがリリースされており、何事もなければこのまま正式版がリリースされると思います。 ruby3.3の新機能としてはパーサの置き換え、RJIT(rubyで書かれたJITコンパイラ)の追加、irbとr…
1年前
記事のアイキャッチ画像
RNIアドベントカレンダー2023 4日目 iOS TCAへの移行を行ってみた感想と既存との調整点
リサーチ・アンド・イノベーション 開発者ブログ
RNIアドベントカレンダー2023 4日目 こんにちは。リサーチ・アンド・イノベーションの小川です。 iOSエンジニアとしてCODEアプリの開発を担当しています。 CODE iOSチームの2023年の一番大きかったトピックとしてはTCAへの移行でした。 TCAとは 公式リポジトリ ここ近年どんどんメジャーになってきているアーキテクチャ。 The Composable Architecture の略。pointfree.coが開発。 Reduxとかなり近い構成です。 スマホアプリは画面の生存期間が長く、Webアプリと同等以上にRedux的アーキテクチャの恩恵を受けられると思ったので採用の候補にし…
1年前
記事のアイキャッチ画像
RNIアドベントカレンダー1日目 railsアップグレードとのび犬問題
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの横山です。 アウトプットをさぼってさぼってもう5年ほどになりますが、うっかり「うちもアドベントカレンダーってやらないんですか?」と口走ってしまったため言い出しっぺの法則で記事を書くことになりました。 しばらくの間お付き合いください。 自己紹介 10年以上流しのエンジニアをしております。 いろいろな会社で働いてきましたが、ここRNIはお酒好きな人が多いのでやりたいことをやらせて貰えるのでなかなか居心地が良く、気が付けば5年ほどお世話になっています。 Rails2.0の頃からrailsで仕事をしており、趣味で書いていた頃も含めるとruby歴は20年以上になるでしょ…
1年前
記事のアイキャッチ画像
RNIアドベントカレンダー2023
リサーチ・アンド・イノベーション 開発者ブログ
去年から今年にかけて、弊社リサーチ・アンド・イノベーションは仲間が増え、エンジニアチームも以前では考えられないような大所帯となりました。 せっかくなので、今年はいつもやろうと思いつつできなかったアドベントカレンダーをやってみることにします。 書く人と内容は以下の通りです。 12/19 横山 サーバサイドエンジニア railsアップグレードとのび犬問題 12/20 上石 androidエンジニア 【Jetpack Compose】状態の読み取りを遅延してパフォーマンスを向上させる 12/21 武田 androidエンジニア ココが凄い!新メンバーから見たSDD 12/22 小川 iOSエンジニア…
1年前
記事のアイキャッチ画像
Rubykaigi 2023 参加報告
リサーチ・アンド・イノベーション 開発者ブログ
5月11日から13日にかけて松本で開かれた Rubykaigi 2023 に一般参加者として参加しました。 著者の私は day 2, day 3 の2日間参加しました。参加費用・交通費・宿泊費は会社負担でした。 他の開発部メンバーは 4日間、3日間、2日間などまちまちです。サーバーサイド全員が留守にならないように調整しました。 久しぶりのオフラインイベント 行きは1時間早く仕事を終え、立川駅から松本駅まで特急「あずさ」に乗る予定でしたが、立川駅までの路線で線路に人が立ち入った影響で間に合うかはらはらしました。 あずさ車内では研鑽Rubyプログラミングを読んで気分を盛り上げていくつもりでしたが、…
2年前
記事のアイキャッチ画像
AWSサービスをフルに利用したデータ基盤リプレースの実施
リサーチ・アンド・イノベーション 開発者ブログ
こんにちは。リサーチ・アンド・イノベーションの塚田です。 サーバーサイドエンジニアとして弊社サービス CODEの開発やインフラ・データ基盤の整備を担当しています。 その中で今回はデータ基盤のリプレースに関した取り組みをご紹介したいと思います。 リプレースに至った背景 弊社のデータ基盤はAWS上に構築しており以下の理由からリプレースを進めることにしました。 処理時間の長期化 一番の理由はデータ量増大に伴う処理時間の増加で以下のような問題がありました。 DBに保存されているデータ量の増加に伴い集計処理時間も増加傾向にある データ基盤利用者が業務でデータを利用する午前10時までに処理が完了するように…
2年前
記事のアイキャッチ画像
FlutterKaigi 2022登壇報告と当社モバイルアプリ開発におけるクロスプラットフォーム事情
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの高田(tfandkusu)です。Androidエンジニアをやっています。2022年11月16日(水)から18日(金)の3日間に渡って行われたFlutterKaigi 2022で登壇しました。この記事ではその報告と、それに関連して当社モバイルアプリ開発におけるクロスプラットフォーム事情を紹介します。 発表内容 発表タイトルは「Flutterアプリの安全な変化と拡大を支えるアーキテクチャと単体テスト」です。 プロポーザル 動画 スライド サンプルコード プロポーザルにあるとおり、Android公式のアーキテクチャガイドと、PEAKSから出版されている「チームで育て…
2年前
記事のアイキャッチ画像
iOS TCAを新アーキテクチャとして導入する際に既存のアーキテクチャと同居させる
リサーチ・アンド・イノベーション 開発者ブログ
こちらはiOS Advent Calendar 2022の6日目の記事です。 こんにちは。リサーチ・アンド・イノベーションの小川(J-ogawa)と申します。 弊社サービス CODEのiOS版アプリの開発をしています。 CODEのiOS版ではアーキテクチャを刷新しようとしていまして、候補としてはTCAを考えています。 技術選定の判断要素として、移行期間に新旧を並行して同居させられるかどうかがあると思います。 CODEはアプリの規模が大きく新機能の追加開発中でもあり、一度に全てを移行することが難しかったのでこの点について調査しました。 TCAとは 公式リポジトリ The Composable A…
2年前
記事のアイキャッチ画像
SwiftUI カスタマイズTabBar
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションのhongです。iOSエンジニアをやっています。最近SwiftUIを触り始めました。メモを残したいので、Blogの初投稿をしようと思います。今回はSwiftUIでカスタマイズのTabBar作成について解説いたします。SwiftUIの自由度はとっても高いと思いますので、他の作り方もあると思います。 この記事の構成 この記事は3セッションに分けようと思います セッション1はSwiftUIが提供するTabBarを紹介します。 セッション2は提供されたTabBarを使わずにViewでTabBarを作ります。 セッション3はちょっとカスタマイズの要素を入れます。 セッショ…
2年前
記事のアイキャッチ画像
Dangerでプルリクエストのチェックを自動化する
リサーチ・アンド・イノベーション 開発者ブログ
こんにちは。 リサーチ・アンド・イノベーションでAndroidエンジニアをしている jageishi です。 今回は、弊社で利用している Danger の簡単な説明と導入事例を紹介します。 Dangerとは Dangerはプルリクエストの形式化や機械的なチェックを自動化するのに使える便利なツールです。 以下のような特徴があります。 Dangerfileにルールを記述する ルールはプラグインとして公開されているものがある 様々なコードホスティングサービスをサポートしている Ruby版の他にJavaScript、Kotlin版等が存在する Dangerの導入 今回はRuby版を使ってGitHub …
2年前
記事のアイキャッチ画像
Jetpack Composeを本番投入しました(画面遷移編)
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの高田(tfandkusu)です。Androidエンジニアをやっています。前回はAndroid版CODEアプリにおけるJetpack Compose使用画面でのマルチモジュール構成について解説しましたが、今回は画面遷移における技術選定について解説いたします。 3部構成 この記事は3部構成の第3部です。 ViewModel編 マルチモジュール編 画面遷移編(今回) Jetpack Composeにおける画面遷移の方法一覧 DroidKaigi 2021でのセッション「プロダクトレベルで必要になる Jetpack Compose テクニック」では、3種類の画面遷移の…
2年前
記事のアイキャッチ画像
Jetpack Composeを本番投入しました(マルチモジュール編)
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの高田(tfandkusu)です。Androidエンジニアをやっています。前回はAndroid版CODEアプリにおけるJetpack Compose使用画面でのViewModel設計について解説しましたが、今回はマルチモジュール構成について解説いたします。 3部構成 この記事は3部構成の第2部です。 ViewModel編 マルチモジュール編(今回) 画面遷移編 Jetpack Composeのプレビューを速くする Jetpack Composeを採用した画面ではマルチモジュールの構成を変更しているのですが、そのモチベーションはJetpack Composeのプレ…
2年前
記事のアイキャッチ画像
Jetpack Composeを本番投入しました(ViewModel編)
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの高田(tfandkusu)です。Androidエンジニアをやっています。去年、Android版CODEアプリのアーキテクチャと使用ライブラリを執筆した時点ではJetpack Composeを導入してなかったのですが、2月からJetpack Composeによる開発を開始して、6月にそれを使った新機能をリリースできました。そして現在、新機能の開発はすべてJetpack Composeで行っています。この記事ではAndroid版CODEアプリ開発チームにおける、Jetpack Compose導入のモチベーションや最初に採用した機能、技術選定の結果などを紹介します。…
2年前
記事のアイキャッチ画像
iOS版CODEアプリのアーキテクチャと使用ライブラリ
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの小川です。iOSエンジニアをやっています。弊社ではiOSエンジニアを募集しています。この記事でもAndroidアプリと同様に応募者が弊社で働くイメージを持ちやすくするために、iOS版CODEアプリのアーキテクチャと使用ライブラリを広く簡潔に紹介します。 アーキテクチャ アーキテクチャは4層構造のレイヤードアーキテクチャになっています。 MVVM+クリーンの改造版的なイメージです。チームで使い勝手を良くするために他のアーキテクチャを参考に制定してみました。 非同期処理 GCD, RxSwiftを使用しています。 今後、Combineを使用予定です。 プレゼンテー…
3年前
記事のアイキャッチ画像
Android版CODEアプリのアーキテクチャと使用ライブラリ
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの高田(tfandkusu)です。Androidエンジニアをやっています。弊社には3人目のAndroidエンジニアを採用する予定があり現在準備中です。この記事では応募者が弊社で働くイメージを持ちやすくするために、Android版CODEアプリのアーキテクチャと使用ライブラリを広く簡潔に紹介します。 アーキテクチャ アーキテクチャは5層構造のレイヤードアーキテクチャになっています。Android公式のアプリの推奨アーキテクチャのViewModelとRepositoryの間にUseCaseを加えた構造を採用しています。UseCaseを加えた理由はViewModelの…
3年前
記事のアイキャッチ画像
ドラッグ可能かつクリック可能なViewを作る
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの高田(tfandkusu)です。Androidエンジニアをやっています。昔から独自のUI部品やユニークなアニメーションを作ることにはこだわっていましたが、今回作ったドラッグ可能かつクリック可能なViewもなかなかの自信作なので紹介しようと思います。 FINE演出 CODEの買い物登録では、まずレシートを撮影して頂きますが、撮影されたレシート画像はOCR(光学的文字認識)処理され、日付、合計金額、店舗電話番号が読み取られます。CODEではサードパーティー製のレシートOCRライブラリを使用してOCR処理を行っています。クラウドの力は借りずにリソースの限られたスマホ…
4年前
記事のアイキャッチ画像
AndroidのCanvasを使ってバーコード読取のファインダーを作り直した話
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの高田(tfandkusu)です。こだわりを持ってAndroidアプリ作りができる環境を求めて、今年1月に入社し、CODEのAndroidアプリ開発を担当しています。このたびサードパーティーから買っているバーコードデコードライブラリを別のものに差し替えることとなりましたが、そのライブラリには特徴的な仕様があり、それに合わせてバーコードスキャン範囲を示す表示(以下、ファインダー)にも改修を加えることにしました。この記事ではその部分をCanvasを使って再実装したことを紹介します。 バーコード読取画面 ファインダーをよく見る ファインダーは下の図で示すとおりです。 …
5年前
記事のアイキャッチ画像
Github の mention を Slack に通知する仕組みを作った part1
リサーチ・アンド・イノベーション 開発者ブログ
概要 リサーチ・アンド・イノベーションの浜田(hamadu)です。 最近、社内では CODE のインフラを さくらのクラウド から Google Cloud Platform へと移行する流れが進んでいます。その一環ではないのですが、Google Clound Functions を使って遊んでいたところ、便利な仕組みが生えたので紹介します。GitHub の Issue や Pull Requestに mention(@(GitHubのユーザ名)) が来た時に、その人に向けて Slack で通知するというものです。 これがなぜ必要かというと、弊社の開発メンバーでは GitHubのユーザ名とSl…
6年前
記事のアイキャッチ画像
Clojureでブログやスマホアプリを作ってみる part2
リサーチ・アンド・イノベーション 開発者ブログ
こんにちは。リサーチ・アンド・イノベーションの小川(J-ogawa)と申します。 弊社サービスの「あなたの日常を、もっといい日常に変える」そんなアプリCODEの iPhoneアプリおよびサーバサイドの開発を担当してます。 本記事はシリーズ物で恐縮ですが、Clojureでブログやスマホアプリを作ってみようのコーナー、2回目となります。 前回 Clojureでブログやスマホアプリを作ってみる part1 基本方針 フレームワークにre-frameを使用しています。 re-frameはとてもイケてるフレームワークだと思います。 Elmもre-frameに影響を受けています。 解説記事予定 全4回に分…
7年前
記事のアイキャッチ画像
Exponential backoff を実例で理解する
リサーチ・アンド・イノベーション 開発者ブログ
RNI dev の K.oshima です。 network mobility が好きです。 弊社のサービス Mycomment はユーザーのアクセス解析に Woopra と言うサービスを利用しています。 先日、Mycomment と Woopra のデータコレクター間の通信が失敗した結果、ログ監視にエラーが大量に上がってくる事象がありました。 失敗理由は特定データコレクターまでの経路消失です。 どうすればよかったかというと、一度目の通信失敗後にリトライして欲しかった。リトライすればハズレを引かずに成功する可能性があった。Woopra SDK がリトライしてくれればよかった話なのですが、実際に…
7年前
記事のアイキャッチ画像
イミュータブルデータモデルへの取り組み with Ruby on Rails
リサーチ・アンド・イノベーション 開発者ブログ
こんにちは。リサーチ・アンド・イノベーションの中村(konk303)と申します。 いわゆる「railsおじさん」的な立場で、主にサーバーサイドの開発をしています。 Introduction 本稿ではQiitaのイミュータブルデータモデルと webアプリケーションにおける現実解にインスパイアされて、弊社でのイミュータブルデータへの取り組み(とその苦しみ)を紹介したいと思います。 qiita.com イミュータブルデータモデルとは? まるっと引用。 イミュータブルデータモデルと webアプリケーションにおける現実解 - Qiita 詳細はリンクに譲りますが、「履歴を全て残すようなデータ設計にし、 …
7年前
記事のアイキャッチ画像
次世代バックグラウンドジョブシステム Faktory を試す
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの浜田(hamadu)と申します。 いつものお買い物がちょっとお得に、家計簿にもなるポイントアプリ「CODE」のサーバサイド、およびAndroidアプリの開発を担当しています。 序 CODE ではバックグラウンドジョブシステムとして、Sidekiq を採用しています。その作者、Mike Perham 氏が新しい仕組みを作っていました。その名も Faktory。Sidekiq と違いワーカーが言語に依存せず、また本体はGoで書かれているためスケールするのがウリのようです。まだまだ開発中で、プロダクションで使うには厳しい印象を受けますが、今後Sidekiqを置き換え…
7年前