<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://www.nakamuri.info/mw/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
		<id>https://www.nakamuri.info/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nakamuri</id>
		<title>tknotebook - 利用者の投稿記録 [ja]</title>
		<link rel="self" type="application/atom+xml" href="https://www.nakamuri.info/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nakamuri"/>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Nakamuri"/>
		<updated>2026-11-01T17:16:46Z</updated>
		<subtitle>利用者の投稿記録</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:27:24Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* インストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
この記事では、uv を始めるにあたって、必要最低限のスタートの仕方を簡単に説明します。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。インストール時 pythonは不要です。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
これだけで uv コマンドが使えるようになります。&lt;br /&gt;
&lt;br /&gt;
尚、uvコマンドを使う前に、pythonは別途 PIM(Python Install Manager)で予めインストールしておくことをお勧めします。&lt;br /&gt;
&lt;br /&gt;
pythonが無ければ uv が自動的に uv版の python をインストールしてくれますが&lt;br /&gt;
少し特殊なので、最初から使うのはお勧めしません。python.org 謹製の PIM でインストールした&lt;br /&gt;
python をお勧めします。&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトディレクトリにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最低限の設定は終わってます。&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、'''uv build''' でwheel を作成、'''ub publish'''でリポジトリサーバーへ登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;br /&gt;
&lt;br /&gt;
==ここから始める==&lt;br /&gt;
&lt;br /&gt;
以上で最低限の動くひな形は作成完了。&lt;br /&gt;
&lt;br /&gt;
Powershell でプロジェクトディレクトリに移動し&lt;br /&gt;
&lt;br /&gt;
 code .&lt;br /&gt;
&lt;br /&gt;
で即、vscode で開発を始められます。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:25:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* インストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
この記事では、uv を始めるにあたって、必要最低限のスタートの仕方を簡単に説明します。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。インストール時 pythonは不要です。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
これだけで uv コマンドが使えるようになります。&lt;br /&gt;
&lt;br /&gt;
尚 pythonは別途 PIM(Python Install Manager)で予めインストールしておくことをお勧めします。&lt;br /&gt;
&lt;br /&gt;
pythonが無ければ uv が自動的に uv版の python をインストールしてくれますが&lt;br /&gt;
少し特殊なので、最初から使うのはお勧めしません。python.org 謹製の PIM でインストールした&lt;br /&gt;
python をお勧めします。&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトディレクトリにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最低限の設定は終わってます。&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、'''uv build''' でwheel を作成、'''ub publish'''でリポジトリサーバーへ登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;br /&gt;
&lt;br /&gt;
==ここから始める==&lt;br /&gt;
&lt;br /&gt;
以上で最低限の動くひな形は作成完了。&lt;br /&gt;
&lt;br /&gt;
Powershell でプロジェクトディレクトリに移動し&lt;br /&gt;
&lt;br /&gt;
 code .&lt;br /&gt;
&lt;br /&gt;
で即、vscode で開発を始められます。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:24:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* インストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
この記事では、uv を始めるにあたって、必要最低限のスタートの仕方を簡単に説明します。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
これだけで uv コマンドが使えるようになります。&lt;br /&gt;
&lt;br /&gt;
尚 pythonは別途 PIM(Python Install Manager)で予めインストールしておくことをお勧めします。&lt;br /&gt;
&lt;br /&gt;
pythonが無ければ uv が自動的に uv版の python をインストールしてくれますが&lt;br /&gt;
少し特殊なので、最初から使うのはお勧めしません。python.org 謹製の PIM でインストールした&lt;br /&gt;
python をお勧めします。&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトディレクトリにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最低限の設定は終わってます。&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、'''uv build''' でwheel を作成、'''ub publish'''でリポジトリサーバーへ登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;br /&gt;
&lt;br /&gt;
==ここから始める==&lt;br /&gt;
&lt;br /&gt;
以上で最低限の動くひな形は作成完了。&lt;br /&gt;
&lt;br /&gt;
Powershell でプロジェクトディレクトリに移動し&lt;br /&gt;
&lt;br /&gt;
 code .&lt;br /&gt;
&lt;br /&gt;
で即、vscode で開発を始められます。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:18:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* インストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
この記事では、uv を始めるにあたって、必要最低限のスタートの仕方を簡単に説明します。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
これだけで uv コマンドが使えるようになります。&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトディレクトリにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最低限の設定は終わってます。&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、'''uv build''' でwheel を作成、'''ub publish'''でリポジトリサーバーへ登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;br /&gt;
&lt;br /&gt;
==ここから始める==&lt;br /&gt;
&lt;br /&gt;
以上で最低限の動くひな形は作成完了。&lt;br /&gt;
&lt;br /&gt;
Powershell でプロジェクトディレクトリに移動し&lt;br /&gt;
&lt;br /&gt;
 code .&lt;br /&gt;
&lt;br /&gt;
で即、vscode で開発を始められます。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:17:54Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
この記事では、uv を始めるにあたって、必要最低限のスタートの仕方を簡単に説明します。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトディレクトリにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最低限の設定は終わってます。&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、'''uv build''' でwheel を作成、'''ub publish'''でリポジトリサーバーへ登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;br /&gt;
&lt;br /&gt;
==ここから始める==&lt;br /&gt;
&lt;br /&gt;
以上で最低限の動くひな形は作成完了。&lt;br /&gt;
&lt;br /&gt;
Powershell でプロジェクトディレクトリに移動し&lt;br /&gt;
&lt;br /&gt;
 code .&lt;br /&gt;
&lt;br /&gt;
で即、vscode で開発を始められます。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8"/>
				<updated>2026-10-27T03:16:51Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* 最新情報 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:共通]]&lt;br /&gt;
[[ファイル:Header2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
== '''TK Notebook へようこそ''' ==&lt;br /&gt;
&lt;br /&gt;
私は何故かQ&amp;amp;Aというものが好きで、メーリングリストで回答役になったり、教えて goo などにしこしこ回答を書いていることが多いのですが、&lt;br /&gt;
それをまた文書にまとめるのも好きなんです。&lt;br /&gt;
&lt;br /&gt;
このサイトは、いままでいろいろ書き溜めたメモを置くために作りました。&lt;br /&gt;
&lt;br /&gt;
最初は WordPress とか、HTMLの手打ちとか、いろいろ考えたのですが、数式が書きたいとか、管理に手間がかかると続かないとか、気が付いたら何処でも直せたらとか、いろいろ考え、紆余曲折を経て ConoHa VPS + MediaWiki に落ち着きました。&lt;br /&gt;
&lt;br /&gt;
物理とか数学とかプログラミングとか、いろいろな話題をできるだけわかりやすい形で紹介したいと考えています。&lt;br /&gt;
&lt;br /&gt;
このサイトの内容が皆さんのお役にたてば幸いです。&lt;br /&gt;
&lt;br /&gt;
2014年11月 中村&lt;br /&gt;
&lt;br /&gt;
なにかご意見があれば mailto:tknakamuri@gmail.com まで&lt;br /&gt;
&lt;br /&gt;
== '''最新情報''' ==&lt;br /&gt;
&lt;br /&gt;
;2026年10月27日&lt;br /&gt;
:'''「[[Uv tips]]」'''に'''「[[uv のミニマム]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月10日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonアプリケーションを起動する]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月9日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月8日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月7日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」''' を Python Install Manager に対応するように修正しました。 &lt;br /&gt;
;2025年2月16日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「光学」'''に'''「[[ヤングの実験の光路長差について]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2018年12月01日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PyCharm CEからFlaskアプリを起動する]]」'''を追加しました。&lt;br /&gt;
;2018年11月18日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を更新しました。&lt;br /&gt;
;2018年9月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの引数の引き渡し]]」'''を追加しました。&lt;br /&gt;
;2018年8月27日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[Pack ジオメトリマネージャ]]」'''を追加しました。&lt;br /&gt;
;2018年8月14日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PythonのHELP]]」'''を追加しました。&lt;br /&gt;
;2018年2月10日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[いろいろなウィジェット]]」'''を追加しました。&lt;br /&gt;
;2018年2月1日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム　ハロー]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[シンプルアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2018年1月3日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの環境とは何か？]]」'''を追加しました。&lt;br /&gt;
;2018年1月1日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで簡単にロギングを行うには]]」'''を追加しました。&lt;br /&gt;
;2017年8月15日&lt;br /&gt;
:'''「[[数学の部屋#複素数]]」'''に複素数の話題を幾つか追加しました。&lt;br /&gt;
;2017年7月22日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Aptana3.6.1を使って見る]]」'''を追加しました。&lt;br /&gt;
;2017年7月17日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS MediaWikiにログインできなくなった！]]」'''を追加しました。&lt;br /&gt;
;2017年4月2日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[Maven test でテストが実行されない]]」'''を追加しました。&lt;br /&gt;
;2017年2月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2017年1月21日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[特定の行の checkstyle のチェックを抑制するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月17日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[管理者のみが見られる画面を作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 ベストプラクティス]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 で画面で JavaScriptやCSS の読み込みを記述するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでセッションを使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでアクションクラスを知るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月31日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で scala を初めて実行する時嵌りやすいこと]]」'''を追加しました。&lt;br /&gt;
;2016年12月22日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 の struts.xml や struts.properties で指定する設定の一覧はどこ？]]」'''を追加しました。&lt;br /&gt;
;2016年12月18日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で CheckStyle を使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でフォームで複数ボタンを使う際、ボタンでアクションを切り替えるには]]」'''を追加しました。&lt;br /&gt;
;2016年12月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でリンクボタンを作るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月10日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[変換エラーメッセージを日本語にするには]]」'''を追加しました。&lt;br /&gt;
;2016年12月9日&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[リモートリポジトリの巻き戻しが拒否される]]」'''を追加しました。&lt;br /&gt;
;2016年11月29日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に NextCloudを入れてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:別の記事にもありますように、サーバの他のサービスのセキュリティ向上のため、というのは建前で(^^;, '''SSL証明書というものを個人でとって使ってみたかったので'''、Webは完全にSSLへリダイレクトすることにしました。設定の何か所かに http が直書きされていたので取り除きました(^^; 証明書がしょぼくて見えないという方がおられましたらご連絡をお願いします。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS の apache がhttpを httpsへリダイレクトするようにしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ラグランジュの運動方程式の導出]]」'''に'''「[[ラグランジュの運動方程式の導出#ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ | ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS への MediaWikiのインストール]]」'''に'''「[[ConoHa VPS への MediaWikiのインストール#追記3|追記3]]」'''を追加しました。SSL化するのに必要な MediaWikiの変更事項です。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に SSL証明書を取得してみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月21日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[JUnitのpom.xmlの設定]]」'''を追加しました。&lt;br /&gt;
;2016年11月19日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisで行ロック(悲観ロック)を行うには？]]」'''を追加しました。&lt;br /&gt;
;2016年11月16日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[ステートメントにパラメータを複数渡す]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[NULL を確実に設定できるようにするには]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisを使ってみる]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コマンドラインで依存するライブラリやプラグインを全てダウンロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[MySQL]]」'''に'''「[[Mysql-connector-java のバグで JavaからMySQLに接続できない]]」'''を追加しました。&lt;br /&gt;
;2016年11月5日&lt;br /&gt;
:'''「[[Mercurial Tips]]」'''に'''「[[Mercurialの 読込不可のパターンファイル・・・・　というエラーメッセージを消すには]]」'''を追加しました。&lt;br /&gt;
;2016年11月1日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Mercurialをインストールしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年10月25日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Gitサーバを立ててみた]]」'''を追加しました。&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[git commit のエディターに秀丸を指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月22日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[プラグインのゴールとその説明を見るには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルリポジトリからプロジェクトを削除するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルなJARをプロジェクトに追加するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月19日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ソースのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コンパイルでのJavaバージョンを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年9月26日&lt;br /&gt;
:'''「[[コンピュータの部屋#Windows]]」'''に'''「[[Windows 10 で スマホをMTP接続できなくなった時の対処法]]」'''を追加しました。&lt;br /&gt;
;2016年9月25日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2で slf4j+logback を使うには]]」'''を追加しました。&lt;br /&gt;
;2016年9月24日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Pom.xml の編集で 依存関係の追加 の際、検索を可能にするには]]」'''を追加しました。&lt;br /&gt;
;2016年9月17日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[最初のアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2016年9月10日&lt;br /&gt;
:CSS改良。見出しを若干見やすくしました。&lt;br /&gt;
;2016年8月27日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipseでアプリのソース変更時、WildFlyをリロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年8月26日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipse(Neon)にWildFlyを登録するには]]」'''を追加しました。&lt;br /&gt;
;2016年8月18日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[EclipseでJSFのmavenベースのプロジェクトを作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[JSFでの inputText タグの文字化け対処]]」'''を追加しました。&lt;br /&gt;
;2016年8月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2のひな形を作成するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月30日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JDBCによる悲観ロックの落とし穴]]」'''を追加しました。&lt;br /&gt;
;2016年7月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaDBにSquirrelから接続するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月15日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を大きく更新しました。&lt;br /&gt;
;2016年6月21日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を追加しました。&lt;br /&gt;
;2016年6月19日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでComboBoxの選択肢を列挙型するには]]」'''を加えました。&lt;br /&gt;
;2016年5月30日&lt;br /&gt;
:'''「[[Gradle Tips]]」'''に'''「[[Javaのコンパイルで、ソースファイルのエンコーディングを UTF-8にするには]]」'''を追加しました。&lt;br /&gt;
;2016年5月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaとGroovyでソースファイルのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年5月11日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[TableViewでセルのアライメントを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年4月3日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[JavaFXの Hello World]]」'''を追加しました。&lt;br /&gt;
;2016年4月1日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''の'''「[[JavaFXの座標系と座標変換]]」'''を大幅に更新し、3Dカメラの記述を加えました。&lt;br /&gt;
;2016年3月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[パラレルカメラのクリッピングを変更するには]]」'''を追加しました。&lt;br /&gt;
;2016年3月27日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[JavaFXの座標系と座標変換]]」'''を追加しました。&lt;br /&gt;
;2016年3月17日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[指定方向のローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年3月5日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[美しいローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年2月20日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[デフォルトプロパティの探し方]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラを初期化するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラでStageを使いたい]]」'''を追加しました。&lt;br /&gt;
;2015年12月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでChoiceBoxの選択肢を記述するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月29日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでノードを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月27日&lt;br /&gt;
:'''「[[コンピュータの部屋]]'''の'''「電卓」'''に'''「[[Fx-cp400]]」'''の記事を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[幾何学単位系]]」'''を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[ステージを完全に透明化するには]]」'''を追加しました。&lt;br /&gt;
;2015年11月5日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[Default Activity Not Found が出たら]]」'''を追加しました。&lt;br /&gt;
;2015年11月1日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioで効率よくJavaBeansを作成するには]]」'''&lt;br /&gt;
;2015年10月28日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Espressoでビルドエラーがでたら]]」'''を追加しました。&lt;br /&gt;
;2015年10月13日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[別プロジェクトのモジュールを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年10月08日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Up Navigation を実装するには]]」'''を追加しました。&lt;br /&gt;
;2015年 9月29日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioでSubversionを使ってプロジェクトを共有]]」'''を追加しました。また'''「[[AndroidStudioからSubversionへインポート]]」'''を修正しました。&lt;br /&gt;
;2015年 9月22日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[カスタムビューを作る]]」'''を追加しました。&lt;br /&gt;
;2015年 9月20日&lt;br /&gt;
:'''「[[コンピュータの部屋#Android|Android]]」'''にAndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 9月14日&lt;br /&gt;
:[[コンピュータの部屋]]に[[コンピュータの部屋#Android|Android]]を追加。AndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[媒介変数表示]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[ファイルのデータを描く]]」'''を追加しました。&lt;br /&gt;
;2015年 8月20日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[3Dグラフの表示方法を変える]]」'''を追加しました。&lt;br /&gt;
;2015年 8月19日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示が荒すぎるのを治す]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月13日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[座標軸に目盛を付けるには(3D)]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月06日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[viewの意味]]」'''などをたくさん追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月05日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示範囲を決める]]」'''、'''「[[座標軸に目盛を付けるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月04日&lt;br /&gt;
:[[コンピュータの部屋]]に記事追加。'''[[GNUPLOT]]'''の記事を2本追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月30日&lt;br /&gt;
:[[物理の部屋]]に記事追加。解析力学を新設し、'''「[[ラグランジュの運動方程式の導出]]」'''の記事を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月12日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[オイラー角]]''' を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月11日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[座標変換と回転]]''' を追加追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 5月29日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月30日&lt;br /&gt;
:[[物理の部屋]]を新設。物理のトンデモサイト紹介に'''「[[カーナビの相対論効果は嘘]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月20日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 2月08日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 1月30日&lt;br /&gt;
:[[モバイルの部屋]]を作り、最初の記事 '''「[[priori2を買いました]]」''' を書きました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSを再調整&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSも改修。若干見やすくしました。数式表示をextension:Mathjaxから extension:Math へ移行完了。数式の表示が大きくなり、また、一部のFHDタブレットでの表示の不具合がなくなりました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月27日&lt;br /&gt;
:現在 数学の部屋を改装中。Extension:MathJaxからExtension:Math(サーバサイドでPNG生成)に移行中です。現在数式がまともに表示されません。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8"/>
				<updated>2026-10-27T03:16:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* 最新情報 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:共通]]&lt;br /&gt;
[[ファイル:Header2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
== '''TK Notebook へようこそ''' ==&lt;br /&gt;
&lt;br /&gt;
私は何故かQ&amp;amp;Aというものが好きで、メーリングリストで回答役になったり、教えて goo などにしこしこ回答を書いていることが多いのですが、&lt;br /&gt;
それをまた文書にまとめるのも好きなんです。&lt;br /&gt;
&lt;br /&gt;
このサイトは、いままでいろいろ書き溜めたメモを置くために作りました。&lt;br /&gt;
&lt;br /&gt;
最初は WordPress とか、HTMLの手打ちとか、いろいろ考えたのですが、数式が書きたいとか、管理に手間がかかると続かないとか、気が付いたら何処でも直せたらとか、いろいろ考え、紆余曲折を経て ConoHa VPS + MediaWiki に落ち着きました。&lt;br /&gt;
&lt;br /&gt;
物理とか数学とかプログラミングとか、いろいろな話題をできるだけわかりやすい形で紹介したいと考えています。&lt;br /&gt;
&lt;br /&gt;
このサイトの内容が皆さんのお役にたてば幸いです。&lt;br /&gt;
&lt;br /&gt;
2014年11月 中村&lt;br /&gt;
&lt;br /&gt;
なにかご意見があれば mailto:tknakamuri@gmail.com まで&lt;br /&gt;
&lt;br /&gt;
== '''最新情報''' ==&lt;br /&gt;
&lt;br /&gt;
;2026年10月27日&lt;br /&gt;
:'''「[[Uv tips]]」'''に'''「[[uv ミニマム]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;2026年10月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月10日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonアプリケーションを起動する]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月9日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月8日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月7日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」''' を Python Install Manager に対応するように修正しました。 &lt;br /&gt;
;2025年2月16日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「光学」'''に'''「[[ヤングの実験の光路長差について]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2018年12月01日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PyCharm CEからFlaskアプリを起動する]]」'''を追加しました。&lt;br /&gt;
;2018年11月18日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を更新しました。&lt;br /&gt;
;2018年9月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの引数の引き渡し]]」'''を追加しました。&lt;br /&gt;
;2018年8月27日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[Pack ジオメトリマネージャ]]」'''を追加しました。&lt;br /&gt;
;2018年8月14日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PythonのHELP]]」'''を追加しました。&lt;br /&gt;
;2018年2月10日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[いろいろなウィジェット]]」'''を追加しました。&lt;br /&gt;
;2018年2月1日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム　ハロー]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[シンプルアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2018年1月3日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの環境とは何か？]]」'''を追加しました。&lt;br /&gt;
;2018年1月1日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで簡単にロギングを行うには]]」'''を追加しました。&lt;br /&gt;
;2017年8月15日&lt;br /&gt;
:'''「[[数学の部屋#複素数]]」'''に複素数の話題を幾つか追加しました。&lt;br /&gt;
;2017年7月22日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Aptana3.6.1を使って見る]]」'''を追加しました。&lt;br /&gt;
;2017年7月17日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS MediaWikiにログインできなくなった！]]」'''を追加しました。&lt;br /&gt;
;2017年4月2日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[Maven test でテストが実行されない]]」'''を追加しました。&lt;br /&gt;
;2017年2月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2017年1月21日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[特定の行の checkstyle のチェックを抑制するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月17日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[管理者のみが見られる画面を作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 ベストプラクティス]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 で画面で JavaScriptやCSS の読み込みを記述するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでセッションを使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでアクションクラスを知るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月31日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で scala を初めて実行する時嵌りやすいこと]]」'''を追加しました。&lt;br /&gt;
;2016年12月22日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 の struts.xml や struts.properties で指定する設定の一覧はどこ？]]」'''を追加しました。&lt;br /&gt;
;2016年12月18日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で CheckStyle を使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でフォームで複数ボタンを使う際、ボタンでアクションを切り替えるには]]」'''を追加しました。&lt;br /&gt;
;2016年12月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でリンクボタンを作るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月10日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[変換エラーメッセージを日本語にするには]]」'''を追加しました。&lt;br /&gt;
;2016年12月9日&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[リモートリポジトリの巻き戻しが拒否される]]」'''を追加しました。&lt;br /&gt;
;2016年11月29日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に NextCloudを入れてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:別の記事にもありますように、サーバの他のサービスのセキュリティ向上のため、というのは建前で(^^;, '''SSL証明書というものを個人でとって使ってみたかったので'''、Webは完全にSSLへリダイレクトすることにしました。設定の何か所かに http が直書きされていたので取り除きました(^^; 証明書がしょぼくて見えないという方がおられましたらご連絡をお願いします。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS の apache がhttpを httpsへリダイレクトするようにしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ラグランジュの運動方程式の導出]]」'''に'''「[[ラグランジュの運動方程式の導出#ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ | ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS への MediaWikiのインストール]]」'''に'''「[[ConoHa VPS への MediaWikiのインストール#追記3|追記3]]」'''を追加しました。SSL化するのに必要な MediaWikiの変更事項です。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に SSL証明書を取得してみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月21日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[JUnitのpom.xmlの設定]]」'''を追加しました。&lt;br /&gt;
;2016年11月19日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisで行ロック(悲観ロック)を行うには？]]」'''を追加しました。&lt;br /&gt;
;2016年11月16日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[ステートメントにパラメータを複数渡す]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[NULL を確実に設定できるようにするには]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisを使ってみる]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コマンドラインで依存するライブラリやプラグインを全てダウンロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[MySQL]]」'''に'''「[[Mysql-connector-java のバグで JavaからMySQLに接続できない]]」'''を追加しました。&lt;br /&gt;
;2016年11月5日&lt;br /&gt;
:'''「[[Mercurial Tips]]」'''に'''「[[Mercurialの 読込不可のパターンファイル・・・・　というエラーメッセージを消すには]]」'''を追加しました。&lt;br /&gt;
;2016年11月1日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Mercurialをインストールしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年10月25日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Gitサーバを立ててみた]]」'''を追加しました。&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[git commit のエディターに秀丸を指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月22日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[プラグインのゴールとその説明を見るには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルリポジトリからプロジェクトを削除するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルなJARをプロジェクトに追加するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月19日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ソースのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コンパイルでのJavaバージョンを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年9月26日&lt;br /&gt;
:'''「[[コンピュータの部屋#Windows]]」'''に'''「[[Windows 10 で スマホをMTP接続できなくなった時の対処法]]」'''を追加しました。&lt;br /&gt;
;2016年9月25日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2で slf4j+logback を使うには]]」'''を追加しました。&lt;br /&gt;
;2016年9月24日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Pom.xml の編集で 依存関係の追加 の際、検索を可能にするには]]」'''を追加しました。&lt;br /&gt;
;2016年9月17日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[最初のアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2016年9月10日&lt;br /&gt;
:CSS改良。見出しを若干見やすくしました。&lt;br /&gt;
;2016年8月27日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipseでアプリのソース変更時、WildFlyをリロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年8月26日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipse(Neon)にWildFlyを登録するには]]」'''を追加しました。&lt;br /&gt;
;2016年8月18日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[EclipseでJSFのmavenベースのプロジェクトを作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[JSFでの inputText タグの文字化け対処]]」'''を追加しました。&lt;br /&gt;
;2016年8月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2のひな形を作成するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月30日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JDBCによる悲観ロックの落とし穴]]」'''を追加しました。&lt;br /&gt;
;2016年7月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaDBにSquirrelから接続するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月15日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を大きく更新しました。&lt;br /&gt;
;2016年6月21日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を追加しました。&lt;br /&gt;
;2016年6月19日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでComboBoxの選択肢を列挙型するには]]」'''を加えました。&lt;br /&gt;
;2016年5月30日&lt;br /&gt;
:'''「[[Gradle Tips]]」'''に'''「[[Javaのコンパイルで、ソースファイルのエンコーディングを UTF-8にするには]]」'''を追加しました。&lt;br /&gt;
;2016年5月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaとGroovyでソースファイルのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年5月11日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[TableViewでセルのアライメントを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年4月3日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[JavaFXの Hello World]]」'''を追加しました。&lt;br /&gt;
;2016年4月1日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''の'''「[[JavaFXの座標系と座標変換]]」'''を大幅に更新し、3Dカメラの記述を加えました。&lt;br /&gt;
;2016年3月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[パラレルカメラのクリッピングを変更するには]]」'''を追加しました。&lt;br /&gt;
;2016年3月27日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[JavaFXの座標系と座標変換]]」'''を追加しました。&lt;br /&gt;
;2016年3月17日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[指定方向のローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年3月5日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[美しいローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年2月20日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[デフォルトプロパティの探し方]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラを初期化するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラでStageを使いたい]]」'''を追加しました。&lt;br /&gt;
;2015年12月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでChoiceBoxの選択肢を記述するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月29日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでノードを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月27日&lt;br /&gt;
:'''「[[コンピュータの部屋]]'''の'''「電卓」'''に'''「[[Fx-cp400]]」'''の記事を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[幾何学単位系]]」'''を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[ステージを完全に透明化するには]]」'''を追加しました。&lt;br /&gt;
;2015年11月5日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[Default Activity Not Found が出たら]]」'''を追加しました。&lt;br /&gt;
;2015年11月1日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioで効率よくJavaBeansを作成するには]]」'''&lt;br /&gt;
;2015年10月28日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Espressoでビルドエラーがでたら]]」'''を追加しました。&lt;br /&gt;
;2015年10月13日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[別プロジェクトのモジュールを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年10月08日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Up Navigation を実装するには]]」'''を追加しました。&lt;br /&gt;
;2015年 9月29日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioでSubversionを使ってプロジェクトを共有]]」'''を追加しました。また'''「[[AndroidStudioからSubversionへインポート]]」'''を修正しました。&lt;br /&gt;
;2015年 9月22日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[カスタムビューを作る]]」'''を追加しました。&lt;br /&gt;
;2015年 9月20日&lt;br /&gt;
:'''「[[コンピュータの部屋#Android|Android]]」'''にAndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 9月14日&lt;br /&gt;
:[[コンピュータの部屋]]に[[コンピュータの部屋#Android|Android]]を追加。AndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[媒介変数表示]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[ファイルのデータを描く]]」'''を追加しました。&lt;br /&gt;
;2015年 8月20日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[3Dグラフの表示方法を変える]]」'''を追加しました。&lt;br /&gt;
;2015年 8月19日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示が荒すぎるのを治す]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月13日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[座標軸に目盛を付けるには(3D)]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月06日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[viewの意味]]」'''などをたくさん追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月05日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示範囲を決める]]」'''、'''「[[座標軸に目盛を付けるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月04日&lt;br /&gt;
:[[コンピュータの部屋]]に記事追加。'''[[GNUPLOT]]'''の記事を2本追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月30日&lt;br /&gt;
:[[物理の部屋]]に記事追加。解析力学を新設し、'''「[[ラグランジュの運動方程式の導出]]」'''の記事を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月12日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[オイラー角]]''' を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月11日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[座標変換と回転]]''' を追加追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 5月29日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月30日&lt;br /&gt;
:[[物理の部屋]]を新設。物理のトンデモサイト紹介に'''「[[カーナビの相対論効果は嘘]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月20日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 2月08日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 1月30日&lt;br /&gt;
:[[モバイルの部屋]]を作り、最初の記事 '''「[[priori2を買いました]]」''' を書きました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSを再調整&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSも改修。若干見やすくしました。数式表示をextension:Mathjaxから extension:Math へ移行完了。数式の表示が大きくなり、また、一部のFHDタブレットでの表示の不具合がなくなりました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月27日&lt;br /&gt;
:現在 数学の部屋を改装中。Extension:MathJaxからExtension:Math(サーバサイドでPNG生成)に移行中です。現在数式がまともに表示されません。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8"/>
				<updated>2026-10-27T03:14:58Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* 最新情報 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:共通]]&lt;br /&gt;
[[ファイル:Header2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
== '''TK Notebook へようこそ''' ==&lt;br /&gt;
&lt;br /&gt;
私は何故かQ&amp;amp;Aというものが好きで、メーリングリストで回答役になったり、教えて goo などにしこしこ回答を書いていることが多いのですが、&lt;br /&gt;
それをまた文書にまとめるのも好きなんです。&lt;br /&gt;
&lt;br /&gt;
このサイトは、いままでいろいろ書き溜めたメモを置くために作りました。&lt;br /&gt;
&lt;br /&gt;
最初は WordPress とか、HTMLの手打ちとか、いろいろ考えたのですが、数式が書きたいとか、管理に手間がかかると続かないとか、気が付いたら何処でも直せたらとか、いろいろ考え、紆余曲折を経て ConoHa VPS + MediaWiki に落ち着きました。&lt;br /&gt;
&lt;br /&gt;
物理とか数学とかプログラミングとか、いろいろな話題をできるだけわかりやすい形で紹介したいと考えています。&lt;br /&gt;
&lt;br /&gt;
このサイトの内容が皆さんのお役にたてば幸いです。&lt;br /&gt;
&lt;br /&gt;
2014年11月 中村&lt;br /&gt;
&lt;br /&gt;
なにかご意見があれば mailto:tknakamuri@gmail.com まで&lt;br /&gt;
&lt;br /&gt;
== '''最新情報''' ==&lt;br /&gt;
&lt;br /&gt;
;2026年10月27日&lt;br /&gt;
:'''「[[UV Tips]]」'''に'''「[[uv ミニマム]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;2026年10月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月10日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonアプリケーションを起動する]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月9日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月8日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月7日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」''' を Python Install Manager に対応するように修正しました。 &lt;br /&gt;
;2025年2月16日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「光学」'''に'''「[[ヤングの実験の光路長差について]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2018年12月01日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PyCharm CEからFlaskアプリを起動する]]」'''を追加しました。&lt;br /&gt;
;2018年11月18日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を更新しました。&lt;br /&gt;
;2018年9月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの引数の引き渡し]]」'''を追加しました。&lt;br /&gt;
;2018年8月27日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[Pack ジオメトリマネージャ]]」'''を追加しました。&lt;br /&gt;
;2018年8月14日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PythonのHELP]]」'''を追加しました。&lt;br /&gt;
;2018年2月10日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[いろいろなウィジェット]]」'''を追加しました。&lt;br /&gt;
;2018年2月1日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム　ハロー]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[シンプルアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2018年1月3日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの環境とは何か？]]」'''を追加しました。&lt;br /&gt;
;2018年1月1日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで簡単にロギングを行うには]]」'''を追加しました。&lt;br /&gt;
;2017年8月15日&lt;br /&gt;
:'''「[[数学の部屋#複素数]]」'''に複素数の話題を幾つか追加しました。&lt;br /&gt;
;2017年7月22日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Aptana3.6.1を使って見る]]」'''を追加しました。&lt;br /&gt;
;2017年7月17日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS MediaWikiにログインできなくなった！]]」'''を追加しました。&lt;br /&gt;
;2017年4月2日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[Maven test でテストが実行されない]]」'''を追加しました。&lt;br /&gt;
;2017年2月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2017年1月21日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[特定の行の checkstyle のチェックを抑制するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月17日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[管理者のみが見られる画面を作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 ベストプラクティス]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 で画面で JavaScriptやCSS の読み込みを記述するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでセッションを使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでアクションクラスを知るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月31日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で scala を初めて実行する時嵌りやすいこと]]」'''を追加しました。&lt;br /&gt;
;2016年12月22日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 の struts.xml や struts.properties で指定する設定の一覧はどこ？]]」'''を追加しました。&lt;br /&gt;
;2016年12月18日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で CheckStyle を使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でフォームで複数ボタンを使う際、ボタンでアクションを切り替えるには]]」'''を追加しました。&lt;br /&gt;
;2016年12月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でリンクボタンを作るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月10日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[変換エラーメッセージを日本語にするには]]」'''を追加しました。&lt;br /&gt;
;2016年12月9日&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[リモートリポジトリの巻き戻しが拒否される]]」'''を追加しました。&lt;br /&gt;
;2016年11月29日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に NextCloudを入れてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:別の記事にもありますように、サーバの他のサービスのセキュリティ向上のため、というのは建前で(^^;, '''SSL証明書というものを個人でとって使ってみたかったので'''、Webは完全にSSLへリダイレクトすることにしました。設定の何か所かに http が直書きされていたので取り除きました(^^; 証明書がしょぼくて見えないという方がおられましたらご連絡をお願いします。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS の apache がhttpを httpsへリダイレクトするようにしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ラグランジュの運動方程式の導出]]」'''に'''「[[ラグランジュの運動方程式の導出#ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ | ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS への MediaWikiのインストール]]」'''に'''「[[ConoHa VPS への MediaWikiのインストール#追記3|追記3]]」'''を追加しました。SSL化するのに必要な MediaWikiの変更事項です。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に SSL証明書を取得してみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月21日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[JUnitのpom.xmlの設定]]」'''を追加しました。&lt;br /&gt;
;2016年11月19日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisで行ロック(悲観ロック)を行うには？]]」'''を追加しました。&lt;br /&gt;
;2016年11月16日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[ステートメントにパラメータを複数渡す]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[NULL を確実に設定できるようにするには]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisを使ってみる]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コマンドラインで依存するライブラリやプラグインを全てダウンロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[MySQL]]」'''に'''「[[Mysql-connector-java のバグで JavaからMySQLに接続できない]]」'''を追加しました。&lt;br /&gt;
;2016年11月5日&lt;br /&gt;
:'''「[[Mercurial Tips]]」'''に'''「[[Mercurialの 読込不可のパターンファイル・・・・　というエラーメッセージを消すには]]」'''を追加しました。&lt;br /&gt;
;2016年11月1日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Mercurialをインストールしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年10月25日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Gitサーバを立ててみた]]」'''を追加しました。&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[git commit のエディターに秀丸を指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月22日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[プラグインのゴールとその説明を見るには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルリポジトリからプロジェクトを削除するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルなJARをプロジェクトに追加するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月19日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ソースのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コンパイルでのJavaバージョンを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年9月26日&lt;br /&gt;
:'''「[[コンピュータの部屋#Windows]]」'''に'''「[[Windows 10 で スマホをMTP接続できなくなった時の対処法]]」'''を追加しました。&lt;br /&gt;
;2016年9月25日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2で slf4j+logback を使うには]]」'''を追加しました。&lt;br /&gt;
;2016年9月24日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Pom.xml の編集で 依存関係の追加 の際、検索を可能にするには]]」'''を追加しました。&lt;br /&gt;
;2016年9月17日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[最初のアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2016年9月10日&lt;br /&gt;
:CSS改良。見出しを若干見やすくしました。&lt;br /&gt;
;2016年8月27日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipseでアプリのソース変更時、WildFlyをリロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年8月26日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipse(Neon)にWildFlyを登録するには]]」'''を追加しました。&lt;br /&gt;
;2016年8月18日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[EclipseでJSFのmavenベースのプロジェクトを作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[JSFでの inputText タグの文字化け対処]]」'''を追加しました。&lt;br /&gt;
;2016年8月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2のひな形を作成するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月30日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JDBCによる悲観ロックの落とし穴]]」'''を追加しました。&lt;br /&gt;
;2016年7月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaDBにSquirrelから接続するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月15日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を大きく更新しました。&lt;br /&gt;
;2016年6月21日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を追加しました。&lt;br /&gt;
;2016年6月19日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでComboBoxの選択肢を列挙型するには]]」'''を加えました。&lt;br /&gt;
;2016年5月30日&lt;br /&gt;
:'''「[[Gradle Tips]]」'''に'''「[[Javaのコンパイルで、ソースファイルのエンコーディングを UTF-8にするには]]」'''を追加しました。&lt;br /&gt;
;2016年5月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaとGroovyでソースファイルのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年5月11日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[TableViewでセルのアライメントを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年4月3日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[JavaFXの Hello World]]」'''を追加しました。&lt;br /&gt;
;2016年4月1日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''の'''「[[JavaFXの座標系と座標変換]]」'''を大幅に更新し、3Dカメラの記述を加えました。&lt;br /&gt;
;2016年3月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[パラレルカメラのクリッピングを変更するには]]」'''を追加しました。&lt;br /&gt;
;2016年3月27日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[JavaFXの座標系と座標変換]]」'''を追加しました。&lt;br /&gt;
;2016年3月17日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[指定方向のローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年3月5日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[美しいローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年2月20日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[デフォルトプロパティの探し方]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラを初期化するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラでStageを使いたい]]」'''を追加しました。&lt;br /&gt;
;2015年12月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでChoiceBoxの選択肢を記述するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月29日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでノードを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月27日&lt;br /&gt;
:'''「[[コンピュータの部屋]]'''の'''「電卓」'''に'''「[[Fx-cp400]]」'''の記事を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[幾何学単位系]]」'''を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[ステージを完全に透明化するには]]」'''を追加しました。&lt;br /&gt;
;2015年11月5日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[Default Activity Not Found が出たら]]」'''を追加しました。&lt;br /&gt;
;2015年11月1日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioで効率よくJavaBeansを作成するには]]」'''&lt;br /&gt;
;2015年10月28日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Espressoでビルドエラーがでたら]]」'''を追加しました。&lt;br /&gt;
;2015年10月13日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[別プロジェクトのモジュールを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年10月08日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Up Navigation を実装するには]]」'''を追加しました。&lt;br /&gt;
;2015年 9月29日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioでSubversionを使ってプロジェクトを共有]]」'''を追加しました。また'''「[[AndroidStudioからSubversionへインポート]]」'''を修正しました。&lt;br /&gt;
;2015年 9月22日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[カスタムビューを作る]]」'''を追加しました。&lt;br /&gt;
;2015年 9月20日&lt;br /&gt;
:'''「[[コンピュータの部屋#Android|Android]]」'''にAndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 9月14日&lt;br /&gt;
:[[コンピュータの部屋]]に[[コンピュータの部屋#Android|Android]]を追加。AndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[媒介変数表示]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[ファイルのデータを描く]]」'''を追加しました。&lt;br /&gt;
;2015年 8月20日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[3Dグラフの表示方法を変える]]」'''を追加しました。&lt;br /&gt;
;2015年 8月19日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示が荒すぎるのを治す]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月13日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[座標軸に目盛を付けるには(3D)]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月06日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[viewの意味]]」'''などをたくさん追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月05日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示範囲を決める]]」'''、'''「[[座標軸に目盛を付けるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月04日&lt;br /&gt;
:[[コンピュータの部屋]]に記事追加。'''[[GNUPLOT]]'''の記事を2本追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月30日&lt;br /&gt;
:[[物理の部屋]]に記事追加。解析力学を新設し、'''「[[ラグランジュの運動方程式の導出]]」'''の記事を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月12日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[オイラー角]]''' を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月11日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[座標変換と回転]]''' を追加追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 5月29日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月30日&lt;br /&gt;
:[[物理の部屋]]を新設。物理のトンデモサイト紹介に'''「[[カーナビの相対論効果は嘘]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月20日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 2月08日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 1月30日&lt;br /&gt;
:[[モバイルの部屋]]を作り、最初の記事 '''「[[priori2を買いました]]」''' を書きました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSを再調整&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSも改修。若干見やすくしました。数式表示をextension:Mathjaxから extension:Math へ移行完了。数式の表示が大きくなり、また、一部のFHDタブレットでの表示の不具合がなくなりました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月27日&lt;br /&gt;
:現在 数学の部屋を改装中。Extension:MathJaxからExtension:Math(サーバサイドでPNG生成)に移行中です。現在数式がまともに表示されません。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:11:40Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* __init__.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトディレクトリにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最低限の設定は終わってます。&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、'''uv build''' でwheel を作成、'''ub publish'''でリポジトリサーバーへ登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;br /&gt;
&lt;br /&gt;
==ここから始める==&lt;br /&gt;
&lt;br /&gt;
以上で最低限の動くひな形は作成完了。&lt;br /&gt;
&lt;br /&gt;
Powershell でプロジェクトディレクトリに移動し&lt;br /&gt;
&lt;br /&gt;
 code .&lt;br /&gt;
&lt;br /&gt;
で即、vscode で開発を始められます。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:09:18Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* pyproject.toml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトディレクトリにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最低限の設定は終わってます。&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、'''uv build''' でwheel を作成、'''ub publish'''でリポジトリサーバーへ登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:08:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* プロジェクトファイルにできるもの */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトディレクトリにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最低限の設定は終わってます。&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、uv build でwheel を作成、ub publishでリポジトリサーバーへ登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:07:32Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* pyproject.toml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトファイルにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最低限の設定は終わってます。&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、uv build でwheel を作成、ub publishでリポジトリサーバーへ登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:06:31Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* __init__.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトファイルにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、uv build でwheel を作成、ub publishで登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
既定のアプリ内容は Hello World のみ。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:05:41Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* pyproject.toml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトファイルにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [build-system]&lt;br /&gt;
 requires = [&amp;quot;uv_build&amp;gt;=0.12.6,&amp;lt;0.13.0&amp;quot;]&lt;br /&gt;
 build-backend = &amp;quot;uv_build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
プロジェクトのエントリポイントは [project.scripts] に設定済みなので、&lt;br /&gt;
直ちにプロジェクト名で起動できます。&lt;br /&gt;
&lt;br /&gt;
ビルドシステムも設定済みなので、uv build でwheel を作成、ub publishで登録できます。&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:02:35Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* __init__.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトファイルにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;br /&gt;
&lt;br /&gt;
 def main() -&amp;gt; None:&lt;br /&gt;
     print(&amp;quot;Hello from &amp;lt;プロジェクト名&amp;gt;!&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T03:01:32Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* プロジェクトファイルにできるもの */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトファイルにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;br /&gt;
&lt;br /&gt;
===pyproject.toml===&lt;br /&gt;
&lt;br /&gt;
 [project]&lt;br /&gt;
 name = &amp;quot;プロジェクト名&amp;quot;&lt;br /&gt;
 version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
 description = &amp;quot;Add your description here&amp;quot;&lt;br /&gt;
 readme = &amp;quot;README.md&amp;quot;&lt;br /&gt;
 authors = [&lt;br /&gt;
     { name = &amp;quot;作者名&amp;quot;, email = &amp;quot;作者 emailアドレス&amp;quot; }&lt;br /&gt;
 ]&lt;br /&gt;
 requires-python = &amp;quot;&amp;gt;=3.14&amp;quot;&lt;br /&gt;
 dependencies = []&lt;br /&gt;
 &lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 プロジェクト名 = &amp;quot;プロジェクト名:main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===__init__.py===&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T02:58:37Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* プロジェクトファイルにできるもの */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトファイルにできるもの==&lt;br /&gt;
&lt;br /&gt;
 プロジェクトのディレクトリ&lt;br /&gt;
 │  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
 │  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
 │  README.md　　　　　　　プロジェクトの README  空です。 &lt;br /&gt;
 │  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
 │&lt;br /&gt;
 ├─.venv　仮想環境&lt;br /&gt;
 │&lt;br /&gt;
 └─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
     └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
         └  __init__.py　　パッケージの __init__.py&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T02:56:47Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* プロジェクト作成から実行まで */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
簡単ですよね。&lt;br /&gt;
&lt;br /&gt;
==プロジェクトファイルにできるもの==&lt;br /&gt;
&lt;br /&gt;
C:\PROJECTS\PYTHON_PROJECTS\A&lt;br /&gt;
│  .python-version　　　　pythonバージョンファイル 3.14 とか入ってます。&lt;br /&gt;
│  pyproject.toml　　　　 プロジェクトファイル&lt;br /&gt;
│  README.md　　　　　　　プロジェクトの README 空です。&lt;br /&gt;
│  uv.lock　　　　　　　　uv sync が生成したロックファイル&lt;br /&gt;
│&lt;br /&gt;
├─.venv　仮想環境&lt;br /&gt;
│&lt;br /&gt;
└─src　　　　　　　　　　パッケージのsrcフォルダ(トップ)&lt;br /&gt;
    └─プロジェクト名　　　トップのパッケージ名=プロジェクト名&lt;br /&gt;
        │  __init__.py　　パッケージの __init__.py&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T02:48:36Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* プロジェクト作成 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成から実行まで==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T02:48:12Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* プロジェクト作成 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
仮想環境作成/更新&lt;br /&gt;
 uv sync&lt;br /&gt;
これでプロジェクトの動くひな形は完成です。&lt;br /&gt;
&lt;br /&gt;
実行&lt;br /&gt;
 uv run &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
下記のように表示されたら成功&lt;br /&gt;
 Hello from &amp;lt;プロジェクト名&amp;gt;!&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T02:44:41Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
Powershellでこれを打つだけです。pythonは不要。&lt;br /&gt;
 powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==プロジェクト作成==&lt;br /&gt;
&lt;br /&gt;
Powershellのプロンプトで&lt;br /&gt;
&lt;br /&gt;
指定フォルダ(プロジェクト名)にプロジェクトを作成&lt;br /&gt;
 uv init &amp;lt;プロジェクト名&amp;gt;&lt;br /&gt;
指定フォルダに移動&lt;br /&gt;
 cd &amp;lt;プロジェクト名&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T02:40:42Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv tips]]&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0</id>
		<title>Uv のミニマム</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_%E3%81%AE%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%A0"/>
				<updated>2026-10-27T02:38:49Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: ページの作成:「Category:コンピュータCategory:Python メインページ&amp;amp;gt;コンピュータの部屋#Python&amp;amp;gt;uv Tips」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[uv Tips]]&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_tips</id>
		<title>Uv tips</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_tips"/>
				<updated>2026-10-27T02:38:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&lt;br /&gt;
&lt;br /&gt;
#[[uv のミニマム]]&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Uv_tips</id>
		<title>Uv tips</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Uv_tips"/>
				<updated>2026-10-27T02:36:59Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: ページの作成:「Category:コンピュータCategory:Python メインページ&amp;amp;gt;コンピュータの部屋#Python」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E9%83%A8%E5%B1%8B</id>
		<title>コンピュータの部屋</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E9%83%A8%E5%B1%8B"/>
				<updated>2026-10-27T02:36:02Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* Python */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]]&lt;br /&gt;
[[メインページ]]&lt;br /&gt;
&lt;br /&gt;
==Python==&lt;br /&gt;
&lt;br /&gt;
#'''[[Python Tips]]'''  Python の Tip&lt;br /&gt;
#'''[[Tkinter Tips]]'''  tkinter のチュートリアル的 Tip&lt;br /&gt;
#'''[[uv tips]]''' uv関連の情報&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
#[[Windows 10 で BlueToothのアイコンを通知領域に表示するには]]&lt;br /&gt;
#[[Windows 10 で　タスクバーに表示するアイコンを設定する]]&lt;br /&gt;
#[[Windows 10 で スマホをMTP接続できなくなった時の対処法]]&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
主に CENTOS関係の情報を載せています。&lt;br /&gt;
&lt;br /&gt;
#[[素のCENT OS 6.5でちょっと過激に最新LAPP環境を作ってみた（Mじゃなくて P=PostgreSQL です）。]]&lt;br /&gt;
#[[さくらへのMediaWikiのインストール]]&lt;br /&gt;
#[[ConoHa VPS を使ってみた]]・・・&lt;br /&gt;
#[[MediaWiki のお引越し手順]]&lt;br /&gt;
#[[CENT OS 小技]]・・・&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
#[[Java Tips]]&lt;br /&gt;
#[[Eclipse Tips]]&lt;br /&gt;
#[[JSF Tips]]&lt;br /&gt;
#[[Struts2 Tips]]&lt;br /&gt;
#[[Maven Tips]]&lt;br /&gt;
#[[MyBatis Tips]]&lt;br /&gt;
&lt;br /&gt;
==Android==&lt;br /&gt;
&lt;br /&gt;
#[[AndroidStudio Tips]]&lt;br /&gt;
#[[Android Tips]]&lt;br /&gt;
&lt;br /&gt;
==JavaFX==&lt;br /&gt;
&lt;br /&gt;
#[[JavaFX Tips]]&lt;br /&gt;
#[[JavaFXチュートリアル]]&lt;br /&gt;
&lt;br /&gt;
==Gradle==&lt;br /&gt;
&lt;br /&gt;
#[[Gradle Tips]]&lt;br /&gt;
&lt;br /&gt;
==ソフトウェア==&lt;br /&gt;
&lt;br /&gt;
コンピュータのアプリケーションソフトに関する情報/解説を載せています。&lt;br /&gt;
&lt;br /&gt;
#[[MySQL]]&lt;br /&gt;
#[[GNUPLOT]]&lt;br /&gt;
#[[NetBeans Tips]]&lt;br /&gt;
#[[git tips]]&lt;br /&gt;
#[[Mercurial Tips]]&lt;br /&gt;
#[[IntelliJ IDEA Tips]]&lt;br /&gt;
&lt;br /&gt;
==電卓==&lt;br /&gt;
&lt;br /&gt;
電卓に関する情報/解説を載せています。&lt;br /&gt;
&lt;br /&gt;
#[[fx-cp400]]&lt;br /&gt;
&lt;br /&gt;
==ネットワークトラブル==&lt;br /&gt;
&lt;br /&gt;
仕事なので発見したトラブル集です。&lt;br /&gt;
&lt;br /&gt;
#[[Windows ftp.exe の怪]]&lt;br /&gt;
&lt;br /&gt;
==Webプログラミング==&lt;br /&gt;
&lt;br /&gt;
Webプログラミングに関する解説です。&lt;br /&gt;
&lt;br /&gt;
#[[一定時間操作しないとタイムアウトする画面]]&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python_Install_Manager_%E3%81%A8%E3%81%AF</id>
		<title>Python Install Manager とは</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python_Install_Manager_%E3%81%A8%E3%81%AF"/>
				<updated>2026-10-11T09:08:49Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* 注意 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
== はじめに ==&lt;br /&gt;
&lt;br /&gt;
2025年10月7日 python3.14 はリリースされると共に、python の新しいインストーラ Python Install Manager(PIM) がリリースされました。&lt;br /&gt;
&lt;br /&gt;
PIM はこれまでの個別のランタイム用インストーラーとは異なり、&lt;br /&gt;
複数の python ランタイムを自在にインストール/アンインストールするためのインストールマネージャーで&lt;br /&gt;
特定の python ランタイムとは独立した存在です。今のところ Windows 専用ですが、これまでの特定の python ランタイムとは&lt;br /&gt;
異なる考え方で作られています。&lt;br /&gt;
&lt;br /&gt;
# 複数の python ランタイムを自在にインストール/アンインストールでき管理できる。&lt;br /&gt;
# 従来の python コマンドの他に linux版等と互換な名称のpython3 コマンドが提供されるようになった。&lt;br /&gt;
# バージョン番号付きの python3.13 コマンドなども提供され、py コマンドを使わなくても python のバージョンが指定できるようになった。&lt;br /&gt;
# 従来、各ランライムの Scripts ディレクトリに格納されていた、パッケージと共にインストールされる コマンドが、一つのディレクトリに集約され、いつでも利用できるようになった。&lt;br /&gt;
&lt;br /&gt;
以下に PIM の詳細を説明します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
まず、インストールから説明します。&lt;br /&gt;
&lt;br /&gt;
実は、PIM のインストールでは、pythonの旧来のバージョンや python Launcherを完全にアンインストールしないといろいろな不具合に襲われます。&lt;br /&gt;
下記URLの手順に従って、古い python は削除した方が良いでしょう。古いランタイムと python Launcher(pyコマンド)の両方を削除して下さい。&lt;br /&gt;
&lt;br /&gt;
'''Python完全アンインストール手順'''&lt;br /&gt;
 https://www.insource-da.co.jp/dxpedia/02_0008.html&lt;br /&gt;
&lt;br /&gt;
実はこれだけでも不十分で、[設定]→[アプリの詳細設定]→[アプリ実行エイリアス]&lt;br /&gt;
の画面で、'''python.exe'''/'''pythonw.exe'''/'''python3.exe''' を OFF にすることをお勧めします。&lt;br /&gt;
&lt;br /&gt;
'''アプリ実行エイリアス'''とは ~/AppData/Local/Microsoft/WindowsApps に置かれるコマンドのことで、&lt;br /&gt;
上記の設定で削除することができます。ここには notepad.exe など様々などこからでも使えるコマンドが登録されていて、&lt;br /&gt;
python.exe は利用者が python コマンドを打鍵したとき MSストアへ誘導するなどの機能が有りますが、pythonランタイムと衝突して&lt;br /&gt;
様々な不具合を生じさせることが報告されていますので、OFFにすることを強く推奨します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ファイル:アプリ実行エイリアス python.png|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以上の掃除が終わったら、PIMをインストールしましょう。&lt;br /&gt;
&lt;br /&gt;
'''PIM(Python Install Manager)'''のインストーラは '''https://www.python.org/downloads/''' からもダウンロードできますし、&lt;br /&gt;
'''MSストア'''から['''Python Install Manager''']を選んでインストールすることもできます。MSストア版と python.org版は同一です。&lt;br /&gt;
&lt;br /&gt;
尚、PIMは自動更新ですので、手動での更新は不要です。&lt;br /&gt;
&lt;br /&gt;
== 最初の pythonランタイムのインストール ==&lt;br /&gt;
&lt;br /&gt;
PIM がインストールされた時点では python ランタイムは何もインストールされていません。&lt;br /&gt;
&lt;br /&gt;
powershellのコマンドラインで&lt;br /&gt;
 py&lt;br /&gt;
と叩くと、最新版の pythonランタイムのインストールが始まり、終わると 最新のpythonが起動します。&lt;br /&gt;
&lt;br /&gt;
インストールは従来の python インストーラに比べとんでもなく高速です。&lt;br /&gt;
&lt;br /&gt;
python ランタイムは '''~/AppData/Local/Python の pythoncore-3.14-64''' というようなフォルダにインストールされますが&lt;br /&gt;
ここには PATH が通っていません。python や他のコマンドを起動するコマンド群は '''~/AppData/Local/Python/bin''' に置かれます。&lt;br /&gt;
こちらには PATH が通っています。&lt;br /&gt;
&lt;br /&gt;
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe はインストールした pythonランタイムのうち、最新のランタイムのpythonを起動するコマンドです。&lt;br /&gt;
&lt;br /&gt;
pip.exe, pip3.exe はインストールした pythonランタイムのうち、最新のランタイムのpipを起動するコマンドです。&lt;br /&gt;
&lt;br /&gt;
python3.14.exe, python3.14-64.exe, pythonw3,14.exe, pythonw3.14-64.exe 等の pythonランタイムバージョンが付いたコマンドは、指定バージョンの pythonランタイムの python を起動します。&lt;br /&gt;
&lt;br /&gt;
==pythonランタイムのインストール==&lt;br /&gt;
&lt;br /&gt;
pythonのランタイムを追加インストールするには&lt;br /&gt;
 py install &amp;lt;バージョン&amp;gt;&lt;br /&gt;
 例 py install 3.12&lt;br /&gt;
というように、python install コマンドに pythonランタイムのバージョンを指定します。&lt;br /&gt;
&lt;br /&gt;
インストールする pythonランタイムが既にインストール済みの pythonランタイムより古ければ '''~/AppData/Local/Python/bin''' に有る&lt;br /&gt;
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は更新されず、最新の python を呼び出すように保たれます。&lt;br /&gt;
&lt;br /&gt;
インストールする pythonランタイムが既にインストール済みの pythonランタイムより新しければ '''~/AppData/Local/Python/bin''' に有る&lt;br /&gt;
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は更新され、最新の python を呼び出すようになります。&lt;br /&gt;
&lt;br /&gt;
バージョン付きのコマンド python&amp;lt;バージョン&amp;gt;.exe, python&amp;lt;バージョン&amp;gt;-64.exe, pythonw&amp;lt;バージョン&amp;gt;.exe, pythonw&amp;lt;バージョン&amp;gt;-64.exe が新たに追加されます。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
&lt;br /&gt;
pythonランタイムのインストールでは、マイナーバージョンまで指定すると(例: 3.14)、その時点の最新のパッチバージョンがインストールされますが、&lt;br /&gt;
以下のようにパッチバージョンまで指定することもできます。&lt;br /&gt;
 py install 3.14.6&lt;br /&gt;
この場合は、既に python3.14 がインストール済みである場合、上書きするか問合せが行われます。&lt;br /&gt;
上書きする場合、インストール済みの3.14は削除されて、指定されたパッチバージョンが インストールされます。&lt;br /&gt;
インストール前の python が 3.14.7 なら インストールで 古い 3.14.6 に戻ります。&lt;br /&gt;
&lt;br /&gt;
つまり、マイナーバージョンが同時に2種類インストールされることはないということです。&lt;br /&gt;
これは旧来のインストーラーでも同じです。パッチバージョンはバグフィックスであり、基本的に同じ ランタイムという考え方だからです。&lt;br /&gt;
&lt;br /&gt;
==pythonランタイムのアンインストール==&lt;br /&gt;
&lt;br /&gt;
pythonのランタイムをインストールするには&lt;br /&gt;
 py uninstall &amp;lt;バージョン&amp;gt;&lt;br /&gt;
 例 py uninstall 3.12&lt;br /&gt;
というように、python uninstall コマンドに pythonランタイムのバージョンを指定します。&lt;br /&gt;
&lt;br /&gt;
アンインストールする pythonランタイムが削除されることによって、インストール済みの pythonランタイムの最も新たしいバージョンが変化すれば、 '''~/AppData/Local/Python/bin''' に有る python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe が更新され、インストール済みの pythonランタイムの最も新たしいバージョンのpython を呼び出すようになります。&lt;br /&gt;
&lt;br /&gt;
バージョン付きのコマンド python&amp;lt;バージョン&amp;gt;.exe, python&amp;lt;バージョン&amp;gt;-64.exe, pythonw&amp;lt;バージョン&amp;gt;.exe, pythonw&amp;lt;バージョン&amp;gt;-64.exe は削除されます。&lt;br /&gt;
&lt;br /&gt;
==pythonランタイムの一覧==&lt;br /&gt;
&lt;br /&gt;
インストールされている python ランタイムの一覧は &lt;br /&gt;
&lt;br /&gt;
 py list&lt;br /&gt;
 Tag           Name            Managed By  Version  Alias&lt;br /&gt;
 3.14[-64]  *  Python 3.14.8   PythonCore  3.14.8   python3[-64].exe, python3.14[-64].exe&lt;br /&gt;
 3.13[-64]     Python 3.13.16  PythonCore  3.13.16  python3.13[-64].exe&lt;br /&gt;
&lt;br /&gt;
で表示できます。&lt;br /&gt;
&lt;br /&gt;
これでも十分ですが、インストール先を確認したい場合はこれも有用です。&lt;br /&gt;
&lt;br /&gt;
 py -0p&lt;br /&gt;
 -V:3.14[-64] *   C:\Users\中村拓男\AppData\Local\Python\pythoncore-3.14-64\python.exe&lt;br /&gt;
 -V:3.13[-64]     C:\Users\中村拓男\AppData\Local\Python\pythoncore-3.13-64\python.exe&lt;br /&gt;
&lt;br /&gt;
== ~/AppData/Local/Python/bin にあるコマンドの役割 ==&lt;br /&gt;
&lt;br /&gt;
以上からわかるように python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は&lt;br /&gt;
常にインストールされている最新のpythonを起動するのに対し、&lt;br /&gt;
python&amp;lt;バージョン&amp;gt;.exe, python&amp;lt;バージョン&amp;gt;-64.exe, pythonw&amp;lt;バージョン&amp;gt;.exe, pythonw&amp;lt;バージョン&amp;gt;-64.exe は&lt;br /&gt;
バージョンで指定されたバージョンの python を起動します。&lt;br /&gt;
&lt;br /&gt;
旧来の python launcher では 古いpythonを起動するのに py -3.12 とかしていましたが、&lt;br /&gt;
PIM版では python3.12 でも起動できるようになりました。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
&lt;br /&gt;
uv でインストールする python ランタイムは ~/.local/bin に python&amp;lt;バージョン&amp;gt;.exe をインストールしますが&lt;br /&gt;
PIM版のランタイムと名称が競合します。また uv で --default 付きで pythonランタイムをインストールすると&lt;br /&gt;
~/.local/bin に python.exe, python3.exe をインストールするので名称が競合します。&lt;br /&gt;
どちらが起動されるかは PATH の設定次第です。&lt;br /&gt;
&lt;br /&gt;
できれば PIM版とUV版のランタイムを同時に使用しない方が良いでしょう。&lt;br /&gt;
&lt;br /&gt;
:UVは PIM版のランタイムを問題なく扱えます。&lt;br /&gt;
&lt;br /&gt;
==パッケージのコマンドの扱いの違い==&lt;br /&gt;
&lt;br /&gt;
Python のパッケージには、Pythonの実行環境に コマンドを追加するものが有ります。&lt;br /&gt;
PIM版の Pythonランタイムでも、パッケージをインストールすると、パッケージによってはコマンドが pythonランタイムに追加されますが、&lt;br /&gt;
それは、Pythonランタイム の '''Scripts''' ディレクトリに置かれます。&lt;br /&gt;
&lt;br /&gt;
例えば pythonに jupyter を pip でインストールすると、'''Scriptsディレクトリ'''に &lt;br /&gt;
jupyter.exe をはじめたくさんの コマンドが追加されます。これは旧来の pythonでも PIM版のpythonランタイムでも同じです。&lt;br /&gt;
&lt;br /&gt;
但し、PIM版の pythonランタイムは複数同時にインストール可能なため、'''Scriptsディレクトリ'''には '''Path が通っていません'''。&lt;br /&gt;
このため、パッケージのコマンドは '''PATH の通っている''' '''~/AppData/Local/Python/bin''' に置かれます。&lt;br /&gt;
&lt;br /&gt;
このディレクトリは一つしかないので、複数のpythonランタイムに同じ名前のパッケージのコマンドがインストールされると&lt;br /&gt;
名前が衝突してしまいます。そこで、PIM ではインストールされている pythonランタイムの中でより新しいもののパッケージの&lt;br /&gt;
コマンドを優先します。&lt;br /&gt;
&lt;br /&gt;
ここで注意すべきなのは、パッケージのコマンドは '''~/AppData/Local/Python/bin''' に自動的には置かれないことです。&lt;br /&gt;
パッケージを pip でインストールした時点ではコマンドは '''Scriptsディレクトリ''' に置かれますが　'''~/AppData/Local/Python/bin'''　には'''置かれません'''。&lt;br /&gt;
 py install --refresh&lt;br /&gt;
が叩かれると、PIM は各pythonランタイムの '''Scriptsディレクトリ'''の状況を調べ、'''~/AppData/Local/Python/bin''' に置くべき&lt;br /&gt;
コマンドを選んで置きます。従って、パッケージをインストールしても、'''py install --refresh''' を実行しないとコマンドは使えません。&lt;br /&gt;
&lt;br /&gt;
PIMを使いだすと、パッケージのコマンドが使えず困った経験がある人は多いでしょう。すぐに py install --refresh を打ってください。&lt;br /&gt;
&lt;br /&gt;
現在パッケージは仮想環境にインストールすることが当たり前になりつつありますが、&lt;br /&gt;
pipxなどシステムpythonに直接インストールしたいパッケージもごく少数有るので、&lt;br /&gt;
PIM版でもシステムpythonにパッケージをインストール&lt;br /&gt;
できるようにしています。しかし、名前の重複はいかんともしがたいので、この複雑さは諦めましょう。&lt;br /&gt;
&lt;br /&gt;
基本、パッケージは仮想環境にインストールすべきです。&lt;br /&gt;
仮想環境ならば '''Scriptsディレクトリ''' に PATHは通っているので問題なく使えます。&lt;br /&gt;
システムpython を複数インストールするのは、仮想環境の親の システムpython を複数用意するためなのです。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
&lt;br /&gt;
この話は uv pip XXXX --system で PIM版のシステムpython にパッケージを追加した場合も同じです。&lt;br /&gt;
パッケージ追加後, パッケージのコマンドを有効にするには py install --refresh が必要ですので注意してください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
以上の説明からお分かりかと思いますが、pythonのインストーラーはバージョン毎に別々のインストーラー用意されることは近い将来なくなり、その代わりに、PIMで複数のバージョンを自在にインストールできるようになりました。&lt;br /&gt;
&lt;br /&gt;
これにより pythonのバージョンに依存するアプリケーションを実行することが容易になりました。&lt;br /&gt;
&lt;br /&gt;
その分パッケージのコマンドの管理がややこしくなりました。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/%E7%BE%8E%E3%81%97%E3%81%84%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%B3%E3%83%84%E5%A4%89%E6%8F%9B</id>
		<title>美しいローレンツ変換</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E7%BE%8E%E3%81%97%E3%81%84%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%B3%E3%83%84%E5%A4%89%E6%8F%9B"/>
				<updated>2026-10-11T08:59:47Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* ー次変換としてのローレンツ変換 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[メインページ]] &amp;amp;gt; [[物理の部屋#相対性理論]]&lt;br /&gt;
[[Category:物理]][[category:相対性理論]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相対性理論のローレンツ変換は、なんかゴチャゴチャしていてめんどくさそうと感じておられる方も多いと思います。&lt;br /&gt;
この点に関して、実はキャラハンの「時空の幾何学」という相対性理論の解説書の中で、その美しさが詳細に述べられていたのですが、&lt;br /&gt;
残念ながら邦訳は何故か絶版になってしまいました。&lt;br /&gt;
&lt;br /&gt;
そこで、この記事では、このローレンツ変換の秘められた美しさについて若干の説明を試みてみたいと思います。&lt;br /&gt;
&lt;br /&gt;
==ローレンツ変換==&lt;br /&gt;
&lt;br /&gt;
下図は、特殊相対性理論を説明するための図です。この図には &amp;lt;math&amp;gt;xyz&amp;lt;/math&amp;gt;と&amp;lt;math&amp;gt;x'y'z'&amp;lt;/math&amp;gt;の二つの座標系が示されています。&lt;br /&gt;
&lt;br /&gt;
相対性理論ではおなじみの座標系の設定ですが、&lt;br /&gt;
&lt;br /&gt;
両座標系とも慣性系で、それぞれの座標系の原点での時刻 &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; と &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; が &amp;lt;math&amp;gt;t=t'=0&amp;lt;/math&amp;gt; の時、2つの座標系の原点が&lt;br /&gt;
一致する(重なる)ものとします。&lt;br /&gt;
&lt;br /&gt;
また、座標軸 &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; と座標軸 &amp;lt;math&amp;gt;x'&amp;lt;/math&amp;gt; 、座標軸 &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; と座標軸 &amp;lt;math&amp;gt;y'&amp;lt;/math&amp;gt; 、座標軸 &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; と座標軸 &amp;lt;math&amp;gt;z'&amp;lt;/math&amp;gt; はそれぞれ同じ向きとし、&amp;lt;math&amp;gt;x'y'z'&amp;lt;/math&amp;gt; 座標系は &amp;lt;math&amp;gt;xyz&amp;lt;/math&amp;gt; 座標系の対し、&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; 軸方向に速度 &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; で運動しているものとします。&lt;br /&gt;
&lt;br /&gt;
[[ファイル:相対性理論説明用の座標の図.png]]&lt;br /&gt;
&lt;br /&gt;
この二つの座標系では、相対性理論でおなじみのローレンツ変換の関係が成り立ちます。 &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; は光速とすると&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt; \left( \begin{array} {cc}t\\ x \end{array}\right) = &lt;br /&gt;
\left( \begin{array} {cc} &lt;br /&gt;
  \frac{1}{\sqrt{1-(\frac{v}{c})^2}} &amp;amp; \frac{\frac{v}{c^2}}{\sqrt{1-(\frac{v}{c})^2}} \\ &lt;br /&gt;
  \frac{v}{\sqrt{1-(\frac{v}{c})^2}} &amp;amp; \frac{1}{\sqrt{1-(\frac{v}{c})^2}} &lt;br /&gt;
\end{array}\right)&lt;br /&gt;
\left( \begin{array} {cc} t'\\ x' \end{array}\right), y=y', z=z'&amp;lt;/math&amp;gt;|1}}&lt;br /&gt;
&lt;br /&gt;
確かになんかごちゃごちゃしています。真ん中へんにある行列は対称行列でもないし、回転行列のような単純な美しさもありません。&lt;br /&gt;
いったいどこが美しいのでしょうか？&lt;br /&gt;
&lt;br /&gt;
ではこれから、ローレンツ変換行列の中に隠された美しさを見てゆきましょう。&lt;br /&gt;
&lt;br /&gt;
==座標をちょっといじってみる==&lt;br /&gt;
&lt;br /&gt;
ここで、時刻を表すのに、単位が秒の &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; や　 &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; の代わりに、これらに光速をかけた、つまり単位をメートルにした値を時刻に採用します。つまり、時刻の単位を秒ではなく、メートルに変換するのです。&lt;br /&gt;
&lt;br /&gt;
すると、ローレンツ変換は&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt; \left( \begin{array} {cc} ct\\ x \end{array}\right) = &lt;br /&gt;
\left( \begin{array} {cc} &lt;br /&gt;
  \frac{1}{\sqrt{1-(\frac{v}{c})^2}} &amp;amp; \frac{\frac{v}{c}}{\sqrt{1-(\frac{v}{c})^2}} \\ &lt;br /&gt;
  \frac{\frac{v}{c}}{\sqrt{1-(\frac{v}{c})^2}} &amp;amp; \frac{1}{\sqrt{1-(\frac{v}{c})^2}} &lt;br /&gt;
\end{array}\right)&lt;br /&gt;
\left( \begin{array} {cc} ct'\\ x' \end{array}\right)&amp;lt;/math&amp;gt;|2}}&lt;br /&gt;
&lt;br /&gt;
となります。なんと変換行列が対称行列になってしまいました。最初に比べて美しさが少し増しています。&lt;br /&gt;
このことは、時刻が本質的にメートルで表されるべきことを暗示していますが、先に進みましょう。&lt;br /&gt;
&lt;br /&gt;
==双曲線関数を使ってみる==&lt;br /&gt;
&lt;br /&gt;
式がより簡単になるように、速度 &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; と光速 &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; の比を &amp;lt;math&amp;gt;V = \frac{v}{c}&amp;lt;/math&amp;gt; と表すことにすると、&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt; \left( \begin{array} {cc} ct\\ x \end{array}\right) = &lt;br /&gt;
\left( \begin{array} {cc} &lt;br /&gt;
  \frac{1}{\sqrt{1-V^2}} &amp;amp; \frac{V}{\sqrt{1-V^2}} \\ &lt;br /&gt;
  \frac{V}{\sqrt{1-V^2}} &amp;amp; \frac{1}{\sqrt{1-V^2}} &lt;br /&gt;
\end{array}\right)&lt;br /&gt;
\left( \begin{array} {cc} ct'\\ x' \end{array}\right)&amp;lt;/math&amp;gt;|3}}&lt;br /&gt;
&lt;br /&gt;
ここで、 &amp;lt;math&amp;gt;\tanh \alpha = V&amp;lt;/math&amp;gt; とすると、&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\tanh \alpha = \frac{\sinh\alpha}{\cosh\alpha}&amp;lt;/math&amp;gt;|4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\cosh^2\alpha - \sinh^2\alpha = 1&amp;lt;/math&amp;gt;|5}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\frac{1}{\sqrt{1-V^2}}=\frac{1}{\sqrt{1-\frac{\sinh^2\alpha}{\cosh^2\alpha}}}=&lt;br /&gt;
\frac{1}{\sqrt{\frac{\cosh^2\alpha-\sinh^2\alpha}{\cosh^2\alpha}}}=\cosh\alpha&amp;lt;/math&amp;gt;|6}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ですから&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt; \left( \begin{array} {cc} ct\\ x \end{array}\right) = &lt;br /&gt;
\left( \begin{array} {cc} &lt;br /&gt;
  \cosh \alpha &amp;amp; \sinh \alpha \\ &lt;br /&gt;
  \sinh \alpha &amp;amp; \cosh \alpha &lt;br /&gt;
\end{array}\right)&lt;br /&gt;
\left( \begin{array} {cc} ct'\\ x' \end{array}\right)&amp;lt;/math&amp;gt;|7}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
なんと、まるで回転行列のようなとても単純で覚えやすくて美しい行列になってしまいました。&lt;br /&gt;
&lt;br /&gt;
実はこの行列は双曲回転の回転行列で、つまりローレンツ変換というのは時空座標の双曲回転なのです。&lt;br /&gt;
&lt;br /&gt;
以下に双曲線回転の回転行列がどのようなものかを説明します。&lt;br /&gt;
&lt;br /&gt;
==そもそも双曲線関数とは==&lt;br /&gt;
&lt;br /&gt;
そもそも双曲線関数とは何なのでしょうか？&lt;br /&gt;
&lt;br /&gt;
双曲線関数で表すことのできる座標値、&amp;lt;math&amp;gt;(\cosh u, \sinh u) &amp;lt;/math&amp;gt; とは双曲線&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;x^2-y^2=1&amp;lt;/math&amp;gt;|8}}&lt;br /&gt;
&lt;br /&gt;
上の点です(但しここでは &amp;lt;math&amp;gt;x\geq 1&amp;lt;/math&amp;gt; )。これは公式(5)からも明らかでしょう。&lt;br /&gt;
双曲線関数の定義は &lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\cosh u = \frac{e^u+e^{-u}}{2}&amp;lt;/math&amp;gt;|9}}&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\sinh u = \frac{e^u-e^{-u}}{2}&amp;lt;/math&amp;gt;|10}}&lt;br /&gt;
&lt;br /&gt;
となりますが、それでは　&amp;lt;math&amp;gt;(\cosh u, \sinh u) &amp;lt;/math&amp;gt; の中の &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; とは何なのでしょうか？&lt;br /&gt;
&lt;br /&gt;
下の図を見てください。&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:双曲線.png]]|図1 双曲角}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
図の斜線の部分は双曲線と、原点と双曲線上の点 &amp;lt;math&amp;gt;(\cosh u, \sinh u)&amp;lt;/math&amp;gt; を結んだ線分と、x軸 で囲まれた領域ですが、実はこの領域の面積の2倍が u なのです。証明してみましょう。&lt;br /&gt;
&lt;br /&gt;
この領域の面積は &amp;lt;math&amp;gt;x = \sqrt{y^2+1} &amp;lt;/math&amp;gt; 　を　  &amp;lt;math&amp;gt;y=0\sim\sinh u&amp;lt;/math&amp;gt; の範囲で積分して、上の三角形部分の面積を引けばよいので&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;S=\int^{\sinh u}_0 \sqrt{1+y^2}dy - \frac{\sinh u\cosh u}{2}&amp;lt;/math&amp;gt;|11}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
積分は  &amp;lt;math&amp;gt;\sinh s = y &amp;lt;/math&amp;gt;  という変数変換を行うと&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\int^{\sinh u}_0 \sqrt{1+y^2}dy=\int^{u}_0 \cosh^2sds=\frac{1}{2}\sinh u\cosh u + \frac{1}{2}u&amp;lt;/math&amp;gt;|12}}&lt;br /&gt;
&lt;br /&gt;
なので、結局&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;S=\frac{u}{2}&amp;lt;/math&amp;gt;|13}}&lt;br /&gt;
&lt;br /&gt;
となります。この面積の2倍( &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; )のことを'''「双曲角」'''といいます。&lt;br /&gt;
&lt;br /&gt;
尚、ここまで単純に「面積」と書いてきましたが、斜線部分がX軸より下なら、双曲角はマイナスになります。&lt;br /&gt;
&lt;br /&gt;
この'''双曲角'''と'''双曲線関数'''の関係は、半径1の'''扇形の中心角(扇形の面積の2倍)'''と'''三角関数'''の関係にそっくりです。&lt;br /&gt;
&lt;br /&gt;
==双曲回転==&lt;br /&gt;
&lt;br /&gt;
普通の回転は円に沿って点を動かすことですが、双曲回転は双曲線に沿って点を動かします。&lt;br /&gt;
&lt;br /&gt;
下の図を見て下さい。図には双曲線 &amp;lt;math&amp;gt;x^2 - y^2 = 1&amp;lt;/math&amp;gt; が描いて有り、&lt;br /&gt;
その上に双曲角が &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; と &amp;lt;math&amp;gt;u + \beta&amp;lt;/math&amp;gt; の点 A, B が描いてあります。&lt;br /&gt;
任意の双曲線上の点を双曲線に沿って動かす変換を双曲回転といいます。&lt;br /&gt;
どのような変換になるか見てみましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:双曲線回転.png]]|図2 双曲回転}}&lt;br /&gt;
&lt;br /&gt;
点A の座標は &amp;lt;math&amp;gt;A=(x, y)=(\cosh u, \sinh u)&amp;lt;/math&amp;gt; で、点B は &amp;lt;math&amp;gt;B=(x', y')=(\cosh (u+\beta), \sinh (u+\beta))&amp;lt;/math&amp;gt; ですが、双曲線関数の角度の和の公式は&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\cosh(u+\beta)&amp;amp;=\frac{e^{u+\beta} + e^{-(u+\beta)}}{2} \\&lt;br /&gt;
 &amp;amp;=\frac{(e^{u}+e^{-u})(e^{\beta}+e^{-\beta}) + (e^{u}-e^{-u})(e^{\beta}-e^{-\beta})}{4}\\&lt;br /&gt;
 &amp;amp;=\cosh u \cosh\beta + \sinh u \sinh\beta \\&lt;br /&gt;
 &amp;amp;=x \cosh\beta + y \sinh\beta&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;|14}}&lt;br /&gt;
&lt;br /&gt;
{{eqn|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\sinh(u+\beta)&amp;amp;=\frac{e^{u+\beta} - e^{-(u+\beta)}}{2} \\&lt;br /&gt;
 &amp;amp;=\frac{(e^{u}-e^{-u})(e^{\beta}+e^{-\beta}) + (e^{u}+e^{-u})(e^{\beta}-e^{-\beta})}{4}\\&lt;br /&gt;
 &amp;amp;=\sinh u \cosh\beta + \cosh u \sinh\beta \\&lt;br /&gt;
 &amp;amp;=y \cosh\beta + x \sinh\beta&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;|15}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
となります。これを整理し、点A(&amp;lt;math&amp;gt;A=(x, y)&amp;lt;/math&amp;gt; ) を　点B(&amp;lt;math&amp;gt;B=(x', y')&amp;lt;/math&amp;gt; ) に変換する形にまとめると&lt;br /&gt;
&lt;br /&gt;
{{eqn|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\left( \begin{array} {c} x' \\ y'\end{array}\right) =&lt;br /&gt;
\left( \begin{array} {c c} \cosh\beta &amp;amp; \sinh\beta \\ \sinh\beta &amp;amp; \cosh\beta \end{array}\right)&lt;br /&gt;
\left( \begin{array} {c} x \\ y\end{array}\right)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;|16}}&lt;br /&gt;
&lt;br /&gt;
式の中央にある行列が、既にローレンツ変換にも出てきた双曲回転の回転行列です。この行列は双曲角 &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt;だけ双曲回転を行います。 &lt;br /&gt;
&lt;br /&gt;
この行列は、双曲線 &amp;lt;math&amp;gt;x^2 - y^2 = 1&amp;lt;/math&amp;gt; 上の点だけではなく、任意の &amp;lt;math&amp;gt;x^2 - y^2 = a^2&amp;lt;/math&amp;gt; という形式の双曲線上での双曲回転にも使えます。&lt;br /&gt;
&lt;br /&gt;
図には、双曲線 &amp;lt;math&amp;gt;x^2 - y^2 = 1.5^2&amp;lt;/math&amp;gt; 上の点Cと点Dが示してありますが、点Cから点Dへの移動は &lt;br /&gt;
同じ回転行列で行えます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
さてここまでは、双曲線　&amp;lt;math&amp;gt;x^2 - y^2 = a^2, x \geq 0 &amp;lt;/math&amp;gt; で話をしてきましたが、双曲回転は座標上の任意の点を回転可能です。しかし、双曲線&amp;lt;math&amp;gt;x^2 - y^2 = a^2, x \geq 0 &amp;lt;/math&amp;gt; で表せる座標上の点は、全座標平面の4分の一の領域でしかありません。&lt;br /&gt;
&lt;br /&gt;
座標平面の全ての点をカバーするには、2種類の双曲線群　&amp;lt;math&amp;gt;x^2 - y^2 = a^2&amp;lt;/math&amp;gt;、&amp;lt;math&amp;gt;x^2 - y^2 = -a^2&amp;lt;/math&amp;gt; が必要です。&lt;br /&gt;
この双方の双曲線で双曲回転は双曲線に沿って点を動かします。&lt;br /&gt;
&lt;br /&gt;
2種類の双曲線で、正の双曲回転が点をどのように動かすかを下図に示します。&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:全象限の双曲線.png]]|図3 全ての象限での双曲回転}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
正の双曲線回転は、図形を右斜め方向に引き伸ばし、図形を左斜め方向に圧縮することがわかると思います。&lt;br /&gt;
&lt;br /&gt;
円の回転のように図形を合同に移動するのではなく、双曲回転は図形の圧縮と伸長を伴います。&lt;br /&gt;
&lt;br /&gt;
つまり、時空の圧縮と伸長を伴う変換がローレンツ変換なのです。&lt;br /&gt;
&lt;br /&gt;
==ー次変換としてのローレンツ変換==&lt;br /&gt;
&lt;br /&gt;
さて、ここまでは、ローレンツ変換の美しさを&lt;br /&gt;
双曲回転という観点から眺めてきましたが、&lt;br /&gt;
ここからは 2×2の行列で行なう単純な一次変換&lt;br /&gt;
という観点から眺めて見ましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''注意！！！'''&lt;br /&gt;
:ここからは &amp;lt;math&amp;gt;ct&amp;lt;/math&amp;gt; を &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;ct'&amp;lt;/math&amp;gt; を &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; 、&amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;を&amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;と 表すことにしてしまいます。&lt;br /&gt;
:つまり &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; と &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; は 単位を m にした時刻を表すこととします。&lt;br /&gt;
:速度&amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; は無次元量となり、光速との比を表すことにします。これは時間の単位を &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;に変更したためです。&lt;br /&gt;
:このような単位系を '''幾何学単位系'''といいます。相対性理論ではこの[[幾何学単位系]]を使用するのが一般的です。&lt;br /&gt;
:詳細は'''「[[幾何学単位系]]」'''を見て下さい。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以下の図にはローレンツ変換前(双曲変換前、水色)の図形(格子)と、それのローレンツ変換後(双曲変換後、黒)の図形を&lt;br /&gt;
示してあります。2個の座標系の相対速度は光速の20%です。見事に歪んでいることがわかるでしょう。&lt;br /&gt;
&lt;br /&gt;
この図は見方を変えれば &amp;lt;math&amp;gt;txyz&amp;lt;/math&amp;gt; 時空から見た &amp;lt;math&amp;gt;t'x'y'z'&amp;lt;/math&amp;gt;時空の姿です。但し y軸,z軸は省略してあります。&lt;br /&gt;
省略してあるので、これらの座標系(時空)は &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; '''座標系'''、と &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; '''座標系'''と呼ぶことにしましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:Lorents.png]]|図4 &amp;lt;math&amp;gt;txyz&amp;lt;/math&amp;gt; 時空から見た &amp;lt;math&amp;gt;t'x'y'z'&amp;lt;/math&amp;gt;時空の姿}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
一次変換の性質を語るのに有効な武器は言うまでもなく行列式、固有値と固有べクトルです。&lt;br /&gt;
早速計算してみましょう。&lt;br /&gt;
&lt;br /&gt;
ローレンツ変換の行列式は &amp;lt;math&amp;gt;\cosh^2\alpha-\sinh^2\alpha=1&amp;lt;/math&amp;gt; ですから、双曲変換によって図形の&lt;br /&gt;
形は歪むものの面積は変化しません。&lt;br /&gt;
&lt;br /&gt;
ローレンツ変換の固有値は、固有方程式 &lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;(\cosh\alpha-\lambda)^2-\sinh^2\alpha=1&amp;lt;/math&amp;gt; |17}}&lt;br /&gt;
&lt;br /&gt;
を解くと、&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\lambda = \cosh\alpha \pm \sinh\alpha = e^\alpha, e^{-\alpha} =&lt;br /&gt;
\frac{\sqrt{1+v}}{\sqrt{1-v}}, \frac{\sqrt{1-v}}{\sqrt{1+v}}&amp;lt;/math&amp;gt; |18}}&lt;br /&gt;
&lt;br /&gt;
固有ベクトルは &lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\left( \begin{array} {c} 1\\ 1 \end{array}\right), &lt;br /&gt;
\left( \begin{array} {c} 1\\ -1 \end{array}\right)&amp;lt;/math&amp;gt; |19}}&lt;br /&gt;
&lt;br /&gt;
つまり、ローレンツ変換は　&amp;lt;math&amp;gt;\left( \begin{array} {c} 1\\ 1 \end{array}\right) &amp;lt;/math&amp;gt; 方向へ &amp;lt;math&amp;gt;e^\alpha=\frac{\sqrt{1+v}}{\sqrt{1-v}}&amp;lt;/math&amp;gt; 倍だけ図形を引き伸ばし、&lt;br /&gt;
&amp;lt;math&amp;gt;\left( \begin{array} {c} 1\\ -1 \end{array}\right)&amp;lt;/math&amp;gt; 方向に &amp;lt;math&amp;gt;e^{-\alpha}=\frac{\sqrt{1-v}}{\sqrt{1+v}}&amp;lt;/math&amp;gt; 倍だけ図形を伸長する変換であることがわかります。&lt;br /&gt;
&lt;br /&gt;
これは上の図の図形の変形の仕方からも明らかでしょう。&lt;br /&gt;
&lt;br /&gt;
また、この2つの固有ベクトルの向きは'''「光速」'''を表しています。&lt;br /&gt;
固有ベクトルの方向は一次変換によって変化しないので、つまりこれはローレンツ変換によって&lt;br /&gt;
'''光速が光速に変換される'''ことを示しています。&lt;br /&gt;
&lt;br /&gt;
==目盛りの大きさ==&lt;br /&gt;
&lt;br /&gt;
最後に、ローレンツ変換の座標の目盛り大きさについて考察しておきましょう。&lt;br /&gt;
&lt;br /&gt;
下図は、1 m x 1 m の正方形をローレンツ変換する様子を表しています。水色の矩形が変換前、黒色が変換後です。&lt;br /&gt;
四角形O'A'B'Cは正方形OABCをローレンツ変換した結果です。図ではローレンツ変換の歪みをよりわかりやすくするため、系間の相対速度は光速の40%にしました。&lt;br /&gt;
&lt;br /&gt;
この図は、&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標での時空の正方形が &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系でどのように見えるかを示しているとも言えます。&lt;br /&gt;
つまり&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標の時空の格子状の目盛りが、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系でどのように歪んで見えるかを示しています。&lt;br /&gt;
&lt;br /&gt;
一つずつ、座標値を計算してみましょう。&lt;br /&gt;
&lt;br /&gt;
まず、点A'と 点C' は、今までの議論から&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:ローレンツ変換の目盛り.png]]|図5 ローレンツ変換の目盛り}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;C'=\left( \begin{array} {c} \cosh\alpha \\ \sinh\alpha \end{array}\right)&lt;br /&gt;
=\left( \begin{array} {c} \frac{1}{\sqrt{1-v^2}} \\ \frac{v}{\sqrt{1-v^2}} \end{array}\right)&lt;br /&gt;
, A'=\left( \begin{array} {c} \sinh\alpha \\ \cosh\alpha \end{array}\right)&lt;br /&gt;
=\left( \begin{array} {c} \frac{v}{\sqrt{1-v^2}} \\ \frac{1}{\sqrt{1-v^2}} \end{array}\right)&lt;br /&gt;
&amp;lt;/math&amp;gt; |20}}&lt;br /&gt;
&lt;br /&gt;
点C' は &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では &amp;lt;math&amp;gt;\left( \begin{array} {c} 1 \\ 0 \end{array}\right)&amp;lt;/math&amp;gt; ですから、&lt;br /&gt;
点 O' から C' までの経路は、 &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では静止している物体の世界線です。&lt;br /&gt;
&lt;br /&gt;
C'が線分BCより右( &amp;lt;math&amp;gt;t=\cosh\alpha=\frac{1}{\sqrt{1-v^2}} &amp;gt; 1&amp;lt;/math&amp;gt; )になることから、&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系で静止している物体に取り付けられている時計は、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系から見ると遅く見えることがわかります。これが有名な「運動する物体の時間は遅くなる」ということの正体です。&lt;br /&gt;
&lt;br /&gt;
逆を考えてみましょう。OCは&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系で静止している物体の世界線です。この線と 線分B'C'を延長した線と交わる点 D では &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では時刻が &amp;lt;math&amp;gt;1 m&amp;lt;/math&amp;gt; になります。 &lt;br /&gt;
&lt;br /&gt;
点Dの&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系での &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; の値(ODの長さ )は、&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\begin{array} {ll}\cosh\alpha - \sinh\alpha\tanh\alpha &amp;amp;= \frac{\cosh^2\alpha-\sinh^2\alpha}{\cosh\alpha} \\&lt;br /&gt;
&amp;amp;=\frac{1}{\cosh\alpha} = \sqrt{1-v^2}&amp;lt; 1 \end{array}&amp;lt;/math&amp;gt;|21}}&lt;br /&gt;
&lt;br /&gt;
つまり、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系で静止している物体の時計は、やはり&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系から見ると遅く見えるのです。&lt;br /&gt;
&lt;br /&gt;
よくこの、互いに相手の時計が遅くなることが矛盾であるという議論を見かけますが、実際には、異なる世界線を測定した結果であり、図の線分BCとB'Dが交差していることが原因で、矛盾はないことがこの時空図からよくわかると思います。&lt;br /&gt;
&lt;br /&gt;
そもそもローレンツ変換は単純な一次変換であり、&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系の座標点と&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系の座標点との間には1対1の対応があるため、矛盾が発生しようがないのです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EA'B' とOC' は&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系で静止している、向きがX軸方向の棒の両端の世界線と考えることができます。&lt;br /&gt;
&lt;br /&gt;
この棒の長さは &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では勿論 &amp;lt;math&amp;gt;1 m&amp;lt;/math&amp;gt; ですが、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系では OE の長さになります。OEの長さはODの長さと同じで式(21)になり、&amp;lt;math&amp;gt;1 m&amp;lt;/math&amp;gt; より短くなります。これが動いている物体が収縮するフィッツジェラルド収縮、或いはローレンツ収縮の正体です。&lt;br /&gt;
&lt;br /&gt;
一方 OC と AB は、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系で静止している、向きがX軸方向の棒の両端の世界線と考えることができます。&lt;br /&gt;
&lt;br /&gt;
この棒は &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系では長さはもちろん &amp;lt;math&amp;gt;1 m&amp;lt;/math&amp;gt; ですが、&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では&lt;br /&gt;
&amp;lt;math&amp;gt;1 m &amp;lt;/math&amp;gt; より短くなるのは OF が OA'より短いことから明らかです。&lt;br /&gt;
&lt;br /&gt;
OA'の &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系での長さは&lt;br /&gt;
&lt;br /&gt;
{{eqn|OA'の長さ &amp;lt;math&amp;gt;=\sqrt{\cosh^2\alpha+\sinh^2\alpha}=&lt;br /&gt;
\cosh\alpha\sqrt{1+\tanh^2\alpha}=\sqrt{\frac{1+v^2}{1-v^2}}=L&amp;lt;/math&amp;gt;|22}}&lt;br /&gt;
&lt;br /&gt;
OFの &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系での長さは、Fの位置が  &lt;br /&gt;
&amp;lt;math&amp;gt;\left( \begin{array} {c} \tanh\alpha \\ 1 \end{array}\right)&amp;lt;/math&amp;gt; ですので&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|OFの長さ &amp;lt;math&amp;gt;=\sqrt{1+\tanh^2\alpha}=\sqrt{1+v^2}=l&amp;lt;/math&amp;gt;|23}}&lt;br /&gt;
&lt;br /&gt;
従って OF の&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系での長さは、&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;1 m \times l \div L = \frac{1}{\cosh\alpha}=\sqrt{1-v^2}&amp;lt;/math&amp;gt;|24}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
つまり、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系で静止している棒は &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系からは短くみえるわけで、やはり運動している棒は短くなります。&lt;br /&gt;
&lt;br /&gt;
このように、系の中で静止している棒がもう一つの系から見ると短く見えるのは、ガレージのパラドックスとして有名ですが、異なる2セットの世界線を異なる時間軸を使って、測定した結果であること、言い方を変えると、線分ABとEB'が交差していることが原因であることが、この時空図からよくわかると思います。従ってパラドックスは存在しません。&lt;br /&gt;
&lt;br /&gt;
OD, OE の長さ、OA'の長さ(=OC'の長さ), OF の長さがわかりましたので、最後に B' の位置を求めておきましょう。&lt;br /&gt;
&lt;br /&gt;
B'の座標は、&amp;lt;math&amp;gt;B=\left( \begin{array} {c} 1 \\ 1 \end{array}\right)&amp;lt;/math&amp;gt; をローレンツ変換するだけですので、&lt;br /&gt;
&lt;br /&gt;
{{eqn|Bの位置 &amp;lt;math&amp;gt;=\left( \begin{array} {c} \cosh\alpha+\sinh\alpha \\ \cosh\alpha+\sinh\alpha \end{array}\right)&lt;br /&gt;
=\left( \begin{array} {c} e^\alpha \\ e^\alpha \end{array}\right)&lt;br /&gt;
=\left( \begin{array} {c} \sqrt{\frac{1+v}{1-v}} \\ \sqrt{\frac{1+v}{1-v}} \end{array}\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;|25}}&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
多くの物理学の教科書では、ローレンツ変換はあまりその数学的内容を解説されることなく、ごちゃごちゃとした数式で紹介されることが多いですが、本記事ではローレンツ変換の数学的な内容を若干解説してみました。&lt;br /&gt;
&lt;br /&gt;
ローレンツ変換は、座標系を幾何学単位系に直すと、単純な&lt;br /&gt;
双曲回転であることがすぐにわかります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
双曲回転であることがわかれば、双曲線、双曲線関数と双曲回転の様々な知識をローレンツ変換の理解に総動員できます。数式も単純になり、取り扱いが楽になり、見通しも付けやすくなります。&lt;br /&gt;
&lt;br /&gt;
この記事で紹介した知識が、ローレンツ変換のより深い理解につながれば幸いです。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8"/>
				<updated>2026-10-11T06:42:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* 最新情報 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:共通]]&lt;br /&gt;
[[ファイル:Header2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
== '''TK Notebook へようこそ''' ==&lt;br /&gt;
&lt;br /&gt;
私は何故かQ&amp;amp;Aというものが好きで、メーリングリストで回答役になったり、教えて goo などにしこしこ回答を書いていることが多いのですが、&lt;br /&gt;
それをまた文書にまとめるのも好きなんです。&lt;br /&gt;
&lt;br /&gt;
このサイトは、いままでいろいろ書き溜めたメモを置くために作りました。&lt;br /&gt;
&lt;br /&gt;
最初は WordPress とか、HTMLの手打ちとか、いろいろ考えたのですが、数式が書きたいとか、管理に手間がかかると続かないとか、気が付いたら何処でも直せたらとか、いろいろ考え、紆余曲折を経て ConoHa VPS + MediaWiki に落ち着きました。&lt;br /&gt;
&lt;br /&gt;
物理とか数学とかプログラミングとか、いろいろな話題をできるだけわかりやすい形で紹介したいと考えています。&lt;br /&gt;
&lt;br /&gt;
このサイトの内容が皆さんのお役にたてば幸いです。&lt;br /&gt;
&lt;br /&gt;
2014年11月 中村&lt;br /&gt;
&lt;br /&gt;
なにかご意見があれば mailto:tknakamuri@gmail.com まで&lt;br /&gt;
&lt;br /&gt;
== '''最新情報''' ==&lt;br /&gt;
;2026年10月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月10日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonアプリケーションを起動する]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月9日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月8日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月7日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」''' を Python Install Manager に対応するように修正しました。 &lt;br /&gt;
;2025年2月16日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「光学」'''に'''「[[ヤングの実験の光路長差について]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2018年12月01日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PyCharm CEからFlaskアプリを起動する]]」'''を追加しました。&lt;br /&gt;
;2018年11月18日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を更新しました。&lt;br /&gt;
;2018年9月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの引数の引き渡し]]」'''を追加しました。&lt;br /&gt;
;2018年8月27日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[Pack ジオメトリマネージャ]]」'''を追加しました。&lt;br /&gt;
;2018年8月14日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PythonのHELP]]」'''を追加しました。&lt;br /&gt;
;2018年2月10日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[いろいろなウィジェット]]」'''を追加しました。&lt;br /&gt;
;2018年2月1日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム　ハロー]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[シンプルアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2018年1月3日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの環境とは何か？]]」'''を追加しました。&lt;br /&gt;
;2018年1月1日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで簡単にロギングを行うには]]」'''を追加しました。&lt;br /&gt;
;2017年8月15日&lt;br /&gt;
:'''「[[数学の部屋#複素数]]」'''に複素数の話題を幾つか追加しました。&lt;br /&gt;
;2017年7月22日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Aptana3.6.1を使って見る]]」'''を追加しました。&lt;br /&gt;
;2017年7月17日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS MediaWikiにログインできなくなった！]]」'''を追加しました。&lt;br /&gt;
;2017年4月2日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[Maven test でテストが実行されない]]」'''を追加しました。&lt;br /&gt;
;2017年2月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2017年1月21日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[特定の行の checkstyle のチェックを抑制するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月17日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[管理者のみが見られる画面を作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 ベストプラクティス]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 で画面で JavaScriptやCSS の読み込みを記述するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでセッションを使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでアクションクラスを知るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月31日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で scala を初めて実行する時嵌りやすいこと]]」'''を追加しました。&lt;br /&gt;
;2016年12月22日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 の struts.xml や struts.properties で指定する設定の一覧はどこ？]]」'''を追加しました。&lt;br /&gt;
;2016年12月18日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で CheckStyle を使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でフォームで複数ボタンを使う際、ボタンでアクションを切り替えるには]]」'''を追加しました。&lt;br /&gt;
;2016年12月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でリンクボタンを作るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月10日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[変換エラーメッセージを日本語にするには]]」'''を追加しました。&lt;br /&gt;
;2016年12月9日&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[リモートリポジトリの巻き戻しが拒否される]]」'''を追加しました。&lt;br /&gt;
;2016年11月29日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に NextCloudを入れてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:別の記事にもありますように、サーバの他のサービスのセキュリティ向上のため、というのは建前で(^^;, '''SSL証明書というものを個人でとって使ってみたかったので'''、Webは完全にSSLへリダイレクトすることにしました。設定の何か所かに http が直書きされていたので取り除きました(^^; 証明書がしょぼくて見えないという方がおられましたらご連絡をお願いします。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS の apache がhttpを httpsへリダイレクトするようにしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ラグランジュの運動方程式の導出]]」'''に'''「[[ラグランジュの運動方程式の導出#ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ | ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS への MediaWikiのインストール]]」'''に'''「[[ConoHa VPS への MediaWikiのインストール#追記3|追記3]]」'''を追加しました。SSL化するのに必要な MediaWikiの変更事項です。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に SSL証明書を取得してみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月21日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[JUnitのpom.xmlの設定]]」'''を追加しました。&lt;br /&gt;
;2016年11月19日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisで行ロック(悲観ロック)を行うには？]]」'''を追加しました。&lt;br /&gt;
;2016年11月16日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[ステートメントにパラメータを複数渡す]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[NULL を確実に設定できるようにするには]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisを使ってみる]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コマンドラインで依存するライブラリやプラグインを全てダウンロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[MySQL]]」'''に'''「[[Mysql-connector-java のバグで JavaからMySQLに接続できない]]」'''を追加しました。&lt;br /&gt;
;2016年11月5日&lt;br /&gt;
:'''「[[Mercurial Tips]]」'''に'''「[[Mercurialの 読込不可のパターンファイル・・・・　というエラーメッセージを消すには]]」'''を追加しました。&lt;br /&gt;
;2016年11月1日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Mercurialをインストールしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年10月25日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Gitサーバを立ててみた]]」'''を追加しました。&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[git commit のエディターに秀丸を指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月22日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[プラグインのゴールとその説明を見るには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルリポジトリからプロジェクトを削除するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルなJARをプロジェクトに追加するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月19日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ソースのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コンパイルでのJavaバージョンを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年9月26日&lt;br /&gt;
:'''「[[コンピュータの部屋#Windows]]」'''に'''「[[Windows 10 で スマホをMTP接続できなくなった時の対処法]]」'''を追加しました。&lt;br /&gt;
;2016年9月25日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2で slf4j+logback を使うには]]」'''を追加しました。&lt;br /&gt;
;2016年9月24日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Pom.xml の編集で 依存関係の追加 の際、検索を可能にするには]]」'''を追加しました。&lt;br /&gt;
;2016年9月17日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[最初のアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2016年9月10日&lt;br /&gt;
:CSS改良。見出しを若干見やすくしました。&lt;br /&gt;
;2016年8月27日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipseでアプリのソース変更時、WildFlyをリロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年8月26日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipse(Neon)にWildFlyを登録するには]]」'''を追加しました。&lt;br /&gt;
;2016年8月18日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[EclipseでJSFのmavenベースのプロジェクトを作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[JSFでの inputText タグの文字化け対処]]」'''を追加しました。&lt;br /&gt;
;2016年8月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2のひな形を作成するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月30日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JDBCによる悲観ロックの落とし穴]]」'''を追加しました。&lt;br /&gt;
;2016年7月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaDBにSquirrelから接続するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月15日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を大きく更新しました。&lt;br /&gt;
;2016年6月21日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を追加しました。&lt;br /&gt;
;2016年6月19日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでComboBoxの選択肢を列挙型するには]]」'''を加えました。&lt;br /&gt;
;2016年5月30日&lt;br /&gt;
:'''「[[Gradle Tips]]」'''に'''「[[Javaのコンパイルで、ソースファイルのエンコーディングを UTF-8にするには]]」'''を追加しました。&lt;br /&gt;
;2016年5月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaとGroovyでソースファイルのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年5月11日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[TableViewでセルのアライメントを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年4月3日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[JavaFXの Hello World]]」'''を追加しました。&lt;br /&gt;
;2016年4月1日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''の'''「[[JavaFXの座標系と座標変換]]」'''を大幅に更新し、3Dカメラの記述を加えました。&lt;br /&gt;
;2016年3月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[パラレルカメラのクリッピングを変更するには]]」'''を追加しました。&lt;br /&gt;
;2016年3月27日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[JavaFXの座標系と座標変換]]」'''を追加しました。&lt;br /&gt;
;2016年3月17日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[指定方向のローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年3月5日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[美しいローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年2月20日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[デフォルトプロパティの探し方]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラを初期化するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラでStageを使いたい]]」'''を追加しました。&lt;br /&gt;
;2015年12月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでChoiceBoxの選択肢を記述するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月29日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでノードを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月27日&lt;br /&gt;
:'''「[[コンピュータの部屋]]'''の'''「電卓」'''に'''「[[Fx-cp400]]」'''の記事を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[幾何学単位系]]」'''を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[ステージを完全に透明化するには]]」'''を追加しました。&lt;br /&gt;
;2015年11月5日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[Default Activity Not Found が出たら]]」'''を追加しました。&lt;br /&gt;
;2015年11月1日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioで効率よくJavaBeansを作成するには]]」'''&lt;br /&gt;
;2015年10月28日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Espressoでビルドエラーがでたら]]」'''を追加しました。&lt;br /&gt;
;2015年10月13日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[別プロジェクトのモジュールを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年10月08日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Up Navigation を実装するには]]」'''を追加しました。&lt;br /&gt;
;2015年 9月29日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioでSubversionを使ってプロジェクトを共有]]」'''を追加しました。また'''「[[AndroidStudioからSubversionへインポート]]」'''を修正しました。&lt;br /&gt;
;2015年 9月22日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[カスタムビューを作る]]」'''を追加しました。&lt;br /&gt;
;2015年 9月20日&lt;br /&gt;
:'''「[[コンピュータの部屋#Android|Android]]」'''にAndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 9月14日&lt;br /&gt;
:[[コンピュータの部屋]]に[[コンピュータの部屋#Android|Android]]を追加。AndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[媒介変数表示]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[ファイルのデータを描く]]」'''を追加しました。&lt;br /&gt;
;2015年 8月20日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[3Dグラフの表示方法を変える]]」'''を追加しました。&lt;br /&gt;
;2015年 8月19日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示が荒すぎるのを治す]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月13日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[座標軸に目盛を付けるには(3D)]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月06日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[viewの意味]]」'''などをたくさん追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月05日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示範囲を決める]]」'''、'''「[[座標軸に目盛を付けるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月04日&lt;br /&gt;
:[[コンピュータの部屋]]に記事追加。'''[[GNUPLOT]]'''の記事を2本追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月30日&lt;br /&gt;
:[[物理の部屋]]に記事追加。解析力学を新設し、'''「[[ラグランジュの運動方程式の導出]]」'''の記事を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月12日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[オイラー角]]''' を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月11日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[座標変換と回転]]''' を追加追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 5月29日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月30日&lt;br /&gt;
:[[物理の部屋]]を新設。物理のトンデモサイト紹介に'''「[[カーナビの相対論効果は嘘]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月20日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 2月08日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 1月30日&lt;br /&gt;
:[[モバイルの部屋]]を作り、最初の記事 '''「[[priori2を買いました]]」''' を書きました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSを再調整&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSも改修。若干見やすくしました。数式表示をextension:Mathjaxから extension:Math へ移行完了。数式の表示が大きくなり、また、一部のFHDタブレットでの表示の不具合がなくなりました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月27日&lt;br /&gt;
:現在 数学の部屋を改装中。Extension:MathJaxからExtension:Math(サーバサイドでPNG生成)に移行中です。現在数式がまともに表示されません。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python_Install_Manager_%E3%81%A8%E3%81%AF</id>
		<title>Python Install Manager とは</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python_Install_Manager_%E3%81%A8%E3%81%AF"/>
				<updated>2026-10-11T06:40:58Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* pythonランタイムのインストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
== はじめに ==&lt;br /&gt;
&lt;br /&gt;
2025年10月7日 python3.14 はリリースされると共に、python の新しいインストーラ Python Install Manager(PIM) がリリースされました。&lt;br /&gt;
&lt;br /&gt;
PIM はこれまでの個別のランタイム用インストーラーとは異なり、&lt;br /&gt;
複数の python ランタイムを自在にインストール/アンインストールするためのインストールマネージャーで&lt;br /&gt;
特定の python ランタイムとは独立した存在です。今のところ Windows 専用ですが、これまでの特定の python ランタイムとは&lt;br /&gt;
異なる考え方で作られています。&lt;br /&gt;
&lt;br /&gt;
# 複数の python ランタイムを自在にインストール/アンインストールでき管理できる。&lt;br /&gt;
# 従来の python コマンドの他に linux版等と互換な名称のpython3 コマンドが提供されるようになった。&lt;br /&gt;
# バージョン番号付きの python3.13 コマンドなども提供され、py コマンドを使わなくても python のバージョンが指定できるようになった。&lt;br /&gt;
# 従来、各ランライムの Scripts ディレクトリに格納されていた、パッケージと共にインストールされる コマンドが、一つのディレクトリに集約され、いつでも利用できるようになった。&lt;br /&gt;
&lt;br /&gt;
以下に PIM の詳細を説明します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
まず、インストールから説明します。&lt;br /&gt;
&lt;br /&gt;
実は、PIM のインストールでは、pythonの旧来のバージョンや python Launcherを完全にアンインストールしないといろいろな不具合に襲われます。&lt;br /&gt;
下記URLの手順に従って、古い python は削除した方が良いでしょう。古いランタイムと python Launcher(pyコマンド)の両方を削除して下さい。&lt;br /&gt;
&lt;br /&gt;
'''Python完全アンインストール手順'''&lt;br /&gt;
 https://www.insource-da.co.jp/dxpedia/02_0008.html&lt;br /&gt;
&lt;br /&gt;
実はこれだけでも不十分で、[設定]→[アプリの詳細設定]→[アプリ実行エイリアス]&lt;br /&gt;
の画面で、'''python.exe'''/'''pythonw.exe'''/'''python3.exe''' を OFF にすることをお勧めします。&lt;br /&gt;
&lt;br /&gt;
'''アプリ実行エイリアス'''とは ~/AppData/Local/Microsoft/WindowsApps に置かれるコマンドのことで、&lt;br /&gt;
上記の設定で削除することができます。ここには notepad.exe など様々などこからでも使えるコマンドが登録されていて、&lt;br /&gt;
python.exe は利用者が python コマンドを打鍵したとき MSストアへ誘導するなどの機能が有りますが、pythonランタイムと衝突して&lt;br /&gt;
様々な不具合を生じさせることが報告されていますので、OFFにすることを強く推奨します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ファイル:アプリ実行エイリアス python.png|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以上の掃除が終わったら、PIMをインストールしましょう。&lt;br /&gt;
&lt;br /&gt;
'''PIM(Python Install Manager)'''のインストーラは '''https://www.python.org/downloads/''' からもダウンロードできますし、&lt;br /&gt;
'''MSストア'''から['''Python Install Manager''']を選んでインストールすることもできます。MSストア版と python.org版は同一です。&lt;br /&gt;
&lt;br /&gt;
尚、PIMは自動更新ですので、手動での更新は不要です。&lt;br /&gt;
&lt;br /&gt;
== 最初の pythonランタイムのインストール ==&lt;br /&gt;
&lt;br /&gt;
PIM がインストールされた時点では python ランタイムは何もインストールされていません。&lt;br /&gt;
&lt;br /&gt;
powershellのコマンドラインで&lt;br /&gt;
 py&lt;br /&gt;
と叩くと、最新版の pythonランタイムのインストールが始まり、終わると 最新のpythonが起動します。&lt;br /&gt;
&lt;br /&gt;
インストールは従来の python インストーラに比べとんでもなく高速です。&lt;br /&gt;
&lt;br /&gt;
python ランタイムは '''~/AppData/Local/Python の pythoncore-3.14-64''' というようなフォルダにインストールされますが&lt;br /&gt;
ここには PATH が通っていません。python や他のコマンドを起動するコマンド群は '''~/AppData/Local/Python/bin''' に置かれます。&lt;br /&gt;
こちらには PATH が通っています。&lt;br /&gt;
&lt;br /&gt;
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe はインストールした pythonランタイムのうち、最新のランタイムのpythonを起動するコマンドです。&lt;br /&gt;
&lt;br /&gt;
pip.exe, pip3.exe はインストールした pythonランタイムのうち、最新のランタイムのpipを起動するコマンドです。&lt;br /&gt;
&lt;br /&gt;
python3.14.exe, python3.14-64.exe, pythonw3,14.exe, pythonw3.14-64.exe 等の pythonランタイムバージョンが付いたコマンドは、指定バージョンの pythonランタイムの python を起動します。&lt;br /&gt;
&lt;br /&gt;
==pythonランタイムのインストール==&lt;br /&gt;
&lt;br /&gt;
pythonのランタイムを追加インストールするには&lt;br /&gt;
 py install &amp;lt;バージョン&amp;gt;&lt;br /&gt;
 例 py install 3.12&lt;br /&gt;
というように、python install コマンドに pythonランタイムのバージョンを指定します。&lt;br /&gt;
&lt;br /&gt;
インストールする pythonランタイムが既にインストール済みの pythonランタイムより古ければ '''~/AppData/Local/Python/bin''' に有る&lt;br /&gt;
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は更新されず、最新の python を呼び出すように保たれます。&lt;br /&gt;
&lt;br /&gt;
インストールする pythonランタイムが既にインストール済みの pythonランタイムより新しければ '''~/AppData/Local/Python/bin''' に有る&lt;br /&gt;
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は更新され、最新の python を呼び出すようになります。&lt;br /&gt;
&lt;br /&gt;
バージョン付きのコマンド python&amp;lt;バージョン&amp;gt;.exe, python&amp;lt;バージョン&amp;gt;-64.exe, pythonw&amp;lt;バージョン&amp;gt;.exe, pythonw&amp;lt;バージョン&amp;gt;-64.exe が新たに追加されます。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
&lt;br /&gt;
pythonランタイムのインストールでは、マイナーバージョンまで指定すると(例: 3.14)、その時点の最新のパッチバージョンがインストールされますが、&lt;br /&gt;
以下のようにパッチバージョンまで指定することもできます。&lt;br /&gt;
 py install 3.14.6&lt;br /&gt;
この場合は、既に python3.14 がインストール済みである場合、上書きするか問合せが行われます。&lt;br /&gt;
上書きする場合、古い3.14は削除されて、指定されたパッチバージョンが インストールされます。&lt;br /&gt;
インストール前の python が 3.14.7 なら インストールで 古い 3.14.6 に戻ります。&lt;br /&gt;
&lt;br /&gt;
つまり、マイナーバージョンが同時に2種類インストールされることはないということです。&lt;br /&gt;
これは旧来のインストーラーでも同じです。パッチバージョンはバグフィックスであり、基本的に同じ ランタイムという考え方だからです。&lt;br /&gt;
&lt;br /&gt;
==pythonランタイムのアンインストール==&lt;br /&gt;
&lt;br /&gt;
pythonのランタイムをインストールするには&lt;br /&gt;
 py uninstall &amp;lt;バージョン&amp;gt;&lt;br /&gt;
 例 py uninstall 3.12&lt;br /&gt;
というように、python uninstall コマンドに pythonランタイムのバージョンを指定します。&lt;br /&gt;
&lt;br /&gt;
アンインストールする pythonランタイムが削除されることによって、インストール済みの pythonランタイムの最も新たしいバージョンが変化すれば、 '''~/AppData/Local/Python/bin''' に有る python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe が更新され、インストール済みの pythonランタイムの最も新たしいバージョンのpython を呼び出すようになります。&lt;br /&gt;
&lt;br /&gt;
バージョン付きのコマンド python&amp;lt;バージョン&amp;gt;.exe, python&amp;lt;バージョン&amp;gt;-64.exe, pythonw&amp;lt;バージョン&amp;gt;.exe, pythonw&amp;lt;バージョン&amp;gt;-64.exe は削除されます。&lt;br /&gt;
&lt;br /&gt;
==pythonランタイムの一覧==&lt;br /&gt;
&lt;br /&gt;
インストールされている python ランタイムの一覧は &lt;br /&gt;
&lt;br /&gt;
 py list&lt;br /&gt;
 Tag           Name            Managed By  Version  Alias&lt;br /&gt;
 3.14[-64]  *  Python 3.14.8   PythonCore  3.14.8   python3[-64].exe, python3.14[-64].exe&lt;br /&gt;
 3.13[-64]     Python 3.13.16  PythonCore  3.13.16  python3.13[-64].exe&lt;br /&gt;
&lt;br /&gt;
で表示できます。&lt;br /&gt;
&lt;br /&gt;
これでも十分ですが、インストール先を確認したい場合はこれも有用です。&lt;br /&gt;
&lt;br /&gt;
 py -0p&lt;br /&gt;
 -V:3.14[-64] *   C:\Users\中村拓男\AppData\Local\Python\pythoncore-3.14-64\python.exe&lt;br /&gt;
 -V:3.13[-64]     C:\Users\中村拓男\AppData\Local\Python\pythoncore-3.13-64\python.exe&lt;br /&gt;
&lt;br /&gt;
== ~/AppData/Local/Python/bin にあるコマンドの役割 ==&lt;br /&gt;
&lt;br /&gt;
以上からわかるように python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は&lt;br /&gt;
常にインストールされている最新のpythonを起動するのに対し、&lt;br /&gt;
python&amp;lt;バージョン&amp;gt;.exe, python&amp;lt;バージョン&amp;gt;-64.exe, pythonw&amp;lt;バージョン&amp;gt;.exe, pythonw&amp;lt;バージョン&amp;gt;-64.exe は&lt;br /&gt;
バージョンで指定されたバージョンの python を起動します。&lt;br /&gt;
&lt;br /&gt;
旧来の python launcher では 古いpythonを起動するのに py -3.12 とかしていましたが、&lt;br /&gt;
PIM版では python3.12 でも起動できるようになりました。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
&lt;br /&gt;
uv でインストールする python ランタイムは ~/.local/bin に python&amp;lt;バージョン&amp;gt;.exe をインストールしますが&lt;br /&gt;
PIM版のランタイムと名称が競合します。また uv で --default 付きで pythonランタイムをインストールすると&lt;br /&gt;
~/.local/bin に python.exe, python3.exe をインストールするので名称が競合します。&lt;br /&gt;
どちらが起動されるかは PATH の設定次第です。&lt;br /&gt;
&lt;br /&gt;
できれば PIM版とUV版のランタイムを同時に使用しない方が良いでしょう。&lt;br /&gt;
&lt;br /&gt;
:UVは PIM版のランタイムを問題なく扱えます。&lt;br /&gt;
&lt;br /&gt;
==パッケージのコマンドの扱いの違い==&lt;br /&gt;
&lt;br /&gt;
Python のパッケージには、Pythonの実行環境に コマンドを追加するものが有ります。&lt;br /&gt;
PIM版の Pythonランタイムでも、パッケージをインストールすると、パッケージによってはコマンドが pythonランタイムに追加されますが、&lt;br /&gt;
それは、Pythonランタイム の '''Scripts''' ディレクトリに置かれます。&lt;br /&gt;
&lt;br /&gt;
例えば pythonに jupyter を pip でインストールすると、'''Scriptsディレクトリ'''に &lt;br /&gt;
jupyter.exe をはじめたくさんの コマンドが追加されます。これは旧来の pythonでも PIM版のpythonランタイムでも同じです。&lt;br /&gt;
&lt;br /&gt;
但し、PIM版の pythonランタイムは複数同時にインストール可能なため、'''Scriptsディレクトリ'''には '''Path が通っていません'''。&lt;br /&gt;
このため、パッケージのコマンドは '''PATH の通っている''' '''~/AppData/Local/Python/bin''' に置かれます。&lt;br /&gt;
&lt;br /&gt;
このディレクトリは一つしかないので、複数のpythonランタイムに同じ名前のパッケージのコマンドがインストールされると&lt;br /&gt;
名前が衝突してしまいます。そこで、PIM ではインストールされている pythonランタイムの中でより新しいもののパッケージの&lt;br /&gt;
コマンドを優先します。&lt;br /&gt;
&lt;br /&gt;
ここで注意すべきなのは、パッケージのコマンドは '''~/AppData/Local/Python/bin''' に自動的には置かれないことです。&lt;br /&gt;
パッケージを pip でインストールした時点ではコマンドは '''Scriptsディレクトリ''' に置かれますが　'''~/AppData/Local/Python/bin'''　には'''置かれません'''。&lt;br /&gt;
 py install --refresh&lt;br /&gt;
が叩かれると、PIM は各pythonランタイムの '''Scriptsディレクトリ'''の状況を調べ、'''~/AppData/Local/Python/bin''' に置くべき&lt;br /&gt;
コマンドを選んで置きます。従って、パッケージをインストールしても、'''py install --refresh''' を実行しないとコマンドは使えません。&lt;br /&gt;
&lt;br /&gt;
PIMを使いだすと、パッケージのコマンドが使えず困った経験がある人は多いでしょう。すぐに py install --refresh を打ってください。&lt;br /&gt;
&lt;br /&gt;
現在パッケージは仮想環境にインストールすることが当たり前になりつつありますが、&lt;br /&gt;
pipxなどシステムpythonに直接インストールしたいパッケージもごく少数有るので、&lt;br /&gt;
PIM版でもシステムpythonにパッケージをインストール&lt;br /&gt;
できるようにしています。しかし、名前の重複はいかんともしがたいので、この複雑さは諦めましょう。&lt;br /&gt;
&lt;br /&gt;
基本、パッケージは仮想環境にインストールすべきです。&lt;br /&gt;
仮想環境ならば '''Scriptsディレクトリ''' に PATHは通っているので問題なく使えます。&lt;br /&gt;
システムpython を複数インストールするのは、仮想環境の親の システムpython を複数用意するためなのです。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
&lt;br /&gt;
この話は uv pip XXXX --system で PIM版のシステムpython にパッケージを追加した場合も同じです。&lt;br /&gt;
パッケージ追加後, パッケージのコマンドを有効にするには py install --refresh が必要ですので注意してください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
以上の説明からお分かりかと思いますが、pythonのインストーラーはバージョン毎に別々のインストーラー用意されることは近い将来なくなり、その代わりに、PIMで複数のバージョンを自在にインストールできるようになりました。&lt;br /&gt;
&lt;br /&gt;
これにより pythonのバージョンに依存するアプリケーションを実行することが容易になりました。&lt;br /&gt;
&lt;br /&gt;
その分パッケージのコマンドの管理がややこしくなりました。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T02:21:54Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* 注意 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~/AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scriptsディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
但し、__main__.py が実行される前に、__init__.py が有れば、そのモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''起動されるモジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
pythonのアプリの起動方法を紹介しました。&lt;br /&gt;
&lt;br /&gt;
pythonのアプリをどこでも使えるツールとして使えるようにするなら'''「エントリポイント(コマンド)」'''が最も強力な起動方法でしょう。以下にその特徴と注意点をまとめておきます。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! 起動コード ||__name__ !! sys.path !! 特徴・備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || 指定ファイルのモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || __main__.py のモジュールレベルのコード ||  &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) ||  指定ファイルのモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || アプリを単一ファイルで配布できる。 &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || __main__.py のモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要。&lt;br /&gt;
&lt;br /&gt;
アプリを単一ファイルで配布できる。&lt;br /&gt;
&lt;br /&gt;
zipファイルのトップに __main__.py を置けば、zipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || pyproject.toml で指定された モジュールの関数 || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能なので、様々な機能を一つのアプリで提供できる。&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || 指定モジュールファイル又は __main__.py のモジュールレベルコード || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T01:31:25Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scriptsディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
但し、__main__.py が実行される前に、__init__.py が有れば、そのモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''起動されるモジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
pythonのアプリの起動方法を紹介しました。&lt;br /&gt;
&lt;br /&gt;
pythonのアプリをどこでも使えるツールとして使えるようにするなら'''「エントリポイント(コマンド)」'''が最も強力な起動方法でしょう。以下にその特徴と注意点をまとめておきます。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! 起動コード ||__name__ !! sys.path !! 特徴・備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || 指定ファイルのモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || __main__.py のモジュールレベルのコード ||  &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) ||  指定ファイルのモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || アプリを単一ファイルで配布できる。 &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || __main__.py のモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要。&lt;br /&gt;
&lt;br /&gt;
アプリを単一ファイルで配布できる。&lt;br /&gt;
&lt;br /&gt;
zipファイルのトップに __main__.py を置けば、zipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || pyproject.toml で指定された モジュールの関数 || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能なので、様々な機能を一つのアプリで提供できる。&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || 指定モジュールファイル又は __main__.py のモジュールレベルコード || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T01:30:51Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scriptsディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
但し、__main__.py が実行される前に、__init__.py が有れば、そのモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''起動されるモジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
pythonのアプリの起動方法を紹介しました。&lt;br /&gt;
&lt;br /&gt;
pythonのアプリをどこでも使えるツールとして使えるようにするなら'''「エントリポイント(コマンド)」'''が最も強力な起動方法でしょう。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! 起動コード ||__name__ !! sys.path !! 特徴・備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || 指定ファイルのモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || __main__.py のモジュールレベルのコード ||  &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) ||  指定ファイルのモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || アプリを単一ファイルで配布できる。 &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || __main__.py のモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要。&lt;br /&gt;
&lt;br /&gt;
アプリを単一ファイルで配布できる。&lt;br /&gt;
&lt;br /&gt;
zipファイルのトップに __main__.py を置けば、zipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || pyproject.toml で指定された モジュールの関数 || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能なので、様々な機能を一つのアプリで提供できる。&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || 指定モジュールファイル又は __main__.py のモジュールレベルコード || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T01:26:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scriptsディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
但し、__main__.py が実行される前に、__init__.py が有れば、そのモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''起動されるモジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! 起動コード ||__name__ !! sys.path !! 特徴・備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || 指定ファイルのモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || __main__.py のモジュールレベルのコード ||  &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) ||  指定ファイルのモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || アプリを単一ファイルで配布できる。 &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || __main__.py のモジュールレベルのコード || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要。&lt;br /&gt;
&lt;br /&gt;
アプリを単一ファイルで配布できる。&lt;br /&gt;
&lt;br /&gt;
zipファイルのトップに __main__.py を置けば、zipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || pyproject.toml で指定された モジュールの関数 || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能なので、様々な機能を一つのアプリで提供できる。&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || 指定モジュールファイル又は __main__.py のモジュールレベルコード || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T01:20:39Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* パッケージを -m オプションで起動 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scriptsディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
但し、__main__.py が実行される前に、__init__.py が有れば、そのモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''起動されるモジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 特徴・備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || アプリを単一ファイルで配布できる。 &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要。&lt;br /&gt;
&lt;br /&gt;
アプリを単一ファイルで配布できる。&lt;br /&gt;
&lt;br /&gt;
zipファイルのトップに __main__.py を置けば、zipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能なので、様々な機能を一つのアプリで提供できる。&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python_Tips</id>
		<title>Python Tips</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python_Tips"/>
				<updated>2026-10-10T01:16:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]] 　　'''内容をPIM版に限定しました(2026/10/7)'''。&lt;br /&gt;
#[[Pythonで簡単にロギングを行うには]]&lt;br /&gt;
#[[Pythonの環境とは何か？]]&lt;br /&gt;
#[[PythonのHELP]]&lt;br /&gt;
#[[Pythonの引数の引き渡し]]&lt;br /&gt;
#[[PyCharm CEからFlaskアプリを起動する]]&lt;br /&gt;
#[[Python Install Manager とは]]&lt;br /&gt;
#[[Pythonアプリケーションを起動する]]&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python_Tips</id>
		<title>Python Tips</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python_Tips"/>
				<updated>2026-10-10T01:15:31Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]] 　　'''内容をPIM版に限定しました(2026/10/7)'''。&lt;br /&gt;
#[[Pythonで簡単にロギングを行うには]]&lt;br /&gt;
#[[Pythonの環境とは何か？]]&lt;br /&gt;
#[[PythonのHELP]]&lt;br /&gt;
#[[Pythonの引数の引き渡し]]&lt;br /&gt;
#[[PyCharm CEからFlaskアプリを起動する]]&lt;br /&gt;
#[[Python Install Manager とは]]&lt;br /&gt;
#[[Pythonアプリケーションを起動す]]&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/%E7%BE%8E%E3%81%97%E3%81%84%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%B3%E3%83%84%E5%A4%89%E6%8F%9B</id>
		<title>美しいローレンツ変換</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E7%BE%8E%E3%81%97%E3%81%84%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%B3%E3%83%84%E5%A4%89%E6%8F%9B"/>
				<updated>2026-10-10T01:12:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* ー次変換としてのローレンツ変換 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[メインページ]] &amp;amp;gt; [[物理の部屋#相対性理論]]&lt;br /&gt;
[[Category:物理]][[category:相対性理論]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相対性理論のローレンツ変換は、なんかゴチャゴチャしていてめんどくさそうと感じておられる方も多いと思います。&lt;br /&gt;
この点に関して、実はキャラハンの「時空の幾何学」という相対性理論の解説書の中で、その美しさが詳細に述べられていたのですが、&lt;br /&gt;
残念ながら邦訳は何故か絶版になってしまいました。&lt;br /&gt;
&lt;br /&gt;
そこで、この記事では、このローレンツ変換の秘められた美しさについて若干の説明を試みてみたいと思います。&lt;br /&gt;
&lt;br /&gt;
==ローレンツ変換==&lt;br /&gt;
&lt;br /&gt;
下図は、特殊相対性理論を説明するための図です。この図には &amp;lt;math&amp;gt;xyz&amp;lt;/math&amp;gt;と&amp;lt;math&amp;gt;x'y'z'&amp;lt;/math&amp;gt;の二つの座標系が示されています。&lt;br /&gt;
&lt;br /&gt;
相対性理論ではおなじみの座標系の設定ですが、&lt;br /&gt;
&lt;br /&gt;
両座標系とも慣性系で、それぞれの座標系の原点での時刻 &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; と &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; が &amp;lt;math&amp;gt;t=t'=0&amp;lt;/math&amp;gt; の時、2つの座標系の原点が&lt;br /&gt;
一致する(重なる)ものとします。&lt;br /&gt;
&lt;br /&gt;
また、座標軸 &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; と座標軸 &amp;lt;math&amp;gt;x'&amp;lt;/math&amp;gt; 、座標軸 &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; と座標軸 &amp;lt;math&amp;gt;y'&amp;lt;/math&amp;gt; 、座標軸 &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; と座標軸 &amp;lt;math&amp;gt;z'&amp;lt;/math&amp;gt; はそれぞれ同じ向きとし、&amp;lt;math&amp;gt;x'y'z'&amp;lt;/math&amp;gt; 座標系は &amp;lt;math&amp;gt;xyz&amp;lt;/math&amp;gt; 座標系の対し、&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; 軸方向に速度 &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; で運動しているものとします。&lt;br /&gt;
&lt;br /&gt;
[[ファイル:相対性理論説明用の座標の図.png]]&lt;br /&gt;
&lt;br /&gt;
この二つの座標系では、相対性理論でおなじみのローレンツ変換の関係が成り立ちます。 &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; は光速とすると&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt; \left( \begin{array} {cc}t\\ x \end{array}\right) = &lt;br /&gt;
\left( \begin{array} {cc} &lt;br /&gt;
  \frac{1}{\sqrt{1-(\frac{v}{c})^2}} &amp;amp; \frac{\frac{v}{c^2}}{\sqrt{1-(\frac{v}{c})^2}} \\ &lt;br /&gt;
  \frac{v}{\sqrt{1-(\frac{v}{c})^2}} &amp;amp; \frac{1}{\sqrt{1-(\frac{v}{c})^2}} &lt;br /&gt;
\end{array}\right)&lt;br /&gt;
\left( \begin{array} {cc} t'\\ x' \end{array}\right), y=y', z=z'&amp;lt;/math&amp;gt;|1}}&lt;br /&gt;
&lt;br /&gt;
確かになんかごちゃごちゃしています。真ん中へんにある行列は対称行列でもないし、回転行列のような単純な美しさもありません。&lt;br /&gt;
いったいどこが美しいのでしょうか？&lt;br /&gt;
&lt;br /&gt;
ではこれから、ローレンツ変換行列の中に隠された美しさを見てゆきましょう。&lt;br /&gt;
&lt;br /&gt;
==座標をちょっといじってみる==&lt;br /&gt;
&lt;br /&gt;
ここで、時刻を表すのに、単位が秒の &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; や　 &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; の代わりに、これらに光速をかけた、つまり単位をメートルにした値を時刻に採用します。つまり、時刻の単位を秒ではなく、メートルに変換するのです。&lt;br /&gt;
&lt;br /&gt;
すると、ローレンツ変換は&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt; \left( \begin{array} {cc} ct\\ x \end{array}\right) = &lt;br /&gt;
\left( \begin{array} {cc} &lt;br /&gt;
  \frac{1}{\sqrt{1-(\frac{v}{c})^2}} &amp;amp; \frac{\frac{v}{c}}{\sqrt{1-(\frac{v}{c})^2}} \\ &lt;br /&gt;
  \frac{\frac{v}{c}}{\sqrt{1-(\frac{v}{c})^2}} &amp;amp; \frac{1}{\sqrt{1-(\frac{v}{c})^2}} &lt;br /&gt;
\end{array}\right)&lt;br /&gt;
\left( \begin{array} {cc} ct'\\ x' \end{array}\right)&amp;lt;/math&amp;gt;|2}}&lt;br /&gt;
&lt;br /&gt;
となります。なんと変換行列が対称行列になってしまいました。最初に比べて美しさが少し増しています。&lt;br /&gt;
このことは、時刻が本質的にメートルで表されるべきことを暗示していますが、先に進みましょう。&lt;br /&gt;
&lt;br /&gt;
==双曲線関数を使ってみる==&lt;br /&gt;
&lt;br /&gt;
式がより簡単になるように、速度 &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; と光速 &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; の比を &amp;lt;math&amp;gt;V = \frac{v}{c}&amp;lt;/math&amp;gt; と表すことにすると、&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt; \left( \begin{array} {cc} ct\\ x \end{array}\right) = &lt;br /&gt;
\left( \begin{array} {cc} &lt;br /&gt;
  \frac{1}{\sqrt{1-V^2}} &amp;amp; \frac{V}{\sqrt{1-V^2}} \\ &lt;br /&gt;
  \frac{V}{\sqrt{1-V^2}} &amp;amp; \frac{1}{\sqrt{1-V^2}} &lt;br /&gt;
\end{array}\right)&lt;br /&gt;
\left( \begin{array} {cc} ct'\\ x' \end{array}\right)&amp;lt;/math&amp;gt;|3}}&lt;br /&gt;
&lt;br /&gt;
ここで、 &amp;lt;math&amp;gt;\tanh \alpha = V&amp;lt;/math&amp;gt; とすると、&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\tanh \alpha = \frac{\sinh\alpha}{\cosh\alpha}&amp;lt;/math&amp;gt;|4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\cosh^2\alpha - \sinh^2\alpha = 1&amp;lt;/math&amp;gt;|5}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\frac{1}{\sqrt{1-V^2}}=\frac{1}{\sqrt{1-\frac{\sinh^2\alpha}{\cosh^2\alpha}}}=&lt;br /&gt;
\frac{1}{\sqrt{\frac{\cosh^2\alpha-\sinh^2\alpha}{\cosh^2\alpha}}}=\cosh\alpha&amp;lt;/math&amp;gt;|6}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ですから&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt; \left( \begin{array} {cc} ct\\ x \end{array}\right) = &lt;br /&gt;
\left( \begin{array} {cc} &lt;br /&gt;
  \cosh \alpha &amp;amp; \sinh \alpha \\ &lt;br /&gt;
  \sinh \alpha &amp;amp; \cosh \alpha &lt;br /&gt;
\end{array}\right)&lt;br /&gt;
\left( \begin{array} {cc} ct'\\ x' \end{array}\right)&amp;lt;/math&amp;gt;|7}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
なんと、まるで回転行列のようなとても単純で覚えやすくて美しい行列になってしまいました。&lt;br /&gt;
&lt;br /&gt;
実はこの行列は双曲回転の回転行列で、つまりローレンツ変換というのは時空座標の双曲回転なのです。&lt;br /&gt;
&lt;br /&gt;
以下に双曲線回転の回転行列がどのようなものかを説明します。&lt;br /&gt;
&lt;br /&gt;
==そもそも双曲線関数とは==&lt;br /&gt;
&lt;br /&gt;
そもそも双曲線関数とは何なのでしょうか？&lt;br /&gt;
&lt;br /&gt;
双曲線関数で表すことのできる座標値、&amp;lt;math&amp;gt;(\cosh u, \sinh u) &amp;lt;/math&amp;gt; とは双曲線&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;x^2-y^2=1&amp;lt;/math&amp;gt;|8}}&lt;br /&gt;
&lt;br /&gt;
上の点です(但しここでは &amp;lt;math&amp;gt;x\geq 1&amp;lt;/math&amp;gt; )。これは公式(5)からも明らかでしょう。&lt;br /&gt;
双曲線関数の定義は &lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\cosh u = \frac{e^u+e^{-u}}{2}&amp;lt;/math&amp;gt;|9}}&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\sinh u = \frac{e^u-e^{-u}}{2}&amp;lt;/math&amp;gt;|10}}&lt;br /&gt;
&lt;br /&gt;
となりますが、それでは　&amp;lt;math&amp;gt;(\cosh u, \sinh u) &amp;lt;/math&amp;gt; の中の &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; とは何なのでしょうか？&lt;br /&gt;
&lt;br /&gt;
下の図を見てください。&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:双曲線.png]]|図1 双曲角}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
図の斜線の部分は双曲線と、原点と双曲線上の点 &amp;lt;math&amp;gt;(\cosh u, \sinh u)&amp;lt;/math&amp;gt; を結んだ線分と、x軸 で囲まれた領域ですが、実はこの領域の面積の2倍が u なのです。証明してみましょう。&lt;br /&gt;
&lt;br /&gt;
この領域の面積は &amp;lt;math&amp;gt;x = \sqrt{y^2+1} &amp;lt;/math&amp;gt; 　を　  &amp;lt;math&amp;gt;y=0\sim\sinh u&amp;lt;/math&amp;gt; の範囲で積分して、上の三角形部分の面積を引けばよいので&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;S=\int^{\sinh u}_0 \sqrt{1+y^2}dy - \frac{\sinh u\cosh u}{2}&amp;lt;/math&amp;gt;|11}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
積分は  &amp;lt;math&amp;gt;\sinh s = y &amp;lt;/math&amp;gt;  という変数変換を行うと&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\int^{\sinh u}_0 \sqrt{1+y^2}dy=\int^{u}_0 \cosh^2sds=\frac{1}{2}\sinh u\cosh u + \frac{1}{2}u&amp;lt;/math&amp;gt;|12}}&lt;br /&gt;
&lt;br /&gt;
なので、結局&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;S=\frac{u}{2}&amp;lt;/math&amp;gt;|13}}&lt;br /&gt;
&lt;br /&gt;
となります。この面積の2倍( &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; )のことを'''「双曲角」'''といいます。&lt;br /&gt;
&lt;br /&gt;
尚、ここまで単純に「面積」と書いてきましたが、斜線部分がX軸より下なら、双曲角はマイナスになります。&lt;br /&gt;
&lt;br /&gt;
この'''双曲角'''と'''双曲線関数'''の関係は、半径1の'''扇形の中心角(扇形の面積の2倍)'''と'''三角関数'''の関係にそっくりです。&lt;br /&gt;
&lt;br /&gt;
==双曲回転==&lt;br /&gt;
&lt;br /&gt;
普通の回転は円に沿って点を動かすことですが、双曲回転は双曲線に沿って点を動かします。&lt;br /&gt;
&lt;br /&gt;
下の図を見て下さい。図には双曲線 &amp;lt;math&amp;gt;x^2 - y^2 = 1&amp;lt;/math&amp;gt; が描いて有り、&lt;br /&gt;
その上に双曲角が &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; と &amp;lt;math&amp;gt;u + \beta&amp;lt;/math&amp;gt; の点 A, B が描いてあります。&lt;br /&gt;
任意の双曲線上の点を双曲線に沿って動かす変換を双曲回転といいます。&lt;br /&gt;
どのような変換になるか見てみましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:双曲線回転.png]]|図2 双曲回転}}&lt;br /&gt;
&lt;br /&gt;
点A の座標は &amp;lt;math&amp;gt;A=(x, y)=(\cosh u, \sinh u)&amp;lt;/math&amp;gt; で、点B は &amp;lt;math&amp;gt;B=(x', y')=(\cosh (u+\beta), \sinh (u+\beta))&amp;lt;/math&amp;gt; ですが、双曲線関数の角度の和の公式は&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\cosh(u+\beta)&amp;amp;=\frac{e^{u+\beta} + e^{-(u+\beta)}}{2} \\&lt;br /&gt;
 &amp;amp;=\frac{(e^{u}+e^{-u})(e^{\beta}+e^{-\beta}) + (e^{u}-e^{-u})(e^{\beta}-e^{-\beta})}{4}\\&lt;br /&gt;
 &amp;amp;=\cosh u \cosh\beta + \sinh u \sinh\beta \\&lt;br /&gt;
 &amp;amp;=x \cosh\beta + y \sinh\beta&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;|14}}&lt;br /&gt;
&lt;br /&gt;
{{eqn|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\sinh(u+\beta)&amp;amp;=\frac{e^{u+\beta} - e^{-(u+\beta)}}{2} \\&lt;br /&gt;
 &amp;amp;=\frac{(e^{u}-e^{-u})(e^{\beta}+e^{-\beta}) + (e^{u}+e^{-u})(e^{\beta}-e^{-\beta})}{4}\\&lt;br /&gt;
 &amp;amp;=\sinh u \cosh\beta + \cosh u \sinh\beta \\&lt;br /&gt;
 &amp;amp;=y \cosh\beta + x \sinh\beta&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;|15}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
となります。これを整理し、点A(&amp;lt;math&amp;gt;A=(x, y)&amp;lt;/math&amp;gt; ) を　点B(&amp;lt;math&amp;gt;B=(x', y')&amp;lt;/math&amp;gt; ) に変換する形にまとめると&lt;br /&gt;
&lt;br /&gt;
{{eqn|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\left( \begin{array} {c} x' \\ y'\end{array}\right) =&lt;br /&gt;
\left( \begin{array} {c c} \cosh\beta &amp;amp; \sinh\beta \\ \sinh\beta &amp;amp; \cosh\beta \end{array}\right)&lt;br /&gt;
\left( \begin{array} {c} x \\ y\end{array}\right)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;|16}}&lt;br /&gt;
&lt;br /&gt;
式の中央にある行列が、既にローレンツ変換にも出てきた双曲回転の回転行列です。この行列は双曲角 &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt;だけ双曲回転を行います。 &lt;br /&gt;
&lt;br /&gt;
この行列は、双曲線 &amp;lt;math&amp;gt;x^2 - y^2 = 1&amp;lt;/math&amp;gt; 上の点だけではなく、任意の &amp;lt;math&amp;gt;x^2 - y^2 = a^2&amp;lt;/math&amp;gt; という形式の双曲線上での双曲回転にも使えます。&lt;br /&gt;
&lt;br /&gt;
図には、双曲線 &amp;lt;math&amp;gt;x^2 - y^2 = 1.5^2&amp;lt;/math&amp;gt; 上の点Cと点Dが示してありますが、点Cから点Dへの移動は &lt;br /&gt;
同じ回転行列で行えます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
さてここまでは、双曲線　&amp;lt;math&amp;gt;x^2 - y^2 = a^2, x \geq 0 &amp;lt;/math&amp;gt; で話をしてきましたが、双曲回転は座標上の任意の点を回転可能です。しかし、双曲線&amp;lt;math&amp;gt;x^2 - y^2 = a^2, x \geq 0 &amp;lt;/math&amp;gt; で表せる座標上の点は、全座標平面の4分の一の領域でしかありません。&lt;br /&gt;
&lt;br /&gt;
座標平面の全ての点をカバーするには、2種類の双曲線群　&amp;lt;math&amp;gt;x^2 - y^2 = a^2&amp;lt;/math&amp;gt;、&amp;lt;math&amp;gt;x^2 - y^2 = -a^2&amp;lt;/math&amp;gt; が必要です。&lt;br /&gt;
この双方の双曲線で双曲回転は双曲線に沿って点を動かします。&lt;br /&gt;
&lt;br /&gt;
2種類の双曲線で、正の双曲回転が点をどのように動かすかを下図に示します。&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:全象限の双曲線.png]]|図3 全ての象限での双曲回転}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
正の双曲線回転は、図形を右斜め方向に引き伸ばし、図形を左斜め方向に圧縮することがわかると思います。&lt;br /&gt;
&lt;br /&gt;
円の回転のように図形を合同に移動するのではなく、双曲回転は図形の圧縮と伸長を伴います。&lt;br /&gt;
&lt;br /&gt;
つまり、時空の圧縮と伸長を伴う変換がローレンツ変換なのです。&lt;br /&gt;
&lt;br /&gt;
==ー次変換としてのローレンツ変換==&lt;br /&gt;
&lt;br /&gt;
さて、ここまでは、ローレンツ変換の美しさを&lt;br /&gt;
双曲回転という観点から眺めてきましたが、&lt;br /&gt;
ここからは 2×2の行列で行なう単純な一次変換&lt;br /&gt;
という観点から眺めて見ましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''注意！！！'''&lt;br /&gt;
:ここからは &amp;lt;math&amp;gt;ct&amp;lt;/math&amp;gt; を &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;ct'&amp;lt;/math&amp;gt; を &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; 、&amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;を&amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;と 表すことにしてしまいます。&lt;br /&gt;
:つまり &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; と &amp;lt;math&amp;gt;t'&amp;lt;/math&amp;gt; は 単位を m にした時刻を表すこととします。&lt;br /&gt;
:速度&amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; は無次元量となり、光速との比を表すことにします。これは時間の単位を &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;に変更したためです。&lt;br /&gt;
:このような単位系を '''幾何学単位系'''といいます。相対性理論ではこの[[幾何学単位系]]を使用するのが一般的です。&lt;br /&gt;
:詳細は'''「[[幾何学単位系]]」'''を見て下さい。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以下の図にはローレンツ変換前(双曲変換前、水色)の図形(格子)と、それのローレンツ変換後(双曲変換後、黒)の図形を&lt;br /&gt;
示してあります。2個の座標系の相対速度は光速の20%です。見事に歪んでいることがわかるでしょう。&lt;br /&gt;
&lt;br /&gt;
この図は見方を変えれば &amp;lt;math&amp;gt;txyz&amp;lt;/math&amp;gt; 時空から見た &amp;lt;math&amp;gt;t'x'y'z'&amp;lt;/math&amp;gt;時空の姿です。但し y軸,z軸は省略してあります。&lt;br /&gt;
省略してあるので、これらの座標系(時空)は &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; '''座標系'''、と &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; '''座標系'''と呼ぶことにしましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:Lorents.png]]|図4 &amp;lt;math&amp;gt;txyz&amp;lt;/math&amp;gt; 時空から見た &amp;lt;math&amp;gt;t'x'y'z'&amp;lt;/math&amp;gt;時空の姿}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
一次変換の性質を語るのに有効な武器は言うまでもなく行列式、固有値と固有べクトルです。&lt;br /&gt;
早速計算してみましょう。&lt;br /&gt;
&lt;br /&gt;
ローレンツ変換の行列式は &amp;lt;math&amp;gt;\cosh^2\alpha-\sinh^2\alpha=1&amp;lt;/math&amp;gt; ですから、双曲変換によって図形の&lt;br /&gt;
形は歪むものの面積は変化しません。&lt;br /&gt;
&lt;br /&gt;
ローレンツ変換の固有値は、固有方程式 &lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;(\cosh\alpha-\lambda)^2-\sinh^2\alpha=1&amp;lt;/math&amp;gt; |17}}&lt;br /&gt;
&lt;br /&gt;
を解くと、&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\lambda = \cosh\alpha \pm \sinh\alpha = e^\alpha, e^{-\alpha} =&lt;br /&gt;
\frac{\sqrt{1+v}}{\sqrt{1-v}}, \frac{\sqrt{1-v}}{\sqrt{1+v}}&amp;lt;/math&amp;gt; |18}}&lt;br /&gt;
&lt;br /&gt;
固有ベクトルは &lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\left( \begin{array} {c} 1\\ 1 \end{array}\right), &lt;br /&gt;
\left( \begin{array} {c} 1\\ -1 \end{array}\right)&amp;lt;/math&amp;gt; |19}}&lt;br /&gt;
&lt;br /&gt;
つまり、ローレンツ変換は　&amp;lt;math&amp;gt;\left( \begin{array} {c} 1\\ 1 \end{array}\right) &amp;lt;/math&amp;gt; 方向へ &amp;lt;math&amp;gt;e^\alpha=\frac{\sqrt{1+v}}{\sqrt{1-v}}&amp;lt;/math&amp;gt; 倍だけ図形を引き伸ばし、&lt;br /&gt;
&amp;lt;math&amp;gt;\left( \begin{array} {c} 1\\ -1 \end{array}\right)&amp;lt;/math&amp;gt; 方向に &amp;lt;math&amp;gt;e^{-\alpha}=\frac{\sqrt{1-v}}{\sqrt{1+v}}&amp;lt;/math&amp;gt; 倍だけ図形を伸長する変換であることがわかります( &amp;lt;math&amp;gt;\alpha &amp;lt; 0&amp;lt;/math&amp;gt; なら、つまり縮小になる )。&lt;br /&gt;
&lt;br /&gt;
これは上の図の図形の変形の仕方からも明らかでしょう。&lt;br /&gt;
&lt;br /&gt;
また、この2つの固有ベクトルの向きは'''「光速」'''を表しています。&lt;br /&gt;
固有ベクトルの方向は一次変換によって変化しないので、つまりこれはローレンツ変換によって&lt;br /&gt;
'''光速が光速に変換される'''ことを示しています。&lt;br /&gt;
&lt;br /&gt;
==目盛りの大きさ==&lt;br /&gt;
&lt;br /&gt;
最後に、ローレンツ変換の座標の目盛り大きさについて考察しておきましょう。&lt;br /&gt;
&lt;br /&gt;
下図は、1 m x 1 m の正方形をローレンツ変換する様子を表しています。水色の矩形が変換前、黒色が変換後です。&lt;br /&gt;
四角形O'A'B'Cは正方形OABCをローレンツ変換した結果です。図ではローレンツ変換の歪みをよりわかりやすくするため、系間の相対速度は光速の40%にしました。&lt;br /&gt;
&lt;br /&gt;
この図は、&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標での時空の正方形が &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系でどのように見えるかを示しているとも言えます。&lt;br /&gt;
つまり&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標の時空の格子状の目盛りが、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系でどのように歪んで見えるかを示しています。&lt;br /&gt;
&lt;br /&gt;
一つずつ、座標値を計算してみましょう。&lt;br /&gt;
&lt;br /&gt;
まず、点A'と 点C' は、今までの議論から&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{fig|[[ファイル:ローレンツ変換の目盛り.png]]|図5 ローレンツ変換の目盛り}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;C'=\left( \begin{array} {c} \cosh\alpha \\ \sinh\alpha \end{array}\right)&lt;br /&gt;
=\left( \begin{array} {c} \frac{1}{\sqrt{1-v^2}} \\ \frac{v}{\sqrt{1-v^2}} \end{array}\right)&lt;br /&gt;
, A'=\left( \begin{array} {c} \sinh\alpha \\ \cosh\alpha \end{array}\right)&lt;br /&gt;
=\left( \begin{array} {c} \frac{v}{\sqrt{1-v^2}} \\ \frac{1}{\sqrt{1-v^2}} \end{array}\right)&lt;br /&gt;
&amp;lt;/math&amp;gt; |20}}&lt;br /&gt;
&lt;br /&gt;
点C' は &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では &amp;lt;math&amp;gt;\left( \begin{array} {c} 1 \\ 0 \end{array}\right)&amp;lt;/math&amp;gt; ですから、&lt;br /&gt;
点 O' から C' までの経路は、 &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では静止している物体の世界線です。&lt;br /&gt;
&lt;br /&gt;
C'が線分BCより右( &amp;lt;math&amp;gt;t=\cosh\alpha=\frac{1}{\sqrt{1-v^2}} &amp;gt; 1&amp;lt;/math&amp;gt; )になることから、&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系で静止している物体に取り付けられている時計は、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系から見ると遅く見えることがわかります。これが有名な「運動する物体の時間は遅くなる」ということの正体です。&lt;br /&gt;
&lt;br /&gt;
逆を考えてみましょう。OCは&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系で静止している物体の世界線です。この線と 線分B'C'を延長した線と交わる点 D では &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では時刻が &amp;lt;math&amp;gt;1 m&amp;lt;/math&amp;gt; になります。 &lt;br /&gt;
&lt;br /&gt;
点Dの&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系での &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; の値(ODの長さ )は、&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;\begin{array} {ll}\cosh\alpha - \sinh\alpha\tanh\alpha &amp;amp;= \frac{\cosh^2\alpha-\sinh^2\alpha}{\cosh\alpha} \\&lt;br /&gt;
&amp;amp;=\frac{1}{\cosh\alpha} = \sqrt{1-v^2}&amp;lt; 1 \end{array}&amp;lt;/math&amp;gt;|21}}&lt;br /&gt;
&lt;br /&gt;
つまり、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系で静止している物体の時計は、やはり&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系から見ると遅く見えるのです。&lt;br /&gt;
&lt;br /&gt;
よくこの、互いに相手の時計が遅くなることが矛盾であるという議論を見かけますが、実際には、異なる世界線を測定した結果であり、図の線分BCとB'Dが交差していることが原因で、矛盾はないことがこの時空図からよくわかると思います。&lt;br /&gt;
&lt;br /&gt;
そもそもローレンツ変換は単純な一次変換であり、&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系の座標点と&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系の座標点との間には1対1の対応があるため、矛盾が発生しようがないのです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EA'B' とOC' は&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系で静止している、向きがX軸方向の棒の両端の世界線と考えることができます。&lt;br /&gt;
&lt;br /&gt;
この棒の長さは &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では勿論 &amp;lt;math&amp;gt;1 m&amp;lt;/math&amp;gt; ですが、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系では OE の長さになります。OEの長さはODの長さと同じで式(21)になり、&amp;lt;math&amp;gt;1 m&amp;lt;/math&amp;gt; より短くなります。これが動いている物体が収縮するフィッツジェラルド収縮、或いはローレンツ収縮の正体です。&lt;br /&gt;
&lt;br /&gt;
一方 OC と AB は、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系で静止している、向きがX軸方向の棒の両端の世界線と考えることができます。&lt;br /&gt;
&lt;br /&gt;
この棒は &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系では長さはもちろん &amp;lt;math&amp;gt;1 m&amp;lt;/math&amp;gt; ですが、&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系では&lt;br /&gt;
&amp;lt;math&amp;gt;1 m &amp;lt;/math&amp;gt; より短くなるのは OF が OA'より短いことから明らかです。&lt;br /&gt;
&lt;br /&gt;
OA'の &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系での長さは&lt;br /&gt;
&lt;br /&gt;
{{eqn|OA'の長さ &amp;lt;math&amp;gt;=\sqrt{\cosh^2\alpha+\sinh^2\alpha}=&lt;br /&gt;
\cosh\alpha\sqrt{1+\tanh^2\alpha}=\sqrt{\frac{1+v^2}{1-v^2}}=L&amp;lt;/math&amp;gt;|22}}&lt;br /&gt;
&lt;br /&gt;
OFの &amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系での長さは、Fの位置が  &lt;br /&gt;
&amp;lt;math&amp;gt;\left( \begin{array} {c} \tanh\alpha \\ 1 \end{array}\right)&amp;lt;/math&amp;gt; ですので&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{eqn|OFの長さ &amp;lt;math&amp;gt;=\sqrt{1+\tanh^2\alpha}=\sqrt{1+v^2}=l&amp;lt;/math&amp;gt;|23}}&lt;br /&gt;
&lt;br /&gt;
従って OF の&amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系での長さは、&lt;br /&gt;
&lt;br /&gt;
{{eqn|&amp;lt;math&amp;gt;1 m \times l \div L = \frac{1}{\cosh\alpha}=\sqrt{1-v^2}&amp;lt;/math&amp;gt;|24}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
つまり、&amp;lt;math&amp;gt;tx&amp;lt;/math&amp;gt; 座標系で静止している棒は &amp;lt;math&amp;gt;t'x'&amp;lt;/math&amp;gt; 座標系からは短くみえるわけで、やはり運動している棒は短くなります。&lt;br /&gt;
&lt;br /&gt;
このように、系の中で静止している棒がもう一つの系から見ると短く見えるのは、ガレージのパラドックスとして有名ですが、異なる2セットの世界線を異なる時間軸を使って、測定した結果であること、言い方を変えると、線分ABとEB'が交差していることが原因であることが、この時空図からよくわかると思います。従ってパラドックスは存在しません。&lt;br /&gt;
&lt;br /&gt;
OD, OE の長さ、OA'の長さ(=OC'の長さ), OF の長さがわかりましたので、最後に B' の位置を求めておきましょう。&lt;br /&gt;
&lt;br /&gt;
B'の座標は、&amp;lt;math&amp;gt;B=\left( \begin{array} {c} 1 \\ 1 \end{array}\right)&amp;lt;/math&amp;gt; をローレンツ変換するだけですので、&lt;br /&gt;
&lt;br /&gt;
{{eqn|Bの位置 &amp;lt;math&amp;gt;=\left( \begin{array} {c} \cosh\alpha+\sinh\alpha \\ \cosh\alpha+\sinh\alpha \end{array}\right)&lt;br /&gt;
=\left( \begin{array} {c} e^\alpha \\ e^\alpha \end{array}\right)&lt;br /&gt;
=\left( \begin{array} {c} \sqrt{\frac{1+v}{1-v}} \\ \sqrt{\frac{1+v}{1-v}} \end{array}\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;|25}}&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
多くの物理学の教科書では、ローレンツ変換はあまりその数学的内容を解説されることなく、ごちゃごちゃとした数式で紹介されることが多いですが、本記事ではローレンツ変換の数学的な内容を若干解説してみました。&lt;br /&gt;
&lt;br /&gt;
ローレンツ変換は、座標系を幾何学単位系に直すと、単純な&lt;br /&gt;
双曲回転であることがすぐにわかります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
双曲回転であることがわかれば、双曲線、双曲線関数と双曲回転の様々な知識をローレンツ変換の理解に総動員できます。数式も単純になり、取り扱いが楽になり、見通しも付けやすくなります。&lt;br /&gt;
&lt;br /&gt;
この記事で紹介した知識が、ローレンツ変換のより深い理解につながれば幸いです。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8"/>
				<updated>2026-10-10T01:03:53Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* 最新情報 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:共通]]&lt;br /&gt;
[[ファイル:Header2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
== '''TK Notebook へようこそ''' ==&lt;br /&gt;
&lt;br /&gt;
私は何故かQ&amp;amp;Aというものが好きで、メーリングリストで回答役になったり、教えて goo などにしこしこ回答を書いていることが多いのですが、&lt;br /&gt;
それをまた文書にまとめるのも好きなんです。&lt;br /&gt;
&lt;br /&gt;
このサイトは、いままでいろいろ書き溜めたメモを置くために作りました。&lt;br /&gt;
&lt;br /&gt;
最初は WordPress とか、HTMLの手打ちとか、いろいろ考えたのですが、数式が書きたいとか、管理に手間がかかると続かないとか、気が付いたら何処でも直せたらとか、いろいろ考え、紆余曲折を経て ConoHa VPS + MediaWiki に落ち着きました。&lt;br /&gt;
&lt;br /&gt;
物理とか数学とかプログラミングとか、いろいろな話題をできるだけわかりやすい形で紹介したいと考えています。&lt;br /&gt;
&lt;br /&gt;
このサイトの内容が皆さんのお役にたてば幸いです。&lt;br /&gt;
&lt;br /&gt;
2014年11月 中村&lt;br /&gt;
&lt;br /&gt;
なにかご意見があれば mailto:tknakamuri@gmail.com まで&lt;br /&gt;
&lt;br /&gt;
== '''最新情報''' ==&lt;br /&gt;
&lt;br /&gt;
;2026年10月10日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonアプリケーションを起動する]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月9日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月8日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月7日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」''' を Python Install Manager に対応するように修正しました。 &lt;br /&gt;
;2025年2月16日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「光学」'''に'''「[[ヤングの実験の光路長差について]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2018年12月01日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PyCharm CEからFlaskアプリを起動する]]」'''を追加しました。&lt;br /&gt;
;2018年11月18日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を更新しました。&lt;br /&gt;
;2018年9月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの引数の引き渡し]]」'''を追加しました。&lt;br /&gt;
;2018年8月27日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[Pack ジオメトリマネージャ]]」'''を追加しました。&lt;br /&gt;
;2018年8月14日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PythonのHELP]]」'''を追加しました。&lt;br /&gt;
;2018年2月10日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[いろいろなウィジェット]]」'''を追加しました。&lt;br /&gt;
;2018年2月1日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム　ハロー]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[シンプルアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2018年1月3日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの環境とは何か？]]」'''を追加しました。&lt;br /&gt;
;2018年1月1日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで簡単にロギングを行うには]]」'''を追加しました。&lt;br /&gt;
;2017年8月15日&lt;br /&gt;
:'''「[[数学の部屋#複素数]]」'''に複素数の話題を幾つか追加しました。&lt;br /&gt;
;2017年7月22日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Aptana3.6.1を使って見る]]」'''を追加しました。&lt;br /&gt;
;2017年7月17日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS MediaWikiにログインできなくなった！]]」'''を追加しました。&lt;br /&gt;
;2017年4月2日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[Maven test でテストが実行されない]]」'''を追加しました。&lt;br /&gt;
;2017年2月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2017年1月21日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[特定の行の checkstyle のチェックを抑制するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月17日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[管理者のみが見られる画面を作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 ベストプラクティス]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 で画面で JavaScriptやCSS の読み込みを記述するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでセッションを使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでアクションクラスを知るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月31日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で scala を初めて実行する時嵌りやすいこと]]」'''を追加しました。&lt;br /&gt;
;2016年12月22日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 の struts.xml や struts.properties で指定する設定の一覧はどこ？]]」'''を追加しました。&lt;br /&gt;
;2016年12月18日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で CheckStyle を使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でフォームで複数ボタンを使う際、ボタンでアクションを切り替えるには]]」'''を追加しました。&lt;br /&gt;
;2016年12月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でリンクボタンを作るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月10日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[変換エラーメッセージを日本語にするには]]」'''を追加しました。&lt;br /&gt;
;2016年12月9日&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[リモートリポジトリの巻き戻しが拒否される]]」'''を追加しました。&lt;br /&gt;
;2016年11月29日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に NextCloudを入れてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:別の記事にもありますように、サーバの他のサービスのセキュリティ向上のため、というのは建前で(^^;, '''SSL証明書というものを個人でとって使ってみたかったので'''、Webは完全にSSLへリダイレクトすることにしました。設定の何か所かに http が直書きされていたので取り除きました(^^; 証明書がしょぼくて見えないという方がおられましたらご連絡をお願いします。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS の apache がhttpを httpsへリダイレクトするようにしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ラグランジュの運動方程式の導出]]」'''に'''「[[ラグランジュの運動方程式の導出#ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ | ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS への MediaWikiのインストール]]」'''に'''「[[ConoHa VPS への MediaWikiのインストール#追記3|追記3]]」'''を追加しました。SSL化するのに必要な MediaWikiの変更事項です。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に SSL証明書を取得してみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月21日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[JUnitのpom.xmlの設定]]」'''を追加しました。&lt;br /&gt;
;2016年11月19日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisで行ロック(悲観ロック)を行うには？]]」'''を追加しました。&lt;br /&gt;
;2016年11月16日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[ステートメントにパラメータを複数渡す]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[NULL を確実に設定できるようにするには]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisを使ってみる]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コマンドラインで依存するライブラリやプラグインを全てダウンロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[MySQL]]」'''に'''「[[Mysql-connector-java のバグで JavaからMySQLに接続できない]]」'''を追加しました。&lt;br /&gt;
;2016年11月5日&lt;br /&gt;
:'''「[[Mercurial Tips]]」'''に'''「[[Mercurialの 読込不可のパターンファイル・・・・　というエラーメッセージを消すには]]」'''を追加しました。&lt;br /&gt;
;2016年11月1日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Mercurialをインストールしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年10月25日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Gitサーバを立ててみた]]」'''を追加しました。&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[git commit のエディターに秀丸を指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月22日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[プラグインのゴールとその説明を見るには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルリポジトリからプロジェクトを削除するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルなJARをプロジェクトに追加するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月19日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ソースのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コンパイルでのJavaバージョンを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年9月26日&lt;br /&gt;
:'''「[[コンピュータの部屋#Windows]]」'''に'''「[[Windows 10 で スマホをMTP接続できなくなった時の対処法]]」'''を追加しました。&lt;br /&gt;
;2016年9月25日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2で slf4j+logback を使うには]]」'''を追加しました。&lt;br /&gt;
;2016年9月24日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Pom.xml の編集で 依存関係の追加 の際、検索を可能にするには]]」'''を追加しました。&lt;br /&gt;
;2016年9月17日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[最初のアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2016年9月10日&lt;br /&gt;
:CSS改良。見出しを若干見やすくしました。&lt;br /&gt;
;2016年8月27日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipseでアプリのソース変更時、WildFlyをリロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年8月26日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipse(Neon)にWildFlyを登録するには]]」'''を追加しました。&lt;br /&gt;
;2016年8月18日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[EclipseでJSFのmavenベースのプロジェクトを作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[JSFでの inputText タグの文字化け対処]]」'''を追加しました。&lt;br /&gt;
;2016年8月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2のひな形を作成するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月30日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JDBCによる悲観ロックの落とし穴]]」'''を追加しました。&lt;br /&gt;
;2016年7月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaDBにSquirrelから接続するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月15日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を大きく更新しました。&lt;br /&gt;
;2016年6月21日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を追加しました。&lt;br /&gt;
;2016年6月19日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでComboBoxの選択肢を列挙型するには]]」'''を加えました。&lt;br /&gt;
;2016年5月30日&lt;br /&gt;
:'''「[[Gradle Tips]]」'''に'''「[[Javaのコンパイルで、ソースファイルのエンコーディングを UTF-8にするには]]」'''を追加しました。&lt;br /&gt;
;2016年5月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaとGroovyでソースファイルのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年5月11日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[TableViewでセルのアライメントを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年4月3日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[JavaFXの Hello World]]」'''を追加しました。&lt;br /&gt;
;2016年4月1日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''の'''「[[JavaFXの座標系と座標変換]]」'''を大幅に更新し、3Dカメラの記述を加えました。&lt;br /&gt;
;2016年3月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[パラレルカメラのクリッピングを変更するには]]」'''を追加しました。&lt;br /&gt;
;2016年3月27日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[JavaFXの座標系と座標変換]]」'''を追加しました。&lt;br /&gt;
;2016年3月17日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[指定方向のローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年3月5日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[美しいローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年2月20日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[デフォルトプロパティの探し方]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラを初期化するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラでStageを使いたい]]」'''を追加しました。&lt;br /&gt;
;2015年12月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでChoiceBoxの選択肢を記述するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月29日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでノードを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月27日&lt;br /&gt;
:'''「[[コンピュータの部屋]]'''の'''「電卓」'''に'''「[[Fx-cp400]]」'''の記事を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[幾何学単位系]]」'''を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[ステージを完全に透明化するには]]」'''を追加しました。&lt;br /&gt;
;2015年11月5日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[Default Activity Not Found が出たら]]」'''を追加しました。&lt;br /&gt;
;2015年11月1日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioで効率よくJavaBeansを作成するには]]」'''&lt;br /&gt;
;2015年10月28日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Espressoでビルドエラーがでたら]]」'''を追加しました。&lt;br /&gt;
;2015年10月13日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[別プロジェクトのモジュールを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年10月08日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Up Navigation を実装するには]]」'''を追加しました。&lt;br /&gt;
;2015年 9月29日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioでSubversionを使ってプロジェクトを共有]]」'''を追加しました。また'''「[[AndroidStudioからSubversionへインポート]]」'''を修正しました。&lt;br /&gt;
;2015年 9月22日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[カスタムビューを作る]]」'''を追加しました。&lt;br /&gt;
;2015年 9月20日&lt;br /&gt;
:'''「[[コンピュータの部屋#Android|Android]]」'''にAndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 9月14日&lt;br /&gt;
:[[コンピュータの部屋]]に[[コンピュータの部屋#Android|Android]]を追加。AndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[媒介変数表示]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[ファイルのデータを描く]]」'''を追加しました。&lt;br /&gt;
;2015年 8月20日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[3Dグラフの表示方法を変える]]」'''を追加しました。&lt;br /&gt;
;2015年 8月19日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示が荒すぎるのを治す]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月13日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[座標軸に目盛を付けるには(3D)]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月06日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[viewの意味]]」'''などをたくさん追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月05日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示範囲を決める]]」'''、'''「[[座標軸に目盛を付けるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月04日&lt;br /&gt;
:[[コンピュータの部屋]]に記事追加。'''[[GNUPLOT]]'''の記事を2本追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月30日&lt;br /&gt;
:[[物理の部屋]]に記事追加。解析力学を新設し、'''「[[ラグランジュの運動方程式の導出]]」'''の記事を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月12日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[オイラー角]]''' を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月11日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[座標変換と回転]]''' を追加追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 5月29日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月30日&lt;br /&gt;
:[[物理の部屋]]を新設。物理のトンデモサイト紹介に'''「[[カーナビの相対論効果は嘘]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月20日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 2月08日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 1月30日&lt;br /&gt;
:[[モバイルの部屋]]を作り、最初の記事 '''「[[priori2を買いました]]」''' を書きました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSを再調整&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSも改修。若干見やすくしました。数式表示をextension:Mathjaxから extension:Math へ移行完了。数式の表示が大きくなり、また、一部のFHDタブレットでの表示の不具合がなくなりました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月27日&lt;br /&gt;
:現在 数学の部屋を改装中。Extension:MathJaxからExtension:Math(サーバサイドでPNG生成)に移行中です。現在数式がまともに表示されません。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8"/>
				<updated>2026-10-10T01:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* 最新情報 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:共通]]&lt;br /&gt;
[[ファイル:Header2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
== '''TK Notebook へようこそ''' ==&lt;br /&gt;
&lt;br /&gt;
私は何故かQ&amp;amp;Aというものが好きで、メーリングリストで回答役になったり、教えて goo などにしこしこ回答を書いていることが多いのですが、&lt;br /&gt;
それをまた文書にまとめるのも好きなんです。&lt;br /&gt;
&lt;br /&gt;
このサイトは、いままでいろいろ書き溜めたメモを置くために作りました。&lt;br /&gt;
&lt;br /&gt;
最初は WordPress とか、HTMLの手打ちとか、いろいろ考えたのですが、数式が書きたいとか、管理に手間がかかると続かないとか、気が付いたら何処でも直せたらとか、いろいろ考え、紆余曲折を経て ConoHa VPS + MediaWiki に落ち着きました。&lt;br /&gt;
&lt;br /&gt;
物理とか数学とかプログラミングとか、いろいろな話題をできるだけわかりやすい形で紹介したいと考えています。&lt;br /&gt;
&lt;br /&gt;
このサイトの内容が皆さんのお役にたてば幸いです。&lt;br /&gt;
&lt;br /&gt;
2014年11月 中村&lt;br /&gt;
&lt;br /&gt;
なにかご意見があれば mailto:tknakamuri@gmail.com まで&lt;br /&gt;
&lt;br /&gt;
== '''最新情報''' ==&lt;br /&gt;
&lt;br /&gt;
;2026年10月9日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonアプリケーションを起動する]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月9日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''の誤りの修正、追記を行いました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月8日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Python Install Manager とは]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2026年10月7日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」''' を Python Install Manager に対応するように修正しました。 &lt;br /&gt;
;2025年2月16日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「光学」'''に'''「[[ヤングの実験の光路長差について]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2018年12月01日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PyCharm CEからFlaskアプリを起動する]]」'''を追加しました。&lt;br /&gt;
;2018年11月18日&lt;br /&gt;
:'''「[[Python Tips]]」'''の'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を更新しました。&lt;br /&gt;
;2018年9月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの引数の引き渡し]]」'''を追加しました。&lt;br /&gt;
;2018年8月27日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[Pack ジオメトリマネージャ]]」'''を追加しました。&lt;br /&gt;
;2018年8月14日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[PythonのHELP]]」'''を追加しました。&lt;br /&gt;
;2018年2月10日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[いろいろなウィジェット]]」'''を追加しました。&lt;br /&gt;
;2018年2月1日&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[ミニマム　ハロー]]」'''を追加しました。&lt;br /&gt;
:'''「[[Tkinter Tips]]」'''に'''「[[シンプルアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2018年1月3日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonの環境とは何か？]]」'''を追加しました。&lt;br /&gt;
;2018年1月1日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで簡単にロギングを行うには]]」'''を追加しました。&lt;br /&gt;
;2017年8月15日&lt;br /&gt;
:'''「[[数学の部屋#複素数]]」'''に複素数の話題を幾つか追加しました。&lt;br /&gt;
;2017年7月22日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Aptana3.6.1を使って見る]]」'''を追加しました。&lt;br /&gt;
;2017年7月17日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS MediaWikiにログインできなくなった！]]」'''を追加しました。&lt;br /&gt;
;2017年4月2日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[Maven test でテストが実行されない]]」'''を追加しました。&lt;br /&gt;
;2017年2月11日&lt;br /&gt;
:'''「[[Python Tips]]」'''に'''「[[Pythonで作成したプログラム起動時、自動的に Pythonのバージョンを を切り替えるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2017年1月21日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[特定の行の checkstyle のチェックを抑制するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月17日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[管理者のみが見られる画面を作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 ベストプラクティス]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 で画面で JavaScriptやCSS の読み込みを記述するには]]」'''を追加しました。&lt;br /&gt;
;2017年1月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでセッションを使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Interceptorでアクションクラスを知るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月31日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で scala を初めて実行する時嵌りやすいこと]]」'''を追加しました。&lt;br /&gt;
;2016年12月22日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 の struts.xml や struts.properties で指定する設定の一覧はどこ？]]」'''を追加しました。&lt;br /&gt;
;2016年12月18日&lt;br /&gt;
:'''「[[IntelliJ IDEA Tips]]」'''に'''「[[IntelliJ IDEA で CheckStyle を使うには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でフォームで複数ボタンを使う際、ボタンでアクションを切り替えるには]]」'''を追加しました。&lt;br /&gt;
;2016年12月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2 でリンクボタンを作るには]]」'''を追加しました。&lt;br /&gt;
;2016年12月10日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[変換エラーメッセージを日本語にするには]]」'''を追加しました。&lt;br /&gt;
;2016年12月9日&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[リモートリポジトリの巻き戻しが拒否される]]」'''を追加しました。&lt;br /&gt;
;2016年11月29日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に NextCloudを入れてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:別の記事にもありますように、サーバの他のサービスのセキュリティ向上のため、というのは建前で(^^;, '''SSL証明書というものを個人でとって使ってみたかったので'''、Webは完全にSSLへリダイレクトすることにしました。設定の何か所かに http が直書きされていたので取り除きました(^^; 証明書がしょぼくて見えないという方がおられましたらご連絡をお願いします。&lt;br /&gt;
;2016年11月27日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS の apache がhttpを httpsへリダイレクトするようにしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ラグランジュの運動方程式の導出]]」'''に'''「[[ラグランジュの運動方程式の導出#ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ | ラグランジュの運動方程式からオイラーラグランジュの運動方程式へ]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS への MediaWikiのインストール]]」'''に'''「[[ConoHa VPS への MediaWikiのインストール#追記3|追記3]]」'''を追加しました。SSL化するのに必要な MediaWikiの変更事項です。&lt;br /&gt;
&lt;br /&gt;
;2016年11月26日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に SSL証明書を取得してみた]]」'''を追加しました。&lt;br /&gt;
;2016年11月21日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[JUnitのpom.xmlの設定]]」'''を追加しました。&lt;br /&gt;
;2016年11月19日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisで行ロック(悲観ロック)を行うには？]]」'''を追加しました。&lt;br /&gt;
;2016年11月16日&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[ステートメントにパラメータを複数渡す]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[NULL を確実に設定できるようにするには]]」'''を追加しました。&lt;br /&gt;
:'''「[[MyBatis Tips]]」'''に'''「[[MyBatisを使ってみる]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コマンドラインで依存するライブラリやプラグインを全てダウンロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年11月13日&lt;br /&gt;
:'''「[[MySQL]]」'''に'''「[[Mysql-connector-java のバグで JavaからMySQLに接続できない]]」'''を追加しました。&lt;br /&gt;
;2016年11月5日&lt;br /&gt;
:'''「[[Mercurial Tips]]」'''に'''「[[Mercurialの 読込不可のパターンファイル・・・・　というエラーメッセージを消すには]]」'''を追加しました。&lt;br /&gt;
;2016年11月1日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Mercurialをインストールしてみた]]」'''を追加しました。&lt;br /&gt;
;2016年10月25日&lt;br /&gt;
:'''「[[ConoHa VPS を使ってみた]]」'''に'''「[[ConoHa VPS に Gitサーバを立ててみた]]」'''を追加しました。&lt;br /&gt;
:'''「[[git tips]]」'''に'''「[[git commit のエディターに秀丸を指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月22日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[プラグインのゴールとその説明を見るには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルリポジトリからプロジェクトを削除するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月20日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ローカルなJARをプロジェクトに追加するには]]」'''を追加しました。&lt;br /&gt;
;2016年10月19日&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[ソースのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[Maven Tips]]」'''に'''「[[コンパイルでのJavaバージョンを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年9月26日&lt;br /&gt;
:'''「[[コンピュータの部屋#Windows]]」'''に'''「[[Windows 10 で スマホをMTP接続できなくなった時の対処法]]」'''を追加しました。&lt;br /&gt;
;2016年9月25日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2で slf4j+logback を使うには]]」'''を追加しました。&lt;br /&gt;
;2016年9月24日&lt;br /&gt;
:'''「[[Eclipse Tips]]」'''に'''「[[Pom.xml の編集で 依存関係の追加 の際、検索を可能にするには]]」'''を追加しました。&lt;br /&gt;
;2016年9月17日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[最初のアプリケーション]]」'''を追加しました。&lt;br /&gt;
;2016年9月10日&lt;br /&gt;
:CSS改良。見出しを若干見やすくしました。&lt;br /&gt;
;2016年8月27日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipseでアプリのソース変更時、WildFlyをリロードするには]]」'''を追加しました。&lt;br /&gt;
;2016年8月26日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[Eclipse(Neon)にWildFlyを登録するには]]」'''を追加しました。&lt;br /&gt;
;2016年8月18日&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[EclipseでJSFのmavenベースのプロジェクトを作るには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JSF Tips]]」'''に'''「[[JSFでの inputText タグの文字化け対処]]」'''を追加しました。&lt;br /&gt;
;2016年8月16日&lt;br /&gt;
:'''「[[Struts2 Tips]]」'''に'''「[[Struts2のひな形を作成するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月30日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JDBCによる悲観ロックの落とし穴]]」'''を追加しました。&lt;br /&gt;
;2016年7月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaDBにSquirrelから接続するには]]」'''を追加しました。&lt;br /&gt;
;2016年7月15日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を大きく更新しました。&lt;br /&gt;
;2016年6月21日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[SceneBuilderで独自クラスを使うには]]」'''を追加しました。&lt;br /&gt;
;2016年6月19日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでComboBoxの選択肢を列挙型するには]]」'''を加えました。&lt;br /&gt;
;2016年5月30日&lt;br /&gt;
:'''「[[Gradle Tips]]」'''に'''「[[Javaのコンパイルで、ソースファイルのエンコーディングを UTF-8にするには]]」'''を追加しました。&lt;br /&gt;
;2016年5月28日&lt;br /&gt;
:'''「[[Java Tips]]」'''に'''「[[JavaとGroovyでソースファイルのエンコーディングを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年5月11日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[TableViewでセルのアライメントを指定するには]]」'''を追加しました。&lt;br /&gt;
;2016年4月3日&lt;br /&gt;
:'''「[[JavaFXチュートリアル]]」'''に'''「[[JavaFXの Hello World]]」'''を追加しました。&lt;br /&gt;
;2016年4月1日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''の'''「[[JavaFXの座標系と座標変換]]」'''を大幅に更新し、3Dカメラの記述を加えました。&lt;br /&gt;
;2016年3月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[パラレルカメラのクリッピングを変更するには]]」'''を追加しました。&lt;br /&gt;
;2016年3月27日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[JavaFXの座標系と座標変換]]」'''を追加しました。&lt;br /&gt;
;2016年3月17日&lt;br /&gt;
:'''「[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[指定方向のローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年3月5日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[美しいローレンツ変換]]」'''を加えました。&lt;br /&gt;
;2016年2月20日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[デフォルトプロパティの探し方]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラを初期化するには]]」'''を追加しました。&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[コントローラでStageを使いたい]]」'''を追加しました。&lt;br /&gt;
;2015年12月30日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでChoiceBoxの選択肢を記述するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月29日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[FXMLでノードを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年12月27日&lt;br /&gt;
:'''「[[コンピュータの部屋]]'''の'''「電卓」'''に'''「[[Fx-cp400]]」'''の記事を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''[[物理の部屋]]」'''の'''「相対性理論」'''に'''「[[幾何学単位系]]」'''を追加しました。&lt;br /&gt;
;2015年12月6日&lt;br /&gt;
:'''「[[JavaFX Tips]]」'''に'''「[[ステージを完全に透明化するには]]」'''を追加しました。&lt;br /&gt;
;2015年11月5日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[Default Activity Not Found が出たら]]」'''を追加しました。&lt;br /&gt;
;2015年11月1日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioで効率よくJavaBeansを作成するには]]」'''&lt;br /&gt;
;2015年10月28日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Espressoでビルドエラーがでたら]]」'''を追加しました。&lt;br /&gt;
;2015年10月13日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[別プロジェクトのモジュールを参照するには]]」'''を追加しました。&lt;br /&gt;
;2015年10月08日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[Up Navigation を実装するには]]」'''を追加しました。&lt;br /&gt;
;2015年 9月29日&lt;br /&gt;
:'''「[[AndroidStudio Tips]]」'''に'''「[[AndroidStudioでSubversionを使ってプロジェクトを共有]]」'''を追加しました。また'''「[[AndroidStudioからSubversionへインポート]]」'''を修正しました。&lt;br /&gt;
;2015年 9月22日&lt;br /&gt;
:'''「[[Android Tips]]」'''に'''「[[カスタムビューを作る]]」'''を追加しました。&lt;br /&gt;
;2015年 9月20日&lt;br /&gt;
:'''「[[コンピュータの部屋#Android|Android]]」'''にAndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 9月14日&lt;br /&gt;
:[[コンピュータの部屋]]に[[コンピュータの部屋#Android|Android]]を追加。AndroidStudioや Android の Tips記事をいくつか追加しました。&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[媒介変数表示]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月21日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[ファイルのデータを描く]]」'''を追加しました。&lt;br /&gt;
;2015年 8月20日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[3Dグラフの表示方法を変える]]」'''を追加しました。&lt;br /&gt;
;2015年 8月19日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示が荒すぎるのを治す]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月13日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[座標軸に目盛を付けるには(3D)]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月06日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[viewの意味]]」'''などをたくさん追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月05日&lt;br /&gt;
:[[コンピュータの部屋]]の [[GNUPLOT]]に、記事'''「[[グラフの表示範囲を決める]]」'''、'''「[[座標軸に目盛を付けるには]]」'''を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 8月04日&lt;br /&gt;
:[[コンピュータの部屋]]に記事追加。'''[[GNUPLOT]]'''の記事を2本追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月30日&lt;br /&gt;
:[[物理の部屋]]に記事追加。解析力学を新設し、'''「[[ラグランジュの運動方程式の導出]]」'''の記事を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月12日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[オイラー角]]''' を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 6月11日&lt;br /&gt;
:[[数学の部屋]]の「回転」に記事 '''[[座標変換と回転]]''' を追加追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 5月29日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月30日&lt;br /&gt;
:[[物理の部屋]]を新設。物理のトンデモサイト紹介に'''「[[カーナビの相対論効果は嘘]]」'''を加えました。&lt;br /&gt;
&lt;br /&gt;
;2015年 4月20日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 2月08日&lt;br /&gt;
:[[モバイルの部屋]]に記事を追加しました。&lt;br /&gt;
&lt;br /&gt;
;2015年 1月30日&lt;br /&gt;
:[[モバイルの部屋]]を作り、最初の記事 '''「[[priori2を買いました]]」''' を書きました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSを再調整&lt;br /&gt;
&lt;br /&gt;
;2014年 12月29日&lt;br /&gt;
:CSSも改修。若干見やすくしました。数式表示をextension:Mathjaxから extension:Math へ移行完了。数式の表示が大きくなり、また、一部のFHDタブレットでの表示の不具合がなくなりました。&lt;br /&gt;
&lt;br /&gt;
;2014年 12月27日&lt;br /&gt;
:現在 数学の部屋を改装中。Extension:MathJaxからExtension:Math(サーバサイドでPNG生成)に移行中です。現在数式がまともに表示されません。&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T01:01:58Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* パッケージを -m オプションで起動 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scriptsディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''起動されるモジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 特徴・備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || アプリを単一ファイルで配布できる。 &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要。&lt;br /&gt;
&lt;br /&gt;
アプリを単一ファイルで配布できる。&lt;br /&gt;
&lt;br /&gt;
zipファイルのトップに __main__.py を置けば、zipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能なので、様々な機能を一つのアプリで提供できる。&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:59:33Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* 注意 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scriptsディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 特徴・備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || アプリを単一ファイルで配布できる。 &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要。&lt;br /&gt;
&lt;br /&gt;
アプリを単一ファイルで配布できる。&lt;br /&gt;
&lt;br /&gt;
zipファイルのトップに __main__.py を置けば、zipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能なので、様々な機能を一つのアプリで提供できる。&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:58:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scripysディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 特徴・備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || アプリを単一ファイルで配布できる。 &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要。&lt;br /&gt;
&lt;br /&gt;
アプリを単一ファイルで配布できる。&lt;br /&gt;
&lt;br /&gt;
zipファイルのトップに __main__.py を置けば、zipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能なので、様々な機能を一つのアプリで提供できる。&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:56:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scripysディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 特徴・備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 ||  &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要。zipファイルのトップに __main__.py を置けば、zipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能なので、様々な機能を一つのアプリで提供できる。&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:51:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scripysディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || zipファイルのトップに __main__.py を置けばzipファイルをスクリプトファイルのように扱える。&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:49:02Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scripysディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
&lt;br /&gt;
コマンドは複数登録可能&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:48:51Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scripysディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
コマンドは複数登録可能&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:47:12Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scripysディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || &lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定(zipファイル内) || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:44:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scripysディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:43:41Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scripysディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。パッケージをインストールする必要あり&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。&lt;br /&gt;
パッケージをインストールする必要あり&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	<entry>
		<id>//www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B</id>
		<title>Pythonアプリケーションを起動する</title>
		<link rel="alternate" type="text/html" href="https://www.nakamuri.info/mw/index.php/Python%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B"/>
				<updated>2026-10-10T00:43:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nakamuri: /* まとめ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コンピュータ]][[Category:Python]]&lt;br /&gt;
[[メインページ]]&amp;amp;gt;[[コンピュータの部屋#Python]]&amp;amp;gt;[[Python Tips]]&lt;br /&gt;
&lt;br /&gt;
==はじめに==&lt;br /&gt;
&lt;br /&gt;
python でアプリケーションを起動するのに最も単純な方法は&lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
でしょう。基本の基本です。&lt;br /&gt;
&lt;br /&gt;
しかし、pythonにはアプリケーションを起動するための様々な方法が用意されています。この記事では、pythonでスクリプトを起動するためのいくつかの方法を紹介します。&lt;br /&gt;
&lt;br /&gt;
==スクリプトファイルを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
既に「はじめに」で紹介した通り、アプリケーションは &lt;br /&gt;
 python &amp;lt;pythonスクリプトファイルのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt;のファイルのモジュールレベルのコードが起動されます。起動されるモジュールにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリが追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないとモジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;pythonスクリプトファイルのパス&amp;gt; のディレクトリにはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==ディレクトリを指定して起動する ==&lt;br /&gt;
&lt;br /&gt;
アプリケーションを&lt;br /&gt;
 python &amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
で起動できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が無ければ&lt;br /&gt;
 python.exe: can't find '__main__' module in　&amp;lt;ディレクトリのパス&amp;gt;&lt;br /&gt;
とエラーが表示されて実行できません。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;に__main__.py が有れば、__main__.py のモジュールレベルのコードが起動されます。&lt;br /&gt;
起動される__main__.pyにローカルな __name__ 変数は &amp;quot;__main__&amp;quot; に設定されます。&lt;br /&gt;
&lt;br /&gt;
sys.path には &amp;lt;ディレクトリのパス&amp;gt; が追加されます。&lt;br /&gt;
&lt;br /&gt;
=== 注意 ===&lt;br /&gt;
&lt;br /&gt;
sys.path にはアプリケーションのモジュールやパッケージのトップディレクトリが追加されないと&lt;br /&gt;
モジュールやパッケージの検索がおかしくなります。&lt;br /&gt;
&amp;lt;ディレクトリのパス&amp;gt;にはモジュールやパッケージのトップディレクトリを指定しましょう。&lt;br /&gt;
&lt;br /&gt;
==zipファイル内のファイルから起動する==&lt;br /&gt;
&lt;br /&gt;
python はzipで固められたアプリを起動できます。&lt;br /&gt;
やり方は簡単で、zipファイルをディレクトリであるかのようにして、zipファイル内のファイルを指定します。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ファイルのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
起動されるコードから、zipファイル内の他のモジュールやパッケージを普通に import できます。&lt;br /&gt;
でも、zip内の他のファイルにアクセスするには zip 内のファイルを閲覧するライブラリを使う必要が有ります。&lt;br /&gt;
&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;/&amp;lt;zip内ディレクトリのパス&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で起動した場合は、zipファイル内に &amp;lt;zip内ディレクトリのパス&amp;gt; が存在し、&lt;br /&gt;
&amp;lt;zip内ディレクトリのパス&amp;gt; が指定するディレクトリ内に '''__main__.py''' が存在していることが必要です。&lt;br /&gt;
python　は __main__.py のモジュールレベルのコードを起動します。&lt;br /&gt;
&lt;br /&gt;
また、&lt;br /&gt;
 python &amp;lt;zipファイル名のパス&amp;gt;&lt;br /&gt;
という形式の起動では、zipファイル内のトップに __main__.py ファイルが存在している必要が有ります。&lt;br /&gt;
この __main__.py が起動されます。&lt;br /&gt;
&lt;br /&gt;
結局のところ、zipファイルはディレクトリとみなされ、&lt;br /&gt;
zipファイル内のファイルやディレクトリを指定して起動を行っているだけで、&lt;br /&gt;
起動の様子は'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」''' と全く同じです。&lt;br /&gt;
'''__name__変数'''や '''sys.path へのディレクトリの追加'''や'''注意'''も同じなので、そのあたりは&lt;br /&gt;
'''「[[#スクリプトファイルを指定して起動する|スクリプトファイルを指定して起動する]]」'''や&lt;br /&gt;
'''「[[#ディレクトリを指定して起動する|ディレクトリを指定して起動する]]」'''を参照してください。&lt;br /&gt;
&lt;br /&gt;
==パッケージのエントリポイントを実行する==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションをコマンドで起動できます。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージの '''pyproject.toml''' に&lt;br /&gt;
 [project.scripts]&lt;br /&gt;
 コマンドの名称 = &amp;quot;パッケージ名:関数名&amp;quot;&lt;br /&gt;
が記述されていると、パッケージを pip や uv などで環境に登録すると、&lt;br /&gt;
コマンド(Windowsの場合はコマンドの名称.exe) がpython実行環境に登録されます。&lt;br /&gt;
つまり CLI からコマンドとして起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
'''複数のコマンドを登録できます。'''&lt;br /&gt;
&lt;br /&gt;
コマンドが起動するのは '''[project.scripts]''' に記述された パッケージの関数です。つまり関数が直に起動されます。&lt;br /&gt;
但し、関数が実行される前に、パッケージの初期化(パッケージファイルのモジュールレベルのコード、又は __init__.py のモジュールレベルのコード)が実行されます。&lt;br /&gt;
&lt;br /&gt;
'''実行されるpythonファイルの __name__ 変数は &amp;quot;__main__&amp;quot; にセットされません'''。実行されるファイルのモジュール名がセットされます。'''実行されるパッケージはインストール済みなので、sys.path にはパッケージのトップディレクトリが予め設定済みです'''。&lt;br /&gt;
&lt;br /&gt;
===注意===&lt;br /&gt;
WindowsのPIM版のシステムpythonにアプリをパッケージとしてインストールする場合、コマンドは Scriptsディレクトリにインストールされますが、Scriptsディレクトリに PATH は通ってないので'''コマンドを起動できません'''。'''py install --refresh''' を打つと '''~AppData/Local/Python/bin''' にもコマンドが登録されて使えるようになります。&lt;br /&gt;
&lt;br /&gt;
仮想環境の場合、パッケージをインストールすると仮想環境の Scripysディレクトリにコマンドが登録されるので、即使えるようになります。&lt;br /&gt;
&lt;br /&gt;
PIM版のシステムpythonにアプリをパッケージとしてインストールする場合、複数のシステムpythonに同じアプリをインストールすると、同じコマンド名が競合することになります。この場合 py install --refresh は新しい pythonのものを優先して登録するので注意してください。基本アプリは仮想環境で実行しましょう。&lt;br /&gt;
&lt;br /&gt;
==パッケージを -m オプションで起動==&lt;br /&gt;
&lt;br /&gt;
アプリケーションがパッケージとして pythonランタイムや仮想環境にインストールされている場合、&lt;br /&gt;
アプリケーションのパッケージやモジュールを -m オプションで起動できます。&lt;br /&gt;
 python -m &amp;lt;モジュール名&amp;gt;&lt;br /&gt;
通常パッケージがディレクトリの場合、実行するコードが無いのでパッケージを実行することはできませんが、&lt;br /&gt;
パッケージがモジュールファイルの場合や、パッケージディレクトリが __main__.py ファイルを持っている場合、&lt;br /&gt;
python -m パッケージ名 でパッケージを起動できます。&lt;br /&gt;
&lt;br /&gt;
パッケージがモジュールファイルの場合は、モジュールのモジュールレベルのコードが、&lt;br /&gt;
パッケージディレクトリに __main__.py が有る場合は __main__.py のモジュールレベルのコードが実行されます。&lt;br /&gt;
&lt;br /&gt;
実行されるパッケージはインストール済みなので、'''sys.path にはパッケージのトップディレクトリが予め設定済み'''です。&lt;br /&gt;
&lt;br /&gt;
'''モジュールの __name__ 変数が &amp;quot;__main__&amp;quot; にセットされます'''。&lt;br /&gt;
&lt;br /&gt;
-m オプションでの起動の特徴は、'''py -3.14 -m XXXX''' や python3.14 -m XXXX というように、&lt;br /&gt;
pythonの版を指定して起動できる点です。コマンドによるエントリポイント起動のようなややこしさはありません。&lt;br /&gt;
必要に応じて使い分けてください。&lt;br /&gt;
&lt;br /&gt;
==まとめ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ pythonアプリ起動方法　まとめ&lt;br /&gt;
|-&lt;br /&gt;
! 起動方法 !! __name__ !! sys.path !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| ファイル指定 || &amp;quot;__main__&amp;quot; || ファイルのディレクトリが追加 || 最も基本的&lt;br /&gt;
|-&lt;br /&gt;
| ディレクトリ指定 || &amp;quot;__main__&amp;quot; || ディレクトリが追加 || __main__.py が指定ディレクトリに必要&lt;br /&gt;
|-&lt;br /&gt;
| エントリポイント(コマンド) || モジュール名そのまま || パッケージディレクトリが事前に追加 &lt;br /&gt;
|| pyproject.tomlで設定要。パッケージをインストールする必要あり&lt;br /&gt;
|-&lt;br /&gt;
| モジュール指定(-m) || &amp;quot;__main__&amp;quot; || パッケージディレクトリが事前に追加 &lt;br /&gt;
| モジュールファイル又は__main__.pyが必要。パッケージをインストールする必要あり&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nakamuri</name></author>	</entry>

	</feed>