3秒でわかる
プログラムを起動したとき最初に実行される場所。ここから読み始めれば全体の流れをたどれるので、他人のコードを読むときの入口になります。
もう少し詳しく
どういうものか
エントリーポイントは、プログラムが起動したときに最初に実行される場所です。Python なら python app.py の app.py、Node.js なら package.json の main や scripts で指定したファイル、Java なら main メソッド、C なら main 関数がそれにあたります。
実行環境は「どこから始めるか」を自分では決められないので、決まった名前や設定で指定してもらう必要があります。その約束事がエントリーポイントです。
なぜ必要か
読み手にとっての価値のほうが大きいかもしれません。知らないリポジトリを渡されたとき、ファイルが 200 個あっても、エントリーポイントから呼び出しをたどれば主要な流れは追えます。逆にここが分からないと、どのファイルが本番で動いていて、どれが使われていない残骸なのか判別できません。
ビルドツールにとっても起点です。webpack や Vite は、エントリーポイントから import をたどって、実際に使われているコードだけをまとめます。どこからも import されていないファイルは成果物に含まれません。
具体例
Python では、直接実行されたときだけ動く書き方が定番です。
def main():
print("started")
if __name__ == "__main__":
main()__name__ は、直接実行なら "__main__"、import されたときはモジュール名になります。この判定を挟むと、同じファイルを他から import しても main() が勝手に走りません。
Node.js では設定側で指定します。
{
"name": "sample-app",
"main": "src/index.js",
"scripts": {
"start": "node src/index.js"
}
}つまずきやすいところ
エントリーポイントに処理を詰め込みすぎる例が多いです。起動時の設定読み込み、DB 接続、ルーティング定義を全部書くと、テストのために import した瞬間に接続まで走ってしまいます。組み立てだけを書き、中身は別ファイルの関数に逃がすと扱いやすくなります。
デプロイ先での指定ミスも定番です。ローカルでは動くのに本番で起動しないとき、実行コマンドが古いファイル名を指したままだったことがあります。
ライブラリを公開する場合は、利用者から見た入口も設計対象です。package.json の exports や main に何を書くかで、利用者が import できる範囲が決まります。内部用のファイルまで入口にすると、後で構成を変えたときに利用者側が壊れます。
覚え方
「本の目次ではなく、1 ページ目」がエントリーポイントです。