iimon TECH BLOG

iimonエンジニアが得られた経験や知識を共有して世の中をイイモンにしていくためのブログです

2023-01-01から1年間の記事一覧

オーダー(計算量)とは

こんにちわ、iimonでバックエンドを担当している玉山です。 今回は、設計、実装する上で案外知っていると便利なオーダーの紹介です。 オーダーの概念を知っていれば実装前にどのくらいのオーダーになるアルゴリズムを作らないといけないかが分かり実装の助け…

Promiseの静的メソッドを調べてみた

初めに こんにちは、今回で3回目のブログ更新となります。 株式会社iimonでエンジニアをしている林です。 普段は、弊社プロダクトの拡張アプリの開発をしています。 本日はPromiseの静的メソッドついて解説していきたいと思います。 promiseの知識がある事を…

正規表現 vフラグの使い道

背景 私が以前書いた記事でこの正規表現について勉強する為です。 まずuフラグについて理解する必要があるのでそちらを書きます。 u (unicode) フラグ ES2015 に u (unicode) フラグが導入され、コードポイント単位で正規表現を扱えるようになった。 コード…

Nuxt2 Node.js 18へのバージョンアップの方針

初めまして株式会社iimonの山根です。 背景 弊社のnuxtプロジェクトの構成は以下です nuxt v2.15 node v16 yarn Node.jsでv16がEOLになった為、18にバージョンアップする必要が出た。 Nuxt2とNode.js v18のバージョンアップ対応について調査 Nuxt2のプロジェ…

ライブラリのバージョンアップ 必要な理由とタイミング

初めまして株式会社iimonの山根です。 目次 バージョンアップが必要な理由 バージョンアップのタイミング 1. バージョンアップが必要な理由 バグ、セキュリティリスク、機能の拡張の為 バージョンアップする必要が来た時に蓄積された変更が多すぎると検証に…

Node.js v20 LTS向けて

初めまして株式会社iimonの山根です。 背景 Node.js v20が10/24にLTSになる為 目次 そもそもNode.jsとは Node.jsのMajor番号とリリーススケジュール Node.js v20の主なChangeLog その他参考 感想 1. そもそもNode.jsとは https://nodejs.org/en Node.js® is …

トレースについて理解する

トレースとは・・・3つの主要な可観測性の柱の1つとされていて、複数のコンポーネントにまたがるリクエストの流れや処理を把握するために使用されるもの まずは全体像を掴むために他の2つのテレメトリタイプ(送信収集されるデータのタイプ)も含めて簡単なお…

CSR / SSR / SSG / ISRについて理解する

はじめに はじめまして。iimonのフロントエンドを担当している保田(ほだ)と申します。 CSR、SSR、SSG、ISRという用語はよく目にしますが、これまでなんとなくでしか理解できていませんでした。 そこで、この機会に、それぞれがどのようなメリット・デメリ…

スプレッドシートからJsonファイルを生成

はじめに はじめまして。株式会社iimonで主にバックエンドを担当している木暮です。 業務の中でスプレッドシートにまとめたデータからJsonファイルをダウンロードできる機能を作りました。スプレッドシートに対してGoogle Apps Scriptを通して処理を行ったの…

CSPによる拡張機能への制限

▶︎はじめに 株式会社iimonのフロントエンジニア川口と申します。 弊社ではプロダクトの一環として、不動産仲介業者向けの拡張機能開発を行っています。 今回開発中にCSPによるエラーにぶつかることがありましたので、調べたことをまとめたいと思います。 ▶︎C…

Reactで再レンダリングを最適化する

こんにちは! 株式会社iimonでエンジニアをしている遠藤です。 最近業務でReactを触るので、再レンダリングについて勉強したことをアウトプットしようと思い記事にしました。 ハンズオンで挙動を試したい場合はcodeSandboxでNew sandbox > React Typescript…

git revert について

iimonでフロントエンジニアを担当している齋藤です。 実務で誤った修正をpushしてしまい、慣れてないgit revertを使用したので 自分用の備忘録として残します ■git revertとは ■どのような場合に使う? ■メリット、デメリット メリット デメリット ■git rese…

curlコマンドでHTTPリクエストを投げてみる

■ はじめに ■ curlコマンドとは? ■ curlコマンドが使えるか確認 ■ curlの基本の使い方(GETリクエスト) ■ curlコマンドにオプションをつけて実行してみる ◆ -Xオプションで、リクエストメソッドを指定する ◆ -Hでパラメータを追加 ◆ -dオプションでPOSTリ…

【Cloud Firestore】セキュリティルールを使ってデータの読み書きを制限する

iimonで主にフロントエンドを担当している澤岻(たくし)です。 最近開発を進めているプロダクトでFirebaseを利用していてテストを書き始めたのですが、 テストについて記事を書こう! と思ったところ、そもそものデータ構造やセキュリティルールなどについ…

DB(データベース)の正規化について

こんにちは。株式会社iimonでバックエンドエンジニアを担当している玉山です。 今回はDB(データベース)の正規化についてです。 それでは早速見ていきましょう。 目次 正規化とは データの重複をなくし整合的にデータを取り扱えるようにデータベースを設計す…

イベント伝播の仕組みとイベントバブリングの有効活用方法について

初めに こんにちは、今回で2回目のブログ更新となります。 株式会社iimonでエンジニアをしている林です。 普段は、弊社プロダクトの拡張アプリの開発をしています。 本日はイベント伝播の仕組みについて解説していきたいと思います。 イベント伝播とは ウェ…

AWS S3を触ってみた

AWSとは?☁️ クラウドコンピューティングを使ったサービス クラウドコンピューティングとは?? 手元に1台のPCとインターネットに接続できる環境さえあれば、 サーバーや大容量のストレージ、高速なデータベースなどを必要な分だけ利用できる 今回は数あるサ…

WAFについてまとめてみる

Firewallのおさらい Firewallとは・・・不正なアクセスを防ぐ壁のような役割をもったシステム ネットワークの境界におく ファイアウォールには、以下のような形態があります。 パケットフィルタ(Packet Filter): 1989年に登場。パケットは送信情報の最小単…

CSRFについて分かり易い説明を試みる

はじめに はじめまして。株式会社iimonでフロントエンドエンジニアをしている川口と申します。私はiimonに入社して3か月目になりますが、業務内にCSRF-TOKENを扱う機会が何度かありました。CSRF-TOKENが何なのか何となくは分かっていながらも、概要しか理解…

DRFを使用して簡単なAPIを実装する

初めに 初めまして! 株式会社iimonでエンジニアをしている遠藤です。 今回はDjango及びDRFでAPIを生成する流れを理解するために、図書館の本を管理する簡単なAPIを実装できればと思います。 DRFとは DRF(Django REST Framework)は、DjangoでRESTful APIを作…

オプショナルチェーンを使いこなす

はじめに 背景 オプショナルチェーン(optional chaining)とは 短絡評価 最後に はじめに iimonフロントエンジニアの齋藤です。 業務をやっていく中でオプショナルチェーンを使う機会が多いため、オプショナルチェーンの色々を調べてみました。 背景 業務でVa…

プロトタイプとクラスの関係

■ はじめに ■ オブジェクトを生成する方法 ■ コンストラクタ関数って何? ■ プロトタイプの特徴 ◆ コンストラクタ関数を定義すると勝手にprototypeプロパティが定義される ◆ インスタンス化するとprotptypeプロパティへの参照がprotoにコピーされる ■ クラス…

Reactベーシック(React Hooks編):APIデータの取得と表示

初めに はじめまして! 株式会社iimonでエンジニアをしている澤岻(たくし)です。 普段は、フロントエンド開発等々をしています。 iimonでは今までVueを使ったフロントエンド開発が多かったのですが、 最近Reactでの開発も少しずつ入ってきたので社内の皆さ…

pre-commitについて

はじめまして。株式会社iimonでバックエンドエンジニアを担当している玉山です。 では早速始めていきます。 前置き 今回はiimonで使っているリンターとフォーマッターをgitの機能でcommitをフックし、レビューのコストを下げてしまおうというお話です。 git…

Ajaxを使ってタスク管理アプリを作る

初めに はじめまして! 株式会社iimonでフロントエンドエンジニアをしている林です。 普段は、弊社プロダクトの拡張アプリの開発をしています。 本日はAjaxについて解説していきたいと思います。 Ajaxとは? 1. 概要 Ajaxとは、Asynchronous JavaScript + XM…

WebpackからViteに移行する

初めに Viteとは? 1. 概要 2. なぜ速いのか 3. 移行に踏み切った理由 Viteへの移行作業 1. 必要なdev dependencyをインストール 2. vite.config.tsを作成 3. package.jsonのscriptコマンドを編集 4. tsconfig.json編集 5. 不要なconfigファイルとdev depend…

chrome拡張機能を作ってみる

初めに 初めまして! 株式会社iimonでエンジニアをしている黒田です。 今回は、chrome拡張アプリを作ろうと思います。 普段、拡張機能アプリを開発しているのですが、一から作ったことはなく、これを機会に挑戦してみようと思いました!使わない日はないくら…

JSでtoString()がSyntaxErrorになる件について

恥ずかしながら数値型の時にtoString()でエラーになる時があることを把握してませんでした。 株式会社iimon 山根大生です! その内容についてまとめます。 目次 toString()とは 1.toString()がSyntaxErrorになる原因 回避策 1.toString()とは オブジェクトの…

Atlantisを導入しました

導入したきっかけ 元々terraform applyはgithub actionsで実行していて、 その場合、pull requestをmargeしてから、applyが実行されるので、 applyが失敗したときにmarge元branchが汚れる、再度pull requestを作るのは手間という問題があり、それらを解決す…

Hive形式でyear/month/dayで切ったパーティションをAthenaでBETWEENを使って範囲検索する方法

s3://<バケット名>/year=<年>/month=<月>/day=<日> の様にHive形式でyear/month/dayでパーティションを切っているデータに対してAthenaで月を跨いだ日付の範囲検索が出来る様にしました。 元々はこの様な動的に生成するクエリを書いていました( {{ y.start …