Michi's Tech Blog

一人前のWebエンジニアを目指して

ブログ更新終了のお知らせ

こんにちは! スマレジ テックファームのMichiです! タイトルの通り、この投稿をもちまして、当ブログの更新を終了することになりました。 理由は、私が今年いっぱいで株式会社スマレジを退職するためです。このブログは、一応会社の名前を使用して書いてい…

Fastify × Zod × SwaggerでOpenAPIの仕様書を自動生成する

こんにちは! スマレジ テックファームのMichiです! 今回はFastifyでREST APIを開発するときに、自分でYAMLファイルを定義せずとも、自動でOpenAPI形式の仕様書を生成する方法を解説します。 技術スタック 実装 プロジェクの作成 エンドポイントの作成 基盤…

TypeScriptのthisについての忘備録

こんにちは! スマレジ テックファームのMichiです! TypeScriptのthisは不思議な動きをすることで有名です。自分も定期的に調べては忘れてしまうので、今回は忘備録として残しておきます。 thisとは? 呼び出し方によってthisの値が変わる? アロー関数はth…

React Hook Formでコンポーネントを分割する方法

こんにちは! スマレジ テックファームのMichiです! 今回はタイトルの通り、React Hook Formでコンポーネントを分割する方法をご紹介します。 解説 サンプル サンプルとして、 メールアドレス、ユーザー名、パスワードを入力するシンプルな登録フォームを用…

1年間ブログを継続して良かったこと・悪かったこと

こんにちは! スマレジ テックファームのMichiです! 2022年11月にこのブログを開設し、それ以来、1週も欠かすことなく更新してきました。そして、今月末でブログを始めてからちょうど丸1年となります。 そこで、今回の記事では「1年間ブログを継続して良か…

【書評】『「文章術のベストセラー100冊」のポイントを1冊にまとめてみた。』を読んでみた

こんにちは! スマレジ テックファームのMichiです! 『「文章術のベストセラー100冊」のポイントを1冊にまとめてみた。』という本を読んでみました。今回の記事はその書評になります。 本の概要 自分なりに気になったランキングの要約 1位 文章はシンプルに…

【React】レンダリングの最適化について考える

こんにちは! スマレジ テックファームのMichiです! 今回は、Reactのレンダリング最適化について自分なりに調べたことをまとめていきます。 Reactのコンポーネントが再レンダリングされるとき レンダリングの最適化方法 コンポーネントを適切に分割する 悪…

【書評】『プログラマー脳』を読んでみた

こんにちは!スマレジ テックファームのMichiです! 今回の記事は『プログラマー脳』という本を読んでみた書評になります。 『プログラマー脳』とは? 要約 長期記憶 短期記憶 ワーキングメモリ 熟練したプログラマーは長期記憶を活用する 感想 『プログラマ…

Zodに入門してみる

こんにちは! スマレジ テックファームのMichiです! 今回の記事では、ZodというTypeScriptのライブラリに入門してみます。 Zodとは? 使ってみる スキーマとバリデーションの設計 TypeScriptの型生成 React Hook Formとの連携 まとめ Zodとは? 公式ドキュ…

【書評】『ノンデザイナーズ・デザインブック』を読んでみた

こんにちは! スマレジ テックファームのMichiです! 今回の記事は『ノンデザイナーズ・デザインブック』という本を読んでみた書評になります。 『ノンデザイナーズ・デザインブック』とは? 要約 デザインの基本4原則 近接 整列 反復 コントラスト 感想 『…

【基本情報攻略日記】 - 第2回 受験の感想と効率的な勉強法 -

こんにちは! スマレジ テックファームのMichiです! 前回の記事でご報告しました通り、このたび無事に基本情報技術者試験に合格しましたので、今回はその感想とこれから受験する人に向けての効率的な勉強法を書いていこうと思います。 受験の感想 受験前 試…

WindowsでNext.jsの環境構築をするときのTips

こんにちは! スマレジ テックファームのMichiです! 先日、WindowsでNext.jsの環境構築をしているときに、いくつかOS起因で詰まったところがあったので、メモとして残しておきます。 環境 opensslコマンドがない 解決法 「'NODE_OPTIONS' は、内部コマンド…

【基本情報攻略日記】 - 第1回 試験内容の理解と対策 -

こんにちは! スマレジ テックファームのMichiです! 前回の記事でも書いた通り、今月から基本情報技術者試験の合格を目指して勉強を開始します。 今回は第1回目ということで、試験内容の理解と対策を進めます。 基本情報技術者試験とは? 試験概要 試験形式…

【React】モバイル版のタッチイベントが発火しない問題に対処する

こんにちは! スマレジ テックファームのMichiです! 先日、Reactを使ったアプリ開発において、モバイル版のタッチイベントが発生しないというバグに遭遇しました。そして、このバグがReactのライブラリやブラウザの仕組みにも深く関わっているということが…

TypeScriptによる静的型付け言語入門④ 『Utilty Types』

こんにちは! スマレジ テックファームのMichiです! 今回はTypeScriptのUtility Typesについて整理します。 Utility Typesとは? 代表的なUtility Types Readonly Partial Required Pick Omit Extract Exclude NonNullable Record まとめ Utility Typesとは…

TypeScriptによる静的型付け言語入門③ 『型の絞り込み』

こんにちは! スマレジ テックファームのMichiです! 間が空きましたが、久しぶりにTypeScriptのキャッチアップに戻ります。今回は『TypeScriptの型の絞り込み機能』について学びます。 1. typeof 演算子 typeof を使った絞りこみ typeof の結果 2. 等価演算…

Django × Vue.jsでCSVダウンロード機能を実装する

こんにちは! スマレジ テックファームのMichiです! 今回は実務でつまずいたところの話です。 記事を書こうと思った経緯 実装 バックエンド(Django) フロントエンド(Vue.js) まとめ 記事を書こうと思った経緯 今の現場ではバックエンドがDjango(Python)、フ…

TypeScriptによる静的型付け言語入門② 『型引数とジェネリクス』

こんにちは! スマレジ テックファームのMichiです! 前週に引き続き、TypeScriptのキャッチアップをしていきます。今回は『型引数とジェネリクス』についてです。 型引数(ジェネリック型) ジェネリック型の宣言 ジェネリック型を使用する オプショナルな…

TypeScriptによる静的型付け言語入門① 『部分型』

こんにちは! スマレジ テックファームのMichiです! 6月はTypeScriptキャッチアップ月間として、学んだことを記事にしていきます。 今回はその中でも、考え方にドハマりした『部分型』の考え方について、復習がてら分かりやすく解説します。 部分型とは? …

Reactキャッチアップへの道④ 『グローバルステートの管理』

こんにちは! スマレジ テックファームのMichiです! 前週に引き続き、Reactのキャッチアップをしていきます。今回は『グローバルステートの管理』について学びます。 グローバルステートの管理方法 Contextを使用する方法 外部ライブラリを使用する方法(Re…

Reactキャッチアップへの道③ 『ルーティング』

こんにちは! スマレジ テックファームのMichiです! 前週に引き続き、Reactのキャッチアップをしていきます。今回は、『Reactのルーティング』について学びます。 はじめに 基本的なルーティング Not Foundページの設定 ネストされたルーティング ルーティ…

Reactキャッチアップへの道② 『レンダリングの最適化』

こんにちは! スマレジ テックファームのMichiです! 前週に引き続き、Reactのキャッチアップをしていきます。今回は、『レンダリングの最適化』について学びます。 コンポーネントが再レンダリングされる条件 サンプルコード memo - コンポーネントのメモ化…

Reactキャッチアップへの道① 『useStateとuseEffect』

こんにちは! スマレジ テックファームのMichiです! 前回の記事『Webエンジニアへ転職して1年が経ちました』で書いた通り、Q1(5月~7月)は「React/TypeScriptの習得」を目指します。 その第一段階として、5月はReactの基礎を固めていきます。教材はUdemy…

SQL総復習⑦ MySQLのデータ型

こんにちは! スマレジ テックファームのMichiです! 今回は『SQL総復習⑦ MySQLのデータ型』編です。 文字列型 固定長文字列型(CHAR) 可変長文字列型(VARCHAR) テキスト型(TEXT) バイナリ型 BINARY型 VARBINARY型 BLOB型 整数型(INT) 小数点型 浮動…

SQL総復習⑥ CASE式

こんにちは! スマレジ テックファームのMichiです! 今回は『SQL総復習⑥ CASE式」編です。 CASE式とは? 構文 実践 応用編 まとめ CASE式とは? CASE式はSQLで条件分岐を記述するときに使う構文です。一般的なプログラミング言語のif文に相当します。 構文 …

SQL総復習⑤ ビューとサブクエリ

こんにちは! スマレジ テックファームのMichiです! 今回は『SQL総復習⑤ ビューとサブクエリ」編です。 ビュー ビューとは? ビューの作り方 ビューのメリット ビューの注意点 1. ORDER BY句は使えない 2. ビューに対する更新 サブクエリ サブクエリとは? …

リモートワークをする中で気を付けていること5選

こんにちは! スマレジ テックファームのMichiです! 2022年の5月にWebエンジニアに転職してからそろそろ1年経ちますが、この間ほぼリモートワークをしていました(出社は週一あるかどうか)。リモートワークというと他業界の人からは羨ましがられますが、そ…

SQL総復習④ ダンプとリストア

こんにちは! スマレジ テックファームのMichiです! 今回は『SQL総復習④ ダンプとリストア」編です。 ダンプとリストアとは? コマンド ダンプ リストア 実践 ダンプする リストアする まとめ ダンプとリストアとは? データベースからテーブルやデータを抜…

SQL総復習③ インデックス

こんにちは! スマレジ テックファームのMichiです! 今回は『SQL総復習③ インデックス」編です。 インデックスとは? 使ってみる 下準備 インデックスなしで検索する インデックスを貼った状態で検索してみる どうしてインデックスを使うと早くなるの? イ…

SQL総復習② トランザクション

こんにちは! スマレジ テックファームのMichiです! 今回は『SQL総復習② トランザクション」編です。 トランザクションとは? トランザクションを作るには トランザクションの開始 トランザクションの終了 COMMIT - 処理の確定 ROLLBACK - 処理の取り消し A…