import文の「カオス」を技術で解決する:PrettierとSort-Importsがもたらす開発体験の最適化
こんにちは。開発環境アーキテクトです。
大規模なプロジェクトで開発をしていると、ふと気がつくことがあります。ファイルの先頭にある`import`文が、まるで誰かが適当に投げ込んだゴミ箱のように散乱していることはありませんか?
外部ライブラリ、内部モジュール、相対パス、絶対パス……。これらが順不同で並んでいると、Gitの差分(Diff)が肥大化し、不要なコンフリクトを招く最大の要因になります。
今日は、そんな「importの混沌」を、`@trivago/prettier-plugin-sort-imports` を使って、完全に自動化・構造化する方法を伝授します。これを導入すれば、あなたのチームのコードベースは「規律ある美しさ」を手に入れ、開発効率が劇的に向上します。
—
なぜ「importの整理」が大規模開発の命運を分けるのか?
コードレビューの際、ロジック以外の「importの並び順」で指摘をするのは、お互いにとって不幸な時間です。
1. Gitのコンフリクト回避: メンバーがそれぞれ適当な順序でimportを追加すると、同じ行を編集していないのにコンフリクトが発生します。
2. 認知負荷の軽減: どこまでがライブラリで、どこからが自作モジュールなのか。視覚的なグループ分けが強制されることで、脳がコードを解析する速度が上がります。
3. 自動化による「心理的安全性」: 「どこに書くべきか」という迷いを消し去ることは、エンジニアのメンタルコストを下げ、本質的なロジックの実装に集中させるために極めて重要です。
—
1. 環境構築:魔法のプラグインをインストールする
まずは必要なパッケージを導入します。Prettier本体がインストールされている前提で進めます。
プラグイン本体を開発依存としてインストール
npm install –save-dev @trivago/prettier-plugin-sort-imports
または yarn を使用している場合
yarn add -D @trivago/prettier-plugin-sort-imports
このプラグインが素晴らしいのは、「Prettierのフォーマットエンジンに完全に統合される」という点です。別途コマンドを叩く必要はありません。保存ボタン(Ctrl+S / Cmd+S)を押すだけで、importが美しく整列されるのです。
—
2. 最強の「import美学」設定ファイル
プロジェクトのルートにある `.prettierrc` (または `prettier.config.js`) に、以下の設定を追加してください。これが、現場で最も安定し、かつ読みやすい構成です。
{
“plugins”: [“@trivago/prettier-plugin-sort-imports”],
“importOrder”: [
“^react”, // 1. React関連を最上部に
“
“^@/components/(.)$”, // 3. コンポーネント群
“^@/hooks/(.)$”, // 4. フック群
“^[./]” // 5. その他相対パス
],
“importOrderSeparation”: true, // 各グループ間に空行を入れる
“importOrderSortSpecifiers”: true // import内の名前をアルファベット順に整列
}
設定の魂となるポイント:
- `importOrder`: 定義した順序でimportが強制的に並び替えられます。正規表現でグループを指定できるため、プロジェクト固有のディレクトリ構造(`@/features/`など)を自由に定義可能です。
- `importOrderSeparation`: これを `true` にするだけで、視覚的な境界線が生まれ、ファイル全体の見通しが劇的に良くなります。
- `importOrderSortSpecifiers`: `import { b, a } from ‘…’` と書いても、自動的に `import { a, b } from ‘…’` に変換されます。細部へのこだわりこそが、プロのコードです。
—
3. HelloWorld:動作確認
準備ができたら、わざと散らかったファイルを作って実験してみましょう。
Before(散らかったimport)
import { useState } from ‘react’;
import { Button } from ‘@/components/Button’;
import axios from ‘axios’;
import { useAuth } from ‘@/hooks/useAuth’;
import { lodash } from ‘lodash’;
After(保存した瞬間、自動変換!)
import { useState } from ‘react’;
import axios from ‘axios’;
import { lodash } from ‘lodash’;
import { Button } from ‘@/components/Button’;
import { useAuth } from ‘@/hooks/useAuth’;
どうですか? 保存した瞬間にコードが「あるべき姿」に整列されるこの感覚。これが開発のリズムを作り、ストレスフリーな環境を構築する第一歩です。
—
アーキテクトからのアドバイス:大規模化への備え
プロジェクトが大きくなると、`import`の階層が深くなり、`../../../../` のような「相対パス地獄」に陥ります。
これを防ぐには、TypeScriptの `tsconfig.json` の `paths` 設定と組み合わせるのが定石です。`@/` というエイリアスを設定しておけば、今回紹介したプラグインと組み合わせることで、「importの場所を考える必要がなく、かつパスもスッキリしている」という最強の開発体験が完成します。
設定は一度きり。しかし、それによって得られる「Gitコンフリクトの減少」と「コードの美しさ」は、プロジェクトが続く限り毎日あなたを助け続けてくれます。
今日から、import文の管理を自分自身ではなく「ツール」に任せましょう。あなたはもっと創造的な仕事をするために、脳のメモリを使うべきなのですから。