pipペルソナ¶
問題点¶
pip開発チームがユーザー中心の意思決定を迅速に行えるように、pipユーザーのペルソナを開発したいと考えています。
調査¶
pipユーザーとの初期のインタビューや、Pythonを使用するさまざまなコミュニティに関するデスクリサーチから、プロのソフトウェア開発者ではない大規模なコミュニティが存在すると予想していました。たとえば、SciPyライブラリは、科学およびエンジニアリングコミュニティで、数学的分析、信号および画像処理に広く使用されています。
このことから、これらのユーザーの多くが、pipに対して異なる期待、課題、ニーズを持っていると予想しました。
私たちの仮説は次のとおりでした。
Pythonユーザーは、主に3つのユーザータイプ(ソフトウェアユーザー、ソフトウェアメーカー、ソフトウェア/パッケージメンテナ)に分類される
過半数(60%以上)が自分自身をPythonソフトウェアユーザーと定義するだろう
少数派が自分自身をPythonソフトウェアメンテナと定義するだろう
ユーザータイプの定義¶
調査中に、Pythonコミュニティでさまざまなユーザータイプに出会いました。私たちが提案した3つのタイプのPythonユーザーは次のとおりです。
Pythonソフトウェアユーザー¶
「私はPythonソフトウェアを、主にやりたいことを実現するためのツールとして使用しています。これは、pipでインストールするPythonソフトウェアを使用して科学実験を行ったり、音楽を作成したり、データを分析したりするかもしれません。私は他の人のためにPythonソフトウェアを書きません。」
Pythonソフトウェアメーカー¶
「私は、Pythonソフトウェア言語とPythonソフトウェアパッケージを使用して、主に他の人のためにソフトウェアを作成します。たとえば、顧客向けのWebアプリケーションを構築することがあります。このWebアプリケーションを作成するために、Djangoフレームワークや、多数のPythonパッケージおよびライブラリを使用することがあります。」
Pythonパッケージメンテナ¶
「私は、他の人が作成するソフトウェアで使用するために、Pythonソフトウェアパッケージやライブラリを作成することに多くの時間を費やしています。Pythonパッケージやライブラリを作成し、pypi.orgや他のソフトウェアリポジトリに公開することがあります。」
結果¶
調査の結果、これらのユーザータイプは、参加者のPythonの使用感と一致することがわかりました。参加者に質問したところ、大きく異なるPythonユーザータイプは特定されませんでした。
これらのユーザータイプはそれぞれスペクトルです。一部のPythonユーザーは、時間と経験/トレーニングを経て、コードを複数回使用する必要が生じた後、独自のPythonソフトウェアを作成し始めました。
これらのユーザータイプの1つであると特定することは、ユーザーが別のユーザータイプでもあることを妨げるものではありません。PythonユーザーはPythonソフトウェアメーカーである可能性が高かったですが、Pythonソフトウェアメンテナであることはまれでした。
ほとんど(86%)の参加者が、Pythonソフトウェアユーザーであると回答しました。これは、a)Pythonアプリケーション(SciPy、Scikit-Learnなど)をツールとして使用し、知識や関心を持たないものから、b)他人のコード/スクリプトを修正したり、ライブラリを使用して特定のニーズに合わせてコードを作成したりするような、より高度なPythonの使用まで、多岐にわたります。
75%がPythonソフトウェアメーカーであると回答しました。Pythonソフトウェアユーザーと同様に、これは、基本的なスクリプトやコードの記述から、プロのソフトウェア開発者まで、多岐にわたります。
40%がPythonソフトウェアメンテナであると回答しました。メンテナの活動は、長年のPython経験があり、特定のパッケージやアプリケーションに深く関わっているか、仕事の一部としてそれを行っている人だけが利用できると見なされていました。
私はPythonソフトウェアユーザーです¶
予想どおり、ほぼすべての参加者がPythonソフトウェアユーザー(86%)であると回答しました。これは最も基本的なユーザータイプであり、訓練を受けたソフトウェア開発者も、仕事の結果としてPythonを使用するようになった人もユーザーでした。
ソフトウェア開発者ではないユーザーは、Pythonを「物事を成し遂げるための」言語として認識していました。
「ほぼすべての人がユーザー(カテゴリ)に該当します。それがターゲットです。特定の分野を対象としたあいまいな言語ではなく、物事を成し遂げるように設計された幅広い汎用言語です。他の言語を知らない多くの人が使用しており、彼らはただ、自分のやっていることを終わらせるための言語が必要なだけです。」- 参加者240312164
ただし、「Pythonソフトウェアを使用する」の意味は、誰に尋ねるかによって異なりました。参加者は、Pythonソフトウェアユーザーとして、スペクトル上で認識されました。
私はPythonソフトウェアユーザーです | 回答数 |
---|---|
同意 | 50 |
反対 | 4 |
意見なし | 11 |
強く同意 | 70 |
強く反対 | 4 |
総計 | 140 |
スペクトルの下限¶
一部の人は、Pythonソフトウェアアプリケーションを、科学者、データアナリスト、エンジニア、ジャーナリストなど、自分の「実際の」仕事を行うためのツールとして認識していました。
ここでは、SciPy、PsychPi、NumPyなどのPythonアプリケーションを、科学実験を実行したり、データを収集したり、データを分析したりするために「使用」しており、次のアクションを決定するための知識を作成するという目的がありました。
これらは、1)Pythonソフトウェアを初めて使用した、2)自分の職業でこれらのPythonアプリケーションに出会い、ツールとして使用したユーザーでした。
彼らは、NumPyやSciPyを、WindowsユーザーやMacユーザーであることに似た、Pythonソフトウェアアプリケーションそのものとして説明しています。
これらのユーザーは、ある参加者が自分自身を特定したように、「古典的に訓練されたプログラマー」ではありません。その結果、ソフトウェアの依存関係のようなプログラミングの概念に関するトレーニングや知識がない可能性があります。複雑または混乱するエラーメッセージや指示に対処する必要がある場合、彼らは問題を抱え、しばしば停止してしまいます。
スペクトルの上限¶
より高度なPythonの使用に「スペクトルを移動」したPythonユーザーは、長期間(長年)Pythonを使用していました。
彼らは古典的に訓練された開発者ではなかったかもしれませんが、同僚や自分自身の使用から、実験を始めました。この実験は、他の人のスクリプトを修正したり、クラスを受講したり、本を読んだりして、コードを他の目的で使用できるようにするという形で行われました。
これはソフトウェアを作成することでした。このソフトウェアは、彼らの日中の仕事の一部として使用される可能性がありますが、他の多くの人が使用することもできました。
私たちは参加者に、このユーザースペクトル上の進歩について説明してもらいました。ユーザーとメーカーの違いは何でしょうか?
参加者は、「再利用可能なものに取り組んでいるのか、それともツールを使用して1回限りのタスクを達成しようとしているのか?」について語りました。
「私は古典的なソフトウェア開発のトレーニングを受けておらず、統計分析の経験の方が豊富です。誰でもパッケージをアップロードしてメンテナになることができるリポジトリであるという考えは、まったく知りませんでした。」- 参加者_240396891(Pythonを使用してネットワークトラフィック分析/解析または機械学習を行う応用研究ラボのデータサイエンティスト)
「まず、私はPythonで書かれた自分のソフトウェアを使用し、pipからPythonライブラリを使用します。Django、Flask、requestsなどのライブラリを使用します。」- 参加者240302171
「私は古典的に訓練されたプログラマーではないので、これは私が技術を学び、最新の状態に保つための素晴らしい方法です。古典的に訓練されたプログラマーではないことが、場合によっては、私を妨げることがあります。ハッシュを使用する方法については合理的な知識がありますが、Pythonのハッシュを変更したい場合は、本を読む必要があります。情報は見つけられます。」- 参加者240312164(コンピューターシミュレーション、実験方法の設計にPythonを使用する核物理学者)
私はPythonソフトウェアメーカーです¶
「Pythonソフトウェアメーカー」であることは、特に仕事上、個人的な学習、または正式な教育を通じてソフトウェア開発のトレーニングを受けた一部のPythonユーザーにとっては自然な進歩でした。このトレーニングは、基本的なプログラミングの概念を理解するために重要でした。
前述のように、一部の参加者は、他のソフトウェアを修正または作成するためにPythonソフトウェアを使用する「高度な」Pythonユーザーであると特定しました。これらのユーザーは、ソフトウェアメーカーになる可能性が高くなっています。
ソフトウェアメーカーとして特定した参加者の55%は、Pythonの経験が5〜20年以上でした。ソフトウェアメーカーのうち、経験が2年未満だったのは18%にすぎませんでした。
私たちはこれらの参加者に、彼らが作成したソフトウェアの「品質」について尋ねませんでしたが、プロのソフトウェア開発者を除いて、これらのユーザーの意見は、彼らがソフトウェア開発者ではないということでした。
私はPythonソフトウェアユーザーです | 回答数 |
---|---|
同意 | 50 |
反対 | 9 |
意見なし | 14 |
強く同意 | 56 |
強く反対 | 10 |
総計 | 140 |
ソフトウェアの作成は、前述のように、「再利用可能なものに取り組んでいるのか、それともツールを使用して1回限りのタスクを達成しようとしているのか?」と定義されました。
「私が取り組んでいる製品を作るために、Pythonのソフトウェアとライブラリを使用しています。その基盤はPythonに基づいており、React、D3などがすべてPython上に構築されています。クラウドのアセットもPythonで、テストもPythonです。」- 参加者 240315927 (Pythonベースのデータ分析アプリケーションを構築するプロのIT開発者)
「私はPythonでソフトウェアを作っています。私の本業はPythonでソフトウェアを作ることです。主にDjangoを使ったウェブデザインです。私は小売会社で、注文を計算したり、他の在庫管理システムでデータを作成したりしています。データ分析も行っています。」- 参加者 240393825
「私はビジネスや個人的な理由でソフトウェアを書いたことがあります。以前、Djangoのウェブサイトプロジェクトに携わり、それが数千人の人に使われていました。私の現役のプロジェクトは、そのベースになっているものはないと思います。」
「ほとんどはシステム管理者、自動化のためです。私はシェルスクリプトの代わりにPythonを使うのが[好きです]。WordPressサイトでサーバーを管理しています。これらのサイト、メーリングリスト、SQL DB管理、およびさまざまなユーティリティを更新するスクリプトを書きました。」- 参加者 240313542
「私はPythonを使って、データサイエンティストやソフトウェアエンジニア向けの出力など、さまざまなものを作成します。パターンを見て分析するソフトウェアを作っています。私の同僚が使ってくれるので、私はメーカーだと思います。通常は非技術系の同僚です。私は出力を生成し、データを理解可能にします。彼らは結果を使ったり、Flaskアプリの背後でパッケージ化したりします。またはグラフを分析したりします。」- 参加者 240426799
私はPythonソフトウェアのメンテナーです¶
Pythonソフトウェア/パッケージのメンテナーというユーザータイプは、かなりの時間と経験が必要と見なされました。ソフトウェアが非常に特定のものである可能性があるため(例:SciKit Learn、SciPyなど)ドメインの経験、技術的なコーディングの経験、およびコミュニティでの経験です。メンテナーになる前に、他のジョブに時間を費やす必要がありました。
大規模なプロジェクトでは、コアコードの貢献者とメンテナーが必要であると見なされました。メンテナーは常にコードを書くとは限りませんでした。コードを書くよりも、技術アーキテクチャや技術設計に深く関わっている可能性があります。
ソフトウェアメンテナーの役割で、あまり言及されなかった側面の1つは、コミュニティ管理の側面でした。
私はPythonパッケージのメンテナーです | 回答数 |
---|---|
同意 | 39 |
反対 | 24 |
意見なし | 20 |
強く同意 | 18 |
強く反対 | 38 |
総計 | 140 |
「ある程度の経験を積むと、メンテナーになることができます。」- 参加者 240278297
「パッケージメンテナーになるには、多くの時間をかけて問題を修正する必要があります。たとえば、あなたのパッケージがGithubにあり、問題を見て、PRを確認し、ドキュメントを作成することになります。パッケージメンテナーは、プロジェクトに深く関わっている人です。彼らはより多くのサポートコールに対応し、パッケージを複数の環境に入れるために問題についてより深く考えます。Pythonコミュニティの良いところは、Pythonパッケージを使おうとしたときに、ドキュメントに問題があったことです。私は、この例にはもっと良い方法があると言いました。彼らは答えて、「素晴らしい、あなたがやりたいですか?」と言いました。パッケージのメンテナーをすることは、私にとってはあまり興味がなく、実際には時間もありません。もし具体的な問題があれば、それに集中します。(もっとやるのは)良いでしょう。」- 参加者 240278297 (プロのPythonソフトウェア開発者)
「私はscikit-learnのコア開発者であり、コードを書くのに時間を費やしています。最近では厳密に言うと、コードを書くのは私がやる中で一番少ないことです。ほとんどは他の人のコードのレビューをしています。API設計の作業もたくさんあります。それはコードを書くことにつながる可能性があります。私がコードを書くこともあれば、そうでないこともあります。私は時々CIにも関わっています。[...] 私は過去2リリースのリリースマネージャーでした。さまざまなタイプのメンテナーがいます。コードを書くメンテナーもいますが、コードを書くコア開発者も必要です。しかし、メンテナーであり、コミュニティを構築することは、コミュニケーションとPR、そして人々のメンタリングについてです。」- 参加者 240306385 (SciKit-Learnのコアメンテナー)
推奨事項¶
「最良/推奨される方法」を推奨するドキュメントを提供する¶
参加者のほとんどは、Pythonをツールとして使用していました。参加者が言ったように、「それは物事を成し遂げるために設計された幅広い汎用言語です。」
参加者の大多数(科学者、製品/電子エンジニア、データアナリスト、核物理学者)は、仕事でPythonを使用しました。彼らは、自分自身のため、おそらく同僚のためにPythonソフトウェアを書いている可能性があります。少数ですが、広く使用されているPythonパッケージのメンテナーもいます。
その結果、彼らは古典的な訓練を受けたソフトウェア開発者ではなく、重要なソフトウェアプログラミングの概念を「正しく」理解していない可能性があります。
あらゆるタイプおよび経験のユーザーは、何かを行うための「正しい」方法を知るのに苦労しました。彼らはしばしば、何かを行うための「推奨される方法」、つまり新しいプロジェクトを開始したり、パッケージを作成したりすることについて話しました。
「初心者として、setup.pyやpyproject.tomlを構成する正しい方法を理解するのは簡単ではありません。良いガイドはありますが、何を使うかを理解するのは簡単ではありません。「アプリケーション(またはライブラリ)を30分で作成する」のようなガイドがあればいいのにと思います。」