iimon TECH BLOG
https://tech.iimon.co.jp/
iimonエンジニアが得られた経験や知識を共有して世の中をイイモンにしていくためのブログです
フィード
React・Node.js・CloudflareWorkersでRustから作成したWASMを動かす
iimon TECH BLOG
こんにちは!iimonでCTOをしているもりごです。 本記事はiimon Advent Calendar 2024最終日の記事となります! 今年はふるさと納税で沖縄に沢山寄付をしたので、沖縄の名産品を食べるのが毎日の楽しみとなっています。 今回、フロントエンド・サーバーサイド・エッジコンピューティングの3つの環境でWASM(WebAssembly)を活用し、同じ処理を別の環境で動かす方法を試してみました。複数の環境で共通の処理を使う事ができれば、同じコードを複数の環境に記述する必要がなくなり、管理の煩雑さを軽減できると考えて試してみました。 例えばフォームのバリデーションのように、フロントエン…
9日前
Bun + Vite を使って速度を比較してみる!!
iimon TECH BLOG
こんにちは!株式会社iimonでフロントエンジニアをしているおくしまです! 本記事はアドベントカレンダー24日目の記事となります! ■はじめに Bunのアイコンが可愛くて興味を持ち、調べてみたところ、処理速度が速いとのこと。ますます気になってきました! なのでBunしていきます! ■Bunについて BunはJavaScriptの実行環境で、Node.jsなどに似た役割を持つものです 現在、この JavaScript実行環境には、いくつかの種類がありますが、ここに新しく加わったのが「Bun」です。 ブラウザ環境:Google Chrome、Safariなど サーバーサイド環境:Node.js:、…
10日前
JavaScriptの基礎と向き合う
iimon TECH BLOG
よろしくお願いします!エンジニアのideです。 こちらはアドベントカレンダー23日目の記事になります! 今年は体のあちこちに痛みを感じることが多かったので、来年こそは健康に過ごせる一年になるといいなと願っています。 さて、今回は今年やってきたことを振り返るのもいい機会だなと思い、特に触れる機会が多かったJavaScriptについてまとめてみることにしました。 結果的に基本的な内容が中心となりましたが、改めて理解を深める良いきっかけになったので、これはこれでよしとしています! それではよろしくお願いいたします! [目次] テンプレート文字列 スプレッド構文 分割代入 プロパティ名の短縮記法 オプ…
11日前
クリスマスカードを作りましたのでお送りします。
iimon TECH BLOG
みなさまHappy December! どうでもいい話ですが、私は12月が1年の中で1番好きな月です。 街の雰囲気とか、冬らしさが出てきて「雪降らないかな〜」と勝手にワクワクする感じがなんともいえないのです!(先日ちょこっと降ったらしいのですが見逃しました。。キィィィ) 文化等により様々な祝い方が存在するこの時期ですが、私個人的にはクリスマスカードを送り合う文化はなんとも素敵だなぁと思います。日本でいうところの年賀状のような感覚でしょうか。 少しだけ調べてみたのですが、初めてクリスマスカードが送られたのは1843年のロンドンだそうです。(ほぅ〜) そんなクリスマスカードも時代とともに発展し、今…
12日前
アラフィフでも関数型をあきらめない!「関数型ドメインモデリング」で再入門してみた話
iimon TECH BLOG
はじめに まずは戦う相手を見定めよう 戦術はいかに まずは関数を知る しゅ、しゅ、出力がないだってぇ!? 型=値の集合とはなんぞや? まとめ おわりに 参考 はじめに 本記事はiimon Advent Calendar 2024 21日目の記事となります! こんにちは!DDDとTDDには熱心だけど、推し活はDD(誰でも大好き)ではなく、とことん一途なエンジニアマネージャー、まつだです。 本日12月21日は私の誕生日ということで、なんと101101歳になってしまいました!(この手のやつ、16進数にしてるのはよく見るけど、2進数は斬新やな⋯) ちょっとでも誕生日を祝ってくれる気持ちのある方は、ぜひ…
13日前
JavaScript配列の重複削除でつまづかない!Set・Mapを徹底比較(Lodash・Ramdaも少し紹介)
iimon TECH BLOG
こんにちは!株式会社iimonでエンジニアをしている、Javascript勉強中の「まるお」です。 本記事はアドベントカレンダー20日目の記事になります! 📚 本記事の内容 filter・Set・Mapを使った重複削除の方法 オブジェクト配列の重複削除の実装方法 パフォーマンス比較と便利なライブラリの紹介 📚 本記事の内容 はじめに 🔍 1. 重複削除したい!配列メソッドの課題… 🚀 filter() と indexOf() を使った重複削除 ❗️ 問題点 🛠 2. Set による重複削除 ✅ Setの特徴 ✨ シンプルな重複削除の例 ⚠️ 注意点: オブジェクトや配列の扱い 実務で重複削除し…
13日前
歴史を感じつつ、クロージャで遊んでみた(JavaScript編)
iimon TECH BLOG
こんにちは!株式会社iimonでフロントエンジニアをしている「ひが」です! 本記事はアドベントカレンダー19日目の記事になります! 先日夢で「メリークロージャマス!!!」と叫んでスベる夢を見ました。 冬だからか、みなさん冷たかったです(現実では暖かいです) そのようなこともあり、思い切って記事にしてみようと思いました! どうか、暖かい目で見守っていただけると嬉しく思います!! 本題 本題ですが、みなさんはクロージャをご存知でしょうか。 MDNよりお言葉を借りると クロージャは、組み合わされた(囲まれた)関数と、その周囲の状態(レキシカル環境)への参照の組み合わせ です! 初見だと何言ってるかよ…
15日前
GASでOpen Weather MapAPIとMesasging APIを使って、日々の天気情報をLINEに通知させる
iimon TECH BLOG
はじめに・やりたいこと APIを利用するにあたっての準備 Messaging APIの設定準備 OpenWeatherMapAPIの設定準備 GASでスクリプトを組む まとめ 参考 こんにちは! iimonでフロントエンドエンジニアを担当しているたくふぉんです! だんだんとクリスマスが近づいてきましたね🎄🎅⭐️ 本記事はアドベントカレンダー17日目の記事になります。 はじめに・やりたいこと 世の中には無料で便利に使える様々なAPIが存在しますが、そんなAPIを自在に操ることができるエンジニア像に何とはなしに憧憬の念を抱いており(?)、APIを使って自分でも何かツールを作ってみたいと思っていまし…
17日前
MySQLで全文検索機能を試したら実行速度が遅かったので調査してみた
iimon TECH BLOG
◼️ はじめに ◼️ 前提条件 マシン環境 データベースについて ◼️ データ挿入に関して ◼️ 100万レコードでLIKE検索(前後の部分一致)と全文検索の比較 LIKE検索 全文検索 ◼️ EXPLAINで実行計画を確認 LIKE検索のEXPLAIN結果 全文検索のEXPLAIN結果 ◼️ EXPLAIN ANALYZEを確認 LIKE検索のEXPLAIN ANALYZE結果 全文検索のEXPLAIN ANALYZE結果 ◼️ リソース使用状況確認 全文検索のクエリのプロファイリングを確認 ◼️ INNODB_FT_INDEX_TABLEを確認 ◼️ テストデータを修正 最初に作成したレコ…
18日前
SQLマスターへの道 (INNER JOIN、LEFT JOINでのデータ集計)
iimon TECH BLOG
はじめに 結合とはなに?? 内部結合 外部結合 それぞれのメリットと適しているケース 内部結合のメリット 内部結合のデメリット 内部結合を選ぶべきケース 外部結合のメリット 外部結合のデメリット 外部結合を選ぶべきケース 基本構文 実際に使ってみた 注意すべき点 実際に結合したテーブルからデータを集計する(内部結合) 実際に結合したテーブルからデータを集計する(外部結合) 最後に 参考 はじめに こんにちは、株式会社iimonでフロントエンドエンジニアを担当している「たーくん、たー坊」です♪ 本記事はアドベントカレンダー15日目の記事になります。 フロントエンジニアながらサービスの運用・保守を…
19日前
ヘッダーを固定した縦横スクロールを実装する
iimon TECH BLOG
はじめに こんにちは、株式会社iimonでフロントエンドエンジニアをしている木村です。本記事はアドベントカレンダー14日目の記事になります!cssって奥が深いですよね。勉強した気になっても自分の思い通りに一発でなってくれたことがありません。そんな中で、以前いつにも増して詰まった実装がありました。「スクロールバーを縦と横に常時表示する」というものです。入社して1ヶ月経たないぐらいに取り組んだこの実装、あまり理解できずに実装していた部分も大きいです。入社して半年と少し経った今なら、もっとちがう方法で、ちゃんと理解して実装できるんじゃないかとこの記事を書いてみました。まだまだ勉強中のため、間違い等あ…
20日前
レスポンスが文字化けしたのでエンコードについて調べた
iimon TECH BLOG
はじめに こんにちは!株式会社iimonでフロントエンドエンジニアをしているかとうです! 本記事はiimonアドベントカレンダー13日目の記事となります!✨ サーバーから送信されたデータがShift_JISでエンコードされている場合、そのままだとJavaScriptで扱えないことがありました。 そこで、本記事では以下の内容についてお話しします! エンコードについて レスポンスがShift_JISレスポンス形式の場合のデコード方法 JavaScriptエンコード/デコードメソッド はじめに エンコードを理解する エンコードとは 文字コード 文字コード規格 ASCII Unicode エンコーディ…
21日前
TypeScriptのUtilityTypesについて調べてみた
iimon TECH BLOG
■はじめに ■ユーティリティ型とは? ■Partial< Type >型 ◆説明 ◆どんなときに使えそう? ■Required< Type > 型 ◆説明 ◆どんなときに使えそう? ■Readonly< Type >型 ◆説明 ◆どんなときに使えそう? ■Record< Keys, Type >型 ◆説明 ◆どんなときに使えそう? ■Pick< Type, Keys >型 ◆説明 ◆どんなときに使えそう? ■Omit< Type, Keys >型 ◆説明 ◆どんなときに使えそう? ■Exclude< UnionType, ExcludedMembers >型とExtract< Type, Un…
22日前
React でToDoListを作ってみた!
iimon TECH BLOG
はじめに コンポーネントの構成について 準備 Headerの実装 Itemのスタイル実装 Itemの実装 Footerの実装(チェックボックスに状態を持たせる) Footerのチェック機能 Footerの削除機能 まとめ 参考文献 はじめに こんにちは、iimon新卒エンジニアの「ばんり」です。 本記事はアドベントカレンダー11日目の記事になります! 最近業務でReactを使うことが多くなり、Reactをお勉強中です!今回は私がReactを勉強する際、最初に作ったToDoリストについて紹介します。 今回はReact 16.8 で追加された機能Hooksを使っています! 完成イメージ: コンポー…
23日前
Web業界のゲームチェンジャー!?今更だけどSvelteに入門してみた
iimon TECH BLOG
はじめに こんにちは、株式会社iimonでフロントエンドエンジニアをしている「みよちゃん」です。 本記事はアドベントカレンダー10日目の記事になります! 自分が参画しているプロダクトでは普段FWを使っていないのですが、せっかくのアドベントカレンダーなので普段やらないことをやりたい!ということで、少し(?)前から流行っているSvelteを触ってみることにしました! 後半は実際にSvelteを動かしながら、その記述方法や特徴にも触れているため、ぜひ一緒に動かしてみてください! Svelteの特徴 Svelteとは Svelteは、webアプリケーションを構築するためのツールです。他のUIFW同様「…
24日前
Webサーバの仕組みについて入門してみた(Python実装)
iimon TECH BLOG
はじめに 株式会社iimonでSREエンジニアをしているhogeです。 本記事はiimonアドベントカレンダー9日目の記事となります。 今回の記事は技術的な棚卸しとして、普段大変お世話になっているWebサーバがどういった仕組みで動いているのかを実装しながら深堀りしていこうと思います。 弊社のバックエンドはDjango/FastAPI + Gunicornの構成で動作しているため、Pythonを絡めた説明が多くなるかと思います。サンプルコードもPythonで実装をしています。 途中、システムコールやファイルディスクリプタなどにも踏み込んだ話をするのですが、低レベルなプログラミングをちゃんとやった…
25日前
FirestoreRestAPIをWebアプリケーションで楽に使えるようにしておきたい
iimon TECH BLOG
はじめに iimonでエンジニアをしている腰丸です。 最近業務でFirestoreRestAPIを使用する機会があったので、使い方を考えてみました。 通常のSDKを用いたコーディングと比べて、そのまま使おうとすると実行したい操作ごとにリクエストやレスポンスの処理を記述する必要があり、 コード量やメンテナンスの面でなかなか辛いものがあるので、そこら辺をうまく解消できるように考えました。 FirestoreRestAPIの使い方自体は、弊社の木暮さんが記事を出してくれています。 tech.iimon.co.jp やりたいこと FirestoreAPI経由で操作するコレクションのスキーマを定義する専…
1ヶ月前
ローカル(仮想環境)にBINDをたててdigコマンドを投げてみた
iimon TECH BLOG
はじめに 環境構築編 インストール 設定 設定の反映 確認編 digコマンドの実行 終わりに はじめに 株式会社iimonの木暮です。 今回は実際に構築した権威サーバへクエリを送ってレスポンスを確認するところまで行います。 今回の記事は、調べれば類似の記事がたくさん見つかるような内容ですが、「百聞は一見に如かず」という言葉を胸に、自分でしっかり手を動かしながら学んだことをまとめました。 本記事では、実際に調べたことや手を動かして試したプロセスを、順を追って整理しています。また、情報をまとめる際に参考にした素晴らしい記事を執筆された方々には心から感謝いたします。この場を借りて御礼申し上げます。 …
1ヶ月前
Panda CSSの基本的な使い方と導入手順
iimon TECH BLOG
こんにちは! 株式会社iimonにてエンジニアをしております、分割マスターのほでぃです。 この記事はiimonアドベントカレンダー6日目の記事です。 今回はCSSフレームワーク「Panda CSS」を紹介します。 この記事ではPanda CSSの利点や基本的な使い方について整理していきます。 Panda CSSとは Panda CSSは、Chakra UIチームが開発した新しいCSSフレームワークです。 特徴は「ゼロランタイムCSS-in-JS」で、パフォーマンスや型安全性を重視しています。 panda-css.com Panda CSSの特徴 ゼロランタイム:静的なCSSをビルド時に生成し、…
1ヶ月前
フロントエンドのテストを書きたい!
iimon TECH BLOG
はじめに テストの種類 テストレベル テストタイプ テスト戦略 Reactのテストで個人的に躓いたところ UIコンポーネントのテスト Reduxを使っている場合 @mui/x-date-pickerを使用している場合 MUIのコンポーネントでテーマを使用している場合 カスタムフックのテスト まとめ 参考記事 はじめに こんにちは、株式会社iimonでエンジニアをしている遠藤です! 本記事はiimonアドベントカレンダー5日目の記事となります。 最近、フロントエンドのコードでリファクタリングをしたい箇所があったのですが、該当箇所のテストコードがありませんでした。 また、自分自身「フロントエンドの…
1ヶ月前
PlaywrightでE2Eテストを書いてみる
iimon TECH BLOG
はじめに、株式会社iimonでエンジニアをしている須藤です。 最近フロントエンドを触る機会が多く、E2Eテストについて気になっていたので、 今回はPlaywrightでE2Eテストを書いてみようかと思います。 本記事はiimonアドベントカレンダー4日目の記事となります。 E2E(End to End) Testとは メリット デメリット Playwright概要 初期設定 テストを自動生成 テストの実行 エラーの挙動を確認 テスト内容の追加 HTMLレポートを確認してみる Chrome拡張機能のテスト まとめ 参考 募集 E2E(End to End) Testとは エンドユーザーの視点で、…
1ヶ月前
師走だし自宅サーバを構築した話をしてもいいんじゃないかな
iimon TECH BLOG
nkmさんよりバトンを受け取りました! 株式会社iimonにてフロントエンドエンジニアをしております、まつむらです!エンジニア人生で初めてのアドベントカレンダー参加です! いつもの勉強会とは違って、変なことを書いても良いと言われたような気がしたので、今回は完全に趣味に振り切ろうかなと思います! 本記事はiimonアドベントカレンダー3日目の記事となります! はじめに 自宅でのオンプレ運用に必要な物 必要なもの あれば嬉しい物 どこまでを自作していくのか ネットワーク構成について 一般的なネットワーク構成図 今回目指すネットワーク構成図 ルータが2台ある理由 ipv4 と ipv6 について ル…
1ヶ月前
JavaScriptのシャローコピーとディープコピー詳細解説:実践的な使い方と注意点
iimon TECH BLOG
はじめに シャローコピーとディープコピーの基礎 オブジェクトの参照の仕組み シャローコピーとディープコピーの違い シャローコピーの3つの方法 それぞれの特徴 Object.assign()が配列に適さない理由 疎配列(sparse array)の扱い 配列メソッドの継承問題 使い分けの指針 ディープコピー ディープコピーの4つの方法 使い分けの指針 注意点とベストプラクティス シャローコピーで十分な場合 ディープコピーが必要な場合 まとめ おわりに 参考記事 はじめに こんにちは、株式会社iimonでフロントエンドエンジニアをしているnkmです! 本記事はiimonアドベントカレンダー2日目の…
1ヶ月前
エンジニアリングマネージャーのスキル - ピープルマネジメント編 -
iimon TECH BLOG
はじめに EMのスキルとは ピープルマネジメントのスキルとは 傾聴力 アイスブレイク 質問力 共感力 舐められ力 まとめ はじめに こんにちは! 株式会社iimonのエンジニアマネージャー、まつだです。 iimon2年目のアドベントカレンダー初日ということでそれにふさわしい内容にしようと思ったのですが、どうしてもRustについてしか書く気が起きず、あいだをとって(?)私のお仕事、「エンジニアマネージャー」(以下EM。エンジニアリングマネージャーともいう)について書きたいと思います! 先日、「EMゆるミートアップ」というイベントに初めて参加させていただいて、いろいろ考えることがありました。 EM…
1ヶ月前
spyOnでの監視やmockテスト解説
iimon TECH BLOG
こんにちは。iimonでエンジニアをしている林と申します。 mockについての解説記事を過去3回に渡って書いてきましたが、 spyを最近多用しているのでspyについても纏めてみました。 今回の記事は前回までの記事の知識を前提に記載させて頂きます。 よろしくお願いします。 https://tech.iimon.co.jp/entry/2023/12/11/121847 https://tech.iimon.co.jp/entry/2024/02/26/162500 https://tech.iimon.co.jp/entry/2024/06/18/160000 spyとは spyとは以下の特徴が…
1ヶ月前
React Mapメソッド使う際に引っかかった話
iimon TECH BLOG
はじめに map()を使う際に起きた問題 React の再レンダリングの仕組み map()メソッドでkeyをindexにするのを避けたい まとめ 参考 はじめに こんにちは、iimon新卒エンジニアのみやこしです、最近業務でreactを使うことが多くなり、reactをお勉強中です!勉強し始めた頃にmapメソッドを使う際に引っかかったので、今回もこのお話についてさせて頂きます。 map() とは Array インスタンスのメソッドで、与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成します。 Array.prototype.map() - JavaScript …
1ヶ月前
お手軽にBasic認証のパスワードを自動更新する方法
iimon TECH BLOG
はじめに はじめまして、SREチームのhogeです。 検証環境にBasic認証をかけて簡易的なアクセス制限をかけることがあるかと思います。 Basic認証とはいえ、以下のような理由からパスワードを定期的に更新することが望ましいです。 パスワードが長期間使い回されると、漏洩や不正アクセスのリスクがある チームメンバーの変更(退職、プロジェクト移動など)があった場合、古いメンバーは開発環境にアクセスできないようにした方が良い しかし、手動で更新するのも手間なため、今回はAWSのCloudfront + Lambda@Edge + SecretsManagerを使用してでBasic認証をかけつつ、パ…
1ヶ月前
再帰がわかればマージソートがわかった
iimon TECH BLOG
1. はじめに 本記事は、私が学生時代にアルゴリズムを学ぶ上で苦手に感じてしまった原因である「マージソート」についてです! 【本記事でわかること】 再帰の仕組み🤝 マージソートで配列を並び替える方法🧑🤝🧑 【前回の記事】✨ JSでソートを知る ✨ 基本のソートアルゴリズムである「選択ソート」「バブルソート」「クイックソート」についての内容と、JSのsort()メソッドについてまとめてあります! 1. はじめに マージソート 分割統治法 2. 再帰を理解する 再帰関数 構成 再帰関数の使用 1. 反復を使用した実装 2. 再帰関数を使用した実装 おまけ 3. マージソート 仕組み JavaS…
1ヶ月前
○○に依存しつづけてはや6年〜Dependency Injection(依存性の注入)〜
iimon TECH BLOG
はじめに エンジニアリング文脈での依存とは DIのメリット 依存性を注入する方法 DIコンテナとは 使いどころのヒント はじめに こんにちは! 株式会社iimonのエンジニアマネージャー、松田です。 突然ですが皆さん、何に”依存”してますか? 私は恥ずかしながら、とあるアイドルに依存しています(笑) その子に出会って6年、ずっと一途に推し続けていて、もはや生活の一部です! いずれその時がくるんでしょうが、もし卒業なんてされた日には・・・私はなんのために働けばいいんでしょうか!! エンジニアリング文脈での依存とは 閑話休題、エンジニアリングの文脈で出てくる”依存”とは一体なんでしょうか。わかりや…
2ヶ月前