Pythonを使用してネイティブのiPhoneアプリを書くことはできますか[終了]


91

PyObjCを使用すると、Pythonを使用してOS X用のCocoaアプリケーションを作成できます。Pythonを使用してネイティブiPhoneアプリを作成できますか?


36
iPhone開発者はこの質問に古すぎる(ローカライズされている)とフラグを立てており、これを解決しようとする試みは、それがまだ正しいという不満を呼び起こしています。したがって、検索の結果としてここにいる場合、この回答は'08からのものであり、正しい回答がない可能性があることに注意してください。

1
さらに説明すると、アップルはかつて、許可されたプログラミング言語C、C ++、Objective-C、Javascriptを具体的に列挙したセクションを契約に含めていました。これは、多くの混乱、疑問、恐れの原因でした。最終的にAppleは言語の命名をやめた。これが実現している間でも、さまざまなアプリがストアに公開されていたり、何らかの方法でLuaスクリプトを使用した開発中であったことを知っています。
LearnCocos2D 2012年

回答:


37

現在、iPhone SDKにアクセスできる言語は現在、C / C ++、Objective C、Swiftのみです。

将来的にこれが変更できなくなる技術的な理由はありませんが、短期的にはこれが発生することを期待していません。

とはいえ、Objective-CとSwiftはそれほど怖くない...

2016編集

NativeScriptフレームワークを使用したJavaScriptが現在使用可能です。


32
私はObjective-Cでマルチ機能のiPhoneアプリとPyObjCでマルチ機能のMacアプリを作成しましたが、経験に基づいて、Objective-Cの特にデータ構造(配列や辞書)は、Pythonよりもかなり面倒で面倒です。AppleがPyObjCのサポートを含めるまで、私は基本的に私のiPhoneアプリでのさらなる開発を拒否しました。Objective-Cの比較的冗長で退屈な構文は、アルゴリズムのトップダウンフローを開発しようとしているときに、私を驚かせます。
Chris Redford、2010年

1
@Dave Verwer:この回答はまだ最新ですか?
bukzor


2
@cobbal:では、このスレッドはかなり誤解を招くものです。修正するための正しい方法は何ですか?
ブクソール

5
@Max PyObjCを使用してMacアプリケーションを作成し、Pythonで記述されたAppleプログラムとObjective-Cで記述されたAppleプログラムの読みやすさを比較しましたか?そうでなければ、その判断の根拠はありません。
クリスレッドフォード


24

これは現在、開発者が許可されていることのようです:iOS開発者契約が昨日変更され、アプリケーションへのPythonインタープリターの埋め込みを合法にするような方法で修正されたようです:

セクション3.3.2 —通訳

古い:

3.3.2アプリケーションは、プラグインアーキテクチャの使用、他のフレームワーク、他のAPIの呼び出しなどを含むがこれらに限定されない、他の実行可能コードをインストールまたは起動することはできません。Appleの書面による別段の承認がない限り、Appleの文書化されたAPIおよび組み込みのインタープリターによって解釈および実行されるコードを除き、解釈されたコードをアプリケーションでダウンロードまたは使用することはできません。上記にかかわらず、アップルの事前の書面による同意により、アプリケーションは、意図され宣伝されたアプリケーションの目的と一致するマイナーな機能を提供する目的でのみ使用される場合、限られた方法で埋め込み解釈コードを使用できます。

新着:

3.3.2アプリケーションは、実行可能コードをダウンロードまたはインストールできません。解釈されたコードは、すべてのスクリプト、コード、およびインタープリターがアプリケーションにパッケージ化され、ダウンロードされていない場合にのみ、アプリケーションで使用できます。上記の唯一の例外は、Appleの組み込みWebKitフレームワークによってダウンロードおよび実行されるスクリプトとコードです。



21

はい、現在、PythonでiOS用のアプリを開発できます。

チェックアウトするフレームワークには、KivyPyMobの 2つがあります。

この質問よりも最新のものであるため、この質問への回答も検討してください。


KivyとPyMobがネイティブアプリを生成しない
Serjik

「ネイティブ」の定義によって異なります。この質問は、OSX向けのpythonアプリケーションの記述を、iOS向けに記述できるのと同じ方法である程度カバーする定義を意味します。
Filipe Correia、2015年



4

iPhone SDKの合意も、(WebViewのJavaScript以外の)スクリプト言語を実行することさえ許可されているかどうかについてはあいまいです。私の見解では、問題はありません。実行するスクリプトがネットワークからダウンロードされない限り(したがって、事前にインストールされ、ユーザーが編集したスクリプトは問題ないようです)。

IANALなど


3

BeeWareは、ネイティブiOSおよびAndroidアプリを作成するためのオープンソースフレームワークです。


それはまだ開発中であり、問​​題があります
ikel

3

2019アップデート:

Python-iOSの開発は比較的未熟であり、Appleがサポートする開発言語で実現できるネイティブUIと機能をアプリが使用できない(afaik)可能性がありますが、Appleは現在、PythonインタープリターをNative Swift / Obj-Cに埋め込むことを許可しているようですアプリ。

これにより、ネイティブのSwift / Obj-Cコードから直接、PythonライブラリのインポートとPythonスクリプトの実行(コマンドライン引数が指定されている場合でも)がサポートされます。

私の会社は、実際にはインフラストラクチャ(元はPythonで記述されていました)をネイティブiOSアプリケーションでラップしています!これは非常にうまく機能し、パーツ間の通信はクライアント/サーバーモデルを介して簡単に実現できます。

iOSアプリでPythonスクリプトを実行したい場合は、Cookiecutterテンプレートを使用したBeewareのライブラリを次に示します:https : //github.com/beeware/Python-Apple-support/tree/3.6


1

技術的には、解釈されたコードがダウンロードされない限り(JavaScriptを除く)、アプリは承認される可能性があります。Rhomobiles「Rhodes」フレームワークはまさに​​それを行い、モバイルRuby、Railsの軽量バージョン、およびアプリをapp-store経由で配布するためにバンドルします。インタプリタとインタプリタされたコードの両方が最終的なアプリケーションにパッケージ化されているため-Appleはそれを不快に感じません。

http://rhomobile.com/products/rhodes/

最新のアップルプレスリリースの後でも、Rhodesアプリ(モバイルルビー)はアプリストアで実行できます。tinyPyやpyObjCが、喜んで開発者コミュニティが存在する場合、場所を見つけられないとは信じ難いでしょう。


0

もちろん、ジェイルブレイクされた電話を使ってPyObjCでこれを行うことができます。しかし、それをApp Storeに取り込みたい場合は、「コードを解釈する」ため、許可されません。ただし、Shed Skinを使用できる場合もありますが、私はこれを行っている人を知りません。ただし、動的型付けが失われ、ObjCも使用される可能性があるため、これを行う理由は考えられません。


-1

フレームワークと互換性の点で私が認識しているiPhone開発の唯一の重要な「外部」言語は、iPhoneで開発するためのC#/。NET環境であるMonoTouchです。


はい。ただし、新しいiPhone開発者契約では、Mono Touchがどうなるかを待つ必要があります。
TalkingCode

1
@Holli:新たな開発契約によりMonoTouchがクリアになりました
Dan McClain

-1

以前は不可能だったと思いますが、最近PyMobについて聞いたことがあります。これは、アプリがPythonで書かれていて、最終的な出力がさまざまなプラットフォーム(iOSのObj-C、AndroidのJavaなど)のネイティブソースコードであるため、興味深いようです。これは確かにかなりユニークです。このウェブページはそれをより詳細に説明します。

まだ試したことはありませんが、すぐに見ていきます。


どうやらこれは商業プロジェクトとして立ち上げられる予定です。現在(9月28日-12日)、サイトには「限定ベータプログラムの顧客を受け入れています。お問い合わせには、お問い合わせください」とあります。
ccpizza 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.