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

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

Research & Innovation Developer's Blog

フィード

記事のアイキャッチ画像
RNIアドベントカレンダー7日目 Lambda のアップデートをした話
リサーチ・アンド・イノベーション 開発者ブログ
これは RNI 開発部 (SDD) Advent Calendar 2023 最終日の記事です。 本来は 2 日目に入る予定だったのですが、諸事情で最終日になってしまいました。 来年は早めに書いておこうと思います。 Lambda のアップデートをした話 SDD では 3 年ほど前に主要なインフラを AWS に移行しました。 その後、徐々に Lambda 上のスクリプトが増え、現在 RnI で利用しているのは以下言語になっています。 Ruby Go Node.js Python RnI では今年、特に利用している Lambda ランタイムのサポート終了が多く、 3 年前から使っていた多くのスクリ…
5ヶ月前
記事のアイキャッチ画像
RNIアドベントカレンダー6日目 2024年に使いたい技術
リサーチ・アンド・イノベーション 開発者ブログ
2024年に使いたい技術 メリークリスマス! リサーチ・アンド・イノベーションの横山です。 RNIアドベントカレンダーの6日目になります。 今年も残り一週間ということで、来年2024年に使いたい技術についてお話しようと思います。 ruby3.3 明日はいよいよクリスマス。例年、rubyは12月25日に新しいバージョンがリリースされます。 恐らく明日にはruby3.3がリリースされることでしょう。 既にRCがリリースされており、何事もなければこのまま正式版がリリースされると思います。 ruby3.3の新機能としてはパーサの置き換え、RJIT(rubyで書かれたJITコンパイラ)の追加、irbとr…
5ヶ月前
記事のアイキャッチ画像
RNIアドベントカレンダー2023 4日目 iOS TCAへの移行を行ってみた感想と既存との調整点
リサーチ・アンド・イノベーション 開発者ブログ
RNIアドベントカレンダー2023 4日目 こんにちは。リサーチ・アンド・イノベーションの小川です。 iOSエンジニアとしてCODEアプリの開発を担当しています。 CODE iOSチームの2023年の一番大きかったトピックとしてはTCAへの移行でした。 TCAとは 公式リポジトリ ここ近年どんどんメジャーになってきているアーキテクチャ。 The Composable Architecture の略。pointfree.coが開発。 Reduxとかなり近い構成です。 スマホアプリは画面の生存期間が長く、Webアプリと同等以上にRedux的アーキテクチャの恩恵を受けられると思ったので採用の候補にし…
5ヶ月前
記事のアイキャッチ画像
RNIアドベントカレンダー1日目 railsアップグレードとのび犬問題
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの横山です。 アウトプットをさぼってさぼってもう5年ほどになりますが、うっかり「うちもアドベントカレンダーってやらないんですか?」と口走ってしまったため言い出しっぺの法則で記事を書くことになりました。 しばらくの間お付き合いください。 自己紹介 10年以上流しのエンジニアをしております。 いろいろな会社で働いてきましたが、ここRNIはお酒好きな人が多いのでやりたいことをやらせて貰えるのでなかなか居心地が良く、気が付けば5年ほどお世話になっています。 Rails2.0の頃からrailsで仕事をしており、趣味で書いていた頃も含めるとruby歴は20年以上になるでしょ…
5ヶ月前
記事のアイキャッチ画像
RNIアドベントカレンダー2023
リサーチ・アンド・イノベーション 開発者ブログ
去年から今年にかけて、弊社リサーチ・アンド・イノベーションは仲間が増え、エンジニアチームも以前では考えられないような大所帯となりました。 せっかくなので、今年はいつもやろうと思いつつできなかったアドベントカレンダーをやってみることにします。 書く人と内容は以下の通りです。 12/19 横山 サーバサイドエンジニア railsアップグレードとのび犬問題 12/20 上石 androidエンジニア 【Jetpack Compose】状態の読み取りを遅延してパフォーマンスを向上させる 12/21 武田 androidエンジニア ココが凄い!新メンバーから見たSDD 12/22 小川 iOSエンジニア…
5ヶ月前
記事のアイキャッチ画像
Rubykaigi 2023 参加報告
リサーチ・アンド・イノベーション 開発者ブログ
5月11日から13日にかけて松本で開かれた Rubykaigi 2023 に一般参加者として参加しました。 著者の私は day 2, day 3 の2日間参加しました。参加費用・交通費・宿泊費は会社負担でした。 他の開発部メンバーは 4日間、3日間、2日間などまちまちです。サーバーサイド全員が留守にならないように調整しました。 久しぶりのオフラインイベント 行きは1時間早く仕事を終え、立川駅から松本駅まで特急「あずさ」に乗る予定でしたが、立川駅までの路線で線路に人が立ち入った影響で間に合うかはらはらしました。 あずさ車内では研鑽Rubyプログラミングを読んで気分を盛り上げていくつもりでしたが、…
1年前
記事のアイキャッチ画像
AWSサービスをフルに利用したデータ基盤リプレースの実施
リサーチ・アンド・イノベーション 開発者ブログ
こんにちは。リサーチ・アンド・イノベーションの塚田です。 サーバーサイドエンジニアとして弊社サービス CODEの開発やインフラ・データ基盤の整備を担当しています。 その中で今回はデータ基盤のリプレースに関した取り組みをご紹介したいと思います。 リプレースに至った背景 弊社のデータ基盤はAWS上に構築しており以下の理由からリプレースを進めることにしました。 処理時間の長期化 一番の理由はデータ量増大に伴う処理時間の増加で以下のような問題がありました。 DBに保存されているデータ量の増加に伴い集計処理時間も増加傾向にある データ基盤利用者が業務でデータを利用する午前10時までに処理が完了するように…
1年前
記事のアイキャッチ画像
FlutterKaigi 2022登壇報告と当社モバイルアプリ開発におけるクロスプラットフォーム事情
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの高田(tfandkusu)です。Androidエンジニアをやっています。2022年11月16日(水)から18日(金)の3日間に渡って行われたFlutterKaigi 2022で登壇しました。この記事ではその報告と、それに関連して当社モバイルアプリ開発におけるクロスプラットフォーム事情を紹介します。 発表内容 発表タイトルは「Flutterアプリの安全な変化と拡大を支えるアーキテクチャと単体テスト」です。 プロポーザル 動画 スライド サンプルコード プロポーザルにあるとおり、Android公式のアーキテクチャガイドと、PEAKSから出版されている「チームで育て…
1年前
記事のアイキャッチ画像
iOS TCAを新アーキテクチャとして導入する際に既存のアーキテクチャと同居させる
リサーチ・アンド・イノベーション 開発者ブログ
こちらはiOS Advent Calendar 2022の6日目の記事です。 こんにちは。リサーチ・アンド・イノベーションの小川(J-ogawa)と申します。 弊社サービス CODEのiOS版アプリの開発をしています。 CODEのiOS版ではアーキテクチャを刷新しようとしていまして、候補としてはTCAを考えています。 技術選定の判断要素として、移行期間に新旧を並行して同居させられるかどうかがあると思います。 CODEはアプリの規模が大きく新機能の追加開発中でもあり、一度に全てを移行することが難しかったのでこの点について調査しました。 TCAとは 公式リポジトリ The Composable A…
1年前
記事のアイキャッチ画像
SwiftUI カスタマイズTabBar
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションのhongです。iOSエンジニアをやっています。最近SwiftUIを触り始めました。メモを残したいので、Blogの初投稿をしようと思います。今回はSwiftUIでカスタマイズのTabBar作成について解説いたします。SwiftUIの自由度はとっても高いと思いますので、他の作り方もあると思います。 この記事の構成 この記事は3セッションに分けようと思います セッション1はSwiftUIが提供するTabBarを紹介します。 セッション2は提供されたTabBarを使わずにViewでTabBarを作ります。 セッション3はちょっとカスタマイズの要素を入れます。 セッショ…
1年前
記事のアイキャッチ画像
Dangerでプルリクエストのチェックを自動化する
リサーチ・アンド・イノベーション 開発者ブログ
こんにちは。 リサーチ・アンド・イノベーションでAndroidエンジニアをしている jageishi です。 今回は、弊社で利用している Danger の簡単な説明と導入事例を紹介します。 Dangerとは Dangerはプルリクエストの形式化や機械的なチェックを自動化するのに使える便利なツールです。 以下のような特徴があります。 Dangerfileにルールを記述する ルールはプラグインとして公開されているものがある 様々なコードホスティングサービスをサポートしている Ruby版の他にJavaScript、Kotlin版等が存在する Dangerの導入 今回はRuby版を使ってGitHub …
1年前
記事のアイキャッチ画像
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を使用予定です。 プレゼンテー…
2年前
記事のアイキャッチ画像
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処理を行っています。クラウドの力は借りずにリソースの限られたスマホ…
3年前
記事のアイキャッチ画像
AndroidのCanvasを使ってバーコード読取のファインダーを作り直した話
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの高田(tfandkusu)です。こだわりを持ってAndroidアプリ作りができる環境を求めて、今年1月に入社し、CODEのAndroidアプリ開発を担当しています。このたびサードパーティーから買っているバーコードデコードライブラリを別のものに差し替えることとなりましたが、そのライブラリには特徴的な仕様があり、それに合わせてバーコードスキャン範囲を示す表示(以下、ファインダー)にも改修を加えることにしました。この記事ではその部分をCanvasを使って再実装したことを紹介します。 バーコード読取画面 ファインダーをよく見る ファインダーは下の図で示すとおりです。 …
4年前
記事のアイキャッチ画像
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回に分…
6年前
記事のアイキャッチ画像
Exponential backoff を実例で理解する
リサーチ・アンド・イノベーション 開発者ブログ
RNI dev の K.oshima です。 network mobility が好きです。 弊社のサービス Mycomment はユーザーのアクセス解析に Woopra と言うサービスを利用しています。 先日、Mycomment と Woopra のデータコレクター間の通信が失敗した結果、ログ監視にエラーが大量に上がってくる事象がありました。 失敗理由は特定データコレクターまでの経路消失です。 どうすればよかったかというと、一度目の通信失敗後にリトライして欲しかった。リトライすればハズレを引かずに成功する可能性があった。Woopra SDK がリトライしてくれればよかった話なのですが、実際に…
6年前
記事のアイキャッチ画像
イミュータブルデータモデルへの取り組み with Ruby on Rails
リサーチ・アンド・イノベーション 開発者ブログ
こんにちは。リサーチ・アンド・イノベーションの中村(konk303)と申します。 いわゆる「railsおじさん」的な立場で、主にサーバーサイドの開発をしています。 Introduction 本稿ではQiitaのイミュータブルデータモデルと webアプリケーションにおける現実解にインスパイアされて、弊社でのイミュータブルデータへの取り組み(とその苦しみ)を紹介したいと思います。 qiita.com イミュータブルデータモデルとは? まるっと引用。 イミュータブルデータモデルと webアプリケーションにおける現実解 - Qiita 詳細はリンクに譲りますが、「履歴を全て残すようなデータ設計にし、 …
6年前
記事のアイキャッチ画像
次世代バックグラウンドジョブシステム Faktory を試す
リサーチ・アンド・イノベーション 開発者ブログ
リサーチ・アンド・イノベーションの浜田(hamadu)と申します。 いつものお買い物がちょっとお得に、家計簿にもなるポイントアプリ「CODE」のサーバサイド、およびAndroidアプリの開発を担当しています。 序 CODE ではバックグラウンドジョブシステムとして、Sidekiq を採用しています。その作者、Mike Perham 氏が新しい仕組みを作っていました。その名も Faktory。Sidekiq と違いワーカーが言語に依存せず、また本体はGoで書かれているためスケールするのがウリのようです。まだまだ開発中で、プロダクションで使うには厳しい印象を受けますが、今後Sidekiqを置き換え…
6年前
記事のアイキャッチ画像
Clojureでブログやスマホアプリを作ってみる part1
リサーチ・アンド・イノベーション 開発者ブログ
こんにちは。リサーチ・アンド・イノベーションの小川(J-ogawa)と申します。 iOSアプリの開発とサーバサイドの開発をやっています。 私の記事はClojureがテーマです。 Clojure なぜClojureなのか。 恐縮ながら個人的趣味に基づきます。Clojureはシンタックスが一貫しているのと、表現力が高い所がとても好きです。他にも色々といい点はあると思いますが、好きで採用しています。 数年前にClojure作者のRich Hickeyのプレゼンを見て、感銘を受け、勉強を始めた思い出があります。 まだまだClojureはマイナーで、弊社RNIでも主流はRuby, Ruby on Rai…
6年前
記事のアイキャッチ画像
リサーチ・アンド・イノベーション 開発者ブログはじめます
リサーチ・アンド・イノベーション 開発者ブログ
はじめに リサーチ・アンド・イノベーション 開発部です。 「開発部」が名刺に刷られた正式部署名のはずなんですが 内部では「技術部」あるいは「System Development Division (略してSDD)」と呼ばれることが多いです。 名前なんて、別にいいですね。我々はエンジニアの集団です。 一方、弊社自体はエンジニア集団だけが集った会社ではありません。 色んな才能を持ったメンバーが寄り集まってそれぞれの知見を持ち寄り、以下のサービスを作っています。 Mycomment mycomment.jp ユーザが、クライアントから提供された様々なアンケートに答えて報酬を受け取るWebサービスです…
6年前