<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>「with」タグの記事一覧Python Tech</title>
	<atom:link href="https://tech.nkhn37.net/tag/with/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Sat, 22 Nov 2025 02:15:13 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://tech.nkhn37.net/wp-content/uploads/2021/01/cropped-lion-normal-clear-1-32x32.png</url>
	<title>「with」タグの記事一覧Python Tech</title>
	<link>https://tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Python】ファイル入出力の基本</title>
		<link>https://tech.nkhn37.net/python-open-write/</link>
					<comments>https://tech.nkhn37.net/python-open-write/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Tue, 09 Feb 2021 00:00:00 +0000</pubDate>
				<category><![CDATA[入出力]]></category>
		<category><![CDATA[close]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[mode]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[read]]></category>
		<category><![CDATA[readlines]]></category>
		<category><![CDATA[walrus]]></category>
		<category><![CDATA[with]]></category>
		<category><![CDATA[write]]></category>
		<category><![CDATA[writelines]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=891</guid>

					<description><![CDATA[Python のファイル入出力の基本について解説します。 Pythonのファイル入出力 Python でのファイル入出力は、ファイルを開いてデータを読み書きする基本的な操作です。Python にはファイル入出力用の様々な [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Python の<span class="jinr-d--text-color d--marker1 d--bold">ファイル入出力の基本</span>について解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold" id="ファイル入出力">Pythonのファイル入出力</h2>



<p class="wp-block-paragraph">Python でのファイル入出力は、ファイルを開いてデータを読み書きする基本的な操作です。Python にはファイル入出力用の様々な関数やメソッドが用意されており、簡単に処理を実行できます。</p>



<p class="wp-block-paragraph">この記事では、Python のファイル入出力の基本となる各種関数・メソッドの使い方や <code>with</code> による自動ファイルクローズなど基本を紹介します。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="ファイル入出力の手順">ファイル入出力の手順</h3>



<p class="wp-block-paragraph">ファイル入出力の基本的な手順は以下のような流れとなります。</p>



<ol class="wp-block-list jinr-list">
<li><code>open</code> 関数でファイルを開く。</li>



<li><code>read</code> / <code>readline</code> メソッドでデータを読み込む、または <code>write</code> / <code>writelines</code> メソッドでデータを書き込む。</li>



<li><code>close</code> メソッドでファイルを閉じる。</li>
</ol>



<p class="wp-block-paragraph">テキストファイルへの書き込み例で、流れを確認してみましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">input_text = "サンプル"

# ファイルを開く（オープン）
file = open("sample.txt", "w+", encoding="utf-8")
# 文字列の書き込み
file.write(input_text)
# ファイルを閉じる（クローズ）
file.close()</pre>



<p class="wp-block-paragraph"><code>open</code> 関数では、ファイルパス、モード、文字コードを指定します。例では、<code>write</code> で<code>input_text</code> に格納した文字列をファイルに書き込み、<code>close</code> で閉じています。読み込みの場合は、メソッドが変わるだけで流れは同じです。</p>



<p class="wp-block-paragraph"><code>close</code> を忘れるとファイルが占有されたままとなり、他のプログラムがアクセスできなくなる可能性がありますので注意が必要です。なお、後述する <code>with</code> を使うと、自動的にファイルを閉じることができます。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="ファイルのモード-mode">ファイルのモード（<code>mode</code>）</h3>



<p class="wp-block-paragraph">ファイルの入出力では<span class="jinr-d--text-color d--marker1 d--bold">モード（<code>mode</code>）</span>を指定することで挙動の制御ができます。</p>



<p class="wp-block-paragraph">主なモードは以下の通りです。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>mode</th><th>内容</th></tr></thead><tbody><tr><td><code>r</code></td><td>読み込み専用<br>（ファイルが存在しない場合はエラー）</td></tr><tr><td><code>r+</code></td><td>読み書き両用<br>（ファイルが存在しない場合はエラー）</td></tr><tr><td><code>w</code></td><td>書き込み専用<br>（ファイルが存在しない場合は新規作成）</td></tr><tr><td><code>w+</code></td><td>読み書き両用<br>（オープン時に内容をクリア、ファイルが存在しない場合は新規作成）</td></tr><tr><td><code>a</code></td><td>追記専用<br>（ファイルが存在する場合に末尾に追記、ファイルが存在しない場合は新規作成）</td></tr><tr><td><code>a+</code></td><td>読み書き両用<br>（ファイルが存在する場合に末尾に追記、ファイルが存在しない場合は新規作成）</td></tr><tr><td><code>b</code></td><td>バイナリモード<br>（<code>rb</code>、<code>wb</code> のように <code>r</code> や <code>w</code> と併用）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>w</code> モードは書き込むたびに内容が上書きされるため注意が必要です。ログファイルのように追記する場合は <code>a</code>、<code>a+</code> モードを使用します。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="with命令により自動でファイルをcloseする"><code>with</code> による自動クローズ</h3>



<p class="wp-block-paragraph">ファイルを開いたら、不要になった時点で <code>close</code> する必要があります。しかし、コードが複雑で長くなるとクローズを忘れる可能性があることから、ファイルのオープン時間は短く保つことが推奨されます。</p>



<p class="wp-block-paragraph">これらの問題を解決するために <span class="jinr-d--text-color d--marker1 d--bold"><code>with</code></span> を使用します。<code>with</code> を使用するとブロックが終了した時点で自動的にファイルがクローズされます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">input_text = "サンプル"

# withでopenを実行する
with open("sample.txt", "w+", encoding="utf-8") as file:
    # 文字列の書き込み
    file.write(input_text)</pre>



<p class="wp-block-paragraph">例では、文字列の書き込みの <code>write</code> が終わったら自動でファイルをクローズするため、<code>close</code> 忘れを防止できます。特に理由がない限りは積極的に <code>with</code> を使用するようにしましょう。</p>



<p class="wp-block-paragraph">プログラミングでは不要になったらリソースを開放するのが基本です。C/C++ 言語などの他言語では、メモリも同様に確保・解放を行う必要があります。プログラマとしては、使い終わったものは片づける意識を持つように意識しましょう。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph"><strong>【コンテキストマネージャー】</strong></p>



<p class="wp-block-paragraph"><code>with ... as ...</code> は、コンテキストマネージャーと呼ばれる仕組みを使っています。コンテキストマネージャーは独自に実装することも可能です。以下を参考にしてください。</p>



<p class="wp-block-paragraph"><a href="https://tech.nkhn37.net/python-context-manager-basic/" target="_blank" rel="noreferrer noopener">コンテキストマネージャーの基本</a></p>
</div>
		</div></section>



<h2 class="wp-block-heading jinr-heading d--bold" id="テキストファイルの入出力-1">テキストファイルの入出力</h2>



<p class="wp-block-paragraph">テキストファイルの入出力方法について基本となる実装例を紹介します。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="テキストファイルの読み込み-1">テキストファイルの読み込み</h3>



<h4 class="wp-block-heading jinr-heading d--bold" id="ファイル内容をまとめて取得する-readメソッド">ファイル内容をまとめて取得する <code>read</code></h4>



<p class="wp-block-paragraph">ファイル全体の内容をまとめて取得するには <span class="jinr-d--text-color d--marker1 d--bold"><code>read</code></span> メソッドを使用します。</p>



<p class="wp-block-paragraph">以下は、事前に用意した <code>sample_text.txt</code> の内容をまとめて読み込んで表示する例です。任意のファイルを用意して試してみてください。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">with open("sample_text.txt", "r", encoding="utf-8") as file:
    data = file.read()

print(data)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
Python
ファイルの入出力の基本
テキストファイルの入出力</pre>



<h4 class="wp-block-heading jinr-heading d--bold" id="ファイル内容をまとめて取得する-readメソッド">ファイル内容を 1 文字ずつ取得する <code>read(1)</code></h4>



<p class="wp-block-paragraph">ファイル内容を 1 文字ずつ読み込むには <code>read(1)</code> で順次読み込みます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">with open("sample_text.txt", "r", encoding="utf-8") as file:
    data = []
    # 一文字ずつ読み込む
    while d := file.read(1):
        data.append(d)

print(data, "\n")
data_str = "".join(data)
print(data_str)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
['P', 'y', 't', 'h', 'o', 'n', '\n', 'フ', 'ァ', 'イ', 'ル', 'の', '入', '出', '力', 'の', '基', '本', '\n', 'テ', 'キ', 'ス', 'ト', 'フ', 'ァ', 'イ', 'ル', 'の', '入', '出', '力'] 

Python
ファイルの入出力の基本
テキストファイルの入出力</pre>



<p class="wp-block-paragraph">この例では、1 文字ずつリストに格納し <code>"".join(data)</code> で結合しています。リストの結合は「<a href="https://tech.nkhn37.net/python-str-join/" target="_blank" rel="noreferrer noopener">リストを結合して文字列にする方法 ~ join ~</a>」を参考にしてください。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox5 ">
			<i class="jif jin-ifont-v2speaker" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph"><strong>【セイウチ (Walrus) 演算子】</strong></p>



<p class="wp-block-paragraph">「<span class="jinr-d--text-color d--marker1 d--bold"><code>:=</code></span>」は、Python 3.8 で導入された演算子でセイウチの目と牙に似ていることから「<span class="jinr-d--text-color d--marker1 d--bold">セイウチ (Walrus) 演算子</span>」と言います。この演算子では、変数への代入と評価を同時に行うため、シンプルな記述が可能です。公式ドキュメントは<a href="https://docs.python.org/ja/3/whatsnew/3.8.html#assignment-expressions" target="_blank" rel="noreferrer noopener">こちら</a>を参照してください。</p>
</div>
		</div></section>



<h4 class="wp-block-heading jinr-heading d--bold" id="ファイルの内容を1行ずつ取得する-readlinesメソッド">ファイルの内容を 1 行ずつ取得する <code>readline</code></h4>



<p class="wp-block-paragraph">ファイルの内容を 1 行ずつリストで取得するには <span class="jinr-d--text-color d--marker1 d--bold"><code>readlines</code></span> メソッドを使用します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">with open("sample_text.txt", "r", encoding="utf-8") as file:
    # 1行ずつデータを読み出す
    data = file.readlines()

print(data, "\n")
# 取得したデータを出力
for line in data:
    print(line, end="")</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
['Python\n', 'ファイルの入出力の基本\n', 'テキストファイルの入出力'] 

Python
ファイルの入出力の基本
テキストファイルの入出力</pre>



<p class="wp-block-paragraph"><code>readlines</code> で取得した各行の末尾には改行が入っているため、そのまま <code>print</code> すると余計な改行が入ってしまいます。例では、余計な改行で見にくくならないように <code>print(line, end="")</code> としています。</p>



<h5 class="wp-block-heading jinr-heading d--bold">順次 1 行ずつ取得して処理する場合</h5>



<p class="wp-block-paragraph"><code>readlines</code> 以外にも <code>open</code> したオブジェクトを使って、以下のように直接 <code>for</code> ループで処理することで 1 行ずつ読み込むことも可能です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># for文で順次取り出す方法
with open("sample_text.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line, end="")</pre>



<h3 class="wp-block-heading jinr-heading d--bold" id="テキストファイルの書き込み-write">テキストファイルへの書き込み</h3>



<h4 class="wp-block-heading jinr-heading d--bold">文字列をテキストファイルへ書き込む <code>write</code></h4>



<p class="wp-block-paragraph">文字列をテキストファイルを書き込むには、<span class="jinr-d--text-color d--marker1 d--bold"><code>write</code></span> メソッドを使用します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">data = "Python\nファイルの入出力の基本\nテキストファイルの入出力"

# テキストファイルの書き込み
with open("sample_text_out_str.txt", "w+", encoding="utf-8") as file:
    file.write(data)</pre>



<p class="wp-block-paragraph">例では <code>"w+"</code> の書き込みモードでファイルを <code>open</code> し、<code>write</code> メソッドに文字列を渡しています。出力先の <code>sample_text_out_str.txt</code> には以下が書き込まれます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Python
ファイルの入出力の基本
テキストファイルの入出力</pre>



<h4 class="wp-block-heading jinr-heading d--bold">文字列リストをまとめてテキストファイルへ書き込む <code>writelines</code></h4>



<p class="wp-block-paragraph">文字列リストをまとめて書き込むには、<span class="jinr-d--text-color d--marker1 d--bold"><code>writelines</code></span> メソッドを使用します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">data = [
    "Python\n",
    "ファイルの入出力の基本\n",
    "テキストファイルの入出力",
]

# テキストファイルの書き込み
with open("sample_text_out_list.txt", "w+", encoding="utf-8") as file:
    file.writelines(data)</pre>



<p class="wp-block-paragraph"><code>writelines</code> にリストを指定することでファイル出力が可能です。なお、各文字列ごとに改行したい場合は、リスト内の各文字列の末尾に <code>"\n"</code> を含める必要があります。</p>



<h2 class="wp-block-heading jinr-heading d--bold" id="バイナリファイルの入出力">バイナリファイルの入出力</h2>



<p class="wp-block-paragraph">画像などのバイナリファイルの入出力の例を紹介します。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="バイナリファイルの読み込み-1">バイナリファイルの読み込み</h3>



<h4 class="wp-block-heading jinr-heading d--bold" id="ファイル内容をまとめて取得する-readメソッド-1">ファイル内容をまとめて取得する <code>read</code></h4>



<p class="wp-block-paragraph"> <code>"rb"</code> モードでバイナリファイルを開き、<code>read</code> メソッドで読み込みます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">with open("sample_binary.png", "rb") as file:
    data = file.read()

print(data)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果例】
b'\x89PNG\r\n\x1a\n\x00\x00\x00（・・・中略・・・）\xaeB`\x82'</pre>



<h4 class="wp-block-heading jinr-heading d--bold" id="ファイル内容をまとめて取得する-readメソッド">ファイル内容を 1 バイトずつ取得する <code>read(1)</code></h4>



<p class="wp-block-paragraph">バイナリファイルを 1 バイトずつ読み込むには <code>read(1)</code> として読み込みます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">with open("sample_binary.png", "rb") as file:
    data = []
    while d := file.read(1):
        data.append(d)

print(data, "\n")
data_bin = b"".join(data)
print(data_bin)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
[b'\x89', b'P', b'N', b'G', b'\r', b'\n', b'\x1a', b'\n', b'\x00', b'\x00', b'\x00',（・・・中略・・・）, b'\xae', b'B', b'`', b'\x82']
b'\x89PNG\r\n\x1a\n\x00\x00\x00（・・・中略・・・）\xaeB`\x82'</pre>



<h3 class="wp-block-heading jinr-heading d--bold" id="バイナリファイルの書き込み-write">バイナリファイルへの書き込み</h3>



<h4 class="wp-block-heading jinr-heading d--bold">データをバイナリファイルへ書き込む <code>write</code></h4>



<p class="wp-block-paragraph"><code>"wb"</code> モードでバイナリデータを開き、<code>write</code> メソッドで書き込みます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">with open("sample_binary.png", "rb") as file:
    data = file.read()

# バイナリファイルの書き込み
with open("sample_binary_out.png", "wb") as file:
    file.write(data)</pre>



<p class="wp-block-paragraph">例では、バイナリファイルを読み込み、別名でコピーとして書き込んでいます。</p>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p class="wp-block-paragraph">Python の<span class="jinr-d--text-color d--marker1 d--bold">ファイル入出力の基本</span>について解説しました。</p>



<p class="wp-block-paragraph">ファイル入出力の基本的な流れは以下のようになります。</p>



<ol class="wp-block-list jinr-list">
<li><code>open</code> 関数でファイルを開く。</li>



<li><code>read</code> / <code>readline</code> メソッドでデータを読み込む、または <code>write</code> / <code>writelines</code> メソッドでデータを書き込む。</li>



<li><code>close</code> メソッドでファイルを閉じる。</li>
</ol>



<p class="wp-block-paragraph"><code>close</code> 忘れを防止するには <code>with</code> を使うと自動的にファイルクローズができます。また、<code>open</code>、<code>close</code>、<code>read</code>、<code>readlines</code>、<code>write</code>、<code>writelines</code> といった各種関数・メソッドの使い方を説明しました。</p>



<p class="wp-block-paragraph">ファイル入出力はプログラミングの基本であるため、しっかり使いこなせるようになりましょう。</p>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード</div><div class="c--simple-box-inner">
<p class="wp-block-paragraph">上記で紹介しているソースコードについては <a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-basic/input-output/file-input-output" target="_blank" rel="noreferrer noopener">GitHub</a> にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/python-open-write/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: tech.nkhn37.net @ 2026-06-14 01:42:59 by W3 Total Cache
-->