RIT Tech Blog

株式会社RITのエンジニアが知見を共有する技術ブログです。

OpenClosedの原則とは何か

エンジニアの前田です。 概要 OpenClosedの原則について、wikipediaではこう↓あります ソフトウェア要素(クラス、モジュール、関数など)は、拡張に対しては開いており、修正に対しては閉じているべきである。 わかりやすく説明すると、機能追加や修正の際…

単一責任の原則を意識してリファクタしてみてよかったこと

エンジニアの前田です。 概要 単一責任の原則とクラス名を適切につけることを意識してリファクタしたので感想と疑似コードでのリファクタリング過程を共有します。 単一責任の原則とは オブジェクト指向で用いられる五つの原則の頭字語である、SOLIDのうちS…

Prisma.js schemaファイルからER図を作成する

こんにちは!エンジニアの岸本です。 仕様設計を固める段階で「ER図を作成しよう!」ということになったものの、 既にBlitz.jsアプリケーション自体は存在している稀な状況だったので、「schemaファイルからそのままER図生成できるのでは?」という思考に至…

Blitz.js 開発で実際に使った便利なQueryオプション

みなさん一度は「Blitz.js」というRailsにインスパイアされて作られたフルスタックReactフレームワークを聞いたことがあるのではないでしょうか。 触ったことがない方は是非触ってみてください。 https://blitzjs.com 本記事ではタイトルにあるように実際に…

Google Geocoding APIとSQLの関数を使った構文で半径15km以内のユーザーを取得する

こんにちは!RITエンジニアの崎田です。 今回は、Google Geocoding APIとSQLの関数を使った構文で半径15km以内のユーザーを取得する方法について解説してみようと思います。 使用環境 Ruby on Rails (6.1.4.1) MySQL (8.0.27) 使用API Google Geocoding API …

PagyとReact-Bootstrapでページネーションを実装する

こんにちは!RITエンジニアの崎田です。 今回は、Rails & Next.js環境下でのPagyとReact-BootstrapのPaginationコンポーネントを使用した、ページネーションの実装方法を解説していきたいと思います。 使用環境 Ruby on Rails (6.1.4.6) Next.js (12.1.0) ※…

Blitz.js v0.45 リリースノート和訳

v0.45.3でリモートコード実行の脆弱性が修正されているので、必ずバージョンアップを・・・ Blitz.js v0.45.3 github.com 致命的なセキュリティ脆弱性の修正 superjsonの更新で致命的なセキュリティ脆弱性の修正. 詳細は CVE-2022-23631 : #3162 修正 FORC…

React BootstrapのAccordionで複数のAccordion Collapseを同時に開閉するボタンを作る

こんにちは。RITの関です。 React BootstrapのAccordion.Collapseを同時に開閉するボタンを作るという実装に少し苦労したので、その方法を紹介します。 ※この記事はreact-bootstrap 1.6版の実装方法です。2.~版はアコーディオン周りの仕組みが異なっているた…

Next.jsでブラウザバック(戻る)を検知して確認ダイアログを表示する

こんにちは!エンジニアの川野です。 最近はBtoCのサービスを開発していて、ブラウザバック(戻る)で編集中のデータが消えないようにする機能を開発しました。その際の課題と解決策をお話したいと思います。 はじめに 本記事では、Next.jsにおいてユーザがブ…

【Python】AtcoderでTLEになる計算量の閾値を調べてみた 【PyPy】

目的 最近趣味でAtcoderという競技プログラミングサイトで活動をしているのですが、 提出するコードの計算量をかなりざっくりと見積もってしまっていて、提出した結果、指定された実行時間を超えてしまいTLE(Time Limit Exceeded)になってしまうことが多いの…

getStaticPathsやgetStaticProps、getServerSidePropsなどが突然消える

こんにちは!エンジニアの川野です。 台風が過ぎ去って夏本番の暑さですね。怖い話でも聞いて涼みたいたいということで、 今回はVSCodeで表題の関数が突然消えるという恐怖体験について書きました。 心霊現象 Next.jsで開発をしているとき、下の画像のような…

RIT卒業します

初めまして。2020/11からRITでインターンとして参画させていただいた千葉と申します。 今回はRIT卒業にあたり、振り返りの記事を書かせていただきます。 インターン参画前 僕がRITにインターンとして参画する前は、実務経験がなくほぼ未経験者といった状態で…

GCPでドメイン買えるようになってた(まだプレビュー)

GCPでサービスを構築するときにドメイン(Google Domains)とメール(SendGrid)周りだけ外部サービス使うのが面倒でなかなかクライアントに提案しづらかった福田です。 いつもの外部サービスの設定面倒だなーと思ってなんとなくdomainで検索してたら謎のCloud D…

コーポレートサイトのNext.js 10対応ついでにパフォーマンス改善してみた

最近京都に引っ越した福田です。 全然更新できてないですがエンジニアも増えてきたので頻度上げたいとは思ってます。 Next.js 10リリースされましたね next/imageが出てきたりhrefにasが要らなくなったりi18n系の新機能だったり、すぐにでも使ってみたい機能…

RITのインターンを卒業します

はじめまして.RITでエンジニアのインターンとして働いている石川です. ちょうど参画してから2年目 & 就職でRITとお別れなので,感謝の意を込めて振り返り記事を書かせていただきます. 要約 入る前 自分は知識だけで経験不足の役に立たない人間 ITベンチャ…

AWS SSAを取得しました !

こんにちは! 株式会社RITの前田です。 今回はアマゾンウェブサービスのベンダー資格である、AWS 認定ソリューションアーキテクトアソシエイト(以下、SSA)を取得したので、体験記のようなものを書こうと思います。 なぜAWS SSAを取得しようと思ったか 弊社(RI…

セマンティックHTMLでセクショニングをする

はじめに こんにちは!デザイナーの金森です。 仕事納めですね。2019年いろいろありましたね、お疲れさまでした! RITではデザイナーも企画のアイディエーションから入り、開発まで幅広く携わっています。 今回はその中でも開発の「セマンティックHTML」のお…

Headless CMSのStrapiをECSで運用してみる(後半)

rit-inc.hatenablog.com ↑の続きです ECRにリポジトリ作る とりあえずECRにリポジトリを作りましょう URIを控えておきましょう ビルド ECRにpushするDocker imageをbuildします PS C:\Users\tetsu\dev\new_blog> docker build -t <↑で控えておいたURI>:lates…

iPadで開発業務を効率化

初めまして、RITのエンジニアの前田です。 僕は普段MacBookPro(以下MBP)一台で仕事をしているのですが、サブ機としてiPadを導入したところ意外と役に立ったので、共有したいと思います。 そもそもなぜサブ機としてiPadの導入をしたかというと、 僕はエンジニ…

Headless CMSのStrapiをECSで運用してみる(前半)

WordPressのスケーリングとか考えるの辛いしフロントは自由に作りたいですよね? 今回はHeadless CMSのStrapiをECSで運用した話(の前半、ローカルのDockerで動かすまで)をしたいと思います。 環境 Windows 10 Pro Node.js 12.13.0 Yarn 1.19.1 Docker 19.0…

React Hooks使ってリファクタしてみた話

CTOの福田です React 16.8 リリースされましたね 新機能のReact Hooksを使って自社サービスのコードをリファクタしてみたので、全体的な使用感とかハマったポイントを挙げていこうと思います。 前提 Reduxは使ってません statefulなコンポーネントを多用して…

昨年の振り返りと今年の目標

新年明けましておめでとうございます。CTOの福田です。 年始なので昨年の振り返りと今年の目標でも書いてみようと思います。 昨年の振り返り VIREC フリーランスのコンサルタントとクライアント企業のマッチングサービス ラクサガGO 大型トラックと重量物の…

ActionMailerでdeliver_laterしてるテストが頻繁に止まるようになった話

内容は薄いですが結構ハマったのでメモ 結論 非同期処理内でDBからデータ取ってくるときはassert_enqueued_jobsとかassert_enqueued_emailsで囲んどこう 経緯 弊社のプロダクトではRuby on Railsを利用していてMinitestでテストを書いているんですが、最近に…

JS/TSで特定ディレクトリ以下のモジュールをまとめてexport/importしたい

CTOの福田です JSって書いてますがTSの話しかしませんごめんなさい app.ts ├ modules │ ├ a.ts │ └ b.ts └ ... こんな感じのファイル構成があったときに、app.tsでmodules/aとmodules/bを使おうとすると // modules/a.ts export default class A { } // modu…

ActiveStorageでattachできるものについて調べてみた

福田です ActiveStorage便利ですよね railsのmodelにファイルを簡単に紐づけることができるんですが、form postされたファイルだけじゃなくてdirect uploadで発行された謎トークンとかもattachできて混乱しちゃったので、結局何がattachできるのかコード読ん…

tech blogはじめました & VIRECの裏側

初めまして、RIT CTOの福田(@gendaihyousyou)です。 RITにより多くの人から興味を持ってもらうために、エンジニアやデザイナーから知見を発信するtech blogを開設しました。 WEB系の技術を取り扱うことが多くなると思いますが、たまにコンサル系の記事も混じ…