<?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>ナノトイラボ</title>
	<atom:link href="https://nano-toy-lab.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://nano-toy-lab.com</link>
	<description>エンジニアを目指す人を応援するサイト</description>
	<lastBuildDate>Mon, 28 Sep 2026 00:21:31 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://nano-toy-lab.com/wp-content/uploads/2021/04/cropped-245f987f1763f521995a7b5f2a2983b7-scaled-1-32x32.jpg</url>
	<title>ナノトイラボ</title>
	<link>https://nano-toy-lab.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://nano-toy-lab.com/feed/"/>
	<item>
		<title>【Python】辞書内包表記（dict comprehension）の使い方を初心者向けに徹底解説！for文との違いから実践例まで</title>
		<link>https://nano-toy-lab.com/python/python-dict-comprehension/</link>
					<comments>https://nano-toy-lab.com/python/python-dict-comprehension/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Mon, 28 Sep 2026 00:20:34 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-dict-comprehension/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/09/eyecatch-4-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonの辞書内包表記（dict comprehension）の書き方を初心者向けに解説。for文との違いや条件分岐、zipを使った実践例までコード付きで紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/09/eyecatch-4-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">「辞書(dict)に値をまとめて追加したいのに、for文を書くとどうしても行数が増えてしまう」「他の人のコードで <code>{key: value for ...}</code> のような書き方を見かけたけど、意味がよく分からない」——そんな経験はありませんか。</p>

<p class="wp-block-paragraph">この書き方は「辞書内包表記（dict comprehension）」と呼ばれるPythonの機能です。慣れないうちは読みにくく感じるかもしれませんが、使いこなせるようになると、for文を何行も書いていた処理をたった1行で表現できるようになります。この記事では、辞書内包表記の基本的な書き方から、条件分岐を使った応用、実践的な活用例までを初心者向けに丁寧に解説します。</p>

<h2 class="wp-block-heading" id="i-0">辞書内包表記とは？</h2>

<p class="wp-block-paragraph">辞書内包表記とは、for文とif文を1行にまとめて書くことで、新しい辞書（dict）を簡潔に作成できるPythonの構文です。リストを作る「リスト内包表記」の辞書版だとイメージすると分かりやすいでしょう。リスト内包表記について詳しく知りたい方は、以下の記事もあわせてご覧ください。</p>

<p class="wp-block-paragraph"><a href="https://nano-toy-lab.com/python/list-comprehension/">【Python】リスト内包表記の使い方を徹底解説！for文との違いや書き方を初心者向けに紹介！</a></p>

<p class="wp-block-paragraph">辞書そのものの基本的な使い方に不安がある方は、先に以下の記事で作り方やループ処理をおさらいしておくとスムーズです。</p>

<p class="wp-block-paragraph"><a href="https://nano-toy-lab.com/python/python-dict/">【Python】辞書(dict)の使い方を初心者向けに徹底解説！作り方からループ処理まで完全網羅！</a></p>

<h2 class="wp-block-heading" id="i-1">基本的な書き方</h2>

<h3 class="wp-block-heading" id="i-2">基本構文</h3>

<p class="wp-block-paragraph">辞書内包表記の基本構文は次のとおりです。</p>

<p class="wp-block-paragraph"><code>{key: value for 変数 in イテラブル}</code></p>

<p class="wp-block-paragraph">実際に、数値のリストから「数値をキー、その2乗を値」とする辞書を作ってみましょう。</p>

<pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5]
squares = {n: n ** 2 for n in numbers}
print(squares)
# 実行結果: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}</code></pre>

<h3 class="wp-block-heading" id="i-3">for文で書いた場合との比較</h3>

<p class="wp-block-paragraph">同じ処理をfor文で書くと、次のようになります。</p>

<pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5]
squares = {}
for n in numbers:
    squares[n] = n ** 2
print(squares)
# 実行結果: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}</code></pre>

<p class="wp-block-paragraph">4行かかっていた処理が、辞書内包表記を使うとたった1行にまとまります。for文の書き方に自信がない方は、以下の記事も参考にしてください。</p>

<p class="wp-block-paragraph"><a href="https://nano-toy-lab.com/python/python_for_range/">Pythonのfor文・range関数を攻略！これを知れば基本的な処理ができる使い方9選！</a></p>

<h2 class="wp-block-heading" id="i-4">条件分岐（if）を使う書き方</h2>

<p class="wp-block-paragraph">辞書内包表記では、末尾に <code>if</code> 条件を付け加えることで、特定の条件を満たす要素だけを辞書に含めることができます。</p>

<pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_squares = {n: n ** 2 for n in numbers if n % 2 == 0}
print(even_squares)
# 実行結果: {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}</code></pre>

<p class="wp-block-paragraph">「偶数だけを対象にしたい」といったフィルタリング処理も、条件式を1つ足すだけで実現できるのが辞書内包表記の便利なところです。</p>

<h2 class="wp-block-heading" id="i-5">実践的な活用例</h2>

<h3 class="wp-block-heading" id="i-6">2つのリストを辞書にまとめる</h3>

<p class="wp-block-paragraph">名前のリストと点数のリストのように、対応関係にある2つのリストを1つの辞書にまとめたい場面はよくあります。そのようなときは <code>zip()</code> 関数と組み合わせると簡単です。</p>

<pre class="wp-block-code"><code>names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
score_dict = {name: score for name, score in zip(names, scores)}
print(score_dict)
# 実行結果: {'Alice': 85, 'Bob': 92, 'Charlie': 78}</code></pre>

<p class="wp-block-paragraph">このように、ちょっとしたデータ整形を自分の書いたコードでサクサクこなせるようになると、Python学習がぐっと楽しくなってきます。ただ、独学だとどうしても「この書き方で本当に合っているのか」「もっと効率よく学べる方法はないのか」と一人で悩んで伸び悩んでしまうことも少なくありません。そんなときは、プロに直接教えてもらえるプログラミングスクールを検討してみるのも一つの手です。以下の記事でスクールの選び方やおすすめをまとめていますので、独学に限界を感じたら参考にしてください。</p>

<p class="wp-block-paragraph"><a href="https://nano-toy-lab.com/python/schools/">【全スクール無料体験あり！】プログラミングを学びたい人におすすめのスクール5選！</a></p>

<h3 class="wp-block-heading" id="i-7">既存の辞書の値を加工する</h3>

<p class="wp-block-paragraph">すでにある辞書の値だけを一括で加工したい場合は、<code>.items()</code> を使って辞書内包表記を組み立てます。たとえば、商品の価格一覧に消費税を加算するケースを見てみましょう。</p>

<pre class="wp-block-code"><code>prices = {"apple": 100, "banana": 150, "orange": 120}
tax_included = {item: int(price * 1.1) for item, price in prices.items()}
print(tax_included)
# 実行結果: {'apple': 110, 'banana': 165, 'orange': 132}</code></pre>

<p class="wp-block-paragraph">このように、既存のデータを一括変換するようなケースでも辞書内包表記は非常に役立ちます。集計処理をよく行う方は、以下の記事で紹介している collections モジュールもあわせて活用すると、さらに効率的にデータを扱えるようになります。</p>

<p class="wp-block-paragraph"><a href="https://nano-toy-lab.com/python/python-collections-counter-defaultdict/">【Python】collectionsモジュールの使い方を初心者向けに徹底解説！Counter・defaultdictで集計を簡単に</a></p>

<h2 class="wp-block-heading" id="i-8">辞書内包表記を使うときの注意点</h2>

<p class="wp-block-paragraph">便利な辞書内包表記ですが、使う際にはいくつか注意しておきたいポイントがあります。</p>

<ul class="wp-block-list"><li>同じキーが複数回出てくる場合、後から処理された値で上書きされてしまう（キーの重複に注意）</li><li>条件分岐やネストが増えて1行が長くなりすぎると、かえって読みにくくなる</li><li>複雑な処理になりそうなときは、無理に1行にまとめず、通常のfor文に戻したほうが可読性が高くなる場合もある</li></ul>

<p class="wp-block-paragraph">「短く書けるかどうか」よりも「後で読んだときに分かりやすいかどうか」を基準に、辞書内包表記とfor文を使い分けていくとよいでしょう。</p>

<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>

<h2 class="wp-block-heading" id="i-9">もっと効率的にPythonを学びたい人へ</h2>

<p class="wp-block-paragraph">辞書内包表記のような「書き方のコツ」は、独学で書籍やネット記事だけを読んでいると、なかなか身につくまでに時間がかかるものです。もし「我流の書き方で本当に合っているのか不安」「効率よく実践的なコードの書き方を身につけたい」と感じているなら、マンツーマンで指導してもらえるスクールを利用するのも近道です。未経験からのPython習得や転職サポートも含めて、無料カウンセリングで相談できるサービスもあります。</p>


<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>


<h2 class="wp-block-heading" id="i-10">まとめ</h2>

<p class="wp-block-paragraph">今回は、Pythonの辞書内包表記について解説しました。最後に要点を振り返っておきましょう。</p>

<ul class="wp-block-list"><li>辞書内包表記は <code>{key: value for 変数 in イテラブル}</code> の形で、for文を使わずに1行で辞書を作成できる構文</li><li>末尾に <code>if</code> 条件を加えることで、特定の条件を満たす要素だけを抽出できる</li><li><code>zip()</code> と組み合わせれば2つのリストを1つの辞書にまとめられる</li><li><code>.items()</code> を使えば既存の辞書の値だけを一括で加工できる</li><li>読みにくくなるほど複雑な場合は、無理に1行にまとめずfor文に戻すのも選択肢</li></ul>

<p class="wp-block-paragraph">辞書内包表記を使いこなせるようになると、データの整形や集計処理をぐっとスマートに書けるようになります。ぜひ日々のコーディングで積極的に使ってみてください。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-dict-comprehension/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【比較】Python3エンジニア認定基礎試験のおすすめ参考書5冊を徹底比較！独学合格の教材選びを解説</title>
		<link>https://nano-toy-lab.com/python/python-certification-textbook-comparison/</link>
					<comments>https://nano-toy-lab.com/python/python-certification-textbook-comparison/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Fri, 25 Sep 2026 00:05:46 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[IT資格]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-certification-textbook-comparison/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/09/eyecatch-2-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Python3エンジニア認定基礎試験におすすめの参考書・問題集を比較。出題範囲との一致度や独学のしやすさなど選び方のポイントとタイプ別のおすすめ教材を紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/09/eyecatch-2-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">「Python3エンジニア認定基礎試験を受けようと思っているけど、参考書が多すぎてどれを選べばいいか分からない」「せっかく買った本が試験範囲と合っていなかったらどうしよう」——そんな不安を抱えている方は多いのではないでしょうか。筆者は都内で現役SEとして働きながら、独学でPython資格の勉強を進めてきました。この記事では、これから資格取得を目指す方に向けて、参考書・問題集を選ぶときの比較軸と、タイプ別のおすすめ教材を整理してご紹介します。</p>

<h2 class="wp-block-heading" id="i-0">参考書選びで失敗しないための3つの比較軸</h2>

<p class="wp-block-paragraph">Python3エンジニア認定基礎試験は、公式サイトで「出題範囲」が公開されている試験です。参考書を選ぶときは、なんとなく人気だからという理由ではなく、以下の3つの軸で比較することをおすすめします。</p>

<h3 class="wp-block-heading" id="i-1">① 出題範囲との一致度</h3>

<p class="wp-block-paragraph">この試験の出題範囲は、書籍『Pythonチュートリアル』（オライリージャパン）の目次にほぼ準拠しています。そのため「試験範囲を漏れなくカバーしているか」は最優先でチェックしたいポイントです。試験対策と謳っていても、実際には範囲外の内容（データ分析やWeb開発など）に紙面を割いている本も少なくないので注意しましょう。</p>

<h3 class="wp-block-heading" id="i-2">② 独学のしやすさ（解説の分かりやすさ）</h3>

<p class="wp-block-paragraph">プログラミング未経験から挑戦する方と、業務でPythonに触れたことがある方とでは、必要な解説の粒度が変わります。図解が多いか、専門用語に説明が添えられているかは、購入前に目次や試し読みで確認しておくと失敗が減ります。</p>

<h3 class="wp-block-heading" id="i-3">③ 問題演習量</h3>

<p class="wp-block-paragraph">資格試験は知識のインプットだけでなく、選択式問題への慣れも合否を左右します。模擬問題の収録数や、Web上で受けられる模擬試験の有無も比較しておきたいポイントです。</p>

<h2 class="wp-block-heading" id="i-4">おすすめ参考書・教材の比較</h2>

<p class="wp-block-paragraph">比較軸を踏まえて、代表的な教材の特徴を整理しました。</p>

<ul class="wp-block-list">
<li><strong>Pythonチュートリアル（オライリージャパン）</strong>：試験の出題範囲そのものになっている公式的な位置づけの書籍。網羅性は最も高いが、初心者にはやや硬い文章で、独学の1冊目には不向きな場合もある。</li>
<li><strong>スッキリわかるPython入門（インプレス）</strong>：キャラクターとの対話形式で進む入門書。図解が多く、プログラミング未経験者が最初の1冊として読み進めやすい。試験範囲そのものではないため、基礎固め用として使うのがおすすめ。</li>
<li><strong>Python 1年生（翔泳社）</strong>：会話形式でとにかく易しく書かれた入門書。挫折しやすい人がまず「楽しく続ける」ための1冊として向いている。</li>
<li><strong>徹底攻略Python3エンジニア認定基礎試験問題集（インプレス）</strong>：試験主催団体の監修が入った公式問題集。出題範囲との一致度が高く、模擬問題も豊富なため、仕上げの1冊として定番。</li>
<li><strong>Web上の無料模擬試験サイト（PRIME STUDY・DIVE INTO EXAMなど）</strong>：書籍ではないが、隙間時間にスマホで問題演習ができる。書籍と組み合わせて使うと定着度が上がる。</li>
</ul>

<p class="wp-block-paragraph">基礎固めのために読んでいたPythonの標準ライブラリの知識があいまいな方は、先に <a href="https://nano-toy-lab.com/python/python-collections-counter-defaultdict/">collectionsモジュールの解説記事</a> や <a href="https://nano-toy-lab.com/python/python-json/">JSONの扱い方の解説記事</a> で復習しておくと、参考書の内容がスムーズに頭に入ってきます。特に例外処理は出題範囲の中でもつまずきやすい分野なので、<a href="https://nano-toy-lab.com/python/python-try-except/">例外処理（try-except）の解説記事</a>もあわせて読んでおくことをおすすめします。</p>

<h2 class="wp-block-heading" id="i-5">タイプ別おすすめの選び方</h2>

<h3 class="wp-block-heading" id="i-6">プログラミング未経験からいきなり挑戦する人</h3>

<p class="wp-block-paragraph">まずは『スッキリわかるPython入門』や『Python 1年生』など、図解や会話形式で書かれた入門書で全体像をつかむのがおすすめです。いきなり『Pythonチュートリアル』から入ると、専門用語の多さに挫折しやすい傾向があります。</p>

<p class="wp-block-paragraph">とはいえ、独学だとどうしても分からない箇所でつまずいて時間を溶かしてしまうこともあります。「一人で進める自信がない」「最短ルートで基礎を身につけたい」という方は、マンツーマンで学べるスクールを比較検討してみるのも一つの手です。</p>

<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>


<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>


<h3 class="wp-block-heading" id="i-7">一冊で効率よく合格ラインまで持っていきたい人</h3>

<p class="wp-block-paragraph">ある程度Pythonの文法を触ったことがある方は、公式監修の『徹底攻略Python3エンジニア認定基礎試験問題集』から始めても問題ありません。出題範囲との一致度が高く、演習量も十分なため、最短距離で合格ラインの実力をつけやすい教材です。</p>

<h3 class="wp-block-heading" id="i-8">問題演習を最優先したい人</h3>

<p class="wp-block-paragraph">書籍の問題集に加えて、PRIME STUDYなどの無料模擬試験サイトを併用しましょう。通勤時間やちょっとした隙間時間にスマホで解けるので、直前期の総仕上げに向いています。</p>

<h2 class="wp-block-heading" id="i-9">よくある質問</h2>

<h3 class="wp-block-heading" id="i-10">Q. 参考書は1冊だけで合格できますか？</h3>

<p class="wp-block-paragraph">A. プログラミング経験がある方であれば、公式監修の問題集1冊でも合格を狙えます。ただし未経験の方は、入門書で基礎を固めてから問題集に進むほうが、結果的に近道になることが多いです。</p>

<h3 class="wp-block-heading" id="i-11">Q. どのくらいの勉強期間を見ておけばいいですか？</h3>

<p class="wp-block-paragraph">A. Pythonの学習経験によって大きく異なります。目安となる勉強時間については、別記事「<a href="https://nano-toy-lab.com/python/python-engineer-certification/">Pythonエンジニア認定基礎試験に合格するために必要な勉強時間は？</a>」で詳しく解説しているので、あわせて参考にしてください。</p>

<h3 class="wp-block-heading" id="i-12">Q. 中古や古い版の参考書でも大丈夫ですか？</h3>

<p class="wp-block-paragraph">A. Pythonのバージョンによって仕様が変わっている場合があるため、できるだけ新しい版を選ぶことをおすすめします。特にライブラリの仕様変更には注意しましょう。</p>

<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>


<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>


<h2 class="wp-block-heading" id="i-13">まとめ</h2>

<ul class="wp-block-list">
<li>参考書は「出題範囲との一致度」「独学のしやすさ」「問題演習量」の3軸で比較する</li>
<li>未経験者はまず図解の多い入門書で全体像をつかむのがおすすめ</li>
<li>ある程度経験があるなら公式監修の問題集から始めても良い</li>
<li>Web上の無料模擬試験サイトを併用すると問題演習量を補える</li>
<li>独学に不安があるならスクールでの学習も選択肢に入れてみる</li>
</ul>

<p class="wp-block-paragraph">自分に合った教材を選んで、Python3エンジニア認定基礎試験の合格を目指しましょう。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-certification-textbook-comparison/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】collectionsモジュールの使い方を初心者向けに徹底解説！Counter・defaultdictで集計を簡単に</title>
		<link>https://nano-toy-lab.com/python/python-collections-counter-defaultdict/</link>
					<comments>https://nano-toy-lab.com/python/python-collections-counter-defaultdict/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Wed, 23 Sep 2026 14:51:21 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-collections-counter-defaultdict/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/09/eyecatch-1-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonのcollectionsモジュールの使い方を初心者向けに解説。Counterで出現回数を数える方法やmost_common、defaultdictでKeyErrorを防ぎグループ分けする方法を、実行結果つきのサンプルコードで紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/09/eyecatch-1-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">「リストの中に同じ値が何回出てくるか数えたい」「辞書でカウントしようとしたら <code>KeyError</code> が出てしまった」――Pythonを学び始めると、こんな場面に一度は出会いますよね。私も現場でログやCSVを集計するとき、最初は if 文だらけの長いコードを書いていました。</p>
<p class="wp-block-paragraph">実はこうした「数える」「グループ分けする」処理は、Python標準ライブラリの <strong>collectionsモジュール</strong> を使うと驚くほどシンプルに書けます。この記事では、特に使用頻度の高い <strong>Counter</strong> と <strong>defaultdict</strong> の使い方を、初心者の方にも分かるように実行結果つきで解説します。</p>
<h2 class="wp-block-heading" id="i-0">collectionsモジュールとは？</h2>
<p class="wp-block-paragraph">collectionsは、Pythonに最初から入っている標準ライブラリで、リストや辞書をさらに便利にした「特殊なデータ型」がまとめられています。インストールは不要で、<code>import</code> するだけで使えます。</p>
<ul class="wp-block-list"><li><strong>Counter</strong>：要素の出現回数を数える辞書</li><li><strong>defaultdict</strong>：存在しないキーにも初期値を自動で用意してくれる辞書</li><li>その他：deque（両端キュー）、namedtuple（名前付きタプル）、OrderedDict など</li></ul>
<p class="wp-block-paragraph">どちらも辞書の仲間なので、辞書の基本を押さえておくと理解がスムーズです。不安な方は先に <a href="https://nano-toy-lab.com/python/python-dict/">辞書(dict)の使い方を解説した記事</a> を読んでおくのがおすすめです。</p>
<h2 class="wp-block-heading" id="i-1">Counterの基本的な使い方</h2>
<h3 class="wp-block-heading" id="i-2">辞書で数える場合との比較</h3>
<p class="wp-block-paragraph">まずはCounterを使わずに、普通の辞書で果物の個数を数えてみます。</p>
<pre class="wp-block-code"><code>fruits = ["apple", "banana", "apple", "orange", "banana", "apple"]

counts = {}
for f in fruits:
    if f in counts:
        counts[f] += 1
    else:
        counts[f] = 1

print(counts)
# 実行結果: {'apple': 3, 'banana': 2, 'orange': 1}</code></pre>
<p class="wp-block-paragraph">キーがあるかどうかで分岐が必要なので、少し長くなってしまいます。これをCounterで書くと、たった1行です。</p>
<h3 class="wp-block-heading" id="i-3">Counterで出現回数を数える</h3>
<pre class="wp-block-code"><code>from collections import Counter

fruits = ["apple", "banana", "apple", "orange", "banana", "apple"]
c = Counter(fruits)

print(c)
# 実行結果: Counter({'apple': 3, 'banana': 2, 'orange': 1})

print(c["apple"])
# 実行結果: 3

print(c["grape"])  # 存在しないキー
# 実行結果: 0</code></pre>
<p class="wp-block-paragraph">ポイントは、<strong>存在しないキーを指定しても KeyError にならず 0 が返る</strong> ことです。通常の辞書ではエラーになるので、この違いは覚えておきましょう。なお、1つの値だけを数えたいならリストの count() でも十分です。count() については <a href="https://nano-toy-lab.com/python/count/">count関数の使い方を解説した記事</a> で詳しく紹介しています。</p>
<p class="wp-block-paragraph">ちなみに、こうした「標準ライブラリで楽に書く」発想は、独学だとなかなか気づけないポイントでもあります。独学で伸び悩んでいると感じたら、現役SEの視点でまとめた <a href="https://nano-toy-lab.com/python/schools/">プログラミングを学びたい人におすすめのスクール5選</a> も参考にしてみてください。無料体験で「質問できる環境」を試してみるだけでも、学習効率が大きく変わりますよ。</p>
<h3 class="wp-block-heading" id="i-4">most_common()でランキングを作る</h3>
<p class="wp-block-paragraph">Counterの一番便利なメソッドが <code>most_common()</code> です。出現回数の多い順に (要素, 回数) のタプルのリストを返してくれます。</p>
<pre class="wp-block-code"><code>print(c.most_common(2))
# 実行結果: [('apple', 3), ('banana', 2)]</code></pre>
<p class="wp-block-paragraph">引数を省略すると、すべての要素を多い順に返します。自分で並び替える方法が気になる方は <a href="https://nano-toy-lab.com/python/python-sort-sorted/">sortとsortedの違いを解説した記事</a> もあわせてどうぞ。</p>
<h3 class="wp-block-heading" id="i-5">文字列や単語を数える</h3>
<p class="wp-block-paragraph">Counterにはリストだけでなく、文字列も渡せます。文字列を渡すと1文字ずつ数えてくれます。</p>
<pre class="wp-block-code"><code>from collections import Counter

# 文字ごとに数える
print(Counter("hello world").most_common(3))
# 実行結果: [('l', 3), ('o', 2), ('h', 1)]

# 単語ごとに数える（split()でリストにしてから渡す）
sentence = "python is fun and python is easy"
print(Counter(sentence.split()).most_common(2))
# 実行結果: [('python', 2), ('is', 2)]</code></pre>
<h3 class="wp-block-heading" id="i-6">update()と足し算・引き算</h3>
<p class="wp-block-paragraph">Counter同士は足し算・引き算ができ、update()で後から要素を追加することもできます。引き算で0以下になった要素は自動的に消えます。</p>
<pre class="wp-block-code"><code>from collections import Counter

c1 = Counter(a=3, b=1)
c2 = Counter(a=1, b=2)

print(c1 + c2)
# 実行結果: Counter({'a': 4, 'b': 3})

print(c1 - c2)
# 実行結果: Counter({'a': 2})

c1.update(["b", "c"])
print(c1)
# 実行結果: Counter({'a': 3, 'b': 2, 'c': 1})</code></pre>
<p class="wp-block-paragraph">合計数を知りたいときは <code>sum(c.values())</code> と書けばOKです。</p>
<h2 class="wp-block-heading" id="i-7">defaultdictの基本的な使い方</h2>
<h3 class="wp-block-heading" id="i-8">通常の辞書で起きるKeyError</h3>
<p class="wp-block-paragraph">通常の辞書では、存在しないキーに対していきなり <code>+= 1</code> をするとエラーになります。</p>
<pre class="wp-block-code"><code>d = {}
d["x"] += 1
# 実行結果: KeyError: 'x'</code></pre>
<h3 class="wp-block-heading" id="i-9">defaultdict(int)で自動的に0から始める</h3>
<p class="wp-block-paragraph">defaultdictは、作成時に「初期値を作る関数」を渡しておくと、存在しないキーにアクセスしたときに自動でその初期値を用意してくれます。<code>int</code> を渡すと初期値は 0 になります。</p>
<pre class="wp-block-code"><code>from collections import defaultdict

dd = defaultdict(int)
dd["x"] += 1

print(dd)
# 実行結果: defaultdict(&lt;class 'int'&gt;, {'x': 1})

print(dict(dd))  # 普通の辞書に変換
# 実行結果: {'x': 1}</code></pre>
<h3 class="wp-block-heading" id="i-10">defaultdict(list)でグループ分けする</h3>
<p class="wp-block-paragraph">実務で特に便利なのが <code>list</code> を渡すパターンです。「クラスごとに生徒をまとめる」といったグループ分けが簡単に書けます。</p>
<pre class="wp-block-code"><code>from collections import defaultdict

students = [("A組", "田中"), ("B組", "佐藤"), ("A組", "鈴木"),
            ("B組", "高橋"), ("C組", "伊藤")]

groups = defaultdict(list)
for cls, name in students:
    groups[cls].append(name)

print(dict(groups))
# 実行結果: {'A組': ['田中', '鈴木'], 'B組': ['佐藤', '高橋'], 'C組': ['伊藤']}</code></pre>
<p class="wp-block-paragraph">通常の辞書なら「キーがなければ空のリストを作る」という分岐が必要ですが、defaultdictならその処理が不要になります。</p>
<h3 class="wp-block-heading" id="i-11">注意点：参照しただけでキーが作られる</h3>
<p class="wp-block-paragraph">defaultdictは「存在しないキーを参照しただけ」でもキーが追加されてしまいます。存在チェックをしたいときは <code>in</code> を使いましょう。</p>
<pre class="wp-block-code"><code>from collections import defaultdict

d2 = defaultdict(int)
print(d2["y"])
# 実行結果: 0

print(len(d2))  # 参照しただけで "y" が追加されている
# 実行結果: 1

print("z" in d2, len(d2))  # in ならキーは増えない
# 実行結果: False 1</code></pre>
<h2 class="wp-block-heading" id="i-12">実践例：ログのレベル別件数を集計する</h2>
<p class="wp-block-paragraph">最後に、私が現場でもよく使う「ログの集計」をCounterで書いてみます。f文字列と組み合わせると、見やすいレポートがすぐに作れます。</p>
<pre class="wp-block-code"><code>from collections import Counter

logs = ["ERROR", "INFO", "WARN", "INFO", "ERROR", "INFO"]

for level, n in Counter(logs).most_common():
    print(f"{level}: {n}件")

# 実行結果:
# INFO: 3件
# ERROR: 2件
# WARN: 1件</code></pre>
<p class="wp-block-paragraph">リストを作る段階で条件を絞りたい場合は、<a href="https://nano-toy-lab.com/python/list-comprehension/">リスト内包表記</a> と組み合わせると、さらにスッキリ書けます。</p>
<h2 class="wp-block-heading" id="i-13">Counterとdefaultdictの使い分け</h2>
<ul class="wp-block-list"><li><strong>出現回数を数えたい・ランキングを出したい</strong> → Counter</li><li><strong>キーごとにリストや合計をまとめたい</strong> → defaultdict(list) / defaultdict(int)</li><li><strong>1つの値の個数だけ知りたい</strong> → リストの count() で十分</li></ul>
<h2 class="wp-block-heading" id="i-14">もっと効率的にPythonを学びたい人へ</h2>
<p class="wp-block-paragraph">collectionsのような便利な標準ライブラリは、知っているかどうかでコードの量も品質も大きく変わります。ただ、独学だと「そもそもこういう書き方がある」と気づくのが難しいのも事実です。</p>
<p class="wp-block-paragraph">「未経験からPythonを確実に身につけたい」「分からないところをすぐ質問したい」という方は、マンツーマン指導のスクールを検討してみるのも一つの手です。講師に直接質問できるので、つまずいた箇所をその場で解消でき、転職を見据えたサポートも受けられます。まずは無料カウンセリングで、自分に合うか確かめてみてください。</p>
<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>

<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>

<p class="wp-block-paragraph">スクール選びで迷っている方は、<a href="https://nano-toy-lab.com/python/schools/">おすすめのプログラミングスクール比較記事</a> で選び方のポイントもチェックしてみてください。</p>
<h2 class="wp-block-heading" id="i-15">まとめ</h2>
<ul class="wp-block-list"><li>collectionsはインストール不要の標準ライブラリで、<code>from collections import Counter, defaultdict</code> で使える</li><li>Counterは要素の出現回数を1行で数えられ、存在しないキーは 0 を返す</li><li><code>most_common(n)</code> で出現回数ランキングを簡単に作れる</li><li>Counter同士は足し算・引き算、update()での追加ができる</li><li>defaultdict(int) でカウント、defaultdict(list) でグループ分けが KeyError なしで書ける</li><li>defaultdictは参照しただけでキーが追加されるので、存在チェックは in を使う</li></ul>
<p class="wp-block-paragraph">「数える」「まとめる」処理はデータ分析でも業務システムでも頻繁に登場します。ぜひ手を動かして、Counterとdefaultdictを使いこなしてみてください！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-collections-counter-defaultdict/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】randomモジュールの使い方を初心者向けに徹底解説！randint・choice・shuffleで乱数を使いこなす</title>
		<link>https://nano-toy-lab.com/python/python-random/</link>
					<comments>https://nano-toy-lab.com/python/python-random/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Wed, 23 Sep 2026 14:46:14 +0000</pubDate>
				<category><![CDATA[徹底解説]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-random/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/09/eyecatch-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonのrandomモジュールの使い方を初心者向けに解説。random・randint・randrange・choice・sample・choices・shuffle・seedの違いを実行例つきで紹介し、じゃんけんゲームも作ります。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/09/eyecatch-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">「サイコロのようにランダムな数字を出したい」「リストの中からランダムに1つ選びたい」――Pythonでちょっとしたゲームやツールを作ろうとすると、こんな場面に必ず出会いますよね。</p>

<p class="wp-block-paragraph">そんなときに使うのが、Python標準ライブラリの<strong>randomモジュール</strong>です。インストール不要で、importするだけですぐに乱数を扱えます。</p>

<p class="wp-block-paragraph">この記事では、現役SEの筆者が <code>random()</code>・<code>randint()</code>・<code>choice()</code>・<code>sample()</code>・<code>shuffle()</code> などのよく使う関数を、実行例つきで初心者向けにやさしく解説します。最後にはミニゲームも作ってみましょう。</p>

<h2 class="wp-block-heading" id="i-0">randomモジュールとは？</h2>

<p class="wp-block-paragraph">randomモジュールは、<strong>疑似乱数</strong>（コンピュータが計算で作る「ランダムっぽい」数）を生成するための標準モジュールです。使う前に、ファイルの先頭で次のようにimportします。</p>

<pre class="wp-block-code"><code>import random</code></pre>

<p class="wp-block-paragraph">なお、この記事のコード例の実行結果は<strong>一例</strong>です。乱数なので、実行するたびに結果が変わります。</p>

<h2 class="wp-block-heading" id="i-1">ランダムな数値を作る関数</h2>

<h3 class="wp-block-heading" id="i-2">random()：0以上1未満の小数</h3>

<p class="wp-block-paragraph"><code>random.random()</code> は、0.0以上1.0未満の小数（float）をランダムに返します。</p>

<pre class="wp-block-code"><code>import random

print(random.random())
# 実行結果（例）：0.6394267984578837</code></pre>

<h3 class="wp-block-heading" id="i-3">randint(a, b)：a以上b以下の整数</h3>

<p class="wp-block-paragraph">いちばんよく使うのが <code>randint()</code> です。<strong>a以上b以下</strong>の整数を返します。b自身も含まれる点がポイントです。サイコロなら次のように書けます。</p>

<pre class="wp-block-code"><code>import random

dice = random.randint(1, 6)
print(dice)
# 実行結果（例）：4</code></pre>

<h3 class="wp-block-heading" id="i-4">randrange(start, stop, step)：rangeと同じ感覚で選ぶ</h3>

<p class="wp-block-paragraph"><code>randrange()</code> は <code>range()</code> と同じ指定方法で、その範囲から1つ選びます。こちらは<strong>stopを含まない</strong>ので注意しましょう。rangeの考え方は<a href="https://nano-toy-lab.com/python/python_for_range/">for文・range関数の使い方の記事</a>で詳しく解説しています。</p>

<pre class="wp-block-code"><code>import random

# 0, 2, 4, 6, 8 の中から1つ（偶数だけ）
print(random.randrange(0, 10, 2))
# 実行結果（例）：6</code></pre>

<h3 class="wp-block-heading" id="i-5">uniform(a, b)：範囲を指定した小数</h3>

<pre class="wp-block-code"><code>import random

print(random.uniform(1.0, 5.0))
# 実行結果（例）：3.9662019990393316</code></pre>

<p class="wp-block-paragraph">小数点以下が長すぎる場合は、<code>round(値, 2)</code> で丸めるか、<a href="https://nano-toy-lab.com/python/python-f-string/">f文字列（f-string）</a>で <code>f"{値:.2f}"</code> のように表示桁数を指定すると見やすくなります。</p>

<h2 class="wp-block-heading" id="i-6">リストからランダムに選ぶ・並び替える関数</h2>

<h3 class="wp-block-heading" id="i-7">choice()：1つだけ選ぶ</h3>

<pre class="wp-block-code"><code>import random

fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
print(random.choice(fruits))
# 実行結果（例）：バナナ</code></pre>

<h3 class="wp-block-heading" id="i-8">sample()：重複なしで複数選ぶ</h3>

<p class="wp-block-paragraph"><code>sample(リスト, k)</code> は、<strong>重複なし</strong>でk個を選んで新しいリストを返します。抽選やくじ引きに便利です。</p>

<pre class="wp-block-code"><code>import random

fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
print(random.sample(fruits, 2))
# 実行結果（例）：['バナナ', 'みかん']</code></pre>

<h3 class="wp-block-heading" id="i-9">choices()：重複ありで複数選ぶ・重み付けもできる</h3>

<p class="wp-block-paragraph"><code>choices()</code> は<strong>同じ要素が何度選ばれてもよい</strong>選び方です。<code>weights</code> で「当たりやすさ」を指定できるので、ガチャのような確率付きの抽選も簡単に作れます。</p>

<pre class="wp-block-code"><code>import random

fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
print(random.choices(fruits, k=3))
# 実行結果（例）：['りんご', 'みかん', 'みかん']

# 当たり1：はずれ9 の確率で5回引く
print(random.choices(["当たり", "はずれ"], weights=[1, 9], k=5))
# 実行結果（例）：['はずれ', 'はずれ', '当たり', 'はずれ', 'はずれ']</code></pre>

<h3 class="wp-block-heading" id="i-10">shuffle()：リストそのものを並び替える</h3>

<p class="wp-block-paragraph"><code>shuffle()</code> はリストの順番をランダムに入れ替えます。注意点は、<strong>元のリスト自体を書き換え、戻り値はNone</strong>になることです。<code>sort()</code> と <code>sorted()</code> の関係に似ていますね（<a href="https://nano-toy-lab.com/python/python-sort-sorted/">sortとsortedの違いはこちら</a>）。</p>

<pre class="wp-block-code"><code>import random

nums = [1, 2, 3, 4, 5]
random.shuffle(nums)
print(nums)
# 実行結果（例）：[2, 3, 1, 4, 5]

# よくある間違い
result = random.shuffle(nums)
print(result)
# 実行結果：None

# 元のリストを残したいなら sample で全件を選ぶ
original = [1, 2, 3, 4, 5]
shuffled = random.sample(original, len(original))
print(original)  # [1, 2, 3, 4, 5]
print(shuffled)  # 実行結果（例）：[4, 1, 5, 3, 2]</code></pre>

<p class="wp-block-paragraph">ここまでで、randomモジュールの主要な関数はひと通り使えるようになりました。「こうした基礎を独学で進めるのが不安」「質問できる環境がほしい」と感じたら、<a href="https://nano-toy-lab.com/python/schools/">プログラミングスクールのおすすめ比較記事</a>も参考にしてみてください。無料体験で自分に合う学び方を探すのもひとつの手です。</p>

<h2 class="wp-block-heading" id="i-11">seed()で乱数を再現する</h2>

<p class="wp-block-paragraph">テストやデバッグのときに「毎回同じ乱数が出てほしい」ことがあります。そんなときは <code>random.seed()</code> で<strong>シード値</strong>を固定します。同じシードなら、同じ順番で同じ乱数が出ます。</p>

<pre class="wp-block-code"><code>import random

random.seed(42)
a = [random.randint(1, 100) for _ in range(3)]

random.seed(42)
b = [random.randint(1, 100) for _ in range(3)]

print(a)  # [82, 15, 4]
print(b)  # [82, 15, 4]  ← 同じ結果になる</code></pre>

<p class="wp-block-paragraph">上のコードで使っている <code>[... for _ in range(3)]</code> の書き方は<a href="https://nano-toy-lab.com/python/list-comprehension/">リスト内包表記</a>です。</p>

<h2 class="wp-block-heading" id="i-12">実践：じゃんけんゲームを作ってみよう</h2>

<p class="wp-block-paragraph"><code>choice()</code> を使えば、コンピュータの手をランダムに決めるじゃんけんゲームが数行で作れます。</p>

<pre class="wp-block-code"><code>import random

hands = ["グー", "チョキ", "パー"]
win = {"グー": "チョキ", "チョキ": "パー", "パー": "グー"}

player = input("グー・チョキ・パーのどれを出す？：")
computer = random.choice(hands)
print(f"コンピュータ：{computer}")

if player not in hands:
    print("入力が正しくありません")
elif player == computer:
    print("あいこです")
elif win[player] == computer:
    print("あなたの勝ち！")
else:
    print("あなたの負け…")

# 実行結果（例）
# グー・チョキ・パーのどれを出す？：グー
# コンピュータ：チョキ
# あなたの勝ち！</code></pre>

<p class="wp-block-paragraph">「どの手がどの手に勝つか」を辞書で持たせることで、if文の分岐をすっきり書けています。</p>

<h2 class="wp-block-heading" id="i-13">注意：パスワードなどのセキュリティ用途には使わない</h2>

<p class="wp-block-paragraph">randomモジュールの乱数は予測可能な疑似乱数なので、<strong>パスワードや認証トークンの生成には向きません</strong>。セキュリティ用途では標準ライブラリの <code>secrets</code> モジュールを使いましょう。使い方は<a href="https://nano-toy-lab.com/python/make-password-using-secrets-module/">secretsモジュールでパスワードを作成する記事</a>で紹介しています。</p>

<h2 class="wp-block-heading" id="i-14">もっと効率的にPythonを学びたい人へ</h2>

<p class="wp-block-paragraph">randomモジュールのように、Pythonは「知っていればすぐ書ける」便利な機能がたくさんあります。ただ、独学だと「何から学べばいいか分からない」「エラーで何時間も止まってしまう」ということも多いですよね。</p>

<p class="wp-block-paragraph">未経験からPythonを確実に身につけたい方には、講師に直接質問できる<strong>マンツーマン指導</strong>のスクールがおすすめです。自分のペースで基礎から実践まで学べ、転職を見据えたサポートを受けられるところもあります。まずは無料カウンセリングで、学習の進め方を相談してみてはいかがでしょうか。</p>

<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>


<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>


<h2 class="wp-block-heading" id="i-15">まとめ</h2>

<p class="wp-block-paragraph">今回はPythonのrandomモジュールの使い方を解説しました。ポイントを振り返りましょう。</p>

<ul class="wp-block-list"><li><code>import random</code> だけで使える標準モジュール</li><li><code>random()</code> は0以上1未満の小数、<code>randint(a, b)</code> は<strong>b自身も含む</strong>整数</li><li><code>randrange()</code> はrangeと同じく<strong>stopを含まない</strong></li><li><code>choice()</code> で1つ、<code>sample()</code> で重複なし、<code>choices()</code> で重複あり・重み付きで選べる</li><li><code>shuffle()</code> は元のリストを書き換え、戻り値はNone</li><li><code>seed()</code> で乱数を再現できる</li><li>パスワードなどセキュリティ用途には <code>secrets</code> モジュールを使う</li></ul>

<p class="wp-block-paragraph">乱数を使えると、ゲームやシミュレーションなど作れるものの幅がぐっと広がります。ぜひ手を動かして試してみてください！</p>

]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-random/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】例外処理（try-except）の使い方を初心者向けに徹底解説！エラーで止まらないプログラムを書く</title>
		<link>https://nano-toy-lab.com/python/python-try-except/</link>
					<comments>https://nano-toy-lab.com/python/python-try-except/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Wed, 22 Jul 2026 00:15:14 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-try-except/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-10-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonの例外処理（try-except）を初心者向けに徹底解説。基本構文からelse・finally、複数例外の処理、raiseによる例外発生まで、動くコードと実行結果つきでエラーに強いプログラムの書き方が身につきます。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-10-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">プログラムを書いていると、「実行した瞬間にエラーが出て止まってしまった」という経験は誰にでもあります。特にユーザーの入力やファイルの読み込みを扱うプログラムでは、想定外の値が来るだけで処理が止まってしまいます。そんなときに役立つのが <strong>例外処理（try-except）</strong> です。</p>
<p class="wp-block-paragraph">この記事では、Pythonの例外処理について、基本の <code>try-except</code> 構文から、<code>else</code>・<code>finally</code>、複数例外の処理、<code>raise</code> による例外の発生まで、初心者の方にも分かりやすく解説します。実際に動くコードと実行結果を見ながら、エラーに強いプログラムの書き方を身につけていきましょう。</p>
<h2 class="wp-block-heading" id="i-0">例外処理とは？エラーでプログラムが止まる問題</h2>
<p class="wp-block-paragraph">Pythonでは、プログラムの実行中に問題が起きると「例外（Exception）」が発生します。例外が発生したまま何もしないでいると、プログラムはその場で強制終了してしまいます。</p>
<p class="wp-block-paragraph">例えば、次のように文字列を数値に変換しようとすると <code>ValueError</code> という例外が発生します。</p>
<pre class="wp-block-code"><code># 数字ではない文字列を数値に変換しようとすると…
number = int("abc")
# ここでValueErrorが発生し、プログラムが止まってしまう</code></pre>
<p class="wp-block-paragraph">このとき実際には <code>ValueError: invalid literal for int() with base 10</code> のようなメッセージが表示されます。</p>
<p class="wp-block-paragraph">このように、途中でプログラムが止まってしまうと、その後の処理がすべて実行されなくなります。例外処理を使うと、エラーが起きても<strong>プログラムを止めずに、代わりの処理を実行する</strong>ことができます。</p>
<h2 class="wp-block-heading" id="i-1">try-exceptの基本構文</h2>
<p class="wp-block-paragraph">例外処理の基本は <code>try</code> と <code>except</code> です。<code>try</code> ブロックに「エラーが起きるかもしれない処理」を書き、<code>except</code> ブロックに「エラーが起きたときの処理」を書きます。</p>
<pre class="wp-block-code"><code>try:
    number = int(input("数字を入力してください: "))
    print(number * 2)
except ValueError:
    print("数字ではない値が入力されました")</code></pre>
<p class="wp-block-paragraph">この例では、ユーザーが「5」と入力すれば <code>10</code> が表示されますが、「abc」のように数字でない値を入力しても、プログラムは止まらずに「数字ではない値が入力されました」と表示されます。エラーで落ちる代わりに、丁寧なメッセージを返せるわけです。</p>
<h2 class="wp-block-heading" id="i-2">例外の種類を指定してキャッチする</h2>
<p class="wp-block-paragraph">例外にはたくさんの種類があります。よく出会うものをいくつか挙げてみましょう。</p>
<ul class="wp-block-list"><li><code>ValueError</code>：値が不適切なとき（例：int(“abc”)）</li><li><code>ZeroDivisionError</code>：0で割り算をしたとき</li><li><code>TypeError</code>：型が合わない演算をしたとき</li><li><code>FileNotFoundError</code>：指定したファイルが存在しないとき</li><li><code>KeyError</code>：辞書に存在しないキーを指定したとき</li></ul>
<p class="wp-block-paragraph">例えば、0での割り算は <code>ZeroDivisionError</code> になります。</p>
<pre class="wp-block-code"><code>try:
    result = 10 / 0
except ZeroDivisionError:
    print("0で割ることはできません")
# 出力: 0で割ることはできません</code></pre>
<p class="wp-block-paragraph">なお、<code>int()</code> などの型変換でエラーが起きやすいポイントについては、<a href="https://nano-toy-lab.com/python/python-type-conversion/">Pythonの型変換（キャスト）の使い方を解説した記事</a>もあわせて読むと理解が深まります。どんなときに <code>ValueError</code> が出るのかがイメージしやすくなりますよ。</p>
<p class="wp-block-paragraph">例外処理を意識してコードを書けるようになると、一気に「実務で通用するコード」に近づきます。とはいえ、独学だと「なぜエラーになるのか」「どう直せばいいのか」で手が止まってしまいがちですよね。もし独学で伸び悩みを感じているなら、現役エンジニアに質問できる環境を用意するのも一つの手です。マンツーマンで学べるスクールについては、<a href="https://nano-toy-lab.com/python/techacademy/">TechAcademyの評判を辛口レビューも含めて徹底解説した記事</a>で詳しくまとめているので、独学の次の一歩として参考にしてみてください。</p>
<h2 class="wp-block-heading" id="i-3">elseとfinallyの使い方</h2>
<p class="wp-block-paragraph"><code>try-except</code> には、<code>else</code> と <code>finally</code> を追加できます。<code>else</code> は「例外が起きなかったとき」に実行され、<code>finally</code> は「例外の有無にかかわらず必ず」実行されます。</p>
<pre class="wp-block-code"><code>try:
    f = open("data.txt", "r", encoding="utf-8")
except FileNotFoundError:
    print("ファイルが見つかりません")
else:
    print("ファイルを正常に開けました")
    f.close()
finally:
    print("処理を終了します")</code></pre>
<p class="wp-block-paragraph"><code>finally</code> は、ファイルを閉じたり後片づけをしたりする処理を書くのに便利です。ただし、ファイル操作については <code>with</code> 構文を使うと自動でクローズしてくれるので、より安全でスマートに書けます。詳しくは <a href="https://nano-toy-lab.com/python/python-with-statement/">with構文の使い方を解説した記事</a>を参考にしてください。</p>
<h2 class="wp-block-heading" id="i-4">複数の例外をまとめて処理する</h2>
<p class="wp-block-paragraph">複数の種類の例外を同じように処理したい場合は、<code>except</code> にタプルで例外を並べて指定できます。また <code>as</code> を使うと、エラーメッセージの内容を受け取れます。</p>
<pre class="wp-block-code"><code>try:
    value = int("abc")
except (ValueError, TypeError) as e:
    print(f"エラーが発生しました: {e}")
# 出力: エラーが発生しました: invalid literal for int() with base 10: 'abc'</code></pre>
<p class="wp-block-paragraph"><code>as e</code> で受け取った例外オブジェクトを <code>print</code> すると、具体的なエラー内容が確認できます。デバッグのときにとても役立ちます。</p>
<h2 class="wp-block-heading" id="i-5">raiseで自分から例外を発生させる</h2>
<p class="wp-block-paragraph">自分で意図的に例外を発生させたいときは <code>raise</code> を使います。関数に不正な値が渡されたときに、あえてエラーを出して呼び出し側に知らせる、といった使い方をします。</p>
<pre class="wp-block-code"><code>def set_age(age):
    if age &lt; 0:
        raise ValueError("年齢に負の数は指定できません")
    return age

try:
    set_age(-5)
except ValueError as e:
    print(e)
# 出力: 年齢に負の数は指定できません</code></pre>
<p class="wp-block-paragraph">このように <code>raise</code> を使うと、「想定外の値はここではじく」という防御的なプログラムが書けるようになります。</p>
<h2 class="wp-block-heading" id="i-6">例外処理を使うときの注意点</h2>
<ul class="wp-block-list"><li><code>try</code> ブロックはできるだけ小さく保ち、エラーが起きうる処理だけを囲むようにしましょう。</li><li>例外の種類を指定せず <code>except:</code> だけで書くと、想定外のエラーまで握りつぶしてしまい、バグの発見が遅れます。</li><li>エラーを <code>except</code> で受け取ったのに何もしない（<code>pass</code> だけ）のは避けましょう。最低限ログやメッセージを残すのがおすすめです。</li><li>例外処理は「起こりうるエラーへの備え」です。本来直すべきバグを隠すために使わないよう注意しましょう。</li></ul>
<h2 class="wp-block-heading" id="i-7">もっと効率的にPythonを学びたい人へ</h2>
<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p class="wp-block-paragraph">例外処理のように「実務で本当に必要な書き方」は、独学だけだと後回しになりがちです。未経験からPythonを最短で身につけたい、エラーで詰まったときにすぐ質問できる環境がほしいという方は、マンツーマン指導のスクールを検討してみるのも良い選択です。無料カウンセリングで学習プランや転職サポートの相談だけしてみる、という使い方もできます。</p>

<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>

<h2 class="wp-block-heading" id="i-8">まとめ</h2>
<p class="wp-block-paragraph">今回はPythonの例外処理（try-except）について解説しました。ポイントを振り返っておきましょう。</p>
<ul class="wp-block-list"><li><code>try-except</code> を使うと、エラーが起きてもプログラムを止めずに処理を続けられる</li><li><code>except</code> には <code>ValueError</code> や <code>ZeroDivisionError</code> など、キャッチしたい例外の種類を指定する</li><li><code>else</code> は例外が起きなかったとき、<code>finally</code> は必ず実行される</li><li>複数の例外はタプルでまとめて指定でき、<code>as</code> でエラー内容を受け取れる</li><li><code>raise</code> を使えば、自分から意図的に例外を発生させられる</li><li><code>try</code> ブロックは小さく、例外は種類を指定して受け取るのが安全</li></ul>
<p class="wp-block-paragraph">例外処理を使いこなせるようになると、ユーザーの入力ミスや予期しないデータにも動じない、丈夫なプログラムが書けるようになります。ぜひ実際に手を動かして試してみてください。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-try-except/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】JSONの扱い方を初心者向けに徹底解説！json.dumps・json.loadsでデータを読み書きする</title>
		<link>https://nano-toy-lab.com/python/python-json/</link>
					<comments>https://nano-toy-lab.com/python/python-json/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Mon, 20 Jul 2026 00:13:55 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/?p=7410</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-9-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Python標準のjsonモジュールを使ったJSONの扱い方を初心者向けに解説。json.dumps・loadsでの辞書とJSONの相互変換、ファイルの読み書き、日本語の文字化け対策（ensure_ascii）まで実例つきで紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-9-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">APIからデータを取得したり、設定ファイルを保存したりするとき、必ずと言っていいほど登場するのが「JSON（ジェイソン）」というデータ形式です。「なんとなく見たことはあるけれど、Pythonでどう読み書きすればいいのか分からない」という方も多いのではないでしょうか。</p>
<p class="wp-block-paragraph">この記事では、Python標準の<code>json</code>モジュールを使って、辞書とJSONを相互に変換する方法や、JSONファイルの読み書き、日本語が文字化けしないための設定まで、初心者の方にも分かりやすく徹底解説します。コードはすべて実際に動く内容なので、手を動かしながら読み進めてみてください。</p>
<h2 class="wp-block-heading" id="i-0">JSONとは？Pythonでよく使われる理由</h2>
<p class="wp-block-paragraph">JSON（JavaScript Object Notation）は、データを「キーと値」のペアで表現する軽量なデータ形式です。もともとはJavaScript由来ですが、今では言語を問わずデータのやり取りに使われる共通フォーマットになっています。</p>
<p class="wp-block-paragraph">たとえば、次のような文字列がJSONです。Pythonの<a href="https://nano-toy-lab.com/python/python-dict/">辞書（dict）</a>にそっくりな見た目をしていることに気づくと思います。</p>
<pre class="wp-block-code"><code>{
  "name": "田中",
  "age": 28,
  "skills": ["Python", "SQL"]
}</code></pre>
<p class="wp-block-paragraph">PythonでJSONがよく使われるのは、Webアプリのデータ通信（REST API）、設定ファイル、ログの保存など、実務のあらゆる場面で登場するからです。JSONを扱えるようになると、外部サービスとのデータ連携が一気に身近になります。</p>
<h2 class="wp-block-heading" id="i-1">jsonモジュールの基本（4つの関数を覚えよう）</h2>
<p class="wp-block-paragraph">Pythonでは標準ライブラリの<code>json</code>モジュールを<code>import</code>するだけでJSONを扱えます。追加インストールは不要です。まずは覚えるべき4つの関数を整理しましょう。</p>
<ul class="wp-block-list"><li><code>json.dumps()</code>：Pythonのオブジェクト → JSON<strong>文字列</strong>に変換</li><li><code>json.loads()</code>：JSON<strong>文字列</strong> → Pythonのオブジェクトに変換</li><li><code>json.dump()</code>：Pythonのオブジェクト → JSON<strong>ファイル</strong>に書き込み</li><li><code>json.load()</code>：JSON<strong>ファイル</strong> → Pythonのオブジェクトに読み込み</li></ul>
<p class="wp-block-paragraph">末尾に<strong>s</strong>が付く（dumps / loads）と「文字列（string）」を相手にする、付かない（dump / load）と「ファイル」を相手にする、と覚えると混乱しません。</p>
<h3 class="wp-block-heading" id="i-2">辞書 → JSON文字列（json.dumps）</h3>
<p class="wp-block-paragraph">Pythonの辞書をJSON形式の文字列に変換するには<code>json.dumps()</code>を使います。</p>
<pre class="wp-block-code"><code>import json

# Pythonの辞書
user = {"name": "田中", "age": 28, "skills": ["Python", "SQL"]}

# 辞書 → JSON文字列
json_str = json.dumps(user)
print(json_str)
# {"name": "\u7530\u4e2d", "age": 28, "skills": ["Python", "SQL"]}

print(type(json_str))
# &lt;class 'str'&gt;</code></pre>
<p class="wp-block-paragraph">変換結果は<code>str</code>型（文字列）になります。日本語が<code>\u7530\u4e2d</code>のように表示されていますが、これは後ほど解説する設定で読みやすくできるので安心してください。</p>
<h3 class="wp-block-heading" id="i-3">JSON文字列 → 辞書（json.loads）</h3>
<p class="wp-block-paragraph">逆に、JSON形式の文字列をPythonの辞書に戻すには<code>json.loads()</code>を使います。APIから返ってきた文字列を扱うときの定番です。</p>
<pre class="wp-block-code"><code>import json

json_str = '{"name": "田中", "age": 28, "skills": ["Python", "SQL"]}'

# JSON文字列 → 辞書
data = json.loads(json_str)

print(data["name"])   # 田中
print(data["age"])    # 28
print(type(data))     # &lt;class 'dict'&gt;</code></pre>
<p class="wp-block-paragraph"><code>json.loads()</code>で辞書に戻せば、あとは<a href="https://nano-toy-lab.com/python/python-dict/">辞書の基本操作</a>と同じようにキーを指定して値を取り出せます。数値は数値、リストはリストとして正しく復元される点もポイントです。</p>
<p class="wp-block-paragraph">ここまでで「PythonでJSONを読み書きする感覚」がつかめてきたのではないでしょうか。こうした基礎が身についてくると、次は「APIを叩いて実際のWebサービスとデータをやりとりするアプリをPythonで作りたい」という気持ちが湧いてくるはずです。独学でそこから先に伸び悩んだときは、Pythonを実践的に学べる<a href="https://nano-toy-lab.com/programming-school/techgym/">テックジムのようなプログラミングスクールの評判・料金をまとめた記事</a>も参考にしてみてください。学習の進め方の選択肢が広がります。</p>
<h2 class="wp-block-heading" id="i-4">JSONファイルの読み書き（dump / load）</h2>
<p class="wp-block-paragraph">実務では、JSONを文字列としてではなく「ファイル」として保存・読み込みする場面が多くあります。ここでは<a href="https://nano-toy-lab.com/python/python-with-statement/">with構文</a>と組み合わせて、ファイルを安全に扱う方法を見ていきましょう。</p>
<h3 class="wp-block-heading" id="i-5">ファイルへ書き込む（json.dump）</h3>
<pre class="wp-block-code"><code>import json

data = {"title": "ナノトイラボ", "tags": ["Python", "初心者"]}

# data.json というファイルに書き込む
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# data.json が作成され、整形された状態で保存される</code></pre>
<p class="wp-block-paragraph"><code>with open(...)</code>を使うと、処理が終わったあとファイルを自動で閉じてくれます。ファイル操作の基本なので、まだ不安な方は<a href="https://nano-toy-lab.com/python/python-with-statement/">with構文の解説記事</a>もあわせて確認しておくと安心です。</p>
<h3 class="wp-block-heading" id="i-6">ファイルから読み込む（json.load）</h3>
<pre class="wp-block-code"><code>import json

with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)

print(data["title"])    # ナノトイラボ
print(data["tags"][0])  # Python</code></pre>
<p class="wp-block-paragraph"><code>json.load()</code>で読み込むと、ファイルの中身がそのままPythonの辞書として手に入ります。あとは通常の辞書と同じように扱えます。</p>
<h2 class="wp-block-heading" id="i-7">日本語の文字化けを防ぐ（ensure_ascii=False）</h2>
<p class="wp-block-paragraph">先ほど<code>json.dumps()</code>で日本語が<code>\u7530\u4e2d</code>のように表示されたのを覚えているでしょうか。これは初期設定で日本語がエスケープされるためです。<code>ensure_ascii=False</code>を指定すると、日本語をそのまま出力できます。</p>
<pre class="wp-block-code"><code>import json

user = {"name": "田中", "age": 28}

# そのまま（日本語がエスケープされる）
print(json.dumps(user))
# {"name": "\u7530\u4e2d", "age": 28}

# ensure_ascii=False で日本語をそのまま表示
print(json.dumps(user, ensure_ascii=False))
# {"name": "田中", "age": 28}</code></pre>
<h2 class="wp-block-heading" id="i-8">見やすく整形する（indent）</h2>
<p class="wp-block-paragraph"><code>indent</code>に数値を指定すると、その分だけインデント（字下げ）して見やすく整形できます。設定ファイルなど、人間が読むJSONを出力するときに便利です。</p>
<pre class="wp-block-code"><code>import json

user = {"name": "田中", "age": 28, "skills": ["Python", "SQL"]}

print(json.dumps(user, ensure_ascii=False, indent=2))
# {
#   "name": "田中",
#   "age": 28,
#   "skills": [
#     "Python",
#     "SQL"
#   ]
# }</code></pre>
<h2 class="wp-block-heading" id="i-9">よくあるエラーと対処法</h2>
<p class="wp-block-paragraph">JSONを扱うときによく遭遇するのが<code>JSONDecodeError</code>です。これはJSONの書式が正しくないときに発生します。</p>
<pre class="wp-block-code"><code>import json

# 末尾に余分なカンマがある不正なJSON
broken = '{"name": "田中",}'

data = json.loads(broken)
# json.decoder.JSONDecodeError: Expecting property name
# enclosed in double quotes ...</code></pre>
<p class="wp-block-paragraph">JSONでは、末尾の余分なカンマや、シングルクォートでの囲みは認められていません。文字列は必ずダブルクォートで囲む必要があります。また、数値が文字列になっているといった型の食い違いにも注意しましょう。型の扱いに不安がある方は<a href="https://nano-toy-lab.com/python/python-type-conversion/">型変換（キャスト）の解説記事</a>も参考になります。</p>
<h2 class="wp-block-heading" id="i-10">もっと効率的にPythonを学びたい人へ</h2>
<p class="wp-block-paragraph">JSONの読み書きができるようになると、API連携やデータ処理など「実際に動くもの」を作れる範囲がぐっと広がります。一方で、独学だとエラーの原因が分からず何時間も止まってしまう、体系的な学習の順番が分からない、といった壁にぶつかりがちです。</p>
<p class="wp-block-paragraph">「未経験からPythonを本気で習得したい」「できれば転職やキャリアにつなげたい」という方は、マンツーマン指導で学べるスクールを検討するのも一つの手です。プロ講師に直接質問できる環境は、独学でのつまずきを一気に解消してくれます。まずは無料カウンセリングで、自分に合った学習プランを相談してみてはいかがでしょうか。</p>
<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>

<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>

<h2 class="wp-block-heading" id="i-11">まとめ</h2>
<p class="wp-block-paragraph">今回は、Pythonの<code>json</code>モジュールを使ったJSONの扱い方を解説しました。最後に要点を振り返っておきましょう。</p>
<ul class="wp-block-list"><li>JSONは「キーと値」でデータを表す共通フォーマットで、Pythonの辞書とよく似ている</li><li><code>json.dumps()</code>で辞書→JSON文字列、<code>json.loads()</code>でJSON文字列→辞書に変換できる</li><li>ファイルは<code>json.dump()</code>で書き込み、<code>json.load()</code>で読み込む（with構文と併用が基本）</li><li>日本語の文字化けは<code>ensure_ascii=False</code>、整形は<code>indent</code>で解決できる</li><li>書式ミスがあると<code>JSONDecodeError</code>が出るので、カンマやクォートに注意する</li></ul>
<p class="wp-block-paragraph">JSONはWeb開発やデータ処理の基礎となる大切なスキルです。ぜひ手を動かして、自分のコードに取り入れてみてください。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-json/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】正規表現（reモジュール）の使い方を初心者向けに徹底解説！search・findall・subを完全マスター</title>
		<link>https://nano-toy-lab.com/python/python-regex-re-module/</link>
					<comments>https://nano-toy-lab.com/python/python-regex-re-module/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Fri, 17 Jul 2026 00:10:43 +0000</pubDate>
				<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-regex-re-module/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-8-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonの正規表現（reモジュール）の使い方を初心者向けに解説。re.search・match・findall・subの違いから、グループ化・メタ文字・貪欲マッチの落とし穴まで、動くコードと実行結果つきで徹底解説します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-8-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">「ログの中からエラー行だけを抜き出したい」「入力されたメールアドレスの形式をチェックしたい」「電話番号をまとめてマスキングしたい」——プログラミングを続けていると、こうした<strong>文字列のパターン検索</strong>に必ずぶつかります。</p>
<p class="wp-block-paragraph">ひとつずつ <code>if</code> 文で条件を書いていくと、コードはあっという間に読めないほど長くなってしまいます。そんなときに絶大な威力を発揮するのが<strong>正規表現（regular expression）</strong>と、Python標準の <code>re</code> モジュールです。</p>
<p class="wp-block-paragraph">正規表現は「記号だらけで難しそう」と敬遠されがちですが、実際によく使うのは<strong>ほんの一握りのパターンと4つの関数だけ</strong>です。この記事では、現役SEの視点から、<code>re.search</code>・<code>re.match</code>・<code>re.findall</code>・<code>re.sub</code> の使い方を、実際に動くコードと実行結果を示しながら初心者向けに徹底解説します。読み終えるころには、実務で使うレベルの文字列処理が書けるようになりますよ。</p>

<h2 class="wp-block-heading" id="i-0">正規表現とは？何ができるのか</h2>
<p class="wp-block-paragraph">正規表現とは、<strong>「文字列のパターンを、記号を使って表現するための書き方（ルール）」</strong>のことです。「数字が3つ並んで、ハイフンがあって、また数字が4つ並ぶ」といった<em>あいまいな条件</em>を、たった一行で表現できます。</p>
<p class="wp-block-paragraph">たとえば「電話番号らしき文字列」は、正規表現ではこう書けます。</p>
<pre class="wp-block-code"><code>\d{2,4}-\d{4}-\d{4}</code></pre>
<p class="wp-block-paragraph">これだけで「2〜4桁の数字 – 4桁の数字 – 4桁の数字」という意味になります。<code>if</code> 文で同じことを書こうとしたら何十行にもなるところが、1行で済んでしまうわけです。</p>
<p class="wp-block-paragraph">正規表現が活躍する代表的な場面は次のとおりです。</p>
<ul class="wp-block-list"><li><strong>検索</strong>：大量のログから ERROR 行だけを抜き出す</li><li><strong>検証（バリデーション）</strong>：メールアドレスや郵便番号の形式チェック</li><li><strong>抽出</strong>：文章の中から日付・URL・金額だけを取り出す</li><li><strong>置換</strong>：個人情報をマスキングする、表記ゆれを統一する</li><li><strong>分割</strong>：区切り文字が複数種類ある文字列をきれいに分ける</li></ul>
<p class="wp-block-paragraph">なお、単純な「この文字が含まれるか」「この文字で始まるか」程度の判定であれば、正規表現を持ち出さなくても標準の文字列メソッドで十分です。基本の使い分けについては<a href="https://nano-toy-lab.com/python/python-string-methods/">Pythonの文字列メソッドの使い方を徹底解説した記事</a>もあわせて読んでみてください。<strong>「文字列メソッドで書けるなら、まずはそちらを使う」</strong>のが読みやすいコードの鉄則です。</p>

<h2 class="wp-block-heading" id="i-1">reモジュールの基本｜importとraw文字列</h2>
<p class="wp-block-paragraph">Pythonで正規表現を使うには、標準ライブラリの <code>re</code> モジュールを <code>import</code> するだけです。追加インストールは一切不要なので、Pythonさえ入っていればすぐに試せます。</p>
<pre class="wp-block-code"><code>import re

text = "お問い合わせ先は support@example.com です"

# パターンにマッチする部分を探す
result = re.search(r"[\w.-]+@[\w.-]+", text)
print(result.group())
# 実行結果: support@example.com</code></pre>
<p class="wp-block-paragraph">たった3行で、文章の中からメールアドレスを取り出せました。</p>

<h3 class="wp-block-heading" id="i-2">パターンの前には必ず r を付ける（raw文字列）</h3>
<p class="wp-block-paragraph">先ほどのコードで、パターンが <code>r"..."</code> という形になっていたことに気づきましたか？ この <code>r</code> は<strong>raw文字列（ロー文字列）</strong>を表すもので、正規表現を書くときのお約束です。</p>
<p class="wp-block-paragraph">Pythonの文字列では <code>\n</code> が改行、<code>\t</code> がタブというように、バックスラッシュに特別な意味があります。一方、正規表現でも <code>\d</code>（数字）や <code>\w</code>（英数字）のようにバックスラッシュを多用します。この2つが衝突すると、バックスラッシュを二重に書く羽目になり、とても読みにくくなります。</p>
<pre class="wp-block-code"><code>import re

# raw文字列を使わない書き方（バックスラッシュが増えて読みにくい）
pattern_ng = "\\d{3}-\\d{4}"

# raw文字列を使った書き方（見たままでOK・こちらが推奨）
pattern_ok = r"\d{3}-\d{4}"

print(re.search(pattern_ok, "郵便番号は 100-0001 です").group())
# 実行結果: 100-0001</code></pre>
<p class="wp-block-paragraph"><strong>正規表現のパターンは、何も考えず先頭に <code>r</code> を付ける</strong>と覚えてしまいましょう。これだけでハマりどころを1つ回避できます。</p>
<h2 class="wp-block-heading" id="i-3">まず覚えるべき4つの関数</h2>
<p class="wp-block-paragraph"><code>re</code> モジュールにはたくさんの関数がありますが、実務でよく使うのは次の4つに集約されます。まずはこれだけ押さえれば十分です。</p>
<ul class="wp-block-list"><li><code>re.search()</code>…文字列<strong>全体</strong>からパターンを探す（最初の1件）</li><li><code>re.match()</code>…文字列の<strong>先頭</strong>がパターンと一致するか調べる</li><li><code>re.findall()</code>…マッチする箇所を<strong>すべて</strong>リストで取得する</li><li><code>re.sub()</code>…マッチした部分を<strong>置換</strong>する</li></ul>

<h3 class="wp-block-heading" id="i-4">re.search()｜どこかに含まれるか探す</h3>
<p class="wp-block-paragraph">もっとも出番が多いのが <code>re.search()</code> です。文字列全体を走査して、最初に見つかった箇所を<strong>マッチオブジェクト</strong>として返します。見つからなかった場合は <code>None</code> を返します。</p>
<pre class="wp-block-code"><code>import re

text = "注文番号: A-2026-0717 を確認しました"

m = re.search(r"[A-Z]-\d{4}-\d{4}", text)

if m:
    print("見つかりました:", m.group())   # マッチした文字列
    print("開始位置:", m.start())         # 開始インデックス
    print("終了位置:", m.end())           # 終了インデックス
else:
    print("見つかりませんでした")

# 実行結果:
# 見つかりました: A-2026-0717
# 開始位置: 6
# 終了位置: 17</code></pre>
<p class="wp-block-paragraph">ポイントは<strong>必ず <code>if m:</code> でマッチしたか確認してから <code>.group()</code> を呼ぶ</strong>ことです。マッチしなかったときは <code>None</code> が返るため、いきなり <code>.group()</code> を呼ぶと <code>AttributeError</code> になってしまいます。ここは初心者が最初につまずく定番ポイントです。</p>

<h3 class="wp-block-heading" id="i-5">re.match()｜先頭だけを調べる</h3>
<p class="wp-block-paragraph"><code>re.match()</code> は名前から「一致するか調べる関数」と誤解されやすいのですが、実際は<strong>文字列の先頭からマッチするか</strong>だけを見ます。途中にあってもマッチしません。</p>
<pre class="wp-block-code"><code>import re

text = "Python3 is fun"

print(re.match(r"Python", text))   # 先頭にあるのでマッチする
print(re.match(r"is", text))       # 先頭ではないのでマッチしない
print(re.search(r"is", text))      # searchなら途中でも見つかる

# 実行結果:
# &lt;re.Match object; span=(0, 6), match='Python'&gt;
# None
# &lt;re.Match object; span=(8, 10), match='is'&gt;</code></pre>
<p class="wp-block-paragraph">迷ったら <code>re.search()</code> を使えば間違いありません。<code>re.match()</code> は「入力値が指定した形式で始まっているか」を検証したいときに使う、と覚えておきましょう。</p>

<h3 class="wp-block-heading" id="i-6">re.findall()｜該当する箇所をすべて集める</h3>
<p class="wp-block-paragraph">マッチする箇所を<strong>まとめてリストで欲しい</strong>ときは <code>re.findall()</code> です。戻り値がそのままリストなので、そのまま <code>for</code> 文で回せて便利です。</p>
<pre class="wp-block-code"><code>import re

text = "本社は 03-1234-5678、大阪支社は 06-2222-3333、携帯は 090-8765-4321 です"

numbers = re.findall(r"\d{2,4}-\d{4}-\d{4}", text)
print(numbers)
# 実行結果: ['03-1234-5678', '06-2222-3333', '090-8765-4321']

for i, num in enumerate(numbers, 1):
    print(f"{i}件目: {num}")

# 実行結果:
# 1件目: 03-1234-5678
# 2件目: 06-2222-3333
# 3件目: 090-8765-4321</code></pre>
<p class="wp-block-paragraph">マッチが1件もなければ、空のリスト <code>[]</code> が返ります。<code>None</code> ではないので、<code>if numbers:</code> でそのまま判定できるのが <code>findall()</code> の気楽なところです。</p>

<h3 class="wp-block-heading" id="i-7">re.sub()｜パターンにマッチした部分を置換する</h3>
<p class="wp-block-paragraph">個人情報のマスキングや表記ゆれの統一で大活躍するのが <code>re.sub()</code> です。<code>str.replace()</code> は決まった文字列しか置換できませんが、<code>re.sub()</code> なら<strong>パターンで置換</strong>できます。</p>
<pre class="wp-block-code"><code>import re

text = "連絡先: 090-1234-5678 / 080-9999-0000"

# 電話番号をまとめてマスキングする
masked = re.sub(r"\d{3}-\d{4}-\d{4}", "***-****-****", text)
print(masked)
# 実行結果: 連絡先: ***-****-**** / ***-****-****

# 連続する空白を1つにまとめる（テキスト整形の定番）
messy = "Python    は  とても     便利です"
clean = re.sub(r"\s+", " ", messy)
print(clean)
# 実行結果: Python は とても 便利です</code></pre>
<p class="wp-block-paragraph">2つ目の「連続する空白を1つにまとめる」は、スクレイピングやCSV処理で拾ってきた汚いテキストを整形するときに本当によく使うテクニックです。ぜひ覚えておいてください。</p>

<h3 class="wp-block-heading" id="i-8">re.split()｜複数の区切り文字で分割する</h3>
<p class="wp-block-paragraph">おまけとして <code>re.split()</code> も紹介します。区切り文字が1種類だけなら標準の <code>split()</code> で十分ですが、<strong>「カンマでも、セミコロンでも、空白でも区切りたい」</strong>という場合は正規表現の出番です。</p>
<pre class="wp-block-code"><code>import re

text = "りんご, みかん;ぶどう  バナナ"

fruits = re.split(r"[,;\s]+", text)
print(fruits)
# 実行結果: ['りんご', 'みかん', 'ぶどう', 'バナナ']</code></pre>
<p class="wp-block-paragraph">区切り文字が1種類の場合の基本的な分割・結合については、<a href="https://nano-toy-lab.com/python/split-join/">Pythonで文字列を分割・結合する方法（split・join）の解説記事</a>で詳しく扱っています。取り出した後の一部分だけを切り出したいときは<a href="https://nano-toy-lab.com/python/python-slice/">スライスの使い方を解説した記事</a>も参考になりますよ。</p>

<p class="wp-block-paragraph">ここまでで基本の4関数はマスターできました。ただ、正規表現は「読んで分かる」と「自分で書ける」の間に、それなりの壁があるのも事実です。独学で手が止まってしまう、質問できる相手がいなくて時間だけが過ぎていく——そんな状態が続くようなら、学習環境そのものを見直すのも立派な選択肢です。<a href="https://nano-toy-lab.com/python/schools/">プログラミングスクール5選を比較した記事</a>では、無料体験のあるスクールを実際に体験したうえで比較しているので、独学と併用する判断材料としてのぞいてみてください。</p>
<h2 class="wp-block-heading" id="i-9">グループ化｜必要な部分だけを取り出す</h2>
<p class="wp-block-paragraph">正規表現の真価は<strong>グループ化</strong>で発揮されます。パターンの一部を <code>()</code> で囲むと、その部分だけを個別に取り出せるようになります。ログ解析ではこれが必須テクニックです。</p>
<pre class="wp-block-code"><code>import re

log = "2026-07-17 09:00:00 ERROR ディスク容量が不足しています"

m = re.search(r"(\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2}) (\w+)", log)

print(m.group(0))   # パターン全体
print(m.group(1))   # 1つ目の()
print(m.group(5))   # 5つ目の()
print(m.groups())   # すべてのグループをタプルで取得

# 実行結果:
# 2026-07-17 09:00:00 ERROR
# 2026
# ERROR
# ('2026', '07', '17', '09:00:00', 'ERROR')</code></pre>
<p class="wp-block-paragraph"><code>group(0)</code> がマッチ全体、<code>group(1)</code> 以降が左のカッコから順番に対応します。0始まりではなく<strong>1始まり</strong>である点に注意してください。</p>

<h3 class="wp-block-heading" id="i-10">名前付きグループでコードを読みやすくする</h3>
<p class="wp-block-paragraph"><code>group(3)</code> のような番号指定は、パターンを修正した瞬間に番号がずれてバグの温床になります。実務では <code>(?P&lt;名前&gt;...)</code> という<strong>名前付きグループ</strong>を使うのがおすすめです。</p>
<pre class="wp-block-code"><code>import re

log = "2026-07-17 09:00:00 ERROR ディスク容量が不足しています"

pattern = r"(?P&lt;date&gt;\d{4}-\d{2}-\d{2}) (?P&lt;time&gt;\d{2}:\d{2}:\d{2}) (?P&lt;level&gt;\w+) (?P&lt;message&gt;.+)"
m = re.search(pattern, log)

print(m.group("date"))
print(m.group("level"))
print(m.group("message"))
print(m.groupdict())

# 実行結果:
# 2026-07-17
# ERROR
# ディスク容量が不足しています
# {'date': '2026-07-17', 'time': '09:00:00', 'level': 'ERROR', 'message': 'ディスク容量が不足しています'}</code></pre>
<p class="wp-block-paragraph"><code>groupdict()</code> を使えば、結果をそのまま辞書として受け取れます。辞書の扱い方に不安がある方は、<a href="https://nano-toy-lab.com/python/python-dict/">辞書(dict)の使い方を徹底解説した記事</a>もあわせてどうぞ。数か月後の自分がコードを読み返したときに感謝するのは、間違いなく名前付きグループのほうです。</p>

<h2 class="wp-block-heading" id="i-11">最低限おさえたいメタ文字チートシート</h2>
<p class="wp-block-paragraph">正規表現の記号（メタ文字）は膨大にありますが、実務で使うのは以下でほぼ足ります。丸暗記せず、必要になったら見返す程度で十分です。</p>
<ul class="wp-block-list"><li><code>.</code>…任意の1文字（改行以外）</li><li><code>\d</code>…数字1文字（<code>[0-9]</code> と同じ）</li><li><code>\w</code>…英数字とアンダースコア1文字</li><li><code>\s</code>…空白文字（スペース・タブ・改行）</li><li><code>[abc]</code>…a か b か c のいずれか1文字</li><li><code>[^abc]</code>…a・b・c<strong>以外</strong>の1文字</li><li><code>[a-z]</code>…a〜zの範囲の1文字</li><li><code>*</code>…直前のパターンの0回以上の繰り返し</li><li><code>+</code>…直前のパターンの1回以上の繰り返し</li><li><code>?</code>…直前のパターンが0回か1回（＝省略可能）</li><li><code>{3}</code>…ちょうど3回、<code>{2,4}</code>…2〜4回の繰り返し</li><li><code>^</code>…文字列の先頭、<code>$</code>…文字列の末尾</li><li><code>|</code>…OR条件（<code>猫|犬</code> なら「猫」か「犬」）</li><li><code>()</code>…グループ化</li></ul>
<p class="wp-block-paragraph">なお <code>\d</code> を大文字にした <code>\D</code> は「数字<strong>以外</strong>」というように、<strong>大文字にすると意味が反転</strong>します（<code>\W</code>・<code>\S</code> も同様）。この法則を知っておくと覚える量が半分になりますよ。</p>

<h2 class="wp-block-heading" id="i-12">re.compile()｜同じパターンを何度も使うとき</h2>
<p class="wp-block-paragraph">同じパターンをループ内で何度も使う場合は、<code>re.compile()</code> であらかじめパターンをコンパイル（コンパイル済みオブジェクト化）しておくと、コードが読みやすくなり、実行速度の面でも有利です。</p>
<pre class="wp-block-code"><code>import re

# メールアドレスの形式チェック用パターンを1回だけ用意する
pattern = re.compile(r"^[\w.+-]+@[\w-]+\.[\w.-]+$")

emails = ["taro@example.com", "hanako@@example", "jiro@sub.example.co.jp"]

for e in emails:
    if pattern.match(e):
        print(f"{e} は有効な形式です")
    else:
        print(f"{e} は無効な形式です")

# 実行結果:
# taro@example.com は有効な形式です
# hanako@@example は無効な形式です
# jiro@sub.example.co.jp は有効な形式です</code></pre>
<p class="wp-block-paragraph">コンパイル済みオブジェクトからは、<code>pattern.search()</code>・<code>pattern.findall()</code>・<code>pattern.sub()</code> のように、これまで紹介した関数を同じ名前で呼び出せます。第1引数のパターンを渡さなくてよくなる、と理解しておけばOKです。</p>

<h3 class="wp-block-heading" id="i-13">フラグで挙動を変える</h3>
<p class="wp-block-paragraph">各関数の引数にフラグを渡すと、マッチのルールを変更できます。もっとも使うのは大文字小文字を区別しない <code>re.IGNORECASE</code> です。</p>
<pre class="wp-block-code"><code>import re

text = "Python python PYTHON"

print(re.findall(r"python", text))
# 実行結果: ['python']

print(re.findall(r"python", text, re.IGNORECASE))
# 実行結果: ['Python', 'python', 'PYTHON']</code></pre>
<p class="wp-block-paragraph">ほかにも <code>re.MULTILINE</code>（<code>^</code> と <code>$</code> を行単位で判定する）、<code>re.DOTALL</code>（<code>.</code> が改行にもマッチする）などがあります。複数行のログを1行ずつ判定したいときは <code>re.MULTILINE</code> が便利です。</p>
<h2 class="wp-block-heading" id="i-14">初心者がハマりやすい注意点3つ</h2>

<h3 class="wp-block-heading" id="i-15">1. 「欲張りマッチ」で余計な部分まで取れてしまう</h3>
<p class="wp-block-paragraph"><code>*</code> や <code>+</code> は、デフォルトで<strong>できるだけ長くマッチしようとする</strong>性質（貪欲マッチ）を持っています。これが意図しない結果を生む最大の原因です。</p>
<pre class="wp-block-code"><code>import re

html = "&lt;b&gt;太字&lt;/b&gt;と&lt;i&gt;斜体&lt;/i&gt;"

# 貪欲マッチ：最初の&lt;から最後の&gt;まで丸ごと取れてしまう
print(re.findall(r"&lt;.+&gt;", html))
# 実行結果: ['&lt;b&gt;太字&lt;/b&gt;と&lt;i&gt;斜体&lt;/i&gt;']

# 非貪欲マッチ：?を付けると最短でマッチする
print(re.findall(r"&lt;.+?&gt;", html))
# 実行結果: ['&lt;b&gt;', '&lt;/b&gt;', '&lt;i&gt;', '&lt;/i&gt;']</code></pre>
<p class="wp-block-paragraph">「なぜか想定より長く取れてしまう」と感じたら、<code>+?</code> や <code>*?</code> のように<strong><code>?</code> を付けて最短マッチにする</strong>——これを覚えておくだけで解決することがほとんどです。</p>

<h3 class="wp-block-heading" id="i-16">2. マッチしなかったときのNoneを忘れる</h3>
<p class="wp-block-paragraph">繰り返しになりますが、これが一番多いエラーです。<code>re.search()</code> と <code>re.match()</code> は、マッチしなければ <code>None</code> を返します。</p>
<pre class="wp-block-code"><code>import re

text = "数字が含まれていない文章です"

# NG例：マッチしないとAttributeErrorで落ちる
# print(re.search(r"\d+", text).group())
# AttributeError: 'NoneType' object has no attribute 'group'

# OK例：必ずNoneチェックをしてから使う
m = re.search(r"\d+", text)
if m:
    print("見つかった数字:", m.group())
else:
    print("数字は含まれていませんでした")

# 実行結果: 数字は含まれていませんでした</code></pre>
<p class="wp-block-paragraph">「マッチしないこともある」という前提でコードを書くクセをつけましょう。実務のデータは、こちらの想定どおりの形では絶対に届きません。</p>

<h3 class="wp-block-heading" id="i-17">3. なんでもかんでも正規表現で解こうとする</h3>
<p class="wp-block-paragraph">正規表現は強力ですが、複雑になるほど<strong>誰も読めない呪文</strong>と化します。半年後の自分が解読できないコードは、それだけで技術的負債です。</p>
<pre class="wp-block-code"><code>import re

text = "Pythonは楽しい"

# 冗長：正規表現を使うまでもない
print(bool(re.search(r"Python", text)))   # True

# シンプル：こちらのほうが速いし読みやすい
print("Python" in text)                   # True
print(text.startswith("Python"))          # True</code></pre>
<p class="wp-block-paragraph"><strong>「文字列メソッドで書けるなら文字列メソッド、無理なら正規表現」</strong>。この判断ができるようになれば、正規表現とは良い付き合いができます。また、複雑なパターンを書いたときは、必ず <code># 郵便番号(3桁-4桁)にマッチ</code> のようなコメントを1行添えておきましょう。将来の自分とチームメンバーへの、何よりの贈り物になります。</p>

<h2 class="wp-block-heading" id="i-18">正規表現を「使いこなす」段階へ進みたい人へ</h2>
<p class="wp-block-paragraph">正規表現は、記事を読んで理解した気になっても、いざ実務のデータを前にすると手が止まりがちな分野です。パターンの書き方そのものより、<strong>「この処理は正規表現で書くべきか」という設計判断</strong>のほうが難しく、ここは経験者にレビューしてもらうのが一番の近道でもあります。</p>
<p class="wp-block-paragraph">独学で行き詰まりを感じているなら、マンツーマンで質問できる環境を検討してみるのも手です。Winスクールの「Python Winner」は、未経験からのPython習得を前提としたマンツーマンレッスンで、転職サポートまで用意されています。無料カウンセリングだけでも受けてみると、自分に足りないものがはっきりしますよ。</p>
<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>

<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>


<h2 class="wp-block-heading" id="i-19">まとめ</h2>
<p class="wp-block-paragraph">今回は、Pythonの正規表現（<code>re</code> モジュール）の使い方を初心者向けに解説しました。要点を整理しておきます。</p>
<ul class="wp-block-list"><li>正規表現は「文字列のパターン」を記号で表現する書き方で、Pythonでは標準の <code>re</code> モジュールを <code>import</code> するだけで使える</li><li>パターンの先頭には必ず <code>r</code> を付けて<strong>raw文字列</strong>にする</li><li><code>re.search()</code> は文字列全体から探す。迷ったらこれを使う</li><li><code>re.match()</code> は<strong>先頭のみ</strong>を判定する。形式チェック向き</li><li><code>re.findall()</code> はマッチした箇所を<strong>すべてリスト</strong>で返す</li><li><code>re.sub()</code> はパターンで<strong>置換</strong>できる。マスキングや整形の定番</li><li><code>()</code> でグループ化すれば必要な部分だけ取り出せる。実務では <code>(?P&lt;名前&gt;...)</code> の<strong>名前付きグループ</strong>が読みやすくおすすめ</li><li><code>re.search()</code>・<code>re.match()</code> はマッチしないと <code>None</code> を返すので、<strong>必ずNoneチェック</strong>してから <code>.group()</code> を呼ぶ</li><li><code>+</code> や <code>*</code> は貪欲マッチ。長く取れすぎるときは <code>+?</code> で最短マッチにする</li><li>文字列メソッドで書けるなら、まずはそちらを使う</li></ul>
<p class="wp-block-paragraph">正規表現は、一度書けるようになるとログ解析・データ整形・入力チェックなど、あらゆる場面で一生使える武器になります。まずは <code>re.search()</code> と <code>re.findall()</code> の2つを、手元のコードで試すところから始めてみてください。実際に手を動かして「取れた！」という感覚をつかむのが、一番の近道です。</p>
<p class="wp-block-paragraph">最後までお読みいただき、ありがとうございました。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-regex-re-module/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】break文とcontinue文の使い方を初心者向けに徹底解説！ループ処理を自在に制御する</title>
		<link>https://nano-toy-lab.com/python/python-break-continue/</link>
					<comments>https://nano-toy-lab.com/python/python-break-continue/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Mon, 13 Jul 2026 00:08:40 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-break-continue/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-7-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonのbreak文とcontinue文の使い方を初心者向けに解説。ループを途中で抜けるbreak、処理をスキップするcontinueの違いを、for文・while文の具体的なコードとあわせて丁寧に紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-7-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">Pythonでfor文やwhile文を書いていると、「ある条件になったらループを止めたい」「特定のときだけ処理を飛ばしたい」と思うことはありませんか？そんなときに活躍するのが<strong>break文</strong>と<strong>continue文</strong>です。</p><p class="wp-block-paragraph">この2つを使いこなせるようになると、ループ処理を自分の思いどおりにコントロールできるようになり、コードがぐっと読みやすく効率的になります。この記事では、break文とcontinue文の違いから実践的な使い方まで、初心者の方にも分かるように具体的なコードとあわせて丁寧に解説していきます。</p><h2 class="wp-block-heading" id="i-0">break文とcontinue文とは？</h2><p class="wp-block-paragraph">break文とcontinue文は、どちらもfor文やwhile文などの<strong>ループ処理の流れを制御する</strong>ための命令です。名前は似ていますが、動きはまったく異なります。まずはそれぞれの役割をざっくりイメージでつかんでおきましょう。</p><ul class="wp-block-list"><li><strong>break文</strong>：ループそのものを途中で完全に抜ける（それ以降は繰り返さない）</li><li><strong>continue文</strong>：その回の処理だけをスキップして、次の繰り返しに進む</li></ul><p class="wp-block-paragraph">「break＝ループを終わらせる」「continue＝今回だけ飛ばす」と覚えておくと混乱しにくいです。ループの基本であるfor文やwhile文がまだあいまいな方は、先に<a href="https://nano-toy-lab.com/python/while/">while文の基礎を解説した記事</a>や<a href="https://nano-toy-lab.com/python/python_for_range/">for文・range関数の使い方をまとめた記事</a>に目を通しておくと、この記事の内容がよりスムーズに理解できます。</p><h2 class="wp-block-heading" id="i-1">break文の使い方：ループを途中で抜ける</h2><p class="wp-block-paragraph">break文は、条件を満たしたときにループを終了させたい場面で使います。たとえば1から順番に数えていって、5になったらそこでやめる、という処理は次のように書けます。</p><pre class="wp-block-code"><code>for i in range(1, 11):
    if i == 5:
        break
    print(i)

# 実行結果
# 1
# 2
# 3
# 4</code></pre><p class="wp-block-paragraph">iが5になった瞬間にbreakが実行され、print(i)にたどり着く前にループ全体が終了します。そのため画面には1から4までしか表示されません。「目的のものが見つかったら、それ以上探す必要はない」といったケースでとても便利です。</p><h2 class="wp-block-heading" id="i-2">continue文の使い方：処理をスキップして次へ</h2><p class="wp-block-paragraph">continue文は、条件を満たしたときにその回の処理だけを飛ばして、ループ自体は続けたい場面で使います。次のコードは、1から10までのうち偶数を飛ばして奇数だけを表示する例です。</p><pre class="wp-block-code"><code>for i in range(1, 11):
    if i % 2 == 0:
        continue
    print(i)

# 実行結果
# 1
# 3
# 5
# 7
# 9</code></pre><p class="wp-block-paragraph">iが偶数（2で割った余りが0）のときはcontinueが実行され、print(i)を飛ばして次のループに進みます。breakと違ってループは最後まで続く点が大きな違いです。「特定のデータだけ除外して処理したい」ときの定番テクニックです。</p><h2 class="wp-block-heading" id="i-3">実践例：リストの中から目的のデータを探す</h2><p class="wp-block-paragraph">break文がよく使われるのが、リストの中から特定の要素を探すケースです。見つかった時点でループを抜ければ、無駄な繰り返しを省けます。ここではfor文とセットで使える<strong>for-else構文</strong>もあわせて紹介します。</p><pre class="wp-block-code"><code>fruits = ["りんご", "ばなな", "みかん", "ぶどう"]
target = "みかん"

for fruit in fruits:
    if fruit == target:
        print(target + "が見つかりました！")
        break
else:
    print(target + "は見つかりませんでした")

# 実行結果
# みかんが見つかりました！</code></pre><p class="wp-block-paragraph">for文のelseは、<strong>ループがbreakされずに最後まで回りきったときだけ</strong>実行される少し特殊な仕組みです。今回は「みかん」が見つかってbreakされたので、elseのメッセージは表示されません。リストを扱う処理に慣れてきたら、<a href="https://nano-toy-lab.com/python/how-to-find-the-total-with-a-for-statement/">for文で合計を求める方法の記事</a>もあわせて読むと、ループの応用力がさらに高まります。</p><h2 class="wp-block-heading" id="i-4">while文でのbreak：無限ループを安全に止める</h2><p class="wp-block-paragraph">break文はwhile文と組み合わせるとさらに真価を発揮します。「while True」と書くと本来は永遠に終わらない無限ループになりますが、breakを使えば好きなタイミングで抜け出せます。</p><pre class="wp-block-code"><code>count = 0
while True:
    count += 1
    if count &gt; 3:
        break
    print("処理" + str(count) + "回目")

# 実行結果
# 処理1回目
# 処理2回目
# 処理3回目</code></pre><p class="wp-block-paragraph">countが3を超えた時点でbreakが実行され、ループが終了します。ユーザーの入力を受け付け続けて「終了」と入力されたら止める、といった処理でよく使われるパターンです。</p><h2 class="wp-block-heading" id="i-5">breakとcontinueを組み合わせる</h2><p class="wp-block-paragraph">2つを同時に使うこともできます。次のコードは「偶数はスキップし（continue）、15を超えたら終了する（break）」という条件で奇数を表示する例です。</p><pre class="wp-block-code"><code>for num in range(1, 21):
    if num % 2 == 0:
        continue
    if num &gt; 15:
        break
    print(num)

# 実行結果
# 1
# 3
# 5
# 7
# 9
# 11
# 13
# 15</code></pre><p class="wp-block-paragraph">偶数のときはcontinueで飛ばし、奇数でも15を超えたらbreakで終了しています。このように条件を組み合わせることで、複雑なループ制御もシンプルに書けるようになります。</p><h2 class="wp-block-heading" id="i-6">よくある間違いと注意点</h2><ul class="wp-block-list"><li><strong>break・continueはループの中でしか使えない</strong>：for文やwhile文の外で使うとエラーになります。</li><li><strong>ネストしたループでは内側のループにだけ効く</strong>：二重ループの内側でbreakしても、外側のループは止まりません。</li><li><strong>continueの多用は読みにくさにつながることも</strong>：条件が複雑になりすぎたら、if文で書き換えられないか検討してみましょう。</li></ul><p class="wp-block-paragraph">とくにネスト（入れ子）したループでの挙動は初心者がつまずきやすいポイントです。「どのループを抜けているのか」を常に意識すると、バグを防ぎやすくなります。</p><h2 class="wp-block-heading" id="i-7">もっと効率的にPythonを学びたい人へ</h2><p class="wp-block-paragraph">break文やcontinue文のようなループ制御は、独学でも理解できますが、「実際のプログラムでどう組み合わせるのか」までを身につけようとすると、独学ではなかなか手応えをつかみにくいものです。分からないところをその場で質問できる環境があると、学習スピードは大きく変わります。</p><p class="wp-block-paragraph">もし本気でPythonを習得して仕事につなげたいなら、<strong>マンツーマン指導で未経験からPythonを学べるプログラミングスクール</strong>を検討してみるのもおすすめです。プロの講師に質問しながら進められるうえ、転職サポートが用意されているスクールも多く、まずは無料カウンセリングで学習プランを相談してみると自分に合うかどうかが見えてきます。</p><p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>
<h2 class="wp-block-heading" id="i-8">まとめ</h2><p class="wp-block-paragraph">今回はPythonのbreak文とcontinue文について解説しました。最後に要点を振り返っておきましょう。</p><ul class="wp-block-list"><li><strong>break文</strong>はループを途中で完全に抜けるための命令</li><li><strong>continue文</strong>はその回の処理だけを飛ばして次の繰り返しに進む命令</li><li>リストからの検索や「while True」の無限ループ制御でbreakが活躍する</li><li>特定のデータを除外したいときはcontinueが便利</li><li>break・continueはループの中でのみ使え、ネストでは内側のループにだけ効く</li></ul><p class="wp-block-paragraph">break文とcontinue文を使いこなせるようになると、ループ処理の表現力が一気に広がります。まずは今回のコードを実際に書き換えて動かしてみて、それぞれの動きの違いを体で覚えていきましょう。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-break-continue/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】スライスの使い方を初心者向けに徹底解説！リスト・文字列の一部を自在に取り出す</title>
		<link>https://nano-toy-lab.com/python/python-slice/</link>
					<comments>https://nano-toy-lab.com/python/python-slice/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Fri, 10 Jul 2026 00:09:12 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-slice/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-6-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonのスライス（slice）の使い方を初心者向けに徹底解説。[start:stop:step]の基本ルールから、省略・ステップ・マイナス指定・逆順・文字列やタプルでの使い方、リストの書き換えまで例文つきで紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-6-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">「リストの最初の3つだけ取り出したい」「文字列の後ろ2文字だけ欲しい」——Pythonを勉強していると、こんな場面によく出会いますよね。そんなときに大活躍するのが<strong>スライス（slice）</strong>です。</p><p class="wp-block-paragraph">スライスを覚えると、for文でわざわざ数えながら取り出さなくても、たった1行でリストや文字列の一部をスッと取り出せるようになります。最初は「コロンの数字の意味がよく分からない…」とつまずきやすいところですが、ルールはとてもシンプルです。</p><p class="wp-block-paragraph">この記事では、Pythonのスライスの基本の書き方から、ステップ指定・マイナス指定・逆順といった応用テクニックまで、初心者の方にも分かりやすく徹底解説します。この記事を読み終わるころには、スライスを自在に使いこなせるようになっているはずです。</p><h2 class="wp-block-heading" id="i-0">スライスとは？基本の書き方</h2><p class="wp-block-paragraph">スライスとは、リストや文字列などの<strong>連続したデータの一部を切り出す</strong>ための機能です。基本の書き方は次のとおりで、角括弧の中にコロン（:）で区切った数字を書きます。</p><pre class="wp-block-code"><code>シーケンス[start:stop]</code></pre><p class="wp-block-paragraph"><code>start</code>が取り出しを開始する位置、<code>stop</code>が終了する位置です。ここで大切なルールは、<strong>startは含み、stopは含まない</strong>という点です。実際にリストで試してみましょう。</p><pre class="wp-block-code"><code>numbers = [10, 20, 30, 40, 50]

print(numbers[1:4])
# 結果: [20, 30, 40]</code></pre><p class="wp-block-paragraph">インデックス（番号）は0から始まることを思い出してください。<code>numbers[1:4]</code>は「インデックス1から、インデックス4の手前まで」という意味なので、20・30・40の3つが取り出されます。インデックス4の50は含まれない点に注意しましょう。</p><p class="wp-block-paragraph">なお、スライスで取り出したデータは<strong>元のリストとは別の新しいリスト</strong>になります。リスト操作の基本については<a href="https://nano-toy-lab.com/python/how-to-add-an-element-to-a-list-in-python-append-extend-insert-slice/">Pythonでリストに要素を追加する方法</a>の記事もあわせて読むと理解が深まります。</p><h2 class="wp-block-heading" id="i-1">startとstopは省略できる</h2><p class="wp-block-paragraph">スライスでは、startやstopを省略することができます。省略した場合は「先頭から」「末尾まで」という意味になります。</p><pre class="wp-block-code"><code>numbers = [10, 20, 30, 40, 50]

print(numbers[:3])   # 先頭から3つ -&gt; [10, 20, 30]
print(numbers[2:])   # インデックス2から末尾まで -&gt; [30, 40, 50]
print(numbers[:])    # 全部（コピー） -&gt; [10, 20, 30, 40, 50]</code></pre><p class="wp-block-paragraph"><code>numbers[:]</code>のように両方省略すると、リスト全体をコピーできます。これは元のリストを壊さずに扱いたいときに便利なテクニックです。</p><h2 class="wp-block-heading" id="i-2">ステップ（step）で飛ばしながら取り出す</h2><p class="wp-block-paragraph">スライスには3つ目の数字として<strong>ステップ（step）</strong>を指定できます。書き方は次のとおりです。</p><pre class="wp-block-code"><code>シーケンス[start:stop:step]</code></pre><p class="wp-block-paragraph">stepは「何個おきに取り出すか」を表します。たとえば2を指定すると、1つ飛ばしで取り出せます。</p><pre class="wp-block-code"><code>numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numbers[::2])    # 偶数番目 -&gt; [0, 2, 4, 6, 8]
print(numbers[1::2])   # 奇数番目 -&gt; [1, 3, 5, 7, 9]</code></pre><p class="wp-block-paragraph"><code>numbers[::2]</code>は「先頭から末尾まで2個おき」という意味になり、偶数番目の要素だけを取り出せます。</p><h2 class="wp-block-heading" id="i-3">マイナスのインデックスで後ろから取り出す</h2><p class="wp-block-paragraph">Pythonでは、インデックスにマイナスの数字を使うと<strong>後ろから数えた位置</strong>を指定できます。一番後ろが-1、その手前が-2です。スライスでもこのマイナス指定が使えます。</p><pre class="wp-block-code"><code>word = ['P', 'y', 't', 'h', 'o', 'n']

print(word[-2:])    # 後ろ2つ -&gt; ['o', 'n']
print(word[:-2])    # 後ろ2つを除く -&gt; ['P', 'y', 't', 'h']</code></pre><p class="wp-block-paragraph">「末尾のいくつかだけ欲しい」「末尾のいくつかを取り除きたい」といった処理が、マイナス指定を使うととてもスッキリ書けます。</p><h3 class="wp-block-heading" id="i-4">stepにマイナスを指定すると逆順になる</h3><p class="wp-block-paragraph">stepにマイナスの値を指定すると、<strong>後ろから前に向かって</strong>取り出すことになり、結果として並びが逆順になります。<code>[::-1]</code>はリストや文字列を反転させる定番のテクニックです。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5]

print(numbers[::-1])
# 結果: [5, 4, 3, 2, 1]</code></pre><h2 class="wp-block-heading" id="i-5">文字列でもスライスは使える</h2><p class="wp-block-paragraph">スライスはリストだけでなく<strong>文字列</strong>でも同じように使えます。文字列を1文字ずつのシーケンスとして扱えるので、一部分を取り出すのが簡単です。</p><pre class="wp-block-code"><code>text = 'Python'

print(text[0:3])   # 先頭3文字 -&gt; Pyt
print(text[-2:])   # 後ろ2文字 -&gt; on
print(text[::-1])  # 逆順 -&gt; nohtyP</code></pre><p class="wp-block-paragraph">文字列の切り出しや加工では、スライスと<a href="https://nano-toy-lab.com/python/python-string-methods/">文字列メソッド</a>を組み合わせると、より柔軟な処理ができるようになります。あわせて覚えておくと便利です。</p><h2 class="wp-block-heading" id="i-6">タプルでもスライスは使える</h2><p class="wp-block-paragraph">スライスは、リストや文字列と同じ「シーケンス型」である<a href="https://nano-toy-lab.com/python/python-tuple/">タプル(tuple)</a>でも利用できます。ただしタプルは変更できない（イミュータブル）ため、スライスで取り出した結果も新しいタプルになります。</p><pre class="wp-block-code"><code>colors = ('赤', '青', '緑', '黄')

print(colors[1:3])
# 結果: ('青', '緑')</code></pre><h2 class="wp-block-heading" id="i-7">スライスでリストの一部を書き換える</h2><p class="wp-block-paragraph">リストの場合は、スライスで指定した範囲に<strong>まとめて代入</strong>することもできます。複数の要素を一気に置き換えられるので便利です。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5]
numbers[1:3] = [20, 30]
print(numbers)
# 結果: [1, 20, 30, 4, 5]</code></pre><p class="wp-block-paragraph">この書き換えは、要素の数が違っても動作します。たとえば2つの範囲に3つの要素を代入すれば、リスト全体の長さも変わります。なお、取り出した要素をまとめて加工したいときは<a href="https://nano-toy-lab.com/python/list-comprehension/">リスト内包表記</a>と組み合わせると、さらに短く書けます。</p><h2 class="wp-block-heading" id="i-8">スライスでよくある間違いと注意点</h2><p class="wp-block-paragraph">最後に、初心者の方がつまずきやすいポイントを確認しておきましょう。</p><ul class="wp-block-list"><li><strong>stopの位置は含まれない</strong>：<code>[1:4]</code>はインデックス4を含みません。「終わりの手前まで」と覚えましょう。</li><li><strong>範囲外を指定してもエラーにならない</strong>：<code>numbers[1:100]</code>のように大きすぎる数字を書いても、エラーではなく「あるところまで」を返してくれます。</li><li><strong>スライスは新しいオブジェクトを作る</strong>：元のデータは書き換わりません（代入する場合を除く）。</li></ul><pre class="wp-block-code"><code>numbers = [10, 20, 30]
print(numbers[1:100])   # エラーにならない -&gt; [20, 30]
print(numbers[5:10])    # 範囲外 -&gt; [] （空のリスト）</code></pre><h2 class="wp-block-heading" id="i-9">もっと効率的にPythonを学びたい人へ</h2><p class="wp-block-paragraph">スライスのように「知っていると一気にコードが短くなる」テクニックは、Pythonにはまだまだたくさんあります。独学でも学べますが、「つまずいたときにすぐ質問できる環境が欲しい」「未経験から効率よくPythonを身につけたい」という方には、プログラミングスクールという選択肢もおすすめです。</p><p class="wp-block-paragraph">マンツーマン指導で自分のペースに合わせて学べるスクールなら、エラーで長時間悩む時間を減らし、転職サポートまで受けられます。多くのスクールが無料カウンセリングを用意しているので、まずは気軽に相談してみるとよいでしょう。</p><p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>
<h2 class="wp-block-heading" id="i-10">まとめ</h2><p class="wp-block-paragraph">今回は、Pythonのスライスの使い方について解説しました。最後に要点を整理しておきましょう。</p><ul class="wp-block-list"><li>スライスは<code>[start:stop]</code>で、リストや文字列の一部を切り出せる</li><li><strong>startは含み、stopは含まない</strong>のが基本ルール</li><li>startやstopは省略でき、<code>[:]</code>で全体のコピーができる</li><li><code>[start:stop:step]</code>のstepで飛ばし読みができ、<code>[::-1]</code>で逆順になる</li><li>マイナスのインデックスで後ろから取り出せる</li><li>リストならスライスへの代入で一部をまとめて書き換えられる</li></ul><p class="wp-block-paragraph">スライスは、Pythonを書くうえで毎日のように使う超基本テクニックです。ぜひ実際に手を動かして、いろいろな数字を試しながら感覚をつかんでみてくださいね。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-slice/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】可変長引数（*args・**kwargs）の使い方を初心者向けに徹底解説！</title>
		<link>https://nano-toy-lab.com/python/python-args-kwargs/</link>
					<comments>https://nano-toy-lab.com/python/python-args-kwargs/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Wed, 08 Jul 2026 00:08:55 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-args-kwargs/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-4-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonの可変長引数*argsと**kwargsの使い方を初心者向けに解説。任意の数の引数を受け取る関数の作り方、タプルと辞書としての受け取り、呼び出し側でのアンパック、引数の順番までコード付きで丁寧に紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-4-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">関数を作っていると、「引数の数を決めうちにしたくない」「あとから引数を増やしたい」と感じる場面がありますよね。たとえば「渡された数値をぜんぶ合計する関数」を作りたいとき、引数を固定してしまうと不便です。そんなときに活躍するのが、Pythonの<strong>可変長引数</strong>である <code>*args</code> と <code>**kwargs</code> です。</p><p class="wp-block-paragraph">この記事では、可変長引数の基本から、<code>*args</code>（位置引数をまとめて受け取る）と <code>**kwargs</code>（キーワード引数をまとめて受け取る）の違い、引数を書く順番、呼び出し側でのアンパックまで、実際に動くコードを交えながら初心者向けに丁寧に解説します。読み終えるころには、柔軟で再利用しやすい関数が書けるようになりますよ。</p><h2 class="wp-block-heading" id="i-0">可変長引数とは？</h2><p class="wp-block-paragraph">可変長引数とは、その名のとおり「個数が決まっていない引数」を受け取るしくみのことです。通常の関数は <code>def add(a, b):</code> のように引数の数が固定ですが、可変長引数を使うと、0個でも100個でも同じ関数で受け取れるようになります。</p><p class="wp-block-paragraph">可変長引数には2種類あります。位置引数（順番で渡す引数）をまとめて受け取る <code>*args</code> と、キーワード引数（名前付きで渡す引数）をまとめて受け取る <code>**kwargs</code> です。それぞれ順番に見ていきましょう。なお、関数の基本的な書き方があいまいな方は、先に<a href="https://nano-toy-lab.com/python/function/">関数の基礎を解説した記事</a>を読んでおくと理解がスムーズです。</p><h2 class="wp-block-heading" id="i-1">*args の使い方（位置引数をまとめて受け取る）</h2><p class="wp-block-paragraph">仮引数の前にアスタリスク（<code>*</code>）を1つ付けると、渡された位置引数をすべてまとめて受け取れます。慣例として名前は <code>args</code> がよく使われますが、名前自体は自由です（大切なのは先頭の <code>*</code> です）。まずは「渡された数値を合計する関数」を作ってみましょう。</p><pre class="wp-block-code"><code>def add(*args):
    total = 0
    for n in args:
        total += n
    return total

print(add(1, 2, 3))        # 6
print(add(10, 20, 30, 40)) # 100
print(add())               # 0</code></pre><p class="wp-block-paragraph">引数を3個渡しても4個渡しても、さらには1個も渡さなくても、同じ関数で処理できています。これが可変長引数の便利なところです。</p><h3 class="wp-block-heading" id="i-2">args の正体はタプル</h3><p class="wp-block-paragraph"><code>*args</code> で受け取った値は、<strong>タプル</strong>としてまとめられます。実際に型を確認してみましょう。</p><pre class="wp-block-code"><code>def show(*args):
    print(type(args))
    print(args)

show(1, 2, 3)
# &lt;class 'tuple'&gt;
# (1, 2, 3)</code></pre><p class="wp-block-paragraph">このように <code>args</code> はタプルなので、<code>for</code> でループしたり、<code>args[0]</code> のようにインデックスでアクセスしたりできます。タプルそのものの性質については<a href="https://nano-toy-lab.com/python/python-tuple/">タプル(tuple)の使い方を解説した記事</a>もあわせて読むと理解が深まります。</p><h2 class="wp-block-heading" id="i-3">**kwargs の使い方（キーワード引数をまとめて受け取る）</h2><p class="wp-block-paragraph">仮引数の前にアスタリスクを2つ（<code>**</code>）付けると、<code>name="佐藤"</code> のような「名前付きの引数（キーワード引数）」をまとめて受け取れます。こちらも慣例で <code>kwargs</code>（keyword arguments の略）という名前がよく使われます。</p><pre class="wp-block-code"><code>def profile(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

profile(name="佐藤", age=25, job="SE")
# name: 佐藤
# age: 25
# job: SE</code></pre><p class="wp-block-paragraph">渡したキーワード引数が、そのままキーと値のペアとして扱われているのが分かりますね。</p><h3 class="wp-block-heading" id="i-4">kwargs の正体は辞書</h3><p class="wp-block-paragraph"><code>**kwargs</code> で受け取った値は、<strong>辞書（dict）</strong>としてまとめられます。</p><pre class="wp-block-code"><code>def show(**kwargs):
    print(type(kwargs))
    print(kwargs)

show(a=1, b=2)
# &lt;class 'dict'&gt;
# {'a': 1, 'b': 2}</code></pre><p class="wp-block-paragraph">辞書なので、<code>kwargs.items()</code> でループしたり、<code>kwargs.get("age")</code> で値を取り出したりできます。辞書の操作に不安がある方は<a href="https://nano-toy-lab.com/python/python-dict/">辞書(dict)の使い方を解説した記事</a>も参考にしてみてください。</p><h2 class="wp-block-heading" id="i-5">通常の引数と組み合わせる（引数を書く順番）</h2><p class="wp-block-paragraph">可変長引数は、通常の引数といっしょに使うこともできます。ただし、書く順番には決まりがあります。<strong>「通常の引数 → *args → **kwargs」</strong>の順に並べる必要があり、これを守らないとエラーになります。</p><pre class="wp-block-code"><code>def func(a, b, *args, **kwargs):
    print("a =", a)
    print("b =", b)
    print("args =", args)
    print("kwargs =", kwargs)

func(1, 2, 3, 4, x=10, y=20)
# a = 1
# b = 2
# args = (3, 4)
# kwargs = {'x': 10, 'y': 20}</code></pre><p class="wp-block-paragraph">最初の2つ（1, 2）が <code>a</code>・<code>b</code> に入り、残りの位置引数（3, 4）が <code>args</code> に、名前付きの引数（x, y）が <code>kwargs</code> に振り分けられました。役割ごとにきれいに分かれるのがポイントです。</p><h2 class="wp-block-heading" id="i-6">呼び出し側の * と **（アンパック）</h2><p class="wp-block-paragraph">ここまでは関数を「定義する側」の話でしたが、<code>*</code> と <code>**</code> は関数を「呼び出す側」でも使えます。リストやタプルの前に <code>*</code> を付けると、要素がバラバラの位置引数として展開（アンパック）され、辞書の前に <code>**</code> を付けると、キーワード引数として展開されます。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3]
print(add(*numbers))   # 6

user = {"name": "田中", "age": 30, "job": "SE"}
profile(**user)
# name: 田中
# age: 30
# job: SE</code></pre><p class="wp-block-paragraph">リストや辞書に入っているデータを、そのまま関数の引数として渡せるのでとても便利です。この「アンパック」という考え方については<a href="https://nano-toy-lab.com/python/list-unpacking/">リストのアンパックを解説した記事</a>でも詳しく紹介しています。</p><h2 class="wp-block-heading" id="i-7">実用例：柔軟な関数を作る</h2><p class="wp-block-paragraph"><code>*args</code> と <code>**kwargs</code> を組み合わせると、状況に応じて引数の数が変わるような、柔軟な関数を作れます。たとえば、メイン料理・サイド料理（複数）・オプション（名前付き）を受け取る注文関数はこう書けます。</p><pre class="wp-block-code"><code>def order(main, *sides, **options):
    print(f"メイン: {main}")
    if sides:
        print("サイド:", ", ".join(sides))
    for key, value in options.items():
        print(f"{key} → {value}")

order("ハンバーグ", "サラダ", "スープ", drink="コーヒー", size="大盛り")
# メイン: ハンバーグ
# サイド: サラダ, スープ
# drink → コーヒー
# size → 大盛り</code></pre><p class="wp-block-paragraph">サイドが何品でも、オプションが何個でも、1つの関数で受け止められます。ライブラリの関数がさまざまなオプションを受け取れるのは、まさにこのしくみが使われているからです。</p><h2 class="wp-block-heading" id="i-8">よくあるエラーと注意点</h2><p class="wp-block-paragraph">可変長引数でつまずきやすいポイントをまとめておきます。まず、引数の順番を間違えて <code>def func(**kwargs, a):</code> のように書くと <code>SyntaxError</code> になります。必ず「通常の引数 → *args → **kwargs」の順を守りましょう。</p><p class="wp-block-paragraph">また、<code>*args</code> はタプル、<code>**kwargs</code> は辞書である点を忘れると、存在しないメソッドを呼んでエラーになりがちです。<code>args</code> に対して <code>.items()</code> を呼んだり、<code>kwargs</code> に対して <code>append()</code> を呼んだりしないよう注意してください。名前は <code>args</code>・<code>kwargs</code> でなくても動きますが、他の人が読んだときに分かりやすいので、特別な理由がなければ慣例に従うのがおすすめです。</p><h2 class="wp-block-heading" id="i-9">もっと効率的にPythonを学びたい人へ</h2><p class="wp-block-paragraph">可変長引数のように、Pythonには「知っていると一気に便利になる」文法がたくさんあります。独学でも学べますが、つまずいたときにすぐ質問できる環境があると、挫折せずに一気に上達できます。</p><p class="wp-block-paragraph">未経験からPythonを本格的に習得して、エンジニア転職まで目指したい方には、マンツーマン指導が受けられるプログラミングスクールという選択肢もあります。プロ講師にコードを直接見てもらえるので、独学では気づきにくい「書き方のクセ」も早い段階で直せます。まずは無料カウンセリングで、自分に合う学び方を相談してみるのも良いですよ。</p><p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>
<h2 class="wp-block-heading" id="i-10">まとめ</h2><p class="wp-block-paragraph">今回は、Pythonの可変長引数 <code>*args</code> と <code>**kwargs</code> について解説しました。最後に要点を振り返っておきましょう。</p><ul class="wp-block-list"><li><code>*args</code>：任意の個数の<strong>位置引数</strong>をまとめて受け取り、<strong>タプル</strong>になる</li><li><code>**kwargs</code>：任意の個数の<strong>キーワード引数</strong>をまとめて受け取り、<strong>辞書</strong>になる</li><li>引数を書く順番は「通常の引数 → *args → **kwargs」を守る</li><li>呼び出し側でも <code>*リスト</code>・<code>**辞書</code> でアンパックして渡せる</li><li>名前は自由だが、慣例の <code>args</code>・<code>kwargs</code> を使うと読みやすい</li></ul><p class="wp-block-paragraph">可変長引数を使いこなせると、柔軟で再利用しやすい関数が書けるようになります。ぜひ実際に手を動かして、いろいろな引数を渡して試してみてくださいね。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-args-kwargs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
