「停止」を押してもすぐに停止しないのはなぜですか?
「停止」は実行中のコードに中断を要求しますが、すべての処理をすぐに中断できるわけではありません。time.sleep()、ネットワーク応答やロックの待機、一部のネイティブライブラリの計算は、処理が戻ってから停止します。モジュールのインポート中も、インポートが終わるまで待ちます。
しばらく待っても停止しない場合は、ファイルを保存してから iOS のアプリスイッチャーで Pythona を終了し、開き直してください。
FAQ
コードの実行、ライブラリと拡張機能、ファイル転送、AI アシスタントについて。
「停止」は実行中のコードに中断を要求しますが、すべての処理をすぐに中断できるわけではありません。time.sleep()、ネットワーク応答やロックの待機、一部のネイティブライブラリの計算は、処理が戻ってから停止します。モジュールのインポート中も、インポートが終わるまで待ちます。
しばらく待っても停止しない場合は、ファイルを保存してから iOS のアプリスイッチャーで Pythona を終了し、開き直してください。
スクリプトが quit()、exit()、sys.exit() の呼び出しで実行を終了すると、デフォルトでは Pythona 全体が終了します。
「設定 → quit() / exit()」で「Pythonaを終了」を「現在の実行のみ終了」に変更すると、アプリを開いたまま現在の実行だけを終了できます。
大きな配列の処理や大きなモデルの実行でメモリ使用量が増えすぎると、iOS がアプリを直接終了させることがあります。Python のエラーが表示されるとは限りません。この終了は「quit() / exit()」の設定では制御できません。データ量やモデルの規模を小さくするか、データを分割して処理してみてください。
問題が繰り返し発生する場合は、再現できるコードと操作手順を添えて報告してください。
エディタの実行ボタンを長押しし、「引数付きで実行…」を選択します。引数はスクリプトの sys.argv[1:] に渡されます。よく使う引数は、同じメニューの「実行構成を編集…」から保存し、デフォルトの構成に設定できます。
エディタ上部のファイル名をタップし、「ショートカット」を選んで「スクリプトのパス」をコピーします。次に「ショートカット」アプリで Pythona の「Python スクリプトを実行」アクションを追加し、パスを入力します。必要に応じて引数を追加でき、アクションが返すテキスト出力は後続のアクションに渡せます。
パッケージマネージャは、純粋な Python の wheel として配布されているサードパーティライブラリのインストールに対応しています。ソースコードのみで提供されるものや、C、C++、Rust などのコンパイル済み拡張を必要とするものは、パソコンと同じ方法では直接インストールできません。NumPy、SciPy などのネイティブライブラリは、事前にコンパイルしてアプリに同梱しています。
純粋な Python のライブラリでも、Python 3.14 と iOS への対応が必要です。この環境で利用できないシステム機能に依存する場合は、実行できないことがあります。
主な内蔵ライブラリを見る同期されません。パッケージマネージャでインストールしたライブラリは、このデバイスのローカルフォルダに保存されます。ローカル、iCloud、外部フォルダにあるスクリプトから共通で利用できます。
iCloud でプロジェクトを同期した後も、別のデバイスにはプロジェクトが必要とするライブラリを個別にインストールしてください。
Pythona に組み込まれた scene は、ゲーム、アニメーション、インタラクティブなグラフィックスに使えます。photos ではシステムの写真ピッカーから写真やビデオを選択したり、写真ライブラリに保存したりできます。audio は音声の再生、録音、エフェクト処理を提供し、coreml は Core ML モデルを読み込んでデバイス上で推論を実行します。
pythona からはアプリ自体の機能を利用できます。pythona.packages でサードパーティパッケージをインストールし、pythona.ai でカスタム AI プロバイダの設定を作成、取得、更新できます。
これらのモジュールは Pythona の実行環境に依存します。別の Python 環境へ移行する場合は、関連する呼び出しを置き換えるか調整する必要があります。他のアプリにある同名のモジュールと API が同じとは限りません。
さらに iOS のシステム機能を使う場合は、rubicon-objc で Python から iOS のネイティブ API を呼び出す方法をおすすめします。UIKit を使ってネイティブな画面を作ることもできます。アプリ内のデバイス情報と WKWebView のサンプルを参照してください。
これらの独自拡張には、現在、専用の API ドキュメントはありません。アプリ内のサンプル、閲覧可能な Python モジュールのソースコード、各モジュールのヘルプを参考にしてください。AI アシスタントにこれらの資料を確認してからコードを書いて実行するよう頼むこともできます。
2D ゲーム、アニメーション、音声再生には pygame をおすすめします(アプリには pygame-ce が組み込まれています)。pygame.mixer だけを使えば、ウィンドウを作らずに音楽や効果音を再生できます。
画面や Web ゲームは HTML、CSS、JavaScript で作成し、Pythona 内では WKWebView で表示できます。Web コンテンツは他のプラットフォームでも再利用しやすい一方、WKWebView を表示するコードや、ページと Python・iOS の機能をつなぐ処理は、移行先の環境に合わせた調整が必要です。
iOS のネイティブな画面が必要な場合は、rubicon-objc から UIKit を呼び出せます。UIKit を使うコードは引き続き iOS に依存します。
Pythona は Tkinter にも対応しており、既存の Tkinter スクリプトの実行や簡単なツールの作成に使えます。従来のデスクトップアプリに近い見た目のため、モバイルでの見た目や操作性を重視する場合は、Web ベースの画面や rubicon-objc 経由の UIKit をおすすめします。アプリ内にサンプルがあります。
コードのプロジェクトには Git をおすすめします。Pythona とパソコンで同じリモートリポジトリをクローンし、変更をコミットしてプッシュした後、もう一方でプルして更新を取り込みます。
iCloud Drive でファイルを同期したり、システムの共有機能で書き出したりすることもできます。Mac とのやり取りには AirDrop も使えます。
アプリで「ファイルサーバー」を有効にすると、同じローカルネットワークに接続したパソコンのブラウザで、アプリに表示されたアドレスにアクセスしてファイルをアップロード、ダウンロードできます。ファイルサーバーにログイン用パスワードはありません。信頼できるネットワークで使用し、転送が終わったらサーバーを停止してください。
AI アシスタントは、現在の会話のワークスペースをデフォルトのプロジェクトディレクトリとして使用します。新しい会話で最初のメッセージを送る前に、「ワークスペースを変更」からフォルダを選択できます。ファイルブラウザで別のディレクトリに移動しても、既存の会話のワークスペースは変わりません。
AI アシスタントは run_python を呼び出して Python コードを実行し、ワークスペース外の内容を含む、アプリ内のファイルやフォルダを読み取ることもできます。このアクセスは、選択したワークスペースの範囲に制限されません。
はい。現在の会話のワークスペースのルートに AGENTS.md を作成すると、プロジェクトの説明、コーディング規約、その他の共同作業のルールを記載できます。
アシスタントは新しいメッセージを処理するたびに、このファイルを自動で読み取ります。変更を保存すると、次にメッセージを送信したときに反映されます。自動で読み込むのはワークスペースのルートにある AGENTS.md のみで、サブディレクトリの同名ファイルは自動で統合されません。
カスタムプロバイダでは、JavaScript で AI サービスへの接続方法をカスタマイズできます。組み込みプロバイダがまだ対応していない API、認証方式、サービス機能を利用したり、カスタムツールを追加したりできます。
ここで JavaScript を使うのは、AI サービスへの接続、認証、レスポンスの処理を独立した実行環境で行い、こうした連携処理がユーザーの Python 環境に影響しないようにするためです。
カスタムツールからは外部サービスを呼び出せるほか、run_python を組み込むことで、アシスタントが Python スクリプトを実行したり、スクリプトを通じて iOS の機能を使ったりできます。
組み込みプロバイダで必要なことができる場合、追加の設定は不要です。機能を拡張したい場合は、設定画面の JavaScript API とサンプルを参照してください。