「パス長260文字」の正体 — それは文字数の制約ではない
「Windowsのパスは260文字までしか使えない」という説明を、一度は見たことがあるはずです。しかし公式資料を原文で確認すると、この260という数字は「パスに使える文字数の物理的な上限」ではなく、MAX_PATHという名前のWin32 API定数の値です。定数の値である以上、接頭辞の付け方やファイルシステム自体の構造によって、実際に扱える長さは何段階にも変わります。本記事は、260という数字が何を指しているのかを一次資料の原文で確認したうえで、単位の異なるLinuxの255バイト制限と並べ、数字だけを比較することの危うさを整理します。本サイトは特定のパスやファイル名の可否を判定するものではありません。
「260文字」はどこから来た数字か
出典はMicrosoft Learnの「Maximum Path Length Limitation」です。原文には次のように書かれています。
maximum length for a path is MAX_PATH
ここで重要なのは、「パスの長さには物理的に260文字という壁がある」と書かれているのではなく、MAX_PATHという名前の定数が260という値で定義されていると書かれている点です。定数である以上、この値を参照するAPIを使うか、別の値を使うAPIを使うかによって、実際に扱える長さは変わります。「260文字」という数字だけが独り歩きして、あたかもWindowsそのものの絶対的な制約であるかのように語られがちですが、原文が定義しているのは特定のAPI定数の値である、という一段階手前の事実です。
\\?\接頭辞と32,767文字、そしてNTFS自体の32,760文字
同じ資料は、パスの先頭に \\?\ という接頭辞を付けることで、拡張長パスとして最大32,767文字までAPI上で扱えるようになる、としています。一方、Microsoft LearnのFile System Functionality Comparisonのページでは、NTFS自体の構造上の上限として次の原文があります。
32,760 Unicode characters with each
この32,760という数字は、NTFSのオンディスク構造そのものの上限であり、各要素(パス中の1つのフォルダ名・ファイル名)は255文字までという条件が付きます。同じ「パスの長さ」という話題の中に、少なくとも3つの異なる層の数字が存在することになります。
| 層 | 数値 | 何を数えているか | 出典 |
|---|---|---|---|
| Win32 APIの既定 | 260文字 | MAX_PATHという定数の値 | Maximum Path Length Limitation |
| \\?\接頭辞使用時 | 32,767文字 | 拡張長パスとしてAPIが受け付ける文字数の上限 | 同上 |
| NTFS自体の構造 | 32,760文字(各要素は255文字まで) | ファイルシステムのオンディスク構造上の上限 | File System Functionality Comparison |
260と32,767と32,760、この3つの数字はいずれも「Windowsのパス長」を語っていますが、指している対象が異なります。どれか1つだけを覚えて「Windowsのパス長は◯文字」と単純化すると、残り2つの文脈では正確性を欠くことになります。
LongPathsEnabledという設定
Windows 10 バージョン1607以降では、レジストリ値LongPathsEnabledを有効にすることで、\\?\接頭辞を付けなくても長いパスを扱えるようにする仕組みが用意されています。これも「260文字の壁を消す魔法の設定」ではなく、MAX_PATHという既定値を使わない挙動に切り替えるオプトイン設定という位置づけで理解する必要があります。すべてのアプリケーションがこの設定に対応しているとは限らない点にも注意してください。
Gitのcore.longpathsは「本家Git」の設定ではない
Windows環境でGitのチェックアウトが「Filename too long」のようなエラーで失敗したとき、git config core.longpaths trueを設定すれば直る、という説明を見かけます。しかし、本家git-scm.comが公開している公式のgit-configマニュアルを全文検索すると、core.longpathsという設定項目は0件、つまり存在しません。
この設定が実際に定義されているのは、Git for Windowsプロジェクトが独自に公開しているReleaseNotes.mdのほうです。原文には次のようにあります。
refuses to check out such files
ここでの「such files」とは、260文字の閾値を超えるパスを持つファイルを指します。つまりcore.longpathsは、本家Gitのマニュアルには存在しない、Git for Windowsプロジェクトが独自に追加・保守している拡張機能です。「Gitの設定」として広く語られているものの実体が、特定ディストリビューションの拡張であるという点は、260文字という数字がWindows API由来であることと同じ構造の混同だと言えます。
対比: Linuxの255は「バイト」であって「文字」ではない
ここまでのWindows側の数字はいずれも「文字数」でした。ところが比較対象としてよく引き合いに出されるLinuxの255という上限は、単位が異なります。POSIX.1-2017の§3.271 Pathnameには次のようにあります。
may be limited to {PATH_MAX} bytes
Linuxカーネルの公式ドキュメント(ext4のdirectory.rst)にも、ファイル名について次の原文があります。
file names cannot be longer than 255
この255の単位はバイトです。ASCII文字であれば1文字1バイトなので255文字とほぼ一致しますが、UTF-8の日本語は主に1文字3バイトを使います。この環境のpythonで実際に計算すると、次のようになります。
| 文字列 | 文字数 | UTF-8バイト数 | 255バイト制限内か |
|---|---|---|---|
| 「あ」×85 | 85文字 | 255バイト | 収まる(ちょうど上限) |
| 「あ」×86 | 86文字 | 258バイト | 超える |
つまり、Linuxの「255」を「Windowsの260」と同じ感覚で「文字数の上限」として比較すると誤りです。日本語のファイル名であれば、実質的な上限は255文字ではなく85文字前後になります。260(文字)と255(バイト)という2つの数字が近いために同種の制約として語られがちですが、測っている単位そのものが違う、という点が本記事の核心です。
実務者が確認すべきこと
「260文字を超えるとエラーになる」という現象に遭遇したとき、まず確認すべきは、その260という数字がどの層の話かです。既定のWin32 API(MAX_PATH)なのか、\\?\接頭辞を使っても超える量なのか、NTFS自体の構造上の限界(32,760・各要素255文字)なのか、それともGit for Windows固有のcore.longpathsが関係する場面なのかによって、対処の仕方は変わります。またLinux側で発生する255バイトのエラーは、非ASCII文字を含むファイル名では見た目の文字数だけで判断できません。なお、OneDrive・SharePointの同期におけるパス長制限は、Windows OS自体のMAX_PATHとは別に、サービス側が独自に公開している数値(パス全体400文字など)に従います。この点を実際のファイル名でチェックしたい場合は、当サイトの姉妹ツールOneDrive/SharePointのファイル名チェッカーをご利用ください。
よくある質問
なぜ「260文字」という数字だけが有名なのですか?
MAX_PATHは長年にわたり多くのWin32 APIの既定値として使われ、エラーダイアログにも頻繁に登場してきたためです。ただし原文が定義しているのは「パスの物理的な上限」ではなく「MAX_PATHという定数の値」である、という点が本記事の主題です。
\\?\を付ければどんなパスでも通りますか?
いいえ。\\?\接頭辞を使うとAPI上は最大32,767文字まで拡張されますが、NTFS自体の構造上の上限は32,760文字(各要素は255文字まで)です。またすべてのアプリケーションがこの接頭辞に対応しているとは限りません。
git config core.longpaths trueを設定すれば解決しますか?
本家git-scm.comの公式git-configマニュアルにはcore.longpathsという項目は存在しません(全文検索0件)。この設定はGit for Windowsプロジェクトが独自に追加している拡張機能であり、Windows環境での260文字の閾値に関連して用意されています。
Linuxの255文字制限とWindowsの260文字はどちらが厳しいですか?
単位が異なるため単純比較はできません。Windowsの260は文字数、Linuxの255はバイト数です。UTF-8の日本語ファイル名では1文字が主に3バイトになるため、Linux側で実質的に収まる文字数は255文字ではなく85文字前後になります(この環境のpythonによる実測)。
OneDriveのパス長エラーもこの記事の話と同じですか?
いいえ、別の話です。OneDrive/SharePointのパス長制限は、Windows OS自体のMAX_PATHとは別にサービス側が公開している数値に従います。詳しくは当サイトのOneDrive/SharePointのファイル名チェッカーをご覧ください。
出典・関連リンク
- Microsoft Learn - Maximum Path Length LimitationMAX_PATH=260・\\?\接頭辞32,767文字・LongPathsEnabled
- Microsoft Learn - File System Functionality ComparisonNTFS自体の構造上限32,760文字
- Git - git-config documentationcore.longpathsは本家マニュアルに存在しない
- Git for Windows - Release Notescore.longPathsの記載元
- POSIX.1-2017 §3.271 Pathname{PATH_MAX}バイトという単位の規定
- Linux kernel docs - filesystems/ext4/directory.rst255バイトの規定
このページを引用する場合
本記事の情報を引用・紹介いただく場合は、記事名「「パス長260文字」の正体 — それは文字数の制約ではない」と情報確認日「2026年7月26日」をあわせてお示しください。当ページへのリンクは任意です(リンクいただける場合は https://www.conbu.jp/tool/filename-limits/article-max-path.html をご利用ください)。
免責事項: 本記事はMicrosoft・Git・Linuxカーネルプロジェクトの公式サイトではなく、特定のパスやファイル名の可否を判定するものでもありません。掲載している内容は調査時点(2026年7月26日)で各公式資料から確認できた要約です。仕様は改定されうるため、利用前に必ず出典元の原典をご確認ください。詳細は免責事項をご確認ください。