# エンジニアの参考書 > Webエンジニアが初学者向けにフロントエンド、バックエンド、シェルコマンドなどについて幅広く解説しています。 ## Blog posts - [【ZAP】FirefoxでZAPのプロキシ設定を行う](https://developers-book.com//posts/zap-firefox-proxy-settings): Firefoxを使った通信をZAPに監視させるための設定。 - [Tapping homebrew/bundle was failed!](https://developers-book.com//posts/homebrew-bundle-tap-failed): Homebrewの一括インストールでエラーが出たときの解決策。 - [【初心者・バイブコーダー向け】これさえ覚えておけば良いgit操作](https://developers-book.com//posts/git-commands-for-biginners): 初心者・バイブコーダー向けに必要最低限のgit操作を解説 - [【FastAPI】uvを使った環境構築](https://developers-book.com//posts/fastapi-uv-setup): pipではなくuvを使って環境構築をする方法。簡単。 - [ReactRouter v7→v8バージョンアップ](https://developers-book.com//posts/react-router-v8-migration): feature flagsを一つずつ有効化して動作確認すればOK。 - [【JavaScript】Dateのタイムゾーン挙動、文字列変換を完全に理解する](https://developers-book.com//posts/javascript-date-timezone): Dateオブジェクトは絶対時刻で格納されていて、任意の日時でDateを生成するときと文字列で表示するときだけタイムゾーンに注意を払えば良い。 - [フラグを使った状態管理をやってはいけない理由](https://developers-book.com//posts/no-flag-state-mamagement): フラグを使った状態管理はありえない状態を仕組みで防ぐことができないため、仕組み以外で防ぐために多大な労力をかけなければいけなくなるから。 - [isLoginフラグではなく、型で状態を語れ](https://developers-book.com//posts/separate-types-for-different-states): 状態をisXXXやtype,role,statusなどで管理するのはもうやめよう。 - [for文ではなくfilter()を使ってリストの抽出や除外をしよう](https://developers-book.com//posts/filter-instead-of-for): filter()を使うことにより、リストの抽出や除外を安全に、シンプルに行うことができる。 - [for文ではなくmap()を使って配列変換をしよう](https://developers-book.com//posts/map-instead-of-for): map()を使うほうがシンプルかつ副作用がないコードを書くことができる。 - [リモートブランチとローカルブランチの履歴が衝突したときの解決方法](https://developers-book.com//posts/git-branch-history-conflict): ①ローカルの修正は捨てる方法、②merge方式で統合する方法、③rebase方式で統合する方法の3パターンの方法で解決が可能。 - [listではなくsetを使おう](https://developers-book.com//posts/use-set-instead-of-list): listとsetを適切に使い分けられるようになろう - [見た目が似てるからという理由で共通化・コンポーネント化するな](https://developers-book.com//posts/avoid-fake-ui-abstraction): 似ているUIをコンポーネント化しようとする行為は大抵間違っている。 - [AstroでGitHub Pagesにサイトを公開するときの注意点](https://developers-book.com//posts/astro-github-pages-notes): 4つの注意点がある。 - [【WezTerm】No fonts contain glyphs for these codepoints: \u{e6b4}. Placeholder glyphs are being displayed instead…](https://developers-book.com//posts/wezterm-font-glyph-error): 必要なフォントが入っていないことが原因。 - [【WezTrem】コマンドでウィンドウ最大化を切り替える](https://developers-book.com//posts/wezterm-toggle-maximize-window): ToggleFullScreenというアクションで切り替え可能。 - [【WezTerm】Google日本語入力の変換候補がCtrl+n/Ctr+pで選択できない](https://developers-book.com//posts/wezterm-google-ime-keybinding-problem): macos_forward_to_ime_modifier_maskという設定値にtrueを設定する。 - [【WezTerm】透過をコマンドで切り替える](https://developers-book.com//posts/wezterm-toggle-opacity): 透過を切り替えるイベントハンドラーを作成し、特定のキーでそのイベントを呼び出せばよい - [意外とNeovimでもできること](https://developers-book.com//posts/neovim-can-do-more): 先入観でできないと思われているが、Neovimは意外とVSCodeとほぼ同じことが可能である。 - [chezmoiのここがすごい(自前dotfiles運用から乗り換えた理由5選)](https://developers-book.com//posts/chezmoi-dotfiles-benefits): 自前でシェルスクリプトを書くdotfiles運用から解放された。 - [Docker Composeによるローカル環境構築をやめた理由5選](https://developers-book.com//posts/reasons-stop-docker-compose-local): コスパが悪いと感じたため、ローカルの環境構築でDocker Composeを使うことをやめた。 - [【Neovim】まだコミットしていない編集中の行に色をつける](https://developers-book.com//posts/neovim-highlight-uncommitted): gitsigns.nvimを入れると簡単に設定することができる。 - [【Neovim】VSCodeのような折りたたみ機能を設定する](https://developers-book.com//posts/neovim-vscode-like-folding): nvim-treesitterと標準の折りたたみ機能で十分快適にできる。 - [【Vim】leaderとは何か?](https://developers-book.com//posts/vim-what-is-leader): leaderは特殊なカスタムキー。これを使うことで、コンフリクトせずに独自のキーマッピングを作成しやすくなる。 - [【Neovim】lazy.nvimでカスタムキーマッピングを設定する](https://developers-book.com//posts/neovim-lazy-nvim-keymaps): keysオプションで設定可能。 - [【Neovim】プラグインマネージャーlazy.nvimをインストールして設定する](https://developers-book.com//posts/neovim-lazy-nvim-setup): lazy.nvimの導入方法を紹介する。 - [クライアントサイドとサーバーサイドのバリデーション設計](https://developers-book.com//posts/client-server-validation-design): サーバーサイドでは全てのバリデーションチェックを行い、その中からUX向上に必要なものだけクライアントサイドで判定する - [【React】「このサイトを離れますか?」というダイアログを出す](https://developers-book.com//posts/react-leave-site-dialog): beforeunloadがポイント - [コールバック関数とは](https://developers-book.com//posts/what-is-callback-function): コールバック関数とは、関数の引数に渡される関数のことである。 - [【NestJS】pinoのログレベル表記を数値から文字列に変更する](https://developers-book.com//posts/nestjs-pino-loglevel-string): pinoのformattersという設定値を修正すれば良い。 - [【NestJS】pinoを使ってJSON形式でログ出力する](https://developers-book.com//posts/nestjs-pino-json-logging): nestjs-pinoとpino-httpとpino-prettyを入れればOK。 - [【SQL】ORMにおけるクエリマッパーのデメリット](https://developers-book.com//posts/query-mapper-drawbacks): クエリマッパーを書くより、SQL書いたほうが楽。 - [Raspberry PiにDockerをインストールする](https://developers-book.com//posts/raspberrypi-docker-install): aptを使ってインストールするのが推奨。 - [【NestJS】環境変数の型定義とバリデーションを行う](https://developers-book.com//posts/nestjs-env-validation): class-validatorとclass-transformerを用いてカスタムバリデーション関数を作り、設定値に組み込む。 - [TypeScriptにおけるnullとundefinedのベストプラクティス](https://developers-book.com//posts/typescript-null-undefined-best-practices): 結論:undefinedに統一して使うことを推奨する。 - [タスクランナーはMakefileよりmiseがおすすめ、ついでに使い方も](https://developers-book.com//posts/mise-task-runner): miseは開発環境構築が非常に楽になるツールなので、非常におすすめである。 - [DockerやPythonの実行にMakefileを使うと便利(Makefileの書き方)](https://developers-book.com//posts/docker-python-makefile-guide): もしかしたらmiseがおすすめかも - [【Python】uvの環境構築、使い方](https://developers-book.com//posts/python-uv-setup-usage): Pythonのバージョン管理やパッケージ管理を行うことができるツール。 - [APIとはなにか?分かりやすく解説](https://developers-book.com//posts/what-is-api-explained): 誤解を恐れずに簡単に言うと、JSONデータを返却するサーバーのことである。 - [Claude Codeにローカル起動型のMCPサーバーを接続する](https://developers-book.com//posts/connect-claude-local-mcp): claude mcp addコマンドを用いて設定を行う。 - [MCPサーバーをPythonで自作する](https://developers-book.com//posts/build-mcp-server-with-python): mcp[cli]というライブラリを使うと簡単に実装することができる。 - [【DB】テーブル結合方法の種類を理解する(内部結合、外部結合、クロス結合)](https://developers-book.com//posts/db-table-joins): 結合対象のテーブル同士で、主に欠けているデータがあるときに挙動が異なる。 - [【PostgreSQL】Docker環境で任意の設定ファイルを反映する](https://developers-book.com//posts/postgresql-docker-config-custom): Dockerイメージ作成時に、設定ファイルをDockerへコピーし、実行時のオプションで独自の設定ファイルを参照するようにする。 - [【Python】APIレスポンスやオブジェクトの中身を見やすく表示する](https://developers-book.com//posts/python-object-display): pprintとvars()を組み合わせるか、response.textを使うとよい - [【Linux】改行コードの確認を行うコマンド3種類](https://developers-book.com//posts/linux-check-newline): 改行コードの確認を行うためには、fileコマンド、odコマンド、nkfコマンドのいずれかを使うと良い。 - [Webアプリケーションにおけるログフォーマットの設計](https://developers-book.com//posts/log-format-design): ログはタブ区切りで、変数の出力には=を使うことをおすすめする。 - [Webアプリケーションにおけるログレベルの設計](https://developers-book.com//posts/log-level-design): ERROR,WARN,INFO,DEBUGの4種類のログレベルを利用している。 - [MVCC(多版型同時実行制御)とは?をわかりやすく説明](https://developers-book.com//posts/mvcc-overview): DBに対して同時に処理をしようとしたとき、gitのような考え方で解決する方法のこと。 - [MacOSでrarファイルを開く](https://developers-book.com//posts/open-rar-macos): Homebrewからunrarをインストールして解凍するのが楽。 - [nginxの運用方法(sites-available,sites-enabledの違い)](https://developers-book.com//posts/nginx-sites-available-enabled): sites-avaiableは設定ファイルを配置するディレクトリ。シンボリックリンクを使ってsites-enabledに有効化したいものを配置する。 - [SPAのここがダメ(特に初心者はやってしまいがち)](https://developers-book.com//posts/spa-common-mistakes): SPAは実装コストが増加し、セキュリティリスクの可能性も高まるため、そのデメリットを理解したうえで活用することをおすすめする。 - [ClaudeDesktopとNotion MCPを連携するときの詰まったポイント](https://developers-book.com//posts/claude-notion-mcp-integration-issues): JSONのエスケープとパスを通すことがポイント。 - [ログインとセッション管理の流れを分かりやすく解説する](https://developers-book.com//posts/login-session-flow): セッションIDは、サーバーがユーザーを識別するためのユニークなIDのこと。 - [レイアウトシフト(CLS)の概要、原因、調査方法、改善方法](https://developers-book.com//posts/layout-shift-cls-overview): Webページが表示され始めてから、表示が完全に完了するまでの間に見た目がごちゃごちゃ動く現象のこと。 - [ReactRouterのプロジェクトにTailwindCSSのPrettierを設定する](https://developers-book.com//posts/reactrouter-tailwind-prettier-setup): prettier-plugin-tailwindcssをインストールして、prettierの設定ファイルに1行追加すればOK。 - [【SpringBoot】CheckStyleをGradleを使って導入する](https://developers-book.com//posts/springboot-checkstyle-gradle): xmlファイルをダウンロードし、build.gradleに設定を追加する。 - [IntelliJ IDEA CEでSpringBootのホットリロードを設定する](https://developers-book.com//posts/intellij-ce-springboot-hot-reload): Build project automaticallyとAllow auto-make to start even if developed application is currently runnnigを有効化する必要がある。 - [GradleでSpringBootのホットリロードを設定する](https://developers-book.com//posts/gradle-springboot-hot-reload): build —continuousとbootRunを別々のターミナルで実行するのがポイント。 - [【Remix】Tests closed successfully but something prevents Vite server from exiting](https://developers-book.com//posts/remix-vite-server-exit-issue): RemixのViteプラグインは、VitestやStorybookで使うように設計されていないことが原因。 - [【Remix】Vitestを導入し、テストカバレッジを表示する](https://developers-book.com//posts/remix-vitest-test-coverage): RemixにVitestを導入し、ユニットテストの環境構築を行う。 - [【Remix】actionとは](https://developers-book.com//posts/remix-what-is-action): サーバーサイドでPOSTなどを行うための関数。 - [【Remix】Prettierを導入する](https://developers-book.com//posts/remix-setup-prettier): Prettierをインストールし、設定ファイルを作成する。 - [【Remix】ブラウザから呼ぶプロキシAPIを作る](https://developers-book.com//posts/remix-proxy-api): RemixでプロキシAPIを作るためには、loader関数のみを配置したtsxファイルを作成するだけ。 - [【Remix】loaderとは](https://developers-book.com//posts/remix-what-is-loader): サーバーサイドでレンダリングするために必要な情報を取得するための関数。 - [【Linux】sshログアウトしてもコマンドをバックグラウンドで実行する](https://developers-book.com//posts/linux-ssh-background): nohupコマンドを使うと良い。既にコマンドを実行してしまい、中断できない場合についても解説した。 - [よく使うlombokの便利アノテーション](https://developers-book.com//posts/lombok-common-annotations): これさえ覚えておけば良い、というアノテーションを紹介する。 - [SpringBootでWebFluxを用いたAPIの環境構築をする(Gradle)](https://developers-book.com//posts/springboot-webflux-setup): SpringBootでAPIを立てるための環境構築方法。 - [MacにJavaをインストールする方法(SDKMAN!)](https://developers-book.com//posts/install-java-mac-sdkman): SDKMAN!を使ってバージョン管理しながらJavaをインストールする方法。 - [【技術選定】型定義ができるプログラミング言語を導入すべき理由](https://developers-book.com//posts/why-use-type-safe-languages): 理由がない限りは、型のある環境を構築すべし。 - [Cache-Controlヘッダーにおける、no-storeとno-cacheの違い](https://developers-book.com//posts/cache-control-no-store-vs-no-cache): 本当に絶対キャッシュしないのは「no-store」 - [SpringBootでWebアプリケーション作成する前に知っておくべきこと](https://developers-book.com//posts/springboot-web-app-basics): SpringBootって何?という人向けに、SpringBootについての概要を簡単に解説する。 - [よく利用するDockerfileの命令まとめ(これだけ覚えておけばOK)](https://developers-book.com//posts/essential-dockerfile-commands): これだけ覚えておけばOKという基本的な命令を紹介しつつ、ADDとCOPY、CMDとENTRYPOINTの違いなども解説。 - [【Docker Compose】コンテナ内部のデバッグする](https://developers-book.com//posts/docker-compose-debug): DockerComposeで作った環境で、コンテナ内のデバッグをしたい場合。 - [grepで特定のディレクトリを検索対象から除外する](https://developers-book.com//posts/grep-ignore-directory): --exclude-dirオプションを使うことで、node_modulesやdist、.gitなど特定のディレクトリを検索対象外にすることができる。 - [CSVなどのファイルの文字コードを確認する方法(nkfコマンド)](https://developers-book.com//posts/check-file-encoding-nkf): 「nkf —guess ファイル名」で対象ファイルの文字コードを確認可能。 - [ウェブサービスにおけるCSVダウンロード機能の実装方法](https://developers-book.com//posts/web-service-csv-download-guide): CSVダウンロード機能の実装方法を、Remix、NestJSのサンプルコードを添えて解説。 - [ESLintのv9で使われるFlatConfigの設定値をeslintrcとの違いから理解する](https://developers-book.com//posts/eslint-flatconfig-guide): FlatConfigをちゃんと理解したい人や、間違えずに設定したい人のために、よく使う設定値を解説。 - [バグを減らすために、変数は上書きしない(イミュータブル)](https://developers-book.com//posts/readable-code-no-variable-overwrite): 変数をイミュータブルにすることで、コードの可読性が上がる。 - [【zsh】.zshrcと.zprofileの違い、使い分け](https://developers-book.com//posts/zshrc-vs-zprofile): シェルの設定をどこに書けばよいか迷ったときのための記事。 - [【JavaScript】まずはこれだけ覚えておけば良い関数の書き方3種類](https://developers-book.com//posts/javascript-function-types): JSには関数の書き方がたくさんあるので、最もよく登場する書き方を3つに絞って解説する。 - [curlでダウンロードし、名前をつけて保存する](https://developers-book.com//posts/curl-download-file): -oオプションを使うことで、ファイル名を指定してダウンロードすることができる。 - [ダブルクォートがエスケープされたjsonを整形する](https://developers-book.com//posts/json-escaped-double-quotes): jqコマンドの -rオプションを使うことで実現可能。 - [GET、POST、PUT、DELETEについて概要と違いを理解する](https://developers-book.com//posts/http-methods-overview): 4種類のメソッドがそれぞれどういう役割で、どんなときに使われるのかを理解する。 - [【Python】URL文字列を生成する](https://developers-book.com//posts/python-generate-url): urllib.parseを利用すると、辞書型のオブジェクトからリクエストパラメータを生成できる - [【Linux】diffコマンドの結果を見やすく表示する](https://developers-book.com//posts/linux-diff-command): diffコマンドを見やすくするためのオプションと具体的な使い方を紹介する。 - [【Linux】ファイルの中身をクリアする(ログファイルなど)](https://developers-book.com//posts/linux-clear-file): 何か内容が書かれているファイルの中身をコマンド一発で空にする - [【Linux】sitemapなどのxmlを見やすく整形するコマンド](https://developers-book.com//posts/linux-format-xml-sitemap): 圧縮して自動生成されたsitemap.xmlを、コマンドを使って見やすく表示する方法。 - [【Linux】シェルでログの集計を行うコマンド](https://developers-book.com//posts/linux-log-aggregation): 「cat access.log | sort | uniq -c | sort -nr」でOK - [【Linux】作成するファイル名に日付を入れる](https://developers-book.com//posts/linux-filename-with-date): 「date +"フォーマット"」をすることで、簡単に実現可能。 - [【Python】jsonモジュールでdump()を使ったとき日本語が文字化けしてしまう](https://developers-book.com//posts/python-json-dump-error): 「ensure_ascii=False 」を指定することで解消する。 - [【Python】他の言語と比較したPythonのメリット、特徴、できること](https://developers-book.com//posts/python-advantages-features): Pythonの大きな強みは機械学習関連のライブラリが豊富であること。