+ 作るログイン
図を読み込んでいます…
1 / 17
JS から来た人の Python ― どこから来て、なぜ動くのか / 全19章

Python 00:はじめに ― import はどこから来るのか

発行
アニメモ公式
版
第1版
改訂
コマ
全17

JavaScript は書けるけれど Python は初めて、という人のための本の入口です。import transformers と書くとなぜライブラリが使えるのか、ライブラリはどこに保存されているのか、そもそもライブラリやフレームワークとは何か、GitHub で共有したら相手はどうするのか。この本で解く疑問を並べ、それぞれ何章で解決するかの地図と、JS の道具との対応表、題材の天気コマンド tenki の育ち方を示します。

1行書いただけで、なぜ動くのか分からない

Python の入門記事を開くと、たいてい図のようなコードが出てきます。import transformers と1行書いて、次の行ではもう AI のモデルが動いている。書いてあるとおりに打てば、たしかに動きます。

でも、JavaScript を書いたことがある人ほど、ここで手が止まります。

浮かぶ疑問言い換えると
この transformers という名前は、どこから来た?誰が、どこに、その名前のものを用意したのか
ライブラリはどこに保存されている?自分のパソコンのどのフォルダに、何が入っているのか
そもそもライブラリってどういう構造?中身はプログラムなのか、何か特別な形式なのか
GitHub に上げたら、相手はどうするの?自分の手元で動いたものを、他人の手元でも動かすには

JS でも npm install して import すれば動きます。Python も、見た目はよく似ています。けれど「そのとき、どこで何が起きているのか」と聞かれると、案外説明できません。説明できないまま書き進めると、ModuleNotFoundError のようなエラーが出た瞬間に、何を疑えばいいのか分からなくなります。

この本は、JavaScript がある程度書ける人が、Python を仕組みから分かって書き始められるようにするための本です。文法を JS と並べて覚えたあと、import・pip・仮想環境・共有・配布の順に、「それはどこにあるのか」「そのとき実際に何が起きているのか」を、実物のフォルダとファイルを見せながら1つずつ分解していきます。

ちなみに、図の例で transformers を使えるのは、その前に pip install transformers で PyPI(Python のライブラリの公開の置き場)から取ってきてあるからです。さらに、AI のモデルの重み(大きなデータファイル)は、ライブラリとは別に、初めて使ったときに Hugging Face のサイトから自分のパソコンのキャッシュのフォルダに落ちてきます。「ライブラリ」と「その中で使うデータ」は、来る道が違うのです。この話は第11章で、実際のフォルダを見ながら確かめます。

※2026年9月時点(Python 3.13)の情報です。

  • JS から来た人の Python 00 ― はじめに
  • 1 / 17
  • 1行書いただけで、なぜ動くのか分からない
  • # main.py
  • 検索
  • この名前は、どこから来た?
  • import transformers
  • 検索
  • model = transformers.pipeline(
  • ライブラリは、どこに保存されている?
  • "sentiment-analysis")
  • print(model("What a nice day!"))
  • 検索
  • そもそもライブラリって、どういう構造?
  • 検索
  • GitHub に上げたら、相手はどうするの?
  • JS なら npm install して import すれば動く。Python も似ている。でも「どこで・何が」は、案外説明できない
  • → この本は、その「細かい疑念」を1つも残さないための本
  • ひらめき
  • Python の入門は「書けば動く」で進む。でも、なぜ動くのかが分からないと、不安は残る。

この本で解く6つの疑問

最初に、この本で答える疑問を並べておきます。図の6枚のカードが、それぞれ何章で解決するかの対応です。

疑問一言の答え(詳しくは各章)章
Python はどこで動く?python3 という実行ファイル(インタプリタ)が、あなたの .py ファイルを読んで実行する。node と同じ立場第1・2章
import はどこから?決まったフォルダの一覧を上から順に探し、見つけた .py ファイルを実行して使えるようにする第8・9章
ライブラリの構造は?他人が書いた .py ファイルとフォルダの束。開けば中身が読める第10章
フレームワークとは?あなたが呼ぶ道具ではなく、あなたのコードを「呼んでくれる」骨組み第10・17章
pip install は何を?PyPI から zip の一種(wheel)を落として、決まったフォルダに広げるだけ第11・12章
GitHub で共有したら?コードと「必要なものの一覧」だけを上げ、相手が自分の手元で入れ直す第13・14章

図の色は、この本全体で役割を表します。黄は Python のコードとその実行、緑はファイル・フォルダ・ディスク、青はインターネット(PyPI・GitHub)、灰はあなたや JS の世界、白は pip・uv などの道具、赤は間違いや危険です。

どの答えも、よく見ると「どこに何があり、そのとき何が起きているか」という形をしています。Python の「なんとなく」は、ほとんどがこの2つを見ていないことから来ます。逆に言えば、置き場所と順番さえ見えれば、どれも驚くほど地味な仕組みです。

  • JS から来た人の Python 00 ― はじめに
  • 2 / 17
  • この本で解く6つの疑問
  • ターミナル
  • Python はどこで動く?
  • 検索
  • import はどこから?
  • 本
  • ライブラリの構造は?
  • python3 と打つと何が起きる
  • 名前からファイルを探す順番
  • 中身はただの .py の束
  • 第1・2章
  • 第8・9章
  • 第10章
  • パズル
  • フレームワークとは?
  • ダウンロード
  • pip install は何を?
  • アップロード
  • GitHub で共有したら?
  • あなたのコードを呼ぶ骨組み
  • PyPI から取って置くだけ
  • 一覧を渡して相手が入れ直す
  • 第10・17章
  • 第11・12章
  • 第13・14章
  • 黄=動かす・読み込む 緑=ファイルとフォルダ 青=インターネットとの行き来
  • ひらめき
  • どれも「どこに何があり、そのとき何が起きているか」で答えられる。答えは各章で、実物を見せて出す。

魔法に見える4行を、この本で1つずつ分解する

Python を使い始めると、意味を知らずに打つ「おまじない」がいくつも出てきます。代表的なのが図の4行です。

魔法に見える1行裏でやっていること章
python3 main.pypython3 という実行ファイルが main.py を読み、中間の形(バイトコード)に翻訳してから、1命令ずつ実行する第1章
import requestsPython が「探す場所の一覧」(sys.path)を上から順に見て、requests という名前のファイルかフォルダを見つけ、中身を上から実行する第8章
pip install requestspypi.org に問い合わせて、合う版の配布ファイル(wheel)をダウンロードし、site-packages というフォルダに展開する第11章
source .venv/bin/activate環境変数 PATH(コマンドを探すフォルダの一覧)の先頭に .venv/bin を足すだけ第12章

どれも、裏でやっていることは地味で具体的です。たとえば activate は、名前からは「何か特別なモードに入る」ように見えますが、実際にやっているのは文字列を1つ書き換えるだけです。それが分かっていれば、「activate し忘れたのに動いた」「activate したのに違う Python が動く」といった現象も、自分で説明できるようになります。

この本では、こうした1行が出てくるたびに、番号札の順に1段ずつ分解します。図の中で小包が動いたら、それが「いま何がどこからどこへ運ばれているか」です。

  • JS から来た人の Python 00 ― はじめに
  • 3 / 17
  • 魔法に見える4行を、この本で1つずつ分解する
  • python3 main.py
  • 実行ファイルが .py を読んで実行する
  • 第1章
  • import requests
  • 決まったフォルダを順に探し、.py を実行する
  • 第8章
  • pip install requests
  • pypi.org から落とし、site-packages に広げる
  • 第11章
  • source .venv/bin/activate
  • PATH の先頭を書き換えるだけ
  • 第12章
  • 「なんとなく動く」を「こういう順番で動く」に変えるのが、この本の仕事
  • ひらめき
  • どの1行も、裏でやっていることは地味で具体的。順番に分ければ、魔法は残らない。

先取り①:import は、決まったフォルダの中を探すだけ

本編に入る前に、この本の答えを少しだけ先に見ておきます。舞台は図の2つの囲みです。左があなたのパソコン(緑)、右がインターネット(青)です。

最初は import requests です。main.py にこの1行があると、Python は「requests という名前のもの」を、パソコンの中の決まったフォルダから探します。見つかるのは、たとえば次のようなファイルです。

/Users/you/tenki/.venv/lib/python3.13/site-packages/requests/__init__.py

特別な形式ではありません。requests という名前のフォルダがあり、その中に __init__.py というただの Python のファイルがあるだけです。エディタで開けば、普通の Python のコードが読めます。Python はこのファイルを上から実行し、そこで定義された関数(get など)を requests.get として使えるようにします。

部分意味
/Users/you/tenki/あなたのプロジェクトのフォルダ
.venv/このプロジェクト専用のライブラリの箱(仮想環境・第12章)
lib/python3.13/site-packages/pip で入れたライブラリが置かれるフォルダ(第11章)
requests/__init__.pyrequests の入口になるファイル(第9章)

「どのフォルダを、どの順番で探すのか」「見つけた後に何が起きるのか」「なぜ2回 import しても1回しか実行されないのか」は、第8章で1段ずつ分解します。ここでは「import は、ディスク上のファイルを探して読むこと」とだけ覚えておいてください。

  • JS から来た人の Python 00 ― はじめに
  • 4 / 17
  • 先取り①:import は、決まったフォルダの中を探すだけ
  • あなたのパソコン
  • インターネット
  • 書類
  • main.py
  • 店
  • PyPI
  • import requests
  • pypi.org ・ 公開の置き場
  • 探す
  • requests?
  • フォルダ
  • site-packages
  • インターネット
  • GitHub
  • .venv/lib/python3.13/site-packages/
  • github.com ・ コードの置き場
  • 見つかる実物:/Users/you/tenki/.venv/lib/python3.13/site-packages/requests/__init__.py
  • 探す順番と、見つけた後に何が起きるかは第8章。ここでは「ただのファイル」とだけ覚えておく
  • ひらめき
  • import requests は、ディスク上の requests というフォルダを探して、中の .py を実行している。

先取り②:pip install は、PyPI から落として置くだけ

では、先取り①の site-packages の中の requests フォルダは、誰がそこに置いたのでしょうか。答えは pip install requests です。

図の小包が、右の PyPI から左の site-packages へ運ばれていきます。PyPI(パイピーアイ、Python Package Index)は pypi.org にある、Python のライブラリの公開の置き場です。JS でいう npmjs.com にあたります。

pip install requests がやっていることを、ざっくり並べるとこうなります。

順番pip がやること
1pypi.org に「requests の版の一覧」を問い合わせる
2いまの Python で使える版を選ぶ
3その版の wheel(ホイール。中身は zip 形式のファイル)をダウンロードする
4requests が必要とする他のライブラリも同じように集める
5wheel を site-packages に展開し、何を入れたかの記録を残す

JS の npm install が node_modules に置くのと、発想は同じです。大きく違うのは「どこに置くか」の既定です。npm は今いるプロジェクトの中に置きますが、pip は既定で「その Python 全体」の site-packages に置きます。この違いが、Python で仮想環境(venv)を作る理由です(第11・12章)。

そして大事なのは、pip install と import は別々の仕事だということです。pip は置くだけで、読み込みはしません。import は探して読むだけで、ダウンロードはしません。「pip install したのに import できない」というよくある困りごとは、たいてい「置いた場所」と「探している場所」がずれていることが原因です。

  • JS から来た人の Python 00 ― はじめに
  • 5 / 17
  • 先取り②:pip install は、PyPI から落として置くだけ
  • あなたのパソコン
  • インターネット
  • 書類
  • main.py
  • 店
  • PyPI
  • import requests
  • pypi.org ・ 公開の置き場
  • requests.whl
  • フォルダ
  • site-packages
  • インターネット
  • GitHub
  • .venv/lib/python3.13/site-packages/
  • github.com ・ コードの置き場
  • 小包は wheel(配布用の zip)。npm が node_modules に置くのと同じ発想(第11・12章)
  • 置かれた後は、先取り①の import がそこから見つける。2つは別々の仕事
  • ひらめき
  • pip install requests は、pypi.org から zip(wheel)を落とし、site-packages に広げている。

先取り③:GitHub に上げるのは、コードと「一覧」だけ

自分のパソコンで tenki が動いたので、GitHub に上げて友だちにも使ってもらうことにします。このとき、何を上げればいいでしょうか。

答えは、あなたが書いたコードと、「このプロジェクトには requests が要る」と書いた一覧のファイルだけです。一覧のファイルとして、図では pyproject.toml を置いています。

上げるもの上げないもの
main.py など、あなたが書いたコード.venv/(ライブラリの本体が入った箱)
pyproject.toml(必要なものの一覧)__pycache__/(Python が自動で作る翻訳済みのファイル・第1章)
uv.lock(版を固定した記録・第13章)

ライブラリの本体を上げないのは、JS で node_modules/ を .gitignore に入れるのと全く同じ理由です。ライブラリは PyPI から誰でも取ってこられるので、同じものを GitHub にもう1つ置く必要はありません。それに .venv/ の中には、あなたのパソコンの場所(/Users/you/...)や、あなたの OS 用に作られたファイルが含まれていて、他人のパソコンにそのまま持っていっても動かないことがあります。

JS と見比べると、対応はこうです。

JSPython
package.jsonpyproject.toml(古くは requirements.txt)
package-lock.jsonuv.lock など
node_modules/ は上げない.venv/ は上げない

一覧の書き方、版の指定の仕方、ロックファイルの意味は第13章で扱います。

  • JS から来た人の Python 00 ― はじめに
  • 6 / 17
  • 先取り③:GitHub に上げるのは、コードと「一覧」だけ
  • あなたのパソコン
  • インターネット
  • 書類
  • main.py
  • 書類
  • pyproject.toml
  • import requests
  • requests が要る、と書く
  • 店
  • PyPI
  • pypi.org ・ 公開の置き場
  • コードと一覧
  • フォルダ
  • site-packages
  • NG
  • インターネット
  • GitHub
  • .venv の中。git には入れない
  • github.com ・ コードの置き場
  • git push で上げる。package.json は上げて node_modules は上げない。JS と同じ考え方
  • 一覧(pyproject.toml・ロックファイル)の書き方は第13章
  • ひらめき
  • ライブラリ本体(.venv)は上げない。「何が要るか」の一覧だけを上げ、相手が自分で入れ直す。

先取り④:受け取った人は、一覧を見て自分の手元で入れ直す

最後に、友だちの側です。図の右に「友だちのパソコン」が増えました。友だちの手元には、2本の道で物が届きます。

道何が届くか使うコマンドの例
GitHub → 友だちあなたが書いたコードと一覧git clone https://github.com/you/tenki.git
PyPI → 友だち一覧に書かれたライブラリ本体pip install ... や uv sync

友だちは、まず GitHub からコードを取ってきます。この時点では、友だちの手元に requests はまだありません。そこで一覧(pyproject.toml)を読んで、自分の手元で requests を PyPI から入れ直します。これで、あなたと同じ環境が友だちのパソコンにもできます。

bash
git clone https://github.com/you/tenki.git
cd tenki
uv sync          # 一覧どおりに .venv を作り、ライブラリを入れる
uv run python main.py

これは JS で git clone のあとに npm install するのと同じ流れです。Python でも、道具を uv にすれば uv sync の1行で済みます。uv は、Python を入れる・仮想環境を作る・ライブラリを入れる・版を記録する、を1つにまとめた、いまよく使われている道具です。この本では、まず標準の pip と venv で仕組みを見てから、uv を「同じことを速く・まとめてやる道具」として紹介します(第13章)。

さらに一歩進めると、tenki そのものをパッケージにして、友だちが pip install 一発で入れられるようにもできます(第14章)。

  • JS から来た人の Python 00 ― はじめに
  • 7 / 17
  • 先取り④:受け取った人は、一覧を見て自分の手元で入れ直す
  • あなた
  • インターネット
  • 友だちのパソコン
  • 書類
  • main.py
  • site-packages
  • import requests
  • 店
  • PyPI
  • フォルダ
  • pypi.org ・ 公開の置き場
  • ここで入れ直す
  • 書類
  • pyproject.toml
  • requests が要る、と書く
  • requests.whl
  • フォルダ
  • site-packages
  • インターネット
  • GitHub
  • 上げない
  • NG
  • github.com ・ コードの置き場
  • 書類
  • main.py と一覧
  • git clone で届く
  • GitHub から友だちへ「コード」、PyPI から友だちへ「ライブラリ」。2本の道で届く
  • uv なら uv sync の1行で、一覧どおりに入れ直せる(第13章)
  • ひらめき
  • コードは GitHub から、ライブラリは PyPI から。同じ一覧なら、誰の手元にも同じ環境ができる。

ライブラリは「あなたが呼ぶ」、フレームワークは「あなたを呼ぶ」

「ライブラリ」と「フレームワーク」は、どちらも他人が書いたコードです。置き場所も入れ方も同じで、どちらも pip で入り、site-packages に置かれます。では何が違うのでしょうか。

違いは、どちらが主導権を持つかです。

ライブラリフレームワーク
誰が呼ぶかあなたのコードが、好きなときに呼ぶフレームワークが、決まったときにあなたのコードを呼ぶ
Python の例requests(HTTP で天気を取る)FastAPI・Flask・Django(Web API を作る)
JS の例axios・lodashExpress・React
たとえ道具箱。使うかどうかはあなた次第家の骨組み。あなたは部屋の中身を作る

図の左では、あなたのコードが requests.get(url) と呼んでいます。いつ呼ぶかを決めるのはあなたです。右では向きが逆です。あなたは「/weather にリクエストが来たら、この関数を使って」と FastAPI に登録しておくだけで、実際にその関数を呼ぶのは FastAPI です。

この「呼ぶ向きが逆になる」ことを制御の反転(Inversion of Control)と呼び、「こちらから電話しないで、こちらがかけるから(Don't call us, we'll call you)」という言い回しで説明されることもあります。

JS で Express を使ったことがあれば、app.get("/", (req, res) => ...) と書いた関数を自分で呼んだことは一度も無いはずです。あれと同じです。第10章でこの違いを詳しく見て、第17章では実際に tenki を FastAPI の Web API にします。

  • JS から来た人の Python 00 ― はじめに
  • 8 / 17
  • ライブラリは「あなたが呼ぶ」、フレームワークは「あなたを呼ぶ」
  • ライブラリ(例:requests)
  • フレームワーク(例:FastAPI)
  • 書類
  • あなたのコード
  • 本
  • requests
  • パズル
  • FastAPI
  • 書類
  • あなたの関数
  • 主導権はこちら
  • 道具箱
  • 骨組み
  • 呼ばれるのを待つ
  • requests.get(url) と、あなたが好きなときに呼ぶ
  • リクエストが来たら、FastAPI があなたの関数を呼ぶ
  • JS なら axios・lodash の立場
  • JS なら Express・React の立場
  • これを「制御の反転」と呼ぶ(Don't call us, we'll call you)。詳しくは第10章、実際に作るのは第17章
  • ひらめき
  • 違いは、主導権がどちらにあるか。requests はあなたが呼び、FastAPI はあなたの関数を呼ぶ。

JS の言葉と Python の言葉の対応表

Python の世界の道具は、ほとんどに「JS でいうアレ」があります。最初に対応を知っておくと、新しい名前が出てきても怯えずにすみます。

役割JS(Node.js)Python登場する章
プログラムを実行するものnodepython3(インタプリタ)第1章
ライブラリの公開の置き場npmjs.compypi.org(PyPI)第11章
ライブラリを入れる道具npm・pnpmpip・uv第11・13章
入った先node_modules/.venv/lib/python3.13/site-packages/第11・12章
必要なものの一覧package.jsonpyproject.toml第13章
版を固定した記録package-lock.jsonuv.lock第13章
言語の版を切り替える道具nvm・fnm・Voltauv・pyenv第2章
1ファイルモジュールモジュール第8章
Web のフレームワークExpressFastAPI・Flask・Django第17章

JS の側の仕組みがふわっとしていても大丈夫です。たとえば「package.json と package-lock.json の違い」は、第13章で Python のものと並べて、JS の側も一言ずつ説明し直します。

対応表を見て「なんだ、同じじゃないか」と思えたなら、それで正解です。考え方の多くは JS と共通で、違うのは名前と、いくつかの既定の振る舞いです。その「違う既定」が、次に見る3つです。

  • JS から来た人の Python 00 ― はじめに
  • 9 / 17
  • JS の言葉と Python の言葉の対応表
  • 役割
  • JS(Node.js)
  • Python
  • 実行するプログラム
  • node
  • python3(インタプリタ)
  • ライブラリの公開の置き場
  • npmjs.com
  • pypi.org(PyPI)
  • 入れる道具
  • npm / pnpm
  • pip / uv
  • 入った先
  • node_modules/
  • .venv/lib/python3.13/site-packages/
  • 必要なものの一覧
  • package.json
  • pyproject.toml
  • 版を固定する記録
  • package-lock.json
  • uv.lock
  • 版を切り替える道具
  • nvm・fnm・Volta
  • uv・pyenv
  • Web のフレームワーク
  • Express
  • FastAPI・Flask・Django
  • ひらめき
  • ほとんどの道具に「JS でいうアレ」がある。まず対応を知っておけば、新しい名前に怯えなくていい。

似ているけれど、つまずく3つの違い

JS から来た人が Python でつまずく場所は、だいたい決まっています。図の3つです。

違いJSPython章
1 ライブラリの置き場npm install はプロジェクトの node_modules/ に置くpip install は既定で「その Python 全体」の site-packages に置く第11・12章
2 書き方の決まり{ } でブロック、; で文の終わりインデント(字下げ)でブロック。; は普通書かない第3章
3 待ち方いつもイベントループの中。await がどこでも前提既定では1行ずつ順番に実行。非同期は asyncio.run で自分で始める第16章

いちばん大きいのは1番です。JS では、プロジェクトごとにライブラリが分かれているのが当たり前なので、「別のプロジェクトで入れたライブラリの版がぶつかる」ことはまずありません。Python では、何も考えずに pip install すると、パソコンの中の同じ Python を使うすべてのプロジェクトが1つの site-packages を共有します。そこで Python では「プロジェクトごとの箱」を自分で作ります。それが仮想環境(venv)で、中身は拍子抜けするほど単純なフォルダです(第12章)。

2番は最初こそ戸惑いますが、1日で慣れます。3番は、Web API を作る段になって効いてきます。

逆に言えば、この3つ以外は「JS と同じ考え方で、名前が違うだけ」のことがほとんどです。

  • JS から来た人の Python 00 ― はじめに
  • 10 / 17
  • 似ているけれど、つまずく3つの違い
  • フォルダ
  • ライブラリの置き場
  • 第11・12章
  • npm はプロジェクトの中。pip は既定で「その Python 全体」に置く
  • コード
  • 書き方の決まり
  • 第3章
  • { } の代わりにインデント(字下げ)でブロックを表す。セミコロンも要らない
  • 時計
  • 待ち方
  • 第16章
  • JS はいつもイベントループの中。Python は既定で1行ずつ順に進む
  • 逆に言えば、この3つ以外は「JS と同じ考え方で、名前が違うだけ」のことが多い
  • ひらめき
  • Python は、ライブラリの置き場が既定で「プロジェクトごと」ではない。これが一番のつまずき。

この本で育てるもの ①:天気を表示する1ファイルから

この本では、1つの小さなプログラムを章ごとに育てていきます。題材は、天気を取ってきて表示するコマンド tenki(てんき)です。

最初は、main.py という1つのファイルだけです。ターミナルで python3 main.py と打つと、天気が表示されます。

python
# main.py
city = "東京"
temp = 24
print(f"{city}:晴れ {temp}度")
$ python3 main.py
東京:晴れ 24度

まだ本物の天気は取ってきていません。値はコードに直接書いてあります。第3〜7章では、この1ファイルを舞台に、Python の文法を JS と並べて覚えます。

章tenki でやること
第3章変数・文字列・比較で、表示を組み立てる
第4章都市と気温の一覧を list や dict で持つ
第5章表示を関数に分ける
第6章雨なら傘を勧める分岐、エラーの扱い
第7章天気を1つのクラスにまとめる

この段階では、ライブラリも import もほとんど出てきません。まずは「1つのファイルを Python が読んで実行する」ことを、第1章で分解するところから始めます。

  • JS から来た人の Python 00 ― はじめに
  • 11 / 17
  • この本で育てるもの ①:天気を表示する1ファイルから
  • 変数・データ・関数・分岐・クラスを、この1ファイルの中で覚える(第3〜7章)
  • ターミナル
  • ターミナル
  • python3 main.py
  • 実行
  • 書類
  • main.py
  • 太陽
  • 東京:晴れ 24度
  • print するだけ
  • 表示
  • city = "東京"
  • temp = 24
  • print(f"{city}:晴れ {temp}度")
  • ひらめき
  • 第1〜7章:天気を表示する tenki を1ファイルで書き、文法を JS と並べて覚える。

この本で育てるもの ②:ファイルに分け、ライブラリを入れる

中盤で、tenki は図のように育ちます。緑の囲みが tenki/ というプロジェクトのフォルダ、右の青い囲みがインターネットです。

増えたもの解決する困りごと章
weather.py1ファイルが長くなったので、天気を取る部分を別のファイル(モジュール)に分けて import する第8・9章
requests本物の天気の API に HTTP でつなぐ。自分で書かずに、他人のライブラリを使う第10・11章
.venv/tenki 専用のライブラリの箱。他のプロジェクトと版がぶつからない第12章
pyproject.toml「tenki には requests が要る」という一覧。GitHub で共有するときに相手が読む第13章

図の矢印は2本あります。PyPI から .venv へ向かう矢印は、requests というライブラリが入ってくる道です(pip install・一度だけ)。.venv から天気の API へ向かう矢印は、tenki が動くたびに requests を使って天気を取りに行く道です。

この2本は、どちらもインターネットを通りますが、意味は全く違います。前者は「道具を買ってくる」、後者は「道具を使って仕事をする」です。この区別がつくと、「pip install は通ったのに、実行すると接続エラーになる」といった状況でも、どちらの道で問題が起きているのかを切り分けられます。

  • JS から来た人の Python 00 ― はじめに
  • 12 / 17
  • この本で育てるもの ②:ファイルに分け、ライブラリを入れる
  • tenki/(プロジェクトのフォルダ)
  • インターネット
  • 書類
  • main.py
  • 書類
  • weather.py
  • 書類
  • pyproject.toml
  • 店
  • PyPI
  • 入口
  • 天気を取る関数
  • requests が要る
  • requests を配る
  • 荷物
  • .venv/
  • クラウド
  • 天気の API
  • requests がここに入る(プロジェクト専用の箱)
  • 本物の天気を返す
  • ひらめき
  • 第8〜13章:モジュールに分け、requests で本物の天気を取り、venv と pyproject.toml で管理する。

この本で育てるもの ③:配れるパッケージと Web API へ

後半では、tenki を他の人に配れる形にし、最後は Web API にします。

増えたもの意味章
パッケージとしての tenkipyproject.toml に名前・版・依存・コマンドを書き、pip install で誰でも入れられるようにする。入れた人はターミナルで tenki と打つだけで使える第14章
PyPI・GitHub への公開GitHub から直接入れる方法と、PyPI に公開する方法第14章
型ヒントと道具間違いを実行前に見つける mypy・ruff・pytest第15章
非同期複数の都市の天気を並べて待つ第16章
FastAPItenki をブラウザやアプリから使える Web API にする第17章

ここまで来ると、tenki はもう「自分のパソコンで動く1ファイル」ではありません。GitHub や PyPI から誰でも入れられ、サーバーの上で動いて、図の右端の「使う人」に天気を返します。

最後の FastAPI では、先ほどの「フレームワークがあなたの関数を呼ぶ」が、実際にどういう順番で起きるのかを分解します。ブラウザからのリクエストを受け取るのはサーバーのプログラム(uvicorn)で、それが FastAPI に渡し、FastAPI があなたの関数を呼ぶ、という3段の流れです。

1ファイルから始めて、同じ題材がここまで育つ流れを追えば、どの段階の「困りごと」を、どの仕組みが解決しているのかが、つながって見えるはずです。

  • JS から来た人の Python 00 ― はじめに
  • 13 / 17
  • この本で育てるもの ③:配れるパッケージと Web API へ
  • tenki(パッケージ)
  • インターネット
  • 書類
  • main.py
  • 書類
  • weather.py
  • 店
  • PyPI・GitHub
  • コマンドの入口
  • 天気を取る関数
  • tenki を配る
  • 書類
  • pyproject.toml
  • 名前・版・依存・コマンドを書く
  • パズル
  • FastAPI
  • 人々
  • 使う人
  • Web API の骨組み
  • ブラウザ・アプリ
  • pip install tenki で誰でも入る(第14章)
  • ひらめき
  • 第14〜17章:tenki を配れるパッケージにし、最後は FastAPI で Web API にする。

この本の地図

この本は19章(第0〜18章)あります。大きく6つのまとまりに分かれます。

まとまり章身につくこと
1 動かす01〜02Python の正体(インタプリタ)と、入れ方・版の切り替え・PATH
2 書く03〜07文法・データの入れ物・関数・分岐と例外・クラスを JS と並べて
3 分ける08〜10import の正体、パッケージとフォルダ、ライブラリとフレームワーク
4 入れる・共有する11〜13pip と PyPI、仮想環境、依存の記録と共有
5 配る・広げる14〜17パッケージを配る、型ヒントと道具、非同期、Web API
6 全体の地図18すべてをつないだ地図と、エラーの読み方・困ったときの確かめ方

特に大事な山場が3つあります。

山場章何が分かるか
import の正体第8章import の1行で、どのフォルダを、どの順に探し、何を実行しているか
ライブラリとフレームワーク第10章ライブラリの中身と、フレームワークとの違い
pip と PyPI第11章ライブラリがどこから来て、どこに置かれるか

第2のまとまり(文法)は、JS が書ける人なら速く読めるはずです。一方、第3・第4のまとまりは、急がずに図を1枚ずつ追ってください。どの章も、1つ前の章の終わりに出てくる疑問を、次の章が解くように並べています。

  • JS から来た人の Python 00 ― はじめに
  • 14 / 17
  • この本の地図
  • 動かす
  • 書く
  • 01〜02 Python はどこで動くか・入れ方と版
  • 03〜07 文法・データ・関数・分岐と例外・クラス
  • 分ける
  • 入れる・共有する
  • 08〜10 import の正体・パッケージ・ライブラリ
  • 11〜13 pip と PyPI・仮想環境・依存の記録
  • 配る・広げる
  • 全体の地図
  • 14〜17 パッケージを配る・型と道具・非同期・Web API
  • 18 全体の地図とエラーの読み方
  • 山場:第8章(import の正体)・第10章(ライブラリとフレームワーク)・第11章(pip と PyPI)
  • ひらめき
  • 前半で「書ける」ようになり、後半で「どこから来てなぜ動くか」を分解する。山場は第8・10・11章。

この本の読み方

この本の各章は、図と本文の2つでできています。

部分役目
図どこに何があるか。パソコンの中のフォルダ、インターネットの向こうの PyPI や GitHub、その間を動く小包
本文そのとき何が起きているか、なぜそうなっているか。コマンドとその出力、JS との対比
手元で試す本文のコマンドを自分で打ち、出力を自分の目で見る

3つ目がいちばん大事です。この本に出てくるパスやコマンドの出力は、読み手の環境によって少しずつ違います。たとえば /Users/you/ の you はあなたのユーザー名に、python3.13 の部分はあなたの Python の版になります。本の出力と自分の出力を見比べて「どこが同じで、どこが違うか」を確かめることが、そのまま仕組みの理解になります。

前提は次のとおりです。

前提内容
読み手JavaScript で関数・配列・オブジェクトを書き、npm install や import を使ったことがある人。Python は初めて
Python の版3.13 系。2025年10月に出た 3.14 でも、この本の内容はそのまま通じます
コマンドの例macOS と Linux のターミナル(zsh・bash)。Windows で違うところは、その都度書きます

コマンドの例で、行の頭の $ は「ここからがあなたの打つコマンド」という印です。$ 自体は打ちません。>>> は Python の対話モード(第1章)の印です。

  • JS から来た人の Python 00 ― はじめに
  • 15 / 17
  • この本の読み方
  • 写真
  • 図
  • 書類
  • 本文
  • ターミナル
  • 手元で試す
  • どこに何があるか・何が動くか
  • 裏で何が起きているか・なぜか
  • 出力を自分の目で見る
  • 前提
  • 内容
  • 読み手
  • JS(関数・配列・npm install・import)を使ったことがある人。Python は初めて
  • Python の版
  • 3.13 系(3.14 でも、この本の内容はそのまま通じる)
  • コマンドの例
  • macOS と Linux のターミナル。Windows の違いはその都度書く
  • ひらめき
  • 図は「どこにあるか」、本文は「そのとき何が起きているか」。コマンドは手元で打って確かめてほしい。

約束:読み終えたとき、魔法は1つも残らない

この本を読み終えたとき、あなたは図の5つを、自分の言葉で説明できるようになっています。

できるようになること例えばこう言える章
どの Python が動くか「python3 は PATH の左から探して最初に見つかったもの。which python3 で確かめられる」第1・2章
import がどこを読むか「sys.path のフォルダを上から探す。見つかったファイルは requests.__file__ で見られる」第8・9章
ライブラリとフレームワーク「requests は自分が呼ぶ。FastAPI は自分の関数を呼ぶ」第10章
pip install が何をするか「PyPI から wheel を落として、今の Python の site-packages に広げる」第11章
共有のしかた「.venv は上げず、pyproject.toml と uv.lock を上げる。相手は uv sync で入れ直す」第12〜14章

こう説明できるようになると、エラーの見え方が変わります。ModuleNotFoundError: No module named 'requests' と出たら、「探している場所(sys.path)に requests が無い。つまり、入れた Python と、いま動いている Python が違うのでは?」と、原因の見当が自分でつけられます。

「なんとなく動く」は、動かなくなったときに手も足も出ません。「こういう順番で動く」は、動かなくなったときにどこが崩れたかを順番にたどれます。この本がめざすのは後者です。

途中で分からなくなったら、第18章の全体の地図に戻ってください。困ったときの確かめ方も、そこにまとめてあります。

  • JS から来た人の Python 00 ― はじめに
  • 16 / 17
  • 約束:読み終えたとき、魔法は1つも残らない
  • OK
  • python3 と打ったとき、どのファイルが動くか言える(第1・2章)
  • OK
  • import requests が、どのフォルダのどのファイルを読むか言える(第8・9章)
  • OK
  • ライブラリとフレームワークの違いを、呼ぶ向きで言える(第10章)
  • OK
  • pip install が、どこから何を取ってきて、どこに置くか言える(第11章)
  • OK
  • GitHub に何を上げ、相手が何をすれば動くか言える(第12〜14章)
  • 分からなくなったら第18章の地図に戻る。困ったときの確かめ方もそこにまとめる
  • ひらめき
  • どの1行も「どこの何が・どの順で動くか」を自分で説明できる。そうなれば、迷わず書き始められる。

まとめ:Python は「どこに何があるか」で分かる

この章で見たことをまとめます。

項目内容
この本の目的import・pip・venv・共有・フレームワークについての「細かい疑念」を1つも残さない
import決まったフォルダを順に探し、見つけた .py を実行して使えるようにする(第8章)
pip installPyPI から wheel を落として site-packages に展開する。import とは別の仕事(第11章)
置き場所の違いpip は既定で「その Python 全体」に置く。だからプロジェクトごとの箱(venv)を作る(第12章)
共有コードと一覧だけを GitHub へ。相手は一覧から入れ直す(第13章)
ライブラリとフレームワークあなたが呼ぶのがライブラリ、あなたを呼ぶのがフレームワーク(第10・17章)
題材天気を表示する tenki を、1ファイルから Web API まで育てる

では、最初の魔法から分解していきましょう。いちばん最初に打つことになる1行、python3 main.py。このとき「Python」とは、いったい何が、どこで動いているのでしょうか。JS の node main.js と同じなのか、違うのか。ブラウザの中では動かないのはなぜか。

次の第1章では、「Python」の正体を、パソコンの中の実際のファイルとして見つけるところから始めます。

  • JS から来た人の Python 00 ― はじめに
  • 17 / 17
  • まとめ:Python は「どこに何があるか」で分かる
  • 項目
  • この章で見たこと
  • この本の目的
  • import・pip・venv などの「細かい疑念」を1つも残さない
  • import
  • 決まったフォルダを順に探して、見つけた .py を実行するだけ(第8章)
  • pip install
  • PyPI から wheel を落として site-packages に置くだけ(第11章)
  • 共有
  • コードと一覧を GitHub へ。相手は一覧から入れ直す(第13章)
  • フレームワーク
  • あなたの関数を呼んでくれる骨組み(第10・17章)
  • 題材
  • 天気を表示する tenki を、1ファイルから Web API まで育てる
  • ひらめき
  • 次の第1章では、いちばん最初の魔法 python3 main.py の裏で何が起きているかを分解する。

0 件のコメント

読み込み中…

権利侵害・不適切な内容の連絡: [email protected]