グローバル、fetchの利用可否、ファイル・ネットワークAPI
globalThis/window/globalで実行環境を安全に判定し、fetchの利用可否を確認します。ファイル処理にNodeが必要で、ブラウザではDOMとネットワークが中心となる理由も理解します。
「グローバル、fetchの利用可否、ファイル・ネットワークAPI」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全3レッスンが含まれています。
全体像
目標: コードがどこで実行されるかを把握します。
- グローバル: globalThis、window、global
- fetch: 前提にせず、機能検出します
- ファイル: Nodeにはfsがありますが、ブラウザーにはありません
- URL: どちらでも使えます

安全な実行環境の判定
typeofチェックを使ってReferenceErrorを避け、どの環境で実行しているかを確認します。
// Detect presence of common globals
const hasWindow = typeof window !== "undefined";
const hasGlobal = typeof global !== "undefined";
const hasProcess = typeof process !== "undefined" && process && typeof process.version === "string";
console.log("globalThis exists?", typeof globalThis !== "undefined");
console.log("window?", hasWindow);
console.log("global?", hasGlobal);
console.log("Node process?", hasProcess);

fetch: 機能検出
通常、ブラウザーにはfetchがありますが、古いNodeのバージョンにはない場合があります。まずtypeof fetchを確認します。
// Feature-detect fetch; do not assume it exists everywhere
const hasFetch = typeof fetch === "function";
console.log("fetch available?", hasFetch);
// If available, you could call fetch(...). For a safe demo we only log.
if (!hasFetch) {
console.log("Provide a fallback or use a library in Node versions without fetch.");
}

ファイル: Nodeとブラウザー
Nodeはファイル操作用のfsを提供しますが、ブラウザーにはありません。機能チェックを使って、同じコードパスでも安全に動作するようにします。
// Files are a Node concern; browsers cannot read your disk directly
const hasRequire = typeof require === "function";
console.log("CommonJS require available?", hasRequire);
// Safe message instead of real file I/O (keeps the demo runnable everywhere)
if (hasRequire) {
console.log("In Node you can use fs for files; in browsers you cannot.");
} else {
console.log("No require here; likely a browser-like or sandboxed runtime.");
}

共通: URL API
URLクラスは実行環境が変わっても一貫してアドレスを解析できるため、小さなツールに便利です。
// URL is available in both environments
const u = new URL("https://example.com/path?x=1#top");
console.log("host:", u.host);
console.log("pathname:", u.pathname);
console.log("search:", u.search);
console.log("hash:", u.hash);

初心者向けの習慣
ヒント:
- 使用する前にtypeof fetchを確認します。
- ファイルにはNode(例: fs)が必要です。ブラウザーはDOMとネットワークを中心に扱います。
- 移植性の高いグローバルにはglobalThisを使います。
- 環境を推測するより、小さな機能チェックを優先します。

fetch検出クイズ
クイックチェック: fetchを安全に検出します。

まとめ
まとめ: 安全なtypeofチェックで実行環境を判定し、fetchを機能検出します。ファイル操作はNode側で行い、どちらの環境でもURLを使えることを覚えておきます。

よくある質問
「グローバル、fetchの利用可否、ファイル・ネットワークAPI」レッスンは無料ですか?
はい。「グローバル、fetchの利用可否、ファイル・ネットワークAPI」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全3レッスンが含まれています。
「グローバル、fetchの利用可否、ファイル・ネットワークAPI」で何を学びますか?
globalThis/window/globalで実行環境を安全に判定し、fetchの利用可否を確認します。ファイル処理にNodeが必要で、ブラウザではDOMとネットワークが中心となる理由も理解します。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
JavaScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「グローバル、fetchの利用可否、ファイル・ネットワークAPI」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJavaScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- グローバル、fetchの利用可否、ファイル・ネットワークAPI
- ESMローダーの癖とパス・URLの違い
- 環境変数と設定のパターン