Quick search

FAQ (翻訳済み)

同じような質問を何度も受けることがあるのですが、ここではその一部に対する回答を行います。

Techincal FAQ (技術面に関するFAQ)

Fatal Python error: (pygame parachute) Segmentation Fault

ほとんどの場合、この問題が発生するのは古いグラフィックドライバーを使用していることが原因です。あなたのグラフィックカードで利用可能なドライバーのうち、最新のものをインストールしてください。そうすればうまくいくに違いありません。

もしうまくいかない場合は、ひょっとすると利用可能な OpenGL コンテキスト無しに、OpenGL の命令を呼び出そうとしたのではないでしょうか。もし graphics instruction を使って画像やアトラスを読み込もうとするのであれば、まず Window をスポーンしてください:

# method 1 (preferred)
from kivy.base import EventLoop
EventLoop.ensure_window()

# method 2
from kivy.core.window import Window

それでもなおうまくいかないのであれば、 Contributing(翻訳済み) ページの Reporting an Issue(問題を報告する) セクションにある手順にしたがって、問題の詳細を github 上で報告してください。この手のエラーはデバッグするのがとても大変なので、詳細なレポートは我々にとってとても重要です。あなたの環境や実行に関して、提供可能なすべての情報を教えていただければ幸いです。

undefined symbol: glGenerateMipmap

あなたのグラフィックカード、もしくはそのドライバーがあまりに古いことに起因します。ドライバーを、利用可能なもののうち最新のものにアップデートした上で、もう1度試してみてください。

ImportError: No module named event

もし Kivy の開発版 (development version) を使うのであれば、使用前にコンパイルする必要があります。kivy のディレクトリに行き、以下を実行してください:

make force

Android FAQ (Androidに関するFAQ)

could not extract public data (パブリックデータを読み込めない)

このエラーは様々な状況下で発生し得ます。以下を確認してください:

  • 携帯電話にSDカードが挿入されている

  • 現在 “USB Mass Storage” モードにない

  • SDカードへの書込み権限がある

“USB Mass Storage” モードに関するエラーの場合で、もしデバイスをつないだままにしたい場合は、USBオプションを Power にセットしてください。

Crash on touch interaction on Android 2.3.x (Android 2.3.x 上の、タッチ操作によるクラッシュ)

Adreno 200/205 を用いたデバイスでのクラッシュが報告されています。うまく動くアプリでも、スクリーンを通じたインタラクションによってクラッシュします。

これらの報告では、ICSや高度なROMに変えることで問題が解決したことについても触れられています。

Is it possible to have a kiosk app on android 3.0 ? (Android 3.0 上でキオスクアプリを作ることはできますか?)

トーマス・ハンセン (Thomas Hansen) が kivy-users メーリングリスト上で詳しい回答を寄せています:

基本的には、デバイスをルート化し、SystemUIパッケージを削除し、xml設定に数行を書き加えれば、事は成ります。

What’s the difference between python-for-android from Kivy and SL4A? (python-for-android は、kivyとSL4Aの間で何が違うのか?)

同じ名前を持つにもかかわらず、Kivyのpython-for-androidはSL4A, Py4A あるいは android-python27 の python-for-android プロジェクトと関係はありません。それらは相異なる目的を持った、まったく別のプロジェクトなのです。Py4AをKivyで使うことはできるかもしれませんが、そのためのコードの開発あるいは努力は、これまでなされたことがありません。Kivyチームとしては我々のpython-for-androidこそが前に進むための最良解であり、Py4Aを組み込んだりサポートしたりするための試みは、有効な時間の使い方ではないと感じています。

Project FAQ (プロジェクトに関するFAQ)

Why do you use Python? Isn’t it slow? (なぜPythonなのか? 遅くないか?)

徹底的に回答しましょう。少々お付き合いください。

Python はとても機敏な言語です。比較的短い時間で、たくさんのものを書くことができます。多くの開発の現場では、Python のような高級言語を使ってさくっとアプリを書き、テストし、条件によっては最適化することが強く好まれます。

しかし実行速度となるとどうでしょうか? もし、いくつかのアルゴリズム (特に複雑な計算など) を実装し、実行速度を比較したとすると、Pythonは、たとえば C++ などよりもきわめて遅いことがわかるでしょう。しかし次の例を出せば、アプリを作るのにPythonを使うのが良いアイディアではないということに、より一層納得してしまうかもしれません。それはグラフィックの描画です。洗練されたグラフィックを描画するのは”とても重たい計算ですが (2世代前などの古いOpenGLの話をしているのではありません)、ユーザーエクスペリエンスの向上のためにしばしば行いたくなりますので、公平な根拠でありましょう。” しかし 見た目には、すべての場合、アプリはコードの同じ部分を実行することに、ほとんどの時間を費やして終わります。Kivyにおいては、それはイベントディスパッチやグラフィックの描画です。Pythonでは、こういった部分を速く走らせるためのコードを書くことができます。”

Cythonを使うことで、コードをCのレベルにまでコンパイルすることができます。そしてさらに、特別でない一般のCコンパイラが、諸々を最適化してくれるのです。これはまったく痛みを伴わないプロセスで、もしあなたがコードに何かしらのヒントを加えれば、アプリはより高速に動くことになるでしょう。我々は少なくとも1倍以上、最大で1000倍を超えるパフォーマンスの高速化について話していますが、その度合はあなたのコードに大きく依存します。Kivyでは、我々があなたの代わりにこれを行います。我々は、効率性がきわめて重要なコードの一部をCで書いています。

グラフィックの描画に関して、我々は今日のGPUをおおいに活用しています。ラスタライズのようなタスクについては、GPUはCPUよりはるかに効率が良いのです。KivyはGPUのパフォーマンスを、ほとんど最大限に活用します。もし Canvas API を使って描画するのであれば、描画に関するコードを自動的に最適化してくれるコンパイラ (我々が開発しました) を搭載しています。もし描画をほとんどGPUの上でキープするのであれば、プログラムの実行速度の大部分は、プログラミング言語ではなく、グラフィックのハードウェア環境によって決まります。

Kivyが行う最適化だけをもってしても、アプリは十分高速に動くものと信じています。資源を浪費しないように、アプリの実行速度を制限したくなるかもしれません。しかし、制限した結果、実行速度が十分なものでなくなったとしても、また Cython という選択肢があります。あなた自身のコードに Cython を適用することで、 大幅な スピードアップが見込めるでしょう。

我々を信じてください。我々は多くのベンチマークテストを行い、あなたのアプリを円滑に動かすための、いくつかのクレバーな最適化にたどりついたのです。

Does Kivy support Python 3.x? (KivyはPython3.xをサポートしていますか?)

もちろんです! バージョン1.8.0の時点で、Kivy は同じコードベースで Python >= 2.7 と Python >= 3.3 をサポートしています。Python 3 はまた、python-for-androidでも現在サポートされています。

しかしわかっておいてもらいたいのは、Kivy は Python 3.3+ でも走りますが、我々の提供する iOS用のビルドツールにはなお Python 2.7 が必要であるということです。

Do you accept patches? (パッチは受け付けてくれますか?)

はい、喜んで。ただし、あなたの貴重な修正を円滑に組み込めるように、コントリビューションに関するガイドラインを必ず読んでおいてください。もちろん、パッチなら何でもかんでも受け取るわけではありません。パッチは我々のスタイルガイドと調和していなければなりませんし、より重要なのは、有意義なパッチであるということです。大きな変更、とりわけ新しい特徴を思いついたら我々に連絡をください。

Does the Kivy project participate in Google’s Summer of Code? (Kivyプロジェクトは Google Summer of Code に参加しますか?)

GSoC への参加を検討している人たちから、我々も参加するかどうかを尋ねられます。はっきり答えましょう。イエスです。:-)

もし受講者としての参加を望んでいて、かつアクセプトの可能性を高めたいのであれば、今すぐにでも我々とコンタクトを取り、我々のワークフローに慣れるために、いくつかの小さな問題の解決に取り組んでみてください。(可能なら大きな問題でも構いませんが。) もし、あなたは我々とうまくやれそうだということを我々が知れば、それはあなたにとって大きなプラスになるでしょう。

チェックリストです:

  • ウェブサイトを読み通してください。少なくとも、ドキュメンテーションは目を通しておいてください。

  • ソースコードを眺めてください。

  • コントリビューションに関するガイドラインを読んでください。

  • アイディアリスト (上のリンクをたどってください) から面白いと思ったものを拾うか、もしくは自分でアイディアを考えてください。

  • 自分で 研究に取り組んでみてください。GSoCは,我々が受講生であるあなたに何かを教え、それに対してあなたが対価を支払う場ではありません。あなた自身が、我々のサポートを得て、あなたの目標を成し遂げる場なのです。その原動力は、もちろんあなた自身です。多くの受講生がやって来ては何をやればいいのかを尋ねてきます。そんなのは知ったことではありません。なぜなら我々は、あなたの興味もスキルも知らないからです。あなたが真剣で、イニシアチブをとって問題解決に挑むところを見せてください。

  • あなたがやりたいことに関する草案を作ってください。現在の状況について何を理解しているか (とても大雑把でもかまいません)、何を、どう改善したいのかなどを含めるようにしてください。

  • その草案について適当なときに我々とディスカッションをしましょう。そこでフィードバックを得てください。

  • 辛抱強くやってください。特にIRC (Internet Relay Chat) の場合はそうです。我々は都合のつけられるときにあなたへの連絡を試みます。もし連絡が無い場合はメールをください。そして待っていてください。ほとんどの質問は、ドキュメンテーションか何かで既に答えられているものであり、リサーチによって見つかるものです。もしあなたの質問が、あなたが本当にたずねたいことを反映していないのであれば、我々はそれをうまく受け取らないかもしれません。

グッドラック! :-)