iimon TECH BLOG

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

Django Ninjaを使ったDjangoのディレクトリ構成を考えたい

こんにちは、iimonでサーバーサイドエンジニアをしています。腰丸です。 本記事はiimonアドベントカレンダー17日目の記事となります。 はじめに iimonでは、主に「Django + DRF」を使ってAPIサーバーの実装をしています。DRF自体は高機能で、便利なライブラ…

CloudFrontのログを使って機械学習で異常検知を試してみた

こんにちは、CTOの森です。 本記事はiimonアドベントカレンダー16日目の記事となります。 普段機械学習を使うことは無いのですが、勉強も兼ねてCloudFrontのログを機械学習させてみたらどうなるのか試してみました。 検証した環境 ログデータの形式 使用した…

IndexedDBの基本を学ぶ

はじめに こんにちは!株式会社iimonでフロントエンドエンジニアをしている「みよちゃん」です! 本記事は株式会社iimonアドベントカレンダー15日目です! 弊社では不動産仲介業者向けのサービスを開発しています。 私が所属しているチームでは、chromeの拡…

React-three-fiberを使ってみた!

React-three-fiber セットアップ 立方体 Canvas mesh boxGeometry meshStandardMaterial 回る立方体 useFrame まとめ 参考 こんにちは。 アドベントカレンダー14日目! 担当のタクシです。 普段はフロントエンド中心の業務をしています。 アドベントカレンダ…

TypeScriptのジェネリクス型を使って型に柔軟性を持たせる

■はじめに ■ジェネリクス型とは? ■ジェネリクス関数を作る ■extendsで制約を付与したジェネリクス型 ■keyofで制約を付与したジェネリクス型 ■ジェネリクスクラスを作る ■ユーティリティのジェネリクス型 ◆Required < Type > ◆Readonly< Type > ◆Pick< Type,…

入門編: k6を触ってみる

こんにちは、インフラエンジニアのhogeです。本記事はiimonアドベントカレンダー12日目の記事となります。今回は負荷テストツールのk6に入門してみたので、記事にしてみようと思います。 k6を触ろうと思ったモチベーション 負荷テストツールを探していました…

jest基礎とテスト戦略

はじめに こんにちは。iimonでエンジニアをしている林と申します。 本記事はiimonアドベントカレンダ11日目の記事となります。 今回テスト戦略やjestについて調べたので記事にしてみようと思います。 テスト戦略 今回挙げるテストの種類以外にも様々なテスト…

めざせ☆全問正解 正規表現マスター!

はじめに 動作確認環境 対象 出題形式 問題1 問題2 問題3 問題4 問題5 問題6 問題7 問題8 問題9 問題10 おわりに 参考 はじめに 初めまして、こんにちは! iimonに入社して5ヶ月目のなかむ〜です。 本記事はiimonアドベントカレンダー10日目の記事となります…

Lambda PowerToolsで便利にAPIを作ることができる(Swagger UIでAPIドキュメントも見れるよ)

こんにちは、インフラエンジニアのhogeです。本記事はiimonアドベントカレンダー9日目の記事となります。 はじめに Lambda Powertoolsとは? 導入方法 Lambda Powertoolsのイベントハンドラの機能 コード FlaskやFastAPIのようにデコレータでパスルーティン…

ロバストPython 型チェックを効果的に導入するための考え方

こんにちは、株式会社iimonでエンジニアをしている遠藤です。 本記事はアドベントカレンダー8日目の記事となります。 昨日に引き続きアドベントカレンダーを担当させていただきます。 はじめに 今回は既存のプロジェクトに型チェックを効果的に導入するため…

TypeScriptプロジェクトでディレクトリ単位のカプセル化をする

こんにちは、株式会社iimonでエンジニアをしている遠藤です。 本記事はアドベントカレンダー7日目の記事となります。 TypeScriptでは、ファイルがプロジェクト内でカプセル化できる最大の単位になります。 そのため、ファイルでexportされていない変数や関数…

reduce関数について

こんにちは、iimonでフロントエンドエンジニアをしている、ほでぃ〜です。 本記事はiimonアドベントカレンダー6日目の記事となります。 はじめに この記事では、reduce関数の基本的な使い方から実践的な使用例までを紹介します。 詳細な説明やドキュメントは…

URLのエンコードについて

こんにちは、iimonフロントエンジニアの齋藤です。 本記事はiimonアドベントカレンダー5日目の記事となります。 はじめに URLエンコードとはなにか エンコードはしないといけないのか エンコードの手法について encodeURI encodeURIComponent URLSearchParam…

Nextでアプリ開発をするときに最初にやっておきたいこと

こんにちは、iimonで、サーバーサイドエンジニアをしている腰丸です。 本記事はiimonアドベントカレンダー4日目の記事となります。 はじめに 普段は、サーバーサイドの開発をメインに行っており、フロントエンドについての知見は少ないのですが、 Nextを学習…

コミュニケーションを円滑に進める為のslackの使い方

こんにちは、iimonの山根です。 本記事はiimonアドベントカレンダー2日目の記事となります。 1. 背景 2. メッセージの分量 2.1 70文字以内が理想 2.2 無駄な文章を省く 2.3 1つの情報を書く“一文一義” 3. 構成 3.1 結論を記した文から書く 4. 読みやすさを意…

MySQLで全文検索機能を使う際のパフォーマンスについて調査してみた

こんにちは、CTOの森です。iimonは今回が初のアドベントカレンダー参加です! 本記事はiimonアドベントカレンダー1日目の記事となります。 はじめに 検証した環境 MySQL/mecabのインストール 大量のデータを入れる 1レコードのINSERTにかかった時間 検索して…

tsconfig.jsonとESについて

現在当社ではフロントエンドを担当をしております。 株式会社iimon 山根大生です! 今回はtsconfig.jsonとESについて記事を書かせて頂きます。長文となりますがよろしければご覧ください。 背景)業務でtsconfig.jsonを修正する機会があったため(現バージョ…

Base64についてまとめてみた

1.はじめに こんにちは!株式会社iimonでフロントエンドエンジニアをしている川口と申します! 自分が所属しているチームでは、不動産仲介会社向けの拡張機能を開発しているのですが、開発中に画像を扱うことが多々あり、Base64に触れる機会が多いです。これ…

GraphQLでバックエンドを開発する

■ はじめに こんにちは。 株式会社iimonでエンジニアをしている遠藤です。 「GraphQL」という用語をよく耳にするのですが、実際に触ったことがなく、どのようなものなのかの理解が曖昧でした。 そのためこの機会に、そもそもGraphQLとはどういうものなのかを…

Vue.js ライフサイクルについて

はじめに Vue.jsにおけるライフサイクルとは ライフサイクルフックについて Options APIとComposition API Options API Composition API ライフサイクルの記述の仕方 mounted(onMounted) updated(onUpdated) まとめ はじめに フロントエンジニアの齋藤です。…

npmとwebpackに触れてみる

■ はじめに ■Node.jsとは ■nodeとnpmが使えるか確認 ■ 従来の方法でJavaScript ■JavaScriptパッケージマネージャ(npm)を使ってみる ◆ npmとは? ◆npmを使ってライブラリをインストールしてみる ■JavaScriptモジュールバンドルラー(webpack)を使う ■タスクラ…

React 18から出たhooks達を改めて知る

こんにちは。フロント担当のタクシです。 あっという間に秋の装いですね〜みなさまどうお過ごしでしょうか? 私は週末を利用し暖かい実家に帰省しつつこのブログを書いております️ 今日はReact18から登場したhooksをご紹介したいと思います。 React 18から登…

オーダー(計算量)とは

こんにちわ、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という用語はよく目にしますが、これまでなんとなくでしか理解できていませんでした。 そこで、この機会に、それぞれがどのようなメリット・デメリ…