3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScript開発を効率化する10の小さなコツ

Posted at

JavaScript開発を効率化する10の小さなコツ

評価付きリスト&実例つき、デバッグ時間を大幅に削減

1_gaQL_bI6I21xMDM1HGfvtw.png

どの開発者にも「小さいけれど、決定的な瞬間に何時間ものデバッグを救ってくれる」コツがあるものです。
ここで紹介するテクニックは私が発明したものではありません。多くは、RedditのJavaScriptスレッドを延々とスクロールしながら見つけたもの。その中から実際のプロジェクトで役立ったものだけを厳選しました。余計なノイズを取り除き、本当に時間を節約できるTipsをリスト化しています。

以下は、ランキング形式でまとめたコード例付きのリストです。


⭐⭐⭐ 本当に効くテクニック

1. IDEショートカットを使いこなす

コードスニペットは不要です。
マルチカーソル編集、定義ジャンプ、クイック検索、リファクタリング用のホットキーなど、エディタ(VSCodeやWebStormなど)の機能を徹底的に使いこなしてください。
これだけで他の「裏技」を超えるほどの時短効果があります。


2. Console APIの奥深さを知る

// 整形出力
console.log(JSON.stringify(obj, null, 2));

// 深い階層まで表示
console.dir(obj, { depth: 3 });

// 表形式
console.table([{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]);

// グループ化
console.group("API response");
console.log("status:", 200);
console.log("data:", { ok: true });
console.groupEnd();

// 処理時間計測
console.time("loop");
for (let i = 0; i < 100000; i++) {}
console.timeEnd("loop");

⚠️ 注意点:

const obj = { count: 1 };
console.log({ obj }); // 展開時に { count: 2 } と表示される場合あり
obj.count++;

DevToolsではログ時点のスナップショットではなく現在の状態が表示されます。
凍結させたい場合は:

console.log({ obj: { ...obj } }); // 浅いコピー
console.log(JSON.stringify(obj)); // シリアライズ

💡 Pro Tip: JSでテーブルを扱うなら、JavaScript Data Gridを使いこなすことで、DOM操作やイベント処理の繰り返しから解放されます。

3. DevToolsでのスマートなデバッグ

一時的なUI(ドロップダウンやツールチップ)を凍結:

setTimeout(() => { debugger }, 1000);

DOMブレークポイント(消える要素をキャッチ):
Elementsパネル → ノードを右クリック → Break on → Subtree modification

ログポイント(非同期コードで安全):
Sourcesパネル → 行を右クリック → Add logpoint...

例:

"user clicked", event.target.id

💡 メリット: コードが止まらないのでタイミングバグを誘発しません。

4. コールスタックを読む & ネットワークオーバーライド

例外発生時、コールスタックを上から下まで読む習慣をつけましょう。トップフレームだけ見ても意味がありません。

Chrome DevToolsのネットワークオーバーライド機能:
Networkタブ → リクエストを右クリック → Override content
サーバーレスポンスを編集して擬似的に別の状態を再現できます。バックエンドを触らずに本番限定のバグ再現が可能です。

⭐⭐ 便利なテクニック

5. DevToolsでフォーカスをエミュレート

DevToolsを開いたままフォーカススタイルを確認可能。

コマンドメニュー(Ctrl+Shift+P)を開く

Emulate focused page と入力

⚠️ ただし、要素の挙動が実際にfocus依存でない場合は無効です。

6. 即時実行停止

Sourcesタブで F8 を押すと、その瞬間の状態でJS実行を停止できます。

⚠️ すでにイベントが発火済みの場合は巻き戻せません。

7. CSSレイアウトデバッグ

* { outline: 1px solid red }

すべての要素の境界線を一目で確認可能。
代替: Pesticide拡張機能を導入(より柔軟に設定可)。

⭐ ニッチだが覚えておくと便利

8. インスペクタショートカット

Ctrl+Shift+C → 要素ピッカーに即移動。小さい時短ですが地味に効きます。

9. Vimモーション(Vimユーザー向け)

VimまたはVSCode+Vimプラグイン環境なら:

ci’ → クォート内を変更

dap → パラグラフ削除

すでにVimに慣れている人には爆速効率化。そうでなければ学習コスト大。

10. Console.logの落とし穴

先述の通り、オブジェクトを直接ログすると「ライブビュー」になり、過去状態を確認できません。
履歴として残したいならコピーやシリアライズを使用すべきです。

📌 TL;DR(まとめ)

⭐⭐⭐ 本当に効く

  1. IDEショートカット習得

  2. Console API(JSON.stringify, console.dir, console.table…)

  3. DevToolsデバッグ(遅延debugger, DOMブレークポイント, ログポイント)

  4. コールスタック読解 & ネットワークオーバーライド

⭐⭐ 便利

  1. フォーカスエミュレート

  2. F8で即時停止

  3. CSS outlineデバッグ

⭐ ニッチ

  1. インスペクタショートカット

  2. Vimモーション

  3. Console.logの注意点

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?