コンテンツにスキップ

歴史と哲学

BeeWareプロジェクトは、ある単純な疑問から始まりました:なぜPython開発者が使用するツールは、日常的に利用する他の技術と同じ速度で進化しないのか?

Pythonは高い能力を持つ言語としてその実力を証明しています。初心者にも親しみやすく、一方で専門家の手にかかれば強力な力を発揮します。Pythonはデータ分析、科学計算、ウェブ開発の分野において急速に主要な役割を担う存在となりつつあります。 またDjango Girlsのような取り組みは、Pythonを用いることでプログラミング未経験者向けの1日トレーニングコースを提供可能であることを実証しています。参加者は1日の終わりまでに、データベース連携の動的ウェブサイトを開発・構築し、公開サーバーへデプロイする成果を上げています。

しかし、Pythonを書く開発者の体験は、新世紀というよりむしろ90年代初頭を彷彿とさせる。Pythonのデフォルト開発環境は今なお80x25のコンソールウィンドウだ。WindowsやApple環境から来たユーザーにとって、精緻で洗練されたグラフィカルインターフェースに慣れた彼らにとって、この30年前の回帰は全くの異世界体験となる。

そして、確かにコードを書くためのネイティブアプリケーション体験を提供するIDE(統合開発環境)は存在します。しかし、それらのツールはプロジェクトの見方というIDEの考え方を丸ごと採用することを要求します。それらは解決する問題と同じくらい多くの頭痛の種を開発プロセスにもたらすことが多いのです。

こうして、コンソールウィンドウでのUnix開発という「古い方法」と、オールインワンIDEという「新しい方法」との間に、興味深い分裂が残されている。

Unixの哲学

しかし、必ずしもそうである必要はない。Unix哲学の核心は「各ツールは一つのことを、よく行う」という理念である。これは非常に強力な哲学であり、極めて特化した独立したツール群を組み合わせることで、極めて強力なツールチェーンの構築を可能にする。

残念ながら、ほとんどのUNIXツールはこれを「すべてのツールはコンソールインターフェースを使用しなければならない」という意味にも拡大解釈してきた。しかし、UNIXの哲学にはツールがコンソールインターフェースを使用しなければならないとはどこにも書かれていない——単にそうなってしまっただけである。

BeeWareプロジェクトは、両方の長所を兼ね備えられるという前提で始まりました。それぞれが単一の機能を優れた形で担う、組み合わせて使えるツール群を実現できるのです。しかしそれらのツールは、豊富なグラフィカルユーザーインターフェースを通じてその機能性を公開することも可能です。

単なるコード以上のもの

しかし、それは単なるコード以上のものです。成功するソフトウェアプロジェクトには、ドキュメント、設計スキル、フィードバック、バグ報告が必要です。BeeWareコミュニティは、すべての貢献が重要であることを認識しています——GitHubでのプルリクエストとして届くものだけではありません。

それでもなお、プロジェクトを孤立した存在として、全ての貢献の総和として捉えがちだ。しかし、それは決して真実ではない。オープンソースプロジェクトの本質はコミュニティにある。

多様性と包摂

多様性のあるコミュニティは強いコミュニティです。これはあらゆる経験レベル、あらゆる背景、あらゆる人種、信条、指向性、表現を持つ人々を受け入れることを意味します。BeeWareプロジェクトは、包括的で多様性に富み、歓迎されるコミュニティの構築と維持に取り組んでいます。

これを裏付けるため、貢献者として参加を希望する全ての方へのメンター提供を常時受け付けており、厳格に施行される行動規範を設けています。この行動規範への違反報告は、上級コミュニティメンバーによるものであっても、尊重をもって対応し、適切に対処します。

健康的で持続可能な

コミュニティがアクセスしやすく持続可能なものであることも重要です。残念ながら、オープンソース文化では「真の」オープンソースプロジェクトは完全にボランティアによって開発されなければならないという考えが受け入れられてしまいました。これは多くのグループにとって参入障壁となっています——自由な時間をボランティア活動に費やせるのは、自由な時間がある人々だけだからです。

また、貢献者たちの間で燃え尽き症候群やその他のメンタルヘルス問題を引き起こすことも頻繁にある。ソフトウェア開発コミュニティにおいてうつ病、不安、燃え尽き症候群がこれほど一般的であるという事実は、栄誉の証とみなされるべきでもなければ、開発チームの献身的な姿勢を示すものとも考えられるべきではない。 これは正面から取り組むべき問題であり、ソフトウェアのバグに対処するのと同じ方法で対処すべきです。つまり、即時の回避策と、問題の根源的な原因を取り除くための長期的な計画が必要です。

ボランティアの貢献を非常に高く評価している一方で、健全で持続可能なコミュニティを築くにはボランティア活動だけでは不十分であることも認識しています。そのため、BeeWareプロジェクトの運営において財政的持続可能性は重要な考慮事項です。コミュニティとして、人々が貢献を始め続けられるよう資源を提供する上で資金が果たす役割を無視しません。 コミュニティとして、個人が自らの仕事を意味ある形で収益化できる仕組みを提供し、可能な限り、オープンソース開発の理念を損なうことなく、その仕事に対して報酬を支払います。

目標

BeeWareプロジェクトの最終目標:モバイルおよびデスクトップ向けユーザー向けソフトウェアにおいて、Djangoがウェブソフトウェアで成し遂げたのと同じことを実現すること。つまり、ユーザーがリッチでネイティブなユーザーインターフェースを開発し、自身のデバイスにデプロイできるツールとライブラリのセットをユーザーの手中に置くことです。これには以下が含まれます:

  • Pythonを異なるデバイス上で実行可能にするツール
  • Pythonプロジェクトをそれらのデバイス上で実行可能にするためのパッケージ化ツール
  • デバイスのネイティブウィジェットと機能にアクセスするためのライブラリ
  • これらのプロジェクトの開発、デバッグ、分析を支援するツール。

このツールセットの目的は、Django Girlsのような環境で完全な初心者でも簡単に使用できるほど扱いやすく、かつ次世代のInstagram、Pinterest、Disqusを駆動できるほど強力であることです。

最も重要なのは、これらすべてをオープンソースコミュニティとして実現することを目指している点です。オープンソース開発プロセスは、堅牢で信頼性の高いソフトウェアを開発する最も確実な方法であることが実証されています。また、誰もがソフトウェアにアクセスできるという事実は、専門家であれ熱心なアマチュアであれ、誰もが同じ優れたツール群から始められることを意味します。

Pythonは至る所に

現代のコンピューティングプロジェクトは、過去10年間でコンピューティング分野における最大の進展を無視できない。Pythonはクロスプラットフォーム言語であることを誇りとしている。10年前、クロスプラットフォームであるということは、Windows、macOS、Linuxで利用可能であることを意味していた。今日では、モバイルコンピューティングがはるかに重要になっている。それにもかかわらず、モバイルプラットフォームでのPythonプログラミングに適した選択肢は多くなく、クロスプラットフォームのモバイルコーディングは依然として実現が難しい。

BeeWareは、モバイルやその他の新興プラットフォーム(スマートウォッチやセットトップボックスなど)をコンピューティングエコシステムの第一級の構成要素として受け入れます。なぜなら、人々がこれらのデバイスを持っているなら、Pythonでそれら向けのソフトウェアを書けるべきではないでしょうか。

どこでもネイティブ

テーマを使えばクロスプラットフォーム化は容易だ。しかし、テーマで構築されたアプリは見抜かれやすい——他のアプリとは明らかに動作が異なるからだ。ウィジェットの見た目が少しおかしい、あるいはOS Xアプリにウィンドウ上のメニューバーがあるなど。テーマはかなり近づけるが、常に決定的な手がかりが残る。

さらに、ネイティブウィジェットは常にテーマ化された汎用ウィジェットよりも高速です。結局のところ、汎用ウィジェットの上に重ねられた描画エンジンではなく、調整と最適化が施されたネイティブのシステム機能を利用しているのですから。

テーマはネイティブプラットフォームのアクセシビリティ上の利点の多くも欠いています。現代のOS開発者は、運動機能・視覚・認知に障害のあるユーザー向けに操作のしやすさを調整するのに多くの時間を費やしています。ネイティブウィジェットを使用すれば、通常これらの操作のしやすさは自動的に得られます。テーマでウィジェットを再実装する場合、操作のしやすさも再実装する必要があります。

BeeWareは、アプリケーション開発においてテーマベースのアプローチではなく、ネイティブウィジェットとネイティブ機能を使用します。

Pythonネイティブ

BeeWareはまた、臆することなく「Pythonファースト」を掲げるフレームワークです。私たちはPythonが好きです。その見た目も、その動作も気に入っています。特定のプラットフォームでPythonが第一級の選択肢として利用できない場合、開発言語としてPythonを利用可能にするために必要なことは何でも行います。 APIや設計においてPythonのイディオムを採用できる機会があれば、私たちはそれを積極的に取り入れます。つまり、ジェネレータ、コンテキストマネージャ、yield fromによる非同期呼び出しなどを活用し、クロスプラットフォームアプリ開発向けに最高のPythonネイティブAPIを提供することを意味します。

私たちは未来を見据えています。つまり、Python 3のみをサポートします。

ネイティブ体験

ツールの使用体験は、インストールプロセスから始まります。 BeeWareの「あらゆる環境でネイティブ」という理念の一環として、インストールには適切なネイティブメカニズムを採用しています。ユーザースペースツールを使用する場合、それは他のツールと同様の方法でインストールされるパッケージとして提供されるべきです。つまり、アプリストア、インストーラ、あるいは単純な実行可能パッケージを通じてインストールされるのです。エンドユーザーは、そのアプリケーションがPythonで書かれていることを知る必要はありません。