ひな姉と学ぶJS!プログラムを分割する魔法 require を理解しよう

Javascriptのrequireサムネ

一つのファイルにいろいろなコードを書いていると、後から見返した時に何のコードを書いていたのかがわからなくなることがありませんか?
今回は、別のファイルからコードを読み取ることができるrequireについて、ひな姉が解説してくれるそうです。

登場人物

  • 天野 陽菜(あまの ひな): おしゃれな自社サービス開発企業に勤めるフロントエンドエンジニア。明るくフレンドリーで、後輩の育成にも積極的。実は元ゲーマーで方向音痴。
  • 後輩ちゃん: JavaScriptを学び始めた初心者。

ファイルが増えたらどうする?

後輩ちゃん
ひな姉、こんにちは!最近JavaScriptで書くコードが少しずつ長くなってきて、一つのファイルに全部書くと、なんだかごちゃごちゃしてきたんです。もっと整理する方法はないんでしょうか?
天野先輩
こんにちはー!そうそう、その悩み、プログラマーあるあるだね!良いところに気がついたよ。コードが長くなってきたら、機能をまとまりごとに別のファイルに分けるのが基本なんだ。
後輩ちゃん
そうなんですか!でも、ファイルを分けたら、どうやってそれぞれのファイルの中身を連携させるんですか?別のファイルに書いた関数を、別のファイルから使ったり…。
天野先輩
まさにそこが今日のテーマ!そんな時に活躍するのが、require(リクワイア)っていう魔法の命令なんだ。これは、他のファイルに書かれたコードを、今のファイルで使えるように読み込むためのものなんだよ。
後輩ちゃん
読み込む!なんだかすごく便利そうです!

require って何?(Node.jsの世界で大活躍!)

天野先輩
まず、require が主に活躍するのは、Node.jsっていう環境でJavaScriptを使う時なんだ。Node.jsは、ウェブサイトの裏側(サーバー)を作ったり、パソコンの中で動くツールを作ったりするのに使うんだよ。君がいつもウェブサイトを見るブラウザとは、ちょっと違う場所でJavaScriptを動かすイメージかな。
後輩ちゃん
Node.js!聞いたことはありますけど、普段使っているブラウザと違うんですね。
天野先輩
そう!require は、そのNode.js環境で、別のJavaScriptファイル(これを『モジュール』って呼ぶことが多いんだ)を読み込むための命令なんだ。例えるなら、料理をする時に、必要な材料や調理器具を戸棚から持ってくる、そんな役割だね。
後輩ちゃん
なるほど!戸棚から持ってくる…。

require の仕組み:『エクスポート』と『インポート』

天野先輩
じゃあ、実際にどうやって使うのか見てみよう。例えば、計算をする機能をまとめたファイルと、それを使うファイルに分けたいとするね。

a) まずは『エクスポート』(外に公開する)

天野先輩
まず、他のファイルから使ってほしい機能(関数や変数など)を、そのファイルの外に『公開』する必要があるんだ。これを『エクスポート』って呼ぶよ。module.exports という特別な書き方を使うんだ。
//ファイル名:math.js

const add = (a,b) =>{
return a+b;
}

const subtract = (a,b) =>{
return a-b;
}

//add関数とsubtract関数をファイルの外に公開する
module.exports = {
addFunction:add,
subtractFunction: subtract
};
後輩ちゃん
module.exports っていうのが、外に公開するための呪文なんですね!
天野先輩
math.jsではアロー関数を使っているよ!
アロー関数に関しては別の記事で紹介しているから、わからない場合は合わせて読んでみてね!
Javascriptアロー関数サムネ

ひな姉と学ぶJavaScript!スッキリ書ける「アロー関数」ってなに?

2025年5月31日

b)次に『インポート』(読み込む)

天野先輩
そう!そして次に、この math.js で公開した機能を、別のファイルで『インポート』、つまり読み込むんだ。ここで require の出番だよ!
//math.jsを読み込む
const calculationTools = require('./math.js');

const sum = calvulationTools.addFunction(5,3);
console.log('5 + 3 =',sum)//5+3=8

const difference - calculationTools.subtractFunction(10,4);
console.log('10 - 4 =',difference);//10-4=6
後輩ちゃん
わ! require('./math.js') って書くだけで、別のファイルで定義した関数が使えるようになるんですね!これはすごく便利です!
天野先輩
でしょ? . は『現在のディレクトリ』、つまり『今いるフォルダ』って意味だから、同じフォルダにある math.js を読み込む時は ./math.js って書くんだよ。もしフォルダが違えば、パスをちゃんと書いてあげればOKだよ。

なぜ require を使うの?コードを整理するメリット

天野先輩
このようにファイルを分割して require で連携させることを『モジュール化』って呼ぶんだ。これにはたくさんのメリットがあるんだよ。

  • コードが整理される: 機能ごとにファイルを分けるから、どこに何が書いてあるか分かりやすくなる。ごちゃごちゃしたコードを見るのが苦手な人(私とか!)には、特に嬉しいポイントだね。
  • 再利用しやすくなる: 一度作った便利な関数や機能を、色々なプロジェクトや別のファイルで簡単に使い回せるようになる。
  • 管理しやすくなる: 特定の機能にバグが見つかったり、新しい機能を追加したい時に、その機能が書いてあるファイルだけを見ればいいから、修正や変更が楽になるんだ。
  • 複数人での開発がスムーズに: チームで開発する時も、それぞれが担当するファイルを分けて作業できるから、効率が上がるよ。

大事な注意点!ブラウザとrequire

天野先輩
ここで一つ、とっても大事な注意点があるんだ。
後輩ちゃん
何ですか?
天野先輩
ここまで説明してきた require は、ブラウザ上で動くJavaScriptでは、基本的にはそのまま使えないんだ。
後輩ちゃん
えっ!そうなんですか!?じゃあ、ブラウザのウェブサイトを作るときは使えないってことですか…?
天野先輩
そうなんだ。require は主にNode.jsで使われる『CommonJS』っていうモジュールシステムの一部なんだ。ブラウザのJavaScriptは、もともと別の方法でファイルを読み込んでいたんだよ。
後輩ちゃん
じゃあ、ブラウザでファイルを分けて書くのは無理なんですか…?
天野先輩
諦めないで!今のモダンなJavaScript開発では、ブラウザでもコードを分割して読み込むための別の方法があるんだ。
それは『ES Modules(ESモジュール)』っていう新しい仕組みで、import(インポート)と export(エクスポート)っていうキーワードを使うんだよ。Node.jsでも、最近はこのES Modulesが使えるようになってきているんだ。
天野先輩
あるいは、『Webpack(ウェブパック)』とか『Parcel(パーセル)』みたいな、たくさんのJavaScriptファイルを一つにまとめてくれるツール(これを『ビルドツール』って呼ぶんだ)を使う方法もあるんだ。これらのツールが、君の書いたrequireを使ったコードを、ブラウザが理解できる形に変換してくれるんだよ。
後輩ちゃん
なるほど! require はNode.jsの世界がメインで、ブラウザには import とか別の仕組みがあるんですね。ちょっと複雑だけど、知っておくべきことですね!

まとめ:require でコードを整理しよう!

天野先輩

今日のポイントをまとめると…

  • require は、Node.js環境で、別のJavaScriptファイル(モジュール)を読み込むための命令だよ。
  • module.exports で機能を公開し、require で読み込んで使うのが基本的な流れ。
  • コードを整理し、再利用しやすく、管理しやすくする『モジュール化』に役立つんだ。
  • 大事な注意点! require はブラウザのJavaScriptでは直接使えないことが多いよ。ブラウザでは import/export(ES Modules)や、ビルドツールが使われることが多いんだ。

どうだったかな? require の役割と、どんな場所で使われるかがイメージできたかな?」

後輩ちゃん
はい!コードを分割して整理できるのがすごく便利だって分かりました。Node.jsの勉強をする時には、ぜひ require を使ってみます!ブラウザとの違いも教えてもらえて助かりました!
天野先輩
よかった!それぞれの環境で最適な方法を選ぶのが、プロのエンジニアへの道だね。また次回も新しいことを学んでいこうね。それじゃあ、またね!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUTこの記事をかいた人

2024年3月にSEOやリスティング広告等のマーケティング会社を設立。 元サイバーエージェントグループでSEMマーケティングを経験 入社3カ月で社内表彰、コンサルを担当したWEBメディアではPVを約10倍に伸長。 担当したweb広告ではクライアントの在庫が無くなるほどCVを獲得し、 「これ以上は在庫が無くなるので改善しなくて結構です」と嬉しい悲鳴を頂いたことも